diff --git a/App/Accessibility.dll b/App/Accessibility.dll index 659510bc..463eb0ad 100644 Binary files a/App/Accessibility.dll and b/App/Accessibility.dll differ diff --git a/App/Dapper.dll b/App/Dapper.dll index 624ff7f3..84d2de05 100644 Binary files a/App/Dapper.dll and b/App/Dapper.dll differ diff --git a/App/DirectWriteForwarder.dll b/App/DirectWriteForwarder.dll index b6eb66ef..90fe5b33 100644 Binary files a/App/DirectWriteForwarder.dll and b/App/DirectWriteForwarder.dll differ diff --git a/App/Hi.WpfPlus.dll b/App/Hi.WpfPlus.dll index 6cb7a5ef..b38d0037 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 5b174136..2222d27d 100644 Binary files a/App/HiCbtr.dll and b/App/HiCbtr.dll differ diff --git a/App/HiDisp.dll b/App/HiDisp.dll index 74d3d039..075eb79d 100644 Binary files a/App/HiDisp.dll and b/App/HiDisp.dll differ diff --git a/App/HiGeom.dll b/App/HiGeom.dll index abf8d23f..16e62558 100644 Binary files a/App/HiGeom.dll and b/App/HiGeom.dll differ diff --git a/App/HiLicense.dll b/App/HiLicense.dll index 47f9b3b2..932b444f 100644 Binary files a/App/HiLicense.dll and b/App/HiLicense.dll differ diff --git a/App/HiMech.dll b/App/HiMech.dll index 8397e232..ffeb1358 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 6cf73fad..d1aff893 100644 --- a/App/HiNC-2025-win-desktop.deps.json +++ b/App/HiNC-2025-win-desktop.deps.json @@ -11,697 +11,697 @@ "dependencies": { "AvalonEdit": "6.3.0.90", "FontAwesome.Sharp": "6.3.0", - "Hi.WpfPlus": "3.1.143", - "HiNc": "3.1.175", - "HiNc-Resource": "3.1.58", + "Hi.WpfPlus": "3.2.13", + "HiNc": "3.2.10", + "HiNc-Resource": "3.2.9", "Serilog.Extensions.Hosting": "10.0.0", "Serilog.Sinks.Console": "6.1.1", "Serilog.Sinks.File": "7.0.0", - "runtimepack.Microsoft.NETCore.App.Runtime.win-x64": "10.0.8", - "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64": "10.0.8", - "runtimepack.Microsoft.AspNetCore.App.Runtime.win-x64": "10.0.8" + "runtimepack.Microsoft.NETCore.App.Runtime.win-x64": "10.0.11", + "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64": "10.0.11", + "runtimepack.Microsoft.AspNetCore.App.Runtime.win-x64": "10.0.11" }, "runtime": { "HiNC-2025-win-desktop.dll": {} } }, - "runtimepack.Microsoft.NETCore.App.Runtime.win-x64/10.0.8": { + "runtimepack.Microsoft.NETCore.App.Runtime.win-x64/10.0.11": { "runtime": { "Microsoft.CSharp.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.VisualBasic.Core.dll": { "assemblyVersion": "15.0.0.0", - "fileVersion": "15.0.826.23019" + "fileVersion": "15.0.1126.37416" }, "Microsoft.Win32.Primitives.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Win32.Registry.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.AppContext.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Buffers.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Collections.Concurrent.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Collections.Immutable.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Collections.NonGeneric.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Collections.Specialized.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Collections.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.ComponentModel.Annotations.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.ComponentModel.DataAnnotations.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.ComponentModel.EventBasedAsync.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.ComponentModel.Primitives.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.ComponentModel.TypeConverter.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.ComponentModel.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Configuration.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Console.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Core.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Data.Common.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Data.DataSetExtensions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Data.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Diagnostics.Contracts.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Diagnostics.Debug.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Diagnostics.DiagnosticSource.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Diagnostics.FileVersionInfo.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Diagnostics.Process.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Diagnostics.StackTrace.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Diagnostics.TextWriterTraceListener.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Diagnostics.Tools.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Diagnostics.TraceSource.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Diagnostics.Tracing.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Drawing.Primitives.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Dynamic.Runtime.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Formats.Asn1.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Formats.Tar.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Globalization.Calendars.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Globalization.Extensions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Globalization.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.IO.Compression.Brotli.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.IO.Compression.FileSystem.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.IO.Compression.ZipFile.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.IO.Compression.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.IO.FileSystem.AccessControl.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.IO.FileSystem.DriveInfo.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.IO.FileSystem.Primitives.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.IO.FileSystem.Watcher.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.IO.FileSystem.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.IO.IsolatedStorage.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.IO.MemoryMappedFiles.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.IO.Pipelines.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.IO.Pipes.AccessControl.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.IO.Pipes.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.IO.UnmanagedMemoryStream.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.IO.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Linq.AsyncEnumerable.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Linq.Expressions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Linq.Parallel.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Linq.Queryable.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Linq.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Memory.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.Http.Json.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.Http.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.HttpListener.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.Mail.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.NameResolution.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.NetworkInformation.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.Ping.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.Primitives.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.Quic.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.Requests.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.Security.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.ServerSentEvents.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.ServicePoint.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.Sockets.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.WebClient.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.WebHeaderCollection.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.WebProxy.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.WebSockets.Client.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.WebSockets.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Net.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Numerics.Vectors.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Numerics.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.ObjectModel.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Private.CoreLib.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Private.DataContractSerialization.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Private.Uri.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Private.Xml.Linq.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Private.Xml.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Reflection.DispatchProxy.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Reflection.Emit.ILGeneration.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Reflection.Emit.Lightweight.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Reflection.Emit.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Reflection.Extensions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Reflection.Metadata.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Reflection.Primitives.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Reflection.TypeExtensions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Reflection.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Resources.Reader.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Resources.ResourceManager.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Resources.Writer.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Runtime.CompilerServices.Unsafe.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Runtime.CompilerServices.VisualC.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Runtime.Extensions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Runtime.Handles.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Runtime.InteropServices.JavaScript.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Runtime.InteropServices.RuntimeInformation.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Runtime.InteropServices.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Runtime.Intrinsics.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Runtime.Loader.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Runtime.Numerics.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Runtime.Serialization.Formatters.dll": { "assemblyVersion": "8.1.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Runtime.Serialization.Json.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Runtime.Serialization.Primitives.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Runtime.Serialization.Xml.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Runtime.Serialization.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Runtime.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.AccessControl.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.Claims.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.Cryptography.Algorithms.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.Cryptography.Cng.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.Cryptography.Csp.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.Cryptography.Encoding.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.Cryptography.OpenSsl.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.Cryptography.Primitives.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.Cryptography.X509Certificates.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.Cryptography.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.Principal.Windows.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.Principal.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.SecureString.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.ServiceModel.Web.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.ServiceProcess.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Text.Encoding.CodePages.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Text.Encoding.Extensions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Text.Encoding.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Text.Encodings.Web.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Text.Json.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Text.RegularExpressions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Threading.AccessControl.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Threading.Channels.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Threading.Overlapped.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Threading.Tasks.Dataflow.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Threading.Tasks.Extensions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Threading.Tasks.Parallel.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Threading.Tasks.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Threading.Thread.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Threading.ThreadPool.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Threading.Timer.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Threading.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Transactions.Local.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Transactions.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.ValueTuple.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Web.HttpUtility.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Web.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Windows.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Xml.Linq.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Xml.ReaderWriter.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Xml.Serialization.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Xml.XDocument.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Xml.XPath.XDocument.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Xml.XPath.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Xml.XmlDocument.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Xml.XmlSerializer.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Xml.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "mscorlib.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "netstandard.dll": { "assemblyVersion": "2.1.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" } }, "native": { @@ -709,150 +709,150 @@ "fileVersion": "14.42.34436.0" }, "System.IO.Compression.Native.dll": { - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "clretwrc.dll": { - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "clrgc.dll": { - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "clrgcexp.dll": { - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "clrjit.dll": { - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "coreclr.dll": { - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "createdump.exe": { - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "hostfxr.dll": { - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "hostpolicy.dll": { - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "mscordaccore.dll": { - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, - "mscordaccore_amd64_amd64_10.0.826.23019.dll": { - "fileVersion": "10.0.826.23019" + "mscordaccore_amd64_amd64_10.0.1126.37416.dll": { + "fileVersion": "10.0.1126.37416" }, "mscordbi.dll": { - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "mscorrc.dll": { - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "msquic.dll": { - "fileVersion": "2.4.18.0" + "fileVersion": "2.5.9.0" } } }, - "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64/10.0.8": { + "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64/10.0.11": { "runtime": { "Accessibility.dll": { "assemblyVersion": "4.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "DirectWriteForwarder.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.VisualBasic.Forms.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.VisualBasic.dll": { "assemblyVersion": "10.1.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Win32.Registry.AccessControl.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Win32.SystemEvents.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "PresentationCore.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "PresentationFramework-SystemCore.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "PresentationFramework-SystemData.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "PresentationFramework-SystemDrawing.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "PresentationFramework-SystemXml.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "PresentationFramework-SystemXmlLinq.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "PresentationFramework.Aero.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "PresentationFramework.Aero2.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "PresentationFramework.AeroLite.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "PresentationFramework.Classic.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "PresentationFramework.Fluent.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "PresentationFramework.Luna.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "PresentationFramework.Royale.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "PresentationFramework.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "PresentationUI.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "ReachFramework.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.CodeDom.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Configuration.ConfigurationManager.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Design.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Diagnostics.EventLog.Messages.dll": { "assemblyVersion": "10.0.0.0", @@ -860,131 +860,131 @@ }, "System.Diagnostics.EventLog.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Diagnostics.PerformanceCounter.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.DirectoryServices.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Drawing.Common.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Drawing.Design.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Drawing.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Formats.Nrbf.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.IO.Packaging.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Printing.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Private.Windows.Core.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Private.Windows.GdiPlus.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Resources.Extensions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.Cryptography.Pkcs.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.Cryptography.ProtectedData.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.Cryptography.Xml.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Security.Permissions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Windows.Controls.Ribbon.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Windows.Extensions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Windows.Forms.Design.Editors.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Windows.Forms.Design.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Windows.Forms.Primitives.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Windows.Forms.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Windows.Input.Manipulations.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Windows.Presentation.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Windows.Primitives.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Xaml.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "UIAutomationClient.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "UIAutomationClientSideProviders.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "UIAutomationProvider.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "UIAutomationTypes.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "WindowsBase.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "WindowsFormsIntegration.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" } }, "native": { @@ -992,577 +992,577 @@ "fileVersion": "10.0.26100.7705" }, "PenImc_cor3.dll": { - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "PresentationNative_cor3.dll": { - "fileVersion": "10.0.526.16010" + "fileVersion": "10.0.526.35501" }, "vcruntime140_cor3.dll": { "fileVersion": "14.44.35211.0" }, "wpfgfx_cor3.dll": { - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" } } }, - "runtimepack.Microsoft.AspNetCore.App.Runtime.win-x64/10.0.8": { + "runtimepack.Microsoft.AspNetCore.App.Runtime.win-x64/10.0.11": { "runtime": { "Microsoft.AspNetCore.Antiforgery.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Authentication.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Authentication.BearerToken.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Authentication.Cookies.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Authentication.Core.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Authentication.OAuth.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Authentication.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Authorization.Policy.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Authorization.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Components.Authorization.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Components.Endpoints.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Components.Forms.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Components.Server.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Components.Web.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Components.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Connections.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.CookiePolicy.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Cors.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Cryptography.Internal.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Cryptography.KeyDerivation.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.DataProtection.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.DataProtection.Extensions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.DataProtection.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Diagnostics.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Diagnostics.HealthChecks.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Diagnostics.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.HostFiltering.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Hosting.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Hosting.Server.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Hosting.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Html.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Http.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Http.Connections.Common.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Http.Connections.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Http.Extensions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Http.Features.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Http.Results.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Http.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.HttpLogging.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.HttpOverrides.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.HttpsPolicy.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Identity.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Localization.Routing.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Localization.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Metadata.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Mvc.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Mvc.ApiExplorer.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Mvc.Core.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Mvc.Cors.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Mvc.DataAnnotations.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Mvc.Formatters.Json.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Mvc.Formatters.Xml.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Mvc.Localization.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Mvc.Razor.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Mvc.RazorPages.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Mvc.TagHelpers.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Mvc.ViewFeatures.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Mvc.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.OutputCaching.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.RateLimiting.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Razor.Runtime.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Razor.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.RequestDecompression.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.ResponseCaching.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.ResponseCaching.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.ResponseCompression.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Rewrite.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Routing.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Routing.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Server.HttpSys.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Server.IIS.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Server.IISIntegration.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Server.Kestrel.Core.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Server.Kestrel.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.Session.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.SignalR.Common.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.SignalR.Core.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.SignalR.Protocols.Json.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.SignalR.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.StaticAssets.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.StaticFiles.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.WebSockets.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.WebUtilities.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.AspNetCore.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Caching.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Caching.Memory.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Configuration.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Configuration.Binder.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Configuration.CommandLine.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Configuration.FileExtensions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Configuration.Ini.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Configuration.Json.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Configuration.KeyPerFile.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Configuration.UserSecrets.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Configuration.Xml.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Configuration.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.DependencyInjection.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.DependencyInjection.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Diagnostics.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Diagnostics.HealthChecks.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Diagnostics.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Features.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.FileProviders.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.FileProviders.Composite.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.FileProviders.Embedded.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.FileProviders.Physical.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.FileSystemGlobbing.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Hosting.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Hosting.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Http.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Identity.Core.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Identity.Stores.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Localization.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Localization.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Logging.Abstractions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Logging.Configuration.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Logging.Console.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Logging.Debug.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Logging.EventLog.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Logging.EventSource.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Logging.TraceSource.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Logging.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.ObjectPool.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Options.ConfigurationExtensions.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Options.DataAnnotations.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Options.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Primitives.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.Validation.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Extensions.WebEncoders.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.JSInterop.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "Microsoft.Net.Http.Headers.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Formats.Cbor.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" }, "System.Threading.RateLimiting.dll": { "assemblyVersion": "10.0.0.0", - "fileVersion": "10.0.826.23019" + "fileVersion": "10.0.1126.37416" } }, "native": { "aspnetcorev2_inprocess.dll": { - "fileVersion": "20.0.26120.8" + "fileVersion": "20.0.26205.11" } } }, @@ -1582,11 +1582,11 @@ } } }, - "Dapper/2.1.35": { + "Dapper/2.1.79": { "runtime": { - "lib/net7.0/Dapper.dll": { + "lib/net10.0/Dapper.dll": { "assemblyVersion": "2.0.0.0", - "fileVersion": "2.1.35.13827" + "fileVersion": "2.1.79.29349" } } }, @@ -1598,36 +1598,36 @@ } } }, - "Hi.WpfPlus/3.1.143": { + "Hi.WpfPlus/3.2.13": { "dependencies": { - "HiDisp": "3.1.149" + "HiDisp": "3.2.18" }, "runtime": { "lib/net10.0-windows7.0/Hi.WpfPlus.dll": { - "assemblyVersion": "3.1.143.0", - "fileVersion": "3.1.143.0" + "assemblyVersion": "3.2.13.0", + "fileVersion": "3.2.13.0" } } }, - "HiCbtr/3.1.146": { + "HiCbtr/3.2.14": { "dependencies": { - "HiDisp": "3.1.149" + "HiDisp": "3.2.18" }, "runtime": { "lib/net10.0/HiCbtr.dll": { - "assemblyVersion": "3.1.146.0", - "fileVersion": "3.1.146.0" + "assemblyVersion": "3.2.14.0", + "fileVersion": "3.2.14.0" } } }, - "HiDisp/3.1.149": { + "HiDisp/3.2.18": { "dependencies": { - "HiGeom": "3.1.137" + "HiGeom": "3.2.12" }, "runtime": { "lib/net10.0/HiDisp.dll": { - "assemblyVersion": "3.1.149.0", - "fileVersion": "3.1.149.0" + "assemblyVersion": "3.2.18.0", + "fileVersion": "3.2.18.0" } }, "native": { @@ -1645,15 +1645,15 @@ } } }, - "HiGeom/3.1.137": { + "HiGeom/3.2.12": { "dependencies": { "MathNet.Numerics": "5.0.0", - "Microsoft.CodeAnalysis.Scripting.Common": "5.3.0" + "Microsoft.CodeAnalysis.Scripting.Common": "5.9.0" }, "runtime": { "lib/net10.0/HiGeom.dll": { - "assemblyVersion": "3.1.137.0", - "fileVersion": "3.1.137.0" + "assemblyVersion": "3.2.12.0", + "fileVersion": "3.2.12.0" } }, "resources": { @@ -1665,53 +1665,48 @@ } } }, - "HiLicense/3.1.139": { + "HiLicense/3.2.13": { "dependencies": { - "HiGeom": "3.1.137" + "HiGeom": "3.2.12" }, "runtime": { "lib/net10.0/HiLicense.dll": { - "assemblyVersion": "3.1.139.0", - "fileVersion": "3.1.139.0" + "assemblyVersion": "3.2.13.0", + "fileVersion": "3.2.13.0" } } }, - "HiMech/3.1.157": { + "HiMech/3.2.13": { "dependencies": { "CommandLineParser": "2.9.1", - "HiCbtr": "3.1.146", - "Microsoft.CodeAnalysis.CSharp.Scripting": "5.3.0" + "HiCbtr": "3.2.14", + "Microsoft.CodeAnalysis.CSharp.Scripting": "5.9.0" }, "runtime": { "lib/net10.0/HiMech.dll": { - "assemblyVersion": "3.1.157.0", - "fileVersion": "3.1.157.0" + "assemblyVersion": "3.2.13.0", + "fileVersion": "3.2.13.0" } }, "resources": { "lib/net10.0/en/HiMech.resources.dll": { "locale": "en" - }, - "lib/net10.0/zh-Hans/HiMech.resources.dll": { - "locale": "zh-Hans" - }, - "lib/net10.0/zh-Hant/HiMech.resources.dll": { - "locale": "zh-Hant" } } }, - "HiNc/3.1.175": { + "HiNc/3.2.10": { "dependencies": { - "Dapper": "2.1.35", - "HiLicense": "3.1.139", - "HiMech": "3.1.157", - "HiUniNc": "3.1.152", - "Microsoft.Data.Sqlite": "9.0.0" + "Dapper": "2.1.79", + "HiLicense": "3.2.13", + "HiMech": "3.2.13", + "HiUniNc": "3.2.12", + "Microsoft.Data.Sqlite": "10.0.9", + "SQLitePCLRaw.bundle_e_sqlite3": "3.0.3" }, "runtime": { "lib/net10.0/HiNc.dll": { - "assemblyVersion": "3.1.175.0", - "fileVersion": "3.1.175.0" + "assemblyVersion": "3.2.10.0", + "fileVersion": "3.2.10.0" } }, "resources": { @@ -1723,22 +1718,22 @@ } } }, - "HiNc-Resource/3.1.58": { + "HiNc-Resource/3.2.9": { "runtime": { "lib/net10.0/HiNc-Resource.dll": { - "assemblyVersion": "3.1.58.0", - "fileVersion": "3.1.58.0" + "assemblyVersion": "3.2.9.0", + "fileVersion": "3.2.9.0" } } }, - "HiUniNc/3.1.152": { + "HiUniNc/3.2.12": { "dependencies": { - "HiMech": "3.1.157" + "HiMech": "3.2.13" }, "runtime": { "lib/net10.0/HiUniNc.dll": { - "assemblyVersion": "3.1.152.0", - "fileVersion": "3.1.152.0" + "assemblyVersion": "3.2.12.0", + "fileVersion": "3.2.12.0" } } }, @@ -1750,11 +1745,11 @@ } } }, - "Microsoft.CodeAnalysis.Common/5.3.0": { + "Microsoft.CodeAnalysis.Common/5.9.0": { "runtime": { "lib/net10.0/Microsoft.CodeAnalysis.dll": { - "assemblyVersion": "5.3.0.0", - "fileVersion": "5.300.26.7805" + "assemblyVersion": "5.9.0.0", + "fileVersion": "5.900.26.35703" } }, "resources": { @@ -1799,14 +1794,14 @@ } } }, - "Microsoft.CodeAnalysis.CSharp/5.3.0": { + "Microsoft.CodeAnalysis.CSharp/5.9.0": { "dependencies": { - "Microsoft.CodeAnalysis.Common": "5.3.0" + "Microsoft.CodeAnalysis.Common": "5.9.0" }, "runtime": { "lib/net10.0/Microsoft.CodeAnalysis.CSharp.dll": { - "assemblyVersion": "5.3.0.0", - "fileVersion": "5.300.26.7805" + "assemblyVersion": "5.9.0.0", + "fileVersion": "5.900.26.35703" } }, "resources": { @@ -1851,16 +1846,16 @@ } } }, - "Microsoft.CodeAnalysis.CSharp.Scripting/5.3.0": { + "Microsoft.CodeAnalysis.CSharp.Scripting/5.9.0": { "dependencies": { - "Microsoft.CodeAnalysis.CSharp": "5.3.0", - "Microsoft.CodeAnalysis.Common": "5.3.0", - "Microsoft.CodeAnalysis.Scripting.Common": "5.3.0" + "Microsoft.CodeAnalysis.CSharp": "5.9.0", + "Microsoft.CodeAnalysis.Common": "5.9.0", + "Microsoft.CodeAnalysis.Scripting.Common": "5.9.0" }, "runtime": { "lib/net10.0/Microsoft.CodeAnalysis.CSharp.Scripting.dll": { - "assemblyVersion": "5.3.0.0", - "fileVersion": "5.300.26.7805" + "assemblyVersion": "5.9.0.0", + "fileVersion": "5.900.26.35703" } }, "resources": { @@ -1905,14 +1900,14 @@ } } }, - "Microsoft.CodeAnalysis.Scripting.Common/5.3.0": { + "Microsoft.CodeAnalysis.Scripting.Common/5.9.0": { "dependencies": { - "Microsoft.CodeAnalysis.Common": "5.3.0" + "Microsoft.CodeAnalysis.Common": "5.9.0" }, "runtime": { "lib/net10.0/Microsoft.CodeAnalysis.Scripting.dll": { - "assemblyVersion": "5.3.0.0", - "fileVersion": "5.300.26.7805" + "assemblyVersion": "5.9.0.0", + "fileVersion": "5.900.26.35703" } }, "resources": { @@ -1957,21 +1952,21 @@ } } }, - "Microsoft.Data.Sqlite/9.0.0": { + "Microsoft.Data.Sqlite/10.0.9": { "dependencies": { - "Microsoft.Data.Sqlite.Core": "9.0.0", - "SQLitePCLRaw.bundle_e_sqlite3": "2.1.10", - "SQLitePCLRaw.core": "2.1.10" + "Microsoft.Data.Sqlite.Core": "10.0.9", + "SQLitePCLRaw.bundle_e_sqlite3": "3.0.3", + "SQLitePCLRaw.core": "3.0.3" } }, - "Microsoft.Data.Sqlite.Core/9.0.0": { + "Microsoft.Data.Sqlite.Core/10.0.9": { "dependencies": { - "SQLitePCLRaw.core": "2.1.10" + "SQLitePCLRaw.core": "3.0.3" }, "runtime": { "lib/net8.0/Microsoft.Data.Sqlite.dll": { - "assemblyVersion": "9.0.0.0", - "fileVersion": "9.0.24.52902" + "assemblyVersion": "10.0.9.0", + "fileVersion": "10.0.926.27113" } } }, @@ -2028,41 +2023,46 @@ } } }, - "SQLitePCLRaw.bundle_e_sqlite3/2.1.10": { - "dependencies": { - "SQLitePCLRaw.lib.e_sqlite3": "2.1.10", - "SQLitePCLRaw.provider.e_sqlite3": "2.1.10" - }, - "runtime": { - "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll": { - "assemblyVersion": "2.1.10.2445", - "fileVersion": "2.1.10.2445" - } - } - }, - "SQLitePCLRaw.core/2.1.10": { - "runtime": { - "lib/netstandard2.0/SQLitePCLRaw.core.dll": { - "assemblyVersion": "2.1.10.2445", - "fileVersion": "2.1.10.2445" - } - } - }, - "SQLitePCLRaw.lib.e_sqlite3/2.1.10": { + "SourceGear.sqlite3/3.50.4.5": { "native": { "runtimes/win-x64/native/e_sqlite3.dll": { - "fileVersion": "0.0.0.0" + "fileVersion": "3.50.4.5" } } }, - "SQLitePCLRaw.provider.e_sqlite3/2.1.10": { + "SQLitePCLRaw.bundle_e_sqlite3/3.0.3": { "dependencies": { - "SQLitePCLRaw.core": "2.1.10" + "SQLitePCLRaw.config.e_sqlite3": "3.0.3", + "SourceGear.sqlite3": "3.50.4.5" + } + }, + "SQLitePCLRaw.config.e_sqlite3/3.0.3": { + "dependencies": { + "SQLitePCLRaw.provider.e_sqlite3": "3.0.3" }, "runtime": { - "lib/net6.0-windows7.0/SQLitePCLRaw.provider.e_sqlite3.dll": { - "assemblyVersion": "2.1.10.2445", - "fileVersion": "2.1.10.2445" + "lib/net8.0/SQLitePCLRaw.batteries_v2.dll": { + "assemblyVersion": "3.0.3.3048", + "fileVersion": "3.0.3.3048" + } + } + }, + "SQLitePCLRaw.core/3.0.3": { + "runtime": { + "lib/net8.0/SQLitePCLRaw.core.dll": { + "assemblyVersion": "3.0.3.3048", + "fileVersion": "3.0.3.3048" + } + } + }, + "SQLitePCLRaw.provider.e_sqlite3/3.0.3": { + "dependencies": { + "SQLitePCLRaw.core": "3.0.3" + }, + "runtime": { + "lib/net8.0-windows7.0/SQLitePCLRaw.provider.e_sqlite3.dll": { + "assemblyVersion": "3.0.3.3048", + "fileVersion": "3.0.3.3048" } } } @@ -2074,17 +2074,17 @@ "serviceable": false, "sha512": "" }, - "runtimepack.Microsoft.NETCore.App.Runtime.win-x64/10.0.8": { + "runtimepack.Microsoft.NETCore.App.Runtime.win-x64/10.0.11": { "type": "runtimepack", "serviceable": false, "sha512": "" }, - "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64/10.0.8": { + "runtimepack.Microsoft.WindowsDesktop.App.Runtime.win-x64/10.0.11": { "type": "runtimepack", "serviceable": false, "sha512": "" }, - "runtimepack.Microsoft.AspNetCore.App.Runtime.win-x64/10.0.8": { + "runtimepack.Microsoft.AspNetCore.App.Runtime.win-x64/10.0.11": { "type": "runtimepack", "serviceable": false, "sha512": "" @@ -2103,12 +2103,12 @@ "path": "commandlineparser/2.9.1", "hashPath": "commandlineparser.2.9.1.nupkg.sha512" }, - "Dapper/2.1.35": { + "Dapper/2.1.79": { "type": "package", "serviceable": true, - "sha512": "sha512-YKRwjVfrG7GYOovlGyQoMvr1/IJdn+7QzNXJxyMh0YfFF5yvDmTYaJOVYWsckreNjGsGSEtrMTpnzxTUq/tZQw==", - "path": "dapper/2.1.35", - "hashPath": "dapper.2.1.35.nupkg.sha512" + "sha512": "sha512-8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==", + "path": "dapper/2.1.79", + "hashPath": "dapper.2.1.79.nupkg.sha512" }, "FontAwesome.Sharp/6.3.0": { "type": "package", @@ -2117,68 +2117,68 @@ "path": "fontawesome.sharp/6.3.0", "hashPath": "fontawesome.sharp.6.3.0.nupkg.sha512" }, - "Hi.WpfPlus/3.1.143": { + "Hi.WpfPlus/3.2.13": { "type": "package", "serviceable": true, - "sha512": "sha512-NqoWlkW+y+6uGCx+Ptngc5kreX0g2wXfZiyrnvrpwTzndBZxJSTy9t+rLHxTI8EcKD71kRtNd5p57P3LgJHLkQ==", - "path": "hi.wpfplus/3.1.143", - "hashPath": "hi.wpfplus.3.1.143.nupkg.sha512" + "sha512": "sha512-vuL0TWaA5FY1iLY7sc4j0MpJLNg0U2zP6P4skwX54DnlXKjPeF+T9LLL6o5iRgb3Do9hvWgrZfTe+Ylec6Hdhw==", + "path": "hi.wpfplus/3.2.13", + "hashPath": "hi.wpfplus.3.2.13.nupkg.sha512" }, - "HiCbtr/3.1.146": { + "HiCbtr/3.2.14": { "type": "package", "serviceable": true, - "sha512": "sha512-5AjDVQo4agjjH0bqY/l62sTTU93kt+FBlNK231qLli+qn7loalh0dCaYA5r4pindPKaQuvgvDs6atvRfN7JlVA==", - "path": "hicbtr/3.1.146", - "hashPath": "hicbtr.3.1.146.nupkg.sha512" + "sha512": "sha512-KWJ5TWCI6v7omv/ZS3FxAIANuj94W8IazWNs4EEd0xxiaX24VzCTE10CCnYEQiAYTtlTc3+Z/xxuPvH0Bu9zqA==", + "path": "hicbtr/3.2.14", + "hashPath": "hicbtr.3.2.14.nupkg.sha512" }, - "HiDisp/3.1.149": { + "HiDisp/3.2.18": { "type": "package", "serviceable": true, - "sha512": "sha512-yz18mPtwkDOzOL0RnPOJZOD15LSbJ2sLIw7mhTFOJ6i0oCDJFh3Qm5z1g+fOxWf72hQxlIH6vyOu+wVSJ37CtA==", - "path": "hidisp/3.1.149", - "hashPath": "hidisp.3.1.149.nupkg.sha512" + "sha512": "sha512-SLfzhxiNRcVAOAdsNKUOQtVHZaNz1fxzNi6LmIcjEcQYZ2+dfmj9vJB8DkLys+LE5j2dY+XiCHUNDlTPzq1hNQ==", + "path": "hidisp/3.2.18", + "hashPath": "hidisp.3.2.18.nupkg.sha512" }, - "HiGeom/3.1.137": { + "HiGeom/3.2.12": { "type": "package", "serviceable": true, - "sha512": "sha512-9nfvREp+KOztgfAAOzD7ZL+Tzh39vFnr2f4ATwS0v5Zg+eo6++iXEI1BVz1P3EhsEJHfPoRYhw+MnNX5834YEg==", - "path": "higeom/3.1.137", - "hashPath": "higeom.3.1.137.nupkg.sha512" + "sha512": "sha512-RwhhVOZRPX0ifOHP/CUSp1EUs/gxQfeuDhkGPByfDbml+NNwqCU39by0s8rSf7GObwCfSPcLg9RxNKOc6Y7DBQ==", + "path": "higeom/3.2.12", + "hashPath": "higeom.3.2.12.nupkg.sha512" }, - "HiLicense/3.1.139": { + "HiLicense/3.2.13": { "type": "package", "serviceable": true, - "sha512": "sha512-jzSJBGgeEhCvrDNwYIiMjLd4cI1GgXuC9ryUon12iYl3LFcmghMkffkmzxhAJqO2e8mt4cja/IaUJ2h7pKmjiQ==", - "path": "hilicense/3.1.139", - "hashPath": "hilicense.3.1.139.nupkg.sha512" + "sha512": "sha512-w/oh64841ub8VDqYDxO3GrKQb7Cpyf9+McYbk+FNc4WVKpCa97yuuPncN7CKMRjAIqJTxZExsGRFthb2NFxUbQ==", + "path": "hilicense/3.2.13", + "hashPath": "hilicense.3.2.13.nupkg.sha512" }, - "HiMech/3.1.157": { + "HiMech/3.2.13": { "type": "package", "serviceable": true, - "sha512": "sha512-qRPonSJot3XkDs4ELGyDJXU8wCH0pZxXifCTQdV066rybUMtYtAi3tYZXvm5qhdwv72LrV1UimvAtnAL1+riPg==", - "path": "himech/3.1.157", - "hashPath": "himech.3.1.157.nupkg.sha512" + "sha512": "sha512-RTg2PqdqP5cA4bvetPcz9qWy4tNajEtvg7Got0M2MXhOGziehca2nCSL+c+pP16GUc3VaxAzxtMBgyYx9c/ynA==", + "path": "himech/3.2.13", + "hashPath": "himech.3.2.13.nupkg.sha512" }, - "HiNc/3.1.175": { + "HiNc/3.2.10": { "type": "package", "serviceable": true, - "sha512": "sha512-vO9UmlkXx6JRqQXa7UFkmB98swYACPShAT1ntSAgxsCQuWojNR0RGHoCew9cDaRltDrUZ4kHreDNYXi7C+8gNA==", - "path": "hinc/3.1.175", - "hashPath": "hinc.3.1.175.nupkg.sha512" + "sha512": "sha512-5pO5W+emwANW3NEquu9QHWxoaUDl2eVkciRScnmqXDLD/GpbxjFulxXa0vfTCFXmK5ZERwnvuBGQsT8UjEvhDA==", + "path": "hinc/3.2.10", + "hashPath": "hinc.3.2.10.nupkg.sha512" }, - "HiNc-Resource/3.1.58": { + "HiNc-Resource/3.2.9": { "type": "package", "serviceable": true, - "sha512": "sha512-syXWolXo2nF6+DYk4W5BLjLMCS+apVtuvph3CMnetxlczhqpCzfQ1yWQ1ufz3VB/vixcZw/4FCbmdmDgVYPvIA==", - "path": "hinc-resource/3.1.58", - "hashPath": "hinc-resource.3.1.58.nupkg.sha512" + "sha512": "sha512-Z5IMBYg8qjtHrpkpiySeQ3TD7Jw1j8+0Mke8T0OZ1rQFw33s6n4L8IKxfDc6epRlnEL78Rg9Zkp6VQTsqbdhEQ==", + "path": "hinc-resource/3.2.9", + "hashPath": "hinc-resource.3.2.9.nupkg.sha512" }, - "HiUniNc/3.1.152": { + "HiUniNc/3.2.12": { "type": "package", "serviceable": true, - "sha512": "sha512-f9i0ALWqfwMJTU3PMdSjh0yCK0aJ1ZG4zMDoOk0OpAt+vpwUrQ0n6IH/Q1y/OtZR8F4d2IsEbvej7UUOM+8rnA==", - "path": "hiuninc/3.1.152", - "hashPath": "hiuninc.3.1.152.nupkg.sha512" + "sha512": "sha512-H58YaGzVBJyXg/z7KgUdowSQdtfOMvrld/fpverEoyT+d1AoMFgUjP1nUe8hwZ2STbHQDOY65Cb0MytgiEno/w==", + "path": "hiuninc/3.2.12", + "hashPath": "hiuninc.3.2.12.nupkg.sha512" }, "MathNet.Numerics/5.0.0": { "type": "package", @@ -2187,47 +2187,47 @@ "path": "mathnet.numerics/5.0.0", "hashPath": "mathnet.numerics.5.0.0.nupkg.sha512" }, - "Microsoft.CodeAnalysis.Common/5.3.0": { + "Microsoft.CodeAnalysis.Common/5.9.0": { "type": "package", "serviceable": true, - "sha512": "sha512-uC0qk3jzTQY7i90ehfnCqaOZpBUGJyPMiHJ3c0jOb8yaPBjWzIhVdNxPbeVzI74DB0C+YgBKPLqUkgFZzua5Mg==", - "path": "microsoft.codeanalysis.common/5.3.0", - "hashPath": "microsoft.codeanalysis.common.5.3.0.nupkg.sha512" + "sha512": "sha512-IYaIaUWdIx539AReKZOBEqTskFusZfCh/wFSPilDvCn5Say8MegLw2LONcSIcVy+v3Gzv53qYBspgvBGSErfbQ==", + "path": "microsoft.codeanalysis.common/5.9.0", + "hashPath": "microsoft.codeanalysis.common.5.9.0.nupkg.sha512" }, - "Microsoft.CodeAnalysis.CSharp/5.3.0": { + "Microsoft.CodeAnalysis.CSharp/5.9.0": { "type": "package", "serviceable": true, - "sha512": "sha512-SQFNGQF4f7UfDXKxMzzGNMr3fjrPDIjLfmRvvVgDCw+dyvEHDaRfHuKA5q0Pr0/JW0Gcw89TxrxrS/MjwBvluQ==", - "path": "microsoft.codeanalysis.csharp/5.3.0", - "hashPath": "microsoft.codeanalysis.csharp.5.3.0.nupkg.sha512" + "sha512": "sha512-7JGDA0UT1+h7k9ZcA3rF4eFC8+QPq1xyYaXxag4p8r/zzPurEJxvdi7aM+MRL/SfP7XADXpWF/pl/eUYXOq/ww==", + "path": "microsoft.codeanalysis.csharp/5.9.0", + "hashPath": "microsoft.codeanalysis.csharp.5.9.0.nupkg.sha512" }, - "Microsoft.CodeAnalysis.CSharp.Scripting/5.3.0": { + "Microsoft.CodeAnalysis.CSharp.Scripting/5.9.0": { "type": "package", "serviceable": true, - "sha512": "sha512-dKZE07CR6DMf1YxUmzV4+kXUn7lFPkT+Q84fvv75cAi4sx/tdl3gIxfBMp8ZnY9GYQK4Z+CIylVNfznaPSo2wQ==", - "path": "microsoft.codeanalysis.csharp.scripting/5.3.0", - "hashPath": "microsoft.codeanalysis.csharp.scripting.5.3.0.nupkg.sha512" + "sha512": "sha512-z7+VFeylojEtRj7RHr2xcwfxCegOJg+y4sQmp2SdiVr+Kd/hHyHyrm9ltzuMG5BAtnIrweUvyc0PaqMSbeMfwA==", + "path": "microsoft.codeanalysis.csharp.scripting/5.9.0", + "hashPath": "microsoft.codeanalysis.csharp.scripting.5.9.0.nupkg.sha512" }, - "Microsoft.CodeAnalysis.Scripting.Common/5.3.0": { + "Microsoft.CodeAnalysis.Scripting.Common/5.9.0": { "type": "package", "serviceable": true, - "sha512": "sha512-Enl1poxX+fnMij0xp+b5iWovtWlXa0QBawtajIEdnv8NJNqo+fGwtoNAIDDVoIRcNUHIykUIgzYMmZEwHFD5xQ==", - "path": "microsoft.codeanalysis.scripting.common/5.3.0", - "hashPath": "microsoft.codeanalysis.scripting.common.5.3.0.nupkg.sha512" + "sha512": "sha512-poPyBPb6ML7xUMeMAD6qq8fj0QjufZx9gU7WhZlTeGGKzvmcAooVuucSwMXw+gxLA0EG4jyiGocIkkCxbjITZw==", + "path": "microsoft.codeanalysis.scripting.common/5.9.0", + "hashPath": "microsoft.codeanalysis.scripting.common.5.9.0.nupkg.sha512" }, - "Microsoft.Data.Sqlite/9.0.0": { + "Microsoft.Data.Sqlite/10.0.9": { "type": "package", "serviceable": true, - "sha512": "sha512-lw6wthgXGx3r/U775k1UkUAWIn0kAT0wj4ZRq0WlhPx4WAOiBsIjgDKgWkXcNTGT0KfHiClkM+tyPVFDvxeObw==", - "path": "microsoft.data.sqlite/9.0.0", - "hashPath": "microsoft.data.sqlite.9.0.0.nupkg.sha512" + "sha512": "sha512-/eBwiZPcNisn0qZX+Zk4YCftlK/vnoWqv7hHnmSk8MjPxFdYYkmPObpogT0MfCCWN6oAIZnMCo0SoOtZlbbmgQ==", + "path": "microsoft.data.sqlite/10.0.9", + "hashPath": "microsoft.data.sqlite.10.0.9.nupkg.sha512" }, - "Microsoft.Data.Sqlite.Core/9.0.0": { + "Microsoft.Data.Sqlite.Core/10.0.9": { "type": "package", "serviceable": true, - "sha512": "sha512-cFfZjFL+tqzGYw9lB31EkV1IWF5xRQNk2k+MQd+Cf86Gl6zTeAoiZIFw5sRB1Z8OxpEC7nu+nTDsLSjieBAPTw==", - "path": "microsoft.data.sqlite.core/9.0.0", - "hashPath": "microsoft.data.sqlite.core.9.0.0.nupkg.sha512" + "sha512": "sha512-iZrONyMKPjxfVZnUktqO30QjzNwAGH+AxM61s8lKQnVhgbQ3bn0hiXI129ZmVicEbIcwljyy2OVsIYUR51ZHKQ==", + "path": "microsoft.data.sqlite.core/10.0.9", + "hashPath": "microsoft.data.sqlite.core.10.0.9.nupkg.sha512" }, "Serilog/4.3.0": { "type": "package", @@ -2264,33 +2264,40 @@ "path": "serilog.sinks.file/7.0.0", "hashPath": "serilog.sinks.file.7.0.0.nupkg.sha512" }, - "SQLitePCLRaw.bundle_e_sqlite3/2.1.10": { + "SourceGear.sqlite3/3.50.4.5": { "type": "package", "serviceable": true, - "sha512": "sha512-UxWuisvZ3uVcVOLJQv7urM/JiQH+v3TmaJc1BLKl5Dxfm/nTzTUrqswCqg/INiYLi61AXnHo1M1JPmPqqLnAdg==", - "path": "sqlitepclraw.bundle_e_sqlite3/2.1.10", - "hashPath": "sqlitepclraw.bundle_e_sqlite3.2.1.10.nupkg.sha512" + "sha512": "sha512-UtnipXhJYZKQOQIfpws/msLK7IRhMplE1CZCaZLIQXRnGD474QVpO/J9nMlQQY8NZueGz1aidjoxDRnrC1NT3Q==", + "path": "sourcegear.sqlite3/3.50.4.5", + "hashPath": "sourcegear.sqlite3.3.50.4.5.nupkg.sha512" }, - "SQLitePCLRaw.core/2.1.10": { + "SQLitePCLRaw.bundle_e_sqlite3/3.0.3": { "type": "package", "serviceable": true, - "sha512": "sha512-Ii8JCbC7oiVclaE/mbDEK000EFIJ+ShRPwAvvV89GOZhQ+ZLtlnSWl6ksCNMKu/VGXA4Nfi2B7LhN/QFN9oBcw==", - "path": "sqlitepclraw.core/2.1.10", - "hashPath": "sqlitepclraw.core.2.1.10.nupkg.sha512" + "sha512": "sha512-Zt8jmSL5zcDWGk8rmzhWBJ6IRyLWh1yWS04Pg72+GIvo3Ba4E/rG4Y/4l7AWlSEogEbzyKRTCXUAs1v/O7Pkkg==", + "path": "sqlitepclraw.bundle_e_sqlite3/3.0.3", + "hashPath": "sqlitepclraw.bundle_e_sqlite3.3.0.3.nupkg.sha512" }, - "SQLitePCLRaw.lib.e_sqlite3/2.1.10": { + "SQLitePCLRaw.config.e_sqlite3/3.0.3": { "type": "package", "serviceable": true, - "sha512": "sha512-mAr69tDbnf3QJpRy2nJz8Qdpebdil00fvycyByR58Cn9eARvR+UiG2Vzsp+4q1tV3ikwiYIjlXCQFc12GfebbA==", - "path": "sqlitepclraw.lib.e_sqlite3/2.1.10", - "hashPath": "sqlitepclraw.lib.e_sqlite3.2.1.10.nupkg.sha512" + "sha512": "sha512-caP/ap0X2fyVmstCXu5ueOmcr2XWAxA2XyKghV7H4bOAFmq3nWcsGl9q44iY1HYG+i8Qr4G9XEqdfti0rV6/ZQ==", + "path": "sqlitepclraw.config.e_sqlite3/3.0.3", + "hashPath": "sqlitepclraw.config.e_sqlite3.3.0.3.nupkg.sha512" }, - "SQLitePCLRaw.provider.e_sqlite3/2.1.10": { + "SQLitePCLRaw.core/3.0.3": { "type": "package", "serviceable": true, - "sha512": "sha512-uZVTi02C1SxqzgT0HqTWatIbWGb40iIkfc3FpFCpE/r7g6K0PqzDUeefL6P6HPhDtc6BacN3yQysfzP7ks+wSQ==", - "path": "sqlitepclraw.provider.e_sqlite3/2.1.10", - "hashPath": "sqlitepclraw.provider.e_sqlite3.2.1.10.nupkg.sha512" + "sha512": "sha512-bjm6FY4lZyP+t7GmiuvSM0QXpFihAvyE0Y9O2yibm3g95AAWJPNnHOKVNJGyPTGIKuK7Pr4Wh8Rd8/aOtAclQw==", + "path": "sqlitepclraw.core/3.0.3", + "hashPath": "sqlitepclraw.core.3.0.3.nupkg.sha512" + }, + "SQLitePCLRaw.provider.e_sqlite3/3.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-wd+fGvZTrr3BJNe48opSczmC176Okd61ZgoZNQcdvZwkek6to978ccdpcFmNo5GHxCnk29KwT+f+lAZYgfLVZg==", + "path": "sqlitepclraw.provider.e_sqlite3/3.0.3", + "hashPath": "sqlitepclraw.provider.e_sqlite3.3.0.3.nupkg.sha512" } }, "runtimes": { diff --git a/App/HiNC-2025-win-desktop.dll b/App/HiNC-2025-win-desktop.dll index f365b97c..dfa2c5f4 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 77fc6351..a8d518e2 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 0667a186..0b5f2d45 100644 Binary files a/App/HiNC-2025-win-desktop.pdb and b/App/HiNC-2025-win-desktop.pdb differ diff --git a/App/HiNC-2025-win-desktop.runtimeconfig.json b/App/HiNC-2025-win-desktop.runtimeconfig.json index af8228c1..6e5c2c28 100644 --- a/App/HiNC-2025-win-desktop.runtimeconfig.json +++ b/App/HiNC-2025-win-desktop.runtimeconfig.json @@ -4,15 +4,15 @@ "includedFrameworks": [ { "name": "Microsoft.NETCore.App", - "version": "10.0.8" + "version": "10.0.11" }, { "name": "Microsoft.WindowsDesktop.App", - "version": "10.0.8" + "version": "10.0.11" }, { "name": "Microsoft.AspNetCore.App", - "version": "10.0.8" + "version": "10.0.11" } ], "configProperties": { diff --git a/App/HiNc-Resource.dll b/App/HiNc-Resource.dll index 53de84c0..66f56d14 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 58004416..a9973e6a 100644 Binary files a/App/HiNc.dll and b/App/HiNc.dll differ diff --git a/App/HiUniNc.dll b/App/HiUniNc.dll index 595ce200..e03dfd3c 100644 Binary files a/App/HiUniNc.dll and b/App/HiUniNc.dll differ diff --git a/App/Microsoft.AspNetCore.Antiforgery.dll b/App/Microsoft.AspNetCore.Antiforgery.dll index 38531a50..04f31f65 100644 Binary files a/App/Microsoft.AspNetCore.Antiforgery.dll and b/App/Microsoft.AspNetCore.Antiforgery.dll differ diff --git a/App/Microsoft.AspNetCore.Authentication.Abstractions.dll b/App/Microsoft.AspNetCore.Authentication.Abstractions.dll index c37dc827..05dbd60d 100644 Binary files a/App/Microsoft.AspNetCore.Authentication.Abstractions.dll and b/App/Microsoft.AspNetCore.Authentication.Abstractions.dll differ diff --git a/App/Microsoft.AspNetCore.Authentication.BearerToken.dll b/App/Microsoft.AspNetCore.Authentication.BearerToken.dll index 8349e4c3..4f2bd1c5 100644 Binary files a/App/Microsoft.AspNetCore.Authentication.BearerToken.dll and b/App/Microsoft.AspNetCore.Authentication.BearerToken.dll differ diff --git a/App/Microsoft.AspNetCore.Authentication.Cookies.dll b/App/Microsoft.AspNetCore.Authentication.Cookies.dll index aa42025e..1d6fe77b 100644 Binary files a/App/Microsoft.AspNetCore.Authentication.Cookies.dll and b/App/Microsoft.AspNetCore.Authentication.Cookies.dll differ diff --git a/App/Microsoft.AspNetCore.Authentication.Core.dll b/App/Microsoft.AspNetCore.Authentication.Core.dll index 3bd7d118..e4b8dc5c 100644 Binary files a/App/Microsoft.AspNetCore.Authentication.Core.dll and b/App/Microsoft.AspNetCore.Authentication.Core.dll differ diff --git a/App/Microsoft.AspNetCore.Authentication.OAuth.dll b/App/Microsoft.AspNetCore.Authentication.OAuth.dll index 01389eb5..be9b044d 100644 Binary files a/App/Microsoft.AspNetCore.Authentication.OAuth.dll and b/App/Microsoft.AspNetCore.Authentication.OAuth.dll differ diff --git a/App/Microsoft.AspNetCore.Authentication.dll b/App/Microsoft.AspNetCore.Authentication.dll index 187de38b..c976818e 100644 Binary files a/App/Microsoft.AspNetCore.Authentication.dll and b/App/Microsoft.AspNetCore.Authentication.dll differ diff --git a/App/Microsoft.AspNetCore.Authorization.Policy.dll b/App/Microsoft.AspNetCore.Authorization.Policy.dll index 441c552e..6466f8dc 100644 Binary files a/App/Microsoft.AspNetCore.Authorization.Policy.dll and b/App/Microsoft.AspNetCore.Authorization.Policy.dll differ diff --git a/App/Microsoft.AspNetCore.Authorization.dll b/App/Microsoft.AspNetCore.Authorization.dll index aaa9a7ec..9da36bef 100644 Binary files a/App/Microsoft.AspNetCore.Authorization.dll and b/App/Microsoft.AspNetCore.Authorization.dll differ diff --git a/App/Microsoft.AspNetCore.Components.Authorization.dll b/App/Microsoft.AspNetCore.Components.Authorization.dll index 03e5a875..750f99b7 100644 Binary files a/App/Microsoft.AspNetCore.Components.Authorization.dll and b/App/Microsoft.AspNetCore.Components.Authorization.dll differ diff --git a/App/Microsoft.AspNetCore.Components.Endpoints.dll b/App/Microsoft.AspNetCore.Components.Endpoints.dll index 90f8a41c..d516429f 100644 Binary files a/App/Microsoft.AspNetCore.Components.Endpoints.dll and b/App/Microsoft.AspNetCore.Components.Endpoints.dll differ diff --git a/App/Microsoft.AspNetCore.Components.Forms.dll b/App/Microsoft.AspNetCore.Components.Forms.dll index 66fb6dd6..f538bb72 100644 Binary files a/App/Microsoft.AspNetCore.Components.Forms.dll and b/App/Microsoft.AspNetCore.Components.Forms.dll differ diff --git a/App/Microsoft.AspNetCore.Components.Server.dll b/App/Microsoft.AspNetCore.Components.Server.dll index 78242d87..0842d078 100644 Binary files a/App/Microsoft.AspNetCore.Components.Server.dll and b/App/Microsoft.AspNetCore.Components.Server.dll differ diff --git a/App/Microsoft.AspNetCore.Components.Web.dll b/App/Microsoft.AspNetCore.Components.Web.dll index 06e26cac..d5eb8fca 100644 Binary files a/App/Microsoft.AspNetCore.Components.Web.dll and b/App/Microsoft.AspNetCore.Components.Web.dll differ diff --git a/App/Microsoft.AspNetCore.Components.dll b/App/Microsoft.AspNetCore.Components.dll index 07297a47..25d96f86 100644 Binary files a/App/Microsoft.AspNetCore.Components.dll and b/App/Microsoft.AspNetCore.Components.dll differ diff --git a/App/Microsoft.AspNetCore.Connections.Abstractions.dll b/App/Microsoft.AspNetCore.Connections.Abstractions.dll index 88b5a4aa..00bac0d1 100644 Binary files a/App/Microsoft.AspNetCore.Connections.Abstractions.dll and b/App/Microsoft.AspNetCore.Connections.Abstractions.dll differ diff --git a/App/Microsoft.AspNetCore.CookiePolicy.dll b/App/Microsoft.AspNetCore.CookiePolicy.dll index 8eadca46..ccbf7809 100644 Binary files a/App/Microsoft.AspNetCore.CookiePolicy.dll and b/App/Microsoft.AspNetCore.CookiePolicy.dll differ diff --git a/App/Microsoft.AspNetCore.Cors.dll b/App/Microsoft.AspNetCore.Cors.dll index 958020e5..c89252c5 100644 Binary files a/App/Microsoft.AspNetCore.Cors.dll and b/App/Microsoft.AspNetCore.Cors.dll differ diff --git a/App/Microsoft.AspNetCore.Cryptography.Internal.dll b/App/Microsoft.AspNetCore.Cryptography.Internal.dll index 33353a01..1275b4b2 100644 Binary files a/App/Microsoft.AspNetCore.Cryptography.Internal.dll and b/App/Microsoft.AspNetCore.Cryptography.Internal.dll differ diff --git a/App/Microsoft.AspNetCore.Cryptography.KeyDerivation.dll b/App/Microsoft.AspNetCore.Cryptography.KeyDerivation.dll index 64814fd7..5fba8955 100644 Binary files a/App/Microsoft.AspNetCore.Cryptography.KeyDerivation.dll and b/App/Microsoft.AspNetCore.Cryptography.KeyDerivation.dll differ diff --git a/App/Microsoft.AspNetCore.DataProtection.Abstractions.dll b/App/Microsoft.AspNetCore.DataProtection.Abstractions.dll index 79fe813e..a9ae1ec2 100644 Binary files a/App/Microsoft.AspNetCore.DataProtection.Abstractions.dll and b/App/Microsoft.AspNetCore.DataProtection.Abstractions.dll differ diff --git a/App/Microsoft.AspNetCore.DataProtection.Extensions.dll b/App/Microsoft.AspNetCore.DataProtection.Extensions.dll index aeb6e414..088dcbde 100644 Binary files a/App/Microsoft.AspNetCore.DataProtection.Extensions.dll and b/App/Microsoft.AspNetCore.DataProtection.Extensions.dll differ diff --git a/App/Microsoft.AspNetCore.DataProtection.dll b/App/Microsoft.AspNetCore.DataProtection.dll index 683c4074..47c169d1 100644 Binary files a/App/Microsoft.AspNetCore.DataProtection.dll and b/App/Microsoft.AspNetCore.DataProtection.dll differ diff --git a/App/Microsoft.AspNetCore.Diagnostics.Abstractions.dll b/App/Microsoft.AspNetCore.Diagnostics.Abstractions.dll index 78f59515..5461f027 100644 Binary files a/App/Microsoft.AspNetCore.Diagnostics.Abstractions.dll and b/App/Microsoft.AspNetCore.Diagnostics.Abstractions.dll differ diff --git a/App/Microsoft.AspNetCore.Diagnostics.HealthChecks.dll b/App/Microsoft.AspNetCore.Diagnostics.HealthChecks.dll index 9236be2c..39da4ac5 100644 Binary files a/App/Microsoft.AspNetCore.Diagnostics.HealthChecks.dll and b/App/Microsoft.AspNetCore.Diagnostics.HealthChecks.dll differ diff --git a/App/Microsoft.AspNetCore.Diagnostics.dll b/App/Microsoft.AspNetCore.Diagnostics.dll index b35c7672..e20e71e0 100644 Binary files a/App/Microsoft.AspNetCore.Diagnostics.dll and b/App/Microsoft.AspNetCore.Diagnostics.dll differ diff --git a/App/Microsoft.AspNetCore.HostFiltering.dll b/App/Microsoft.AspNetCore.HostFiltering.dll index 374d11c8..ed21606c 100644 Binary files a/App/Microsoft.AspNetCore.HostFiltering.dll and b/App/Microsoft.AspNetCore.HostFiltering.dll differ diff --git a/App/Microsoft.AspNetCore.Hosting.Abstractions.dll b/App/Microsoft.AspNetCore.Hosting.Abstractions.dll index 950fa6ef..1aabb249 100644 Binary files a/App/Microsoft.AspNetCore.Hosting.Abstractions.dll and b/App/Microsoft.AspNetCore.Hosting.Abstractions.dll differ diff --git a/App/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll b/App/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll index 7b593e76..f74ba74f 100644 Binary files a/App/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll and b/App/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll differ diff --git a/App/Microsoft.AspNetCore.Hosting.dll b/App/Microsoft.AspNetCore.Hosting.dll index d08d0958..6762abe5 100644 Binary files a/App/Microsoft.AspNetCore.Hosting.dll and b/App/Microsoft.AspNetCore.Hosting.dll differ diff --git a/App/Microsoft.AspNetCore.Html.Abstractions.dll b/App/Microsoft.AspNetCore.Html.Abstractions.dll index 4f501853..f7701fca 100644 Binary files a/App/Microsoft.AspNetCore.Html.Abstractions.dll and b/App/Microsoft.AspNetCore.Html.Abstractions.dll differ diff --git a/App/Microsoft.AspNetCore.Http.Abstractions.dll b/App/Microsoft.AspNetCore.Http.Abstractions.dll index 9ee27350..ce8bb6e5 100644 Binary files a/App/Microsoft.AspNetCore.Http.Abstractions.dll and b/App/Microsoft.AspNetCore.Http.Abstractions.dll differ diff --git a/App/Microsoft.AspNetCore.Http.Connections.Common.dll b/App/Microsoft.AspNetCore.Http.Connections.Common.dll index 2ce33768..5f264230 100644 Binary files a/App/Microsoft.AspNetCore.Http.Connections.Common.dll and b/App/Microsoft.AspNetCore.Http.Connections.Common.dll differ diff --git a/App/Microsoft.AspNetCore.Http.Connections.dll b/App/Microsoft.AspNetCore.Http.Connections.dll index dcb5943b..07d38d57 100644 Binary files a/App/Microsoft.AspNetCore.Http.Connections.dll and b/App/Microsoft.AspNetCore.Http.Connections.dll differ diff --git a/App/Microsoft.AspNetCore.Http.Extensions.dll b/App/Microsoft.AspNetCore.Http.Extensions.dll index 3dfaeccb..83192b91 100644 Binary files a/App/Microsoft.AspNetCore.Http.Extensions.dll and b/App/Microsoft.AspNetCore.Http.Extensions.dll differ diff --git a/App/Microsoft.AspNetCore.Http.Features.dll b/App/Microsoft.AspNetCore.Http.Features.dll index a990861a..a2324b07 100644 Binary files a/App/Microsoft.AspNetCore.Http.Features.dll and b/App/Microsoft.AspNetCore.Http.Features.dll differ diff --git a/App/Microsoft.AspNetCore.Http.Results.dll b/App/Microsoft.AspNetCore.Http.Results.dll index fa23a9c4..3f8c36f5 100644 Binary files a/App/Microsoft.AspNetCore.Http.Results.dll and b/App/Microsoft.AspNetCore.Http.Results.dll differ diff --git a/App/Microsoft.AspNetCore.Http.dll b/App/Microsoft.AspNetCore.Http.dll index a3c3343e..fffdd73b 100644 Binary files a/App/Microsoft.AspNetCore.Http.dll and b/App/Microsoft.AspNetCore.Http.dll differ diff --git a/App/Microsoft.AspNetCore.HttpLogging.dll b/App/Microsoft.AspNetCore.HttpLogging.dll index ba19872f..7445d11a 100644 Binary files a/App/Microsoft.AspNetCore.HttpLogging.dll and b/App/Microsoft.AspNetCore.HttpLogging.dll differ diff --git a/App/Microsoft.AspNetCore.HttpOverrides.dll b/App/Microsoft.AspNetCore.HttpOverrides.dll index ad849c63..4afb8e26 100644 Binary files a/App/Microsoft.AspNetCore.HttpOverrides.dll and b/App/Microsoft.AspNetCore.HttpOverrides.dll differ diff --git a/App/Microsoft.AspNetCore.HttpsPolicy.dll b/App/Microsoft.AspNetCore.HttpsPolicy.dll index c6bfc621..aa2cec67 100644 Binary files a/App/Microsoft.AspNetCore.HttpsPolicy.dll and b/App/Microsoft.AspNetCore.HttpsPolicy.dll differ diff --git a/App/Microsoft.AspNetCore.Identity.dll b/App/Microsoft.AspNetCore.Identity.dll index 1e0a8d09..b4a41989 100644 Binary files a/App/Microsoft.AspNetCore.Identity.dll and b/App/Microsoft.AspNetCore.Identity.dll differ diff --git a/App/Microsoft.AspNetCore.Localization.Routing.dll b/App/Microsoft.AspNetCore.Localization.Routing.dll index 68642ddd..398c8673 100644 Binary files a/App/Microsoft.AspNetCore.Localization.Routing.dll and b/App/Microsoft.AspNetCore.Localization.Routing.dll differ diff --git a/App/Microsoft.AspNetCore.Localization.dll b/App/Microsoft.AspNetCore.Localization.dll index a144397e..03a09700 100644 Binary files a/App/Microsoft.AspNetCore.Localization.dll and b/App/Microsoft.AspNetCore.Localization.dll differ diff --git a/App/Microsoft.AspNetCore.Metadata.dll b/App/Microsoft.AspNetCore.Metadata.dll index e763d713..0ad56849 100644 Binary files a/App/Microsoft.AspNetCore.Metadata.dll and b/App/Microsoft.AspNetCore.Metadata.dll differ diff --git a/App/Microsoft.AspNetCore.Mvc.Abstractions.dll b/App/Microsoft.AspNetCore.Mvc.Abstractions.dll index 5e93b369..fcc8b820 100644 Binary files a/App/Microsoft.AspNetCore.Mvc.Abstractions.dll and b/App/Microsoft.AspNetCore.Mvc.Abstractions.dll differ diff --git a/App/Microsoft.AspNetCore.Mvc.ApiExplorer.dll b/App/Microsoft.AspNetCore.Mvc.ApiExplorer.dll index 975d8d6c..107202f1 100644 Binary files a/App/Microsoft.AspNetCore.Mvc.ApiExplorer.dll and b/App/Microsoft.AspNetCore.Mvc.ApiExplorer.dll differ diff --git a/App/Microsoft.AspNetCore.Mvc.Core.dll b/App/Microsoft.AspNetCore.Mvc.Core.dll index 7eb3070f..38154b9d 100644 Binary files a/App/Microsoft.AspNetCore.Mvc.Core.dll and b/App/Microsoft.AspNetCore.Mvc.Core.dll differ diff --git a/App/Microsoft.AspNetCore.Mvc.Cors.dll b/App/Microsoft.AspNetCore.Mvc.Cors.dll index 04fe8afd..8b474962 100644 Binary files a/App/Microsoft.AspNetCore.Mvc.Cors.dll and b/App/Microsoft.AspNetCore.Mvc.Cors.dll differ diff --git a/App/Microsoft.AspNetCore.Mvc.DataAnnotations.dll b/App/Microsoft.AspNetCore.Mvc.DataAnnotations.dll index e465cc98..b7530db5 100644 Binary files a/App/Microsoft.AspNetCore.Mvc.DataAnnotations.dll and b/App/Microsoft.AspNetCore.Mvc.DataAnnotations.dll differ diff --git a/App/Microsoft.AspNetCore.Mvc.Formatters.Json.dll b/App/Microsoft.AspNetCore.Mvc.Formatters.Json.dll index ea81d148..11298438 100644 Binary files a/App/Microsoft.AspNetCore.Mvc.Formatters.Json.dll and b/App/Microsoft.AspNetCore.Mvc.Formatters.Json.dll differ diff --git a/App/Microsoft.AspNetCore.Mvc.Formatters.Xml.dll b/App/Microsoft.AspNetCore.Mvc.Formatters.Xml.dll index e34b349c..8409e45a 100644 Binary files a/App/Microsoft.AspNetCore.Mvc.Formatters.Xml.dll and b/App/Microsoft.AspNetCore.Mvc.Formatters.Xml.dll differ diff --git a/App/Microsoft.AspNetCore.Mvc.Localization.dll b/App/Microsoft.AspNetCore.Mvc.Localization.dll index 7ee929a8..46c23a2a 100644 Binary files a/App/Microsoft.AspNetCore.Mvc.Localization.dll and b/App/Microsoft.AspNetCore.Mvc.Localization.dll differ diff --git a/App/Microsoft.AspNetCore.Mvc.Razor.dll b/App/Microsoft.AspNetCore.Mvc.Razor.dll index afcf524a..caea4e7d 100644 Binary files a/App/Microsoft.AspNetCore.Mvc.Razor.dll and b/App/Microsoft.AspNetCore.Mvc.Razor.dll differ diff --git a/App/Microsoft.AspNetCore.Mvc.RazorPages.dll b/App/Microsoft.AspNetCore.Mvc.RazorPages.dll index 9c5dfe2b..1b11402e 100644 Binary files a/App/Microsoft.AspNetCore.Mvc.RazorPages.dll and b/App/Microsoft.AspNetCore.Mvc.RazorPages.dll differ diff --git a/App/Microsoft.AspNetCore.Mvc.TagHelpers.dll b/App/Microsoft.AspNetCore.Mvc.TagHelpers.dll index bfdd9a82..13eb4b80 100644 Binary files a/App/Microsoft.AspNetCore.Mvc.TagHelpers.dll and b/App/Microsoft.AspNetCore.Mvc.TagHelpers.dll differ diff --git a/App/Microsoft.AspNetCore.Mvc.ViewFeatures.dll b/App/Microsoft.AspNetCore.Mvc.ViewFeatures.dll index e27c8ecf..f3c6cdc5 100644 Binary files a/App/Microsoft.AspNetCore.Mvc.ViewFeatures.dll and b/App/Microsoft.AspNetCore.Mvc.ViewFeatures.dll differ diff --git a/App/Microsoft.AspNetCore.Mvc.dll b/App/Microsoft.AspNetCore.Mvc.dll index c5ba62cd..54f198e0 100644 Binary files a/App/Microsoft.AspNetCore.Mvc.dll and b/App/Microsoft.AspNetCore.Mvc.dll differ diff --git a/App/Microsoft.AspNetCore.OutputCaching.dll b/App/Microsoft.AspNetCore.OutputCaching.dll index 6e4c070e..d814424e 100644 Binary files a/App/Microsoft.AspNetCore.OutputCaching.dll and b/App/Microsoft.AspNetCore.OutputCaching.dll differ diff --git a/App/Microsoft.AspNetCore.RateLimiting.dll b/App/Microsoft.AspNetCore.RateLimiting.dll index de5e08c1..b7cbacb9 100644 Binary files a/App/Microsoft.AspNetCore.RateLimiting.dll and b/App/Microsoft.AspNetCore.RateLimiting.dll differ diff --git a/App/Microsoft.AspNetCore.Razor.Runtime.dll b/App/Microsoft.AspNetCore.Razor.Runtime.dll index 6dcb3105..13da2324 100644 Binary files a/App/Microsoft.AspNetCore.Razor.Runtime.dll and b/App/Microsoft.AspNetCore.Razor.Runtime.dll differ diff --git a/App/Microsoft.AspNetCore.Razor.dll b/App/Microsoft.AspNetCore.Razor.dll index 1eec6138..5edd4f4b 100644 Binary files a/App/Microsoft.AspNetCore.Razor.dll and b/App/Microsoft.AspNetCore.Razor.dll differ diff --git a/App/Microsoft.AspNetCore.RequestDecompression.dll b/App/Microsoft.AspNetCore.RequestDecompression.dll index 3c0e8f32..4df9449d 100644 Binary files a/App/Microsoft.AspNetCore.RequestDecompression.dll and b/App/Microsoft.AspNetCore.RequestDecompression.dll differ diff --git a/App/Microsoft.AspNetCore.ResponseCaching.Abstractions.dll b/App/Microsoft.AspNetCore.ResponseCaching.Abstractions.dll index 9ef547a6..5611a540 100644 Binary files a/App/Microsoft.AspNetCore.ResponseCaching.Abstractions.dll and b/App/Microsoft.AspNetCore.ResponseCaching.Abstractions.dll differ diff --git a/App/Microsoft.AspNetCore.ResponseCaching.dll b/App/Microsoft.AspNetCore.ResponseCaching.dll index b5088d99..c63ff771 100644 Binary files a/App/Microsoft.AspNetCore.ResponseCaching.dll and b/App/Microsoft.AspNetCore.ResponseCaching.dll differ diff --git a/App/Microsoft.AspNetCore.ResponseCompression.dll b/App/Microsoft.AspNetCore.ResponseCompression.dll index 8b772b76..872a23c5 100644 Binary files a/App/Microsoft.AspNetCore.ResponseCompression.dll and b/App/Microsoft.AspNetCore.ResponseCompression.dll differ diff --git a/App/Microsoft.AspNetCore.Rewrite.dll b/App/Microsoft.AspNetCore.Rewrite.dll index 13f8a666..75140d01 100644 Binary files a/App/Microsoft.AspNetCore.Rewrite.dll and b/App/Microsoft.AspNetCore.Rewrite.dll differ diff --git a/App/Microsoft.AspNetCore.Routing.Abstractions.dll b/App/Microsoft.AspNetCore.Routing.Abstractions.dll index c16d6b70..986dd3dd 100644 Binary files a/App/Microsoft.AspNetCore.Routing.Abstractions.dll and b/App/Microsoft.AspNetCore.Routing.Abstractions.dll differ diff --git a/App/Microsoft.AspNetCore.Routing.dll b/App/Microsoft.AspNetCore.Routing.dll index 71e3ad97..20c482a8 100644 Binary files a/App/Microsoft.AspNetCore.Routing.dll and b/App/Microsoft.AspNetCore.Routing.dll differ diff --git a/App/Microsoft.AspNetCore.Server.HttpSys.dll b/App/Microsoft.AspNetCore.Server.HttpSys.dll index 275299b3..fd81120a 100644 Binary files a/App/Microsoft.AspNetCore.Server.HttpSys.dll and b/App/Microsoft.AspNetCore.Server.HttpSys.dll differ diff --git a/App/Microsoft.AspNetCore.Server.IIS.dll b/App/Microsoft.AspNetCore.Server.IIS.dll index 9c312da8..ad382a6f 100644 Binary files a/App/Microsoft.AspNetCore.Server.IIS.dll and b/App/Microsoft.AspNetCore.Server.IIS.dll differ diff --git a/App/Microsoft.AspNetCore.Server.IISIntegration.dll b/App/Microsoft.AspNetCore.Server.IISIntegration.dll index 92677b33..40ae4702 100644 Binary files a/App/Microsoft.AspNetCore.Server.IISIntegration.dll and b/App/Microsoft.AspNetCore.Server.IISIntegration.dll differ diff --git a/App/Microsoft.AspNetCore.Server.Kestrel.Core.dll b/App/Microsoft.AspNetCore.Server.Kestrel.Core.dll index 766e52c0..6c805a45 100644 Binary files a/App/Microsoft.AspNetCore.Server.Kestrel.Core.dll and b/App/Microsoft.AspNetCore.Server.Kestrel.Core.dll differ diff --git a/App/Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.dll b/App/Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.dll index eed42983..2911a27e 100644 Binary files a/App/Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.dll and b/App/Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.dll differ diff --git a/App/Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.dll b/App/Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.dll index d0f53cf8..5d6a328d 100644 Binary files a/App/Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.dll and b/App/Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.dll differ diff --git a/App/Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll b/App/Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll index 5e822e0a..161fc92b 100644 Binary files a/App/Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll and b/App/Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll differ diff --git a/App/Microsoft.AspNetCore.Server.Kestrel.dll b/App/Microsoft.AspNetCore.Server.Kestrel.dll index f533c260..a44507ac 100644 Binary files a/App/Microsoft.AspNetCore.Server.Kestrel.dll and b/App/Microsoft.AspNetCore.Server.Kestrel.dll differ diff --git a/App/Microsoft.AspNetCore.Session.dll b/App/Microsoft.AspNetCore.Session.dll index 4de6325a..1f6e155c 100644 Binary files a/App/Microsoft.AspNetCore.Session.dll and b/App/Microsoft.AspNetCore.Session.dll differ diff --git a/App/Microsoft.AspNetCore.SignalR.Common.dll b/App/Microsoft.AspNetCore.SignalR.Common.dll index da6fa69b..6a8e976f 100644 Binary files a/App/Microsoft.AspNetCore.SignalR.Common.dll and b/App/Microsoft.AspNetCore.SignalR.Common.dll differ diff --git a/App/Microsoft.AspNetCore.SignalR.Core.dll b/App/Microsoft.AspNetCore.SignalR.Core.dll index bcd54fae..c884fa8c 100644 Binary files a/App/Microsoft.AspNetCore.SignalR.Core.dll and b/App/Microsoft.AspNetCore.SignalR.Core.dll differ diff --git a/App/Microsoft.AspNetCore.SignalR.Protocols.Json.dll b/App/Microsoft.AspNetCore.SignalR.Protocols.Json.dll index 92336395..5ab10831 100644 Binary files a/App/Microsoft.AspNetCore.SignalR.Protocols.Json.dll and b/App/Microsoft.AspNetCore.SignalR.Protocols.Json.dll differ diff --git a/App/Microsoft.AspNetCore.SignalR.dll b/App/Microsoft.AspNetCore.SignalR.dll index 9929ff30..f12acfe8 100644 Binary files a/App/Microsoft.AspNetCore.SignalR.dll and b/App/Microsoft.AspNetCore.SignalR.dll differ diff --git a/App/Microsoft.AspNetCore.StaticAssets.dll b/App/Microsoft.AspNetCore.StaticAssets.dll index c88ea3fd..bf9f5163 100644 Binary files a/App/Microsoft.AspNetCore.StaticAssets.dll and b/App/Microsoft.AspNetCore.StaticAssets.dll differ diff --git a/App/Microsoft.AspNetCore.StaticFiles.dll b/App/Microsoft.AspNetCore.StaticFiles.dll index 855b9fb9..01bd3496 100644 Binary files a/App/Microsoft.AspNetCore.StaticFiles.dll and b/App/Microsoft.AspNetCore.StaticFiles.dll differ diff --git a/App/Microsoft.AspNetCore.WebSockets.dll b/App/Microsoft.AspNetCore.WebSockets.dll index 4d02461b..92d5b1a5 100644 Binary files a/App/Microsoft.AspNetCore.WebSockets.dll and b/App/Microsoft.AspNetCore.WebSockets.dll differ diff --git a/App/Microsoft.AspNetCore.WebUtilities.dll b/App/Microsoft.AspNetCore.WebUtilities.dll index 89b5f02a..794a10ee 100644 Binary files a/App/Microsoft.AspNetCore.WebUtilities.dll and b/App/Microsoft.AspNetCore.WebUtilities.dll differ diff --git a/App/Microsoft.AspNetCore.dll b/App/Microsoft.AspNetCore.dll index 0f984f93..aff640f3 100644 Binary files a/App/Microsoft.AspNetCore.dll and b/App/Microsoft.AspNetCore.dll differ diff --git a/App/Microsoft.CSharp.dll b/App/Microsoft.CSharp.dll index 2f4ca46a..21628a98 100644 Binary files a/App/Microsoft.CSharp.dll and b/App/Microsoft.CSharp.dll differ diff --git a/App/Microsoft.CodeAnalysis.CSharp.Scripting.dll b/App/Microsoft.CodeAnalysis.CSharp.Scripting.dll index c8941f3a..5b035137 100644 Binary files a/App/Microsoft.CodeAnalysis.CSharp.Scripting.dll and b/App/Microsoft.CodeAnalysis.CSharp.Scripting.dll differ diff --git a/App/Microsoft.CodeAnalysis.CSharp.dll b/App/Microsoft.CodeAnalysis.CSharp.dll index 1352e544..11e59e60 100644 Binary files a/App/Microsoft.CodeAnalysis.CSharp.dll and b/App/Microsoft.CodeAnalysis.CSharp.dll differ diff --git a/App/Microsoft.CodeAnalysis.Scripting.dll b/App/Microsoft.CodeAnalysis.Scripting.dll index 50cc9bff..65295239 100644 Binary files a/App/Microsoft.CodeAnalysis.Scripting.dll and b/App/Microsoft.CodeAnalysis.Scripting.dll differ diff --git a/App/Microsoft.CodeAnalysis.dll b/App/Microsoft.CodeAnalysis.dll index f5756884..1486cf8c 100644 Binary files a/App/Microsoft.CodeAnalysis.dll and b/App/Microsoft.CodeAnalysis.dll differ diff --git a/App/Microsoft.Data.Sqlite.dll b/App/Microsoft.Data.Sqlite.dll index 55567a83..8246d946 100644 Binary files a/App/Microsoft.Data.Sqlite.dll and b/App/Microsoft.Data.Sqlite.dll differ diff --git a/App/Microsoft.Extensions.Caching.Abstractions.dll b/App/Microsoft.Extensions.Caching.Abstractions.dll index bcfdf18a..83db80ed 100644 Binary files a/App/Microsoft.Extensions.Caching.Abstractions.dll and b/App/Microsoft.Extensions.Caching.Abstractions.dll differ diff --git a/App/Microsoft.Extensions.Caching.Memory.dll b/App/Microsoft.Extensions.Caching.Memory.dll index cb6e6121..ced64431 100644 Binary files a/App/Microsoft.Extensions.Caching.Memory.dll and b/App/Microsoft.Extensions.Caching.Memory.dll differ diff --git a/App/Microsoft.Extensions.Configuration.Abstractions.dll b/App/Microsoft.Extensions.Configuration.Abstractions.dll index 7c4fdcb8..6afa2d99 100644 Binary files a/App/Microsoft.Extensions.Configuration.Abstractions.dll and b/App/Microsoft.Extensions.Configuration.Abstractions.dll differ diff --git a/App/Microsoft.Extensions.Configuration.Binder.dll b/App/Microsoft.Extensions.Configuration.Binder.dll index 143322fa..5402e025 100644 Binary files a/App/Microsoft.Extensions.Configuration.Binder.dll and b/App/Microsoft.Extensions.Configuration.Binder.dll differ diff --git a/App/Microsoft.Extensions.Configuration.CommandLine.dll b/App/Microsoft.Extensions.Configuration.CommandLine.dll index d1d0c585..b01da336 100644 Binary files a/App/Microsoft.Extensions.Configuration.CommandLine.dll and b/App/Microsoft.Extensions.Configuration.CommandLine.dll differ diff --git a/App/Microsoft.Extensions.Configuration.EnvironmentVariables.dll b/App/Microsoft.Extensions.Configuration.EnvironmentVariables.dll index 4d17c48c..57ef42bd 100644 Binary files a/App/Microsoft.Extensions.Configuration.EnvironmentVariables.dll and b/App/Microsoft.Extensions.Configuration.EnvironmentVariables.dll differ diff --git a/App/Microsoft.Extensions.Configuration.FileExtensions.dll b/App/Microsoft.Extensions.Configuration.FileExtensions.dll index b95a6e2f..16eb8500 100644 Binary files a/App/Microsoft.Extensions.Configuration.FileExtensions.dll and b/App/Microsoft.Extensions.Configuration.FileExtensions.dll differ diff --git a/App/Microsoft.Extensions.Configuration.Ini.dll b/App/Microsoft.Extensions.Configuration.Ini.dll index da963bf7..90386f4c 100644 Binary files a/App/Microsoft.Extensions.Configuration.Ini.dll and b/App/Microsoft.Extensions.Configuration.Ini.dll differ diff --git a/App/Microsoft.Extensions.Configuration.Json.dll b/App/Microsoft.Extensions.Configuration.Json.dll index 23c38db0..6694721e 100644 Binary files a/App/Microsoft.Extensions.Configuration.Json.dll and b/App/Microsoft.Extensions.Configuration.Json.dll differ diff --git a/App/Microsoft.Extensions.Configuration.KeyPerFile.dll b/App/Microsoft.Extensions.Configuration.KeyPerFile.dll index be5a8a3d..70220d02 100644 Binary files a/App/Microsoft.Extensions.Configuration.KeyPerFile.dll and b/App/Microsoft.Extensions.Configuration.KeyPerFile.dll differ diff --git a/App/Microsoft.Extensions.Configuration.UserSecrets.dll b/App/Microsoft.Extensions.Configuration.UserSecrets.dll index cc17e4c0..610ed18a 100644 Binary files a/App/Microsoft.Extensions.Configuration.UserSecrets.dll and b/App/Microsoft.Extensions.Configuration.UserSecrets.dll differ diff --git a/App/Microsoft.Extensions.Configuration.Xml.dll b/App/Microsoft.Extensions.Configuration.Xml.dll index 6712966a..1ee0fb37 100644 Binary files a/App/Microsoft.Extensions.Configuration.Xml.dll and b/App/Microsoft.Extensions.Configuration.Xml.dll differ diff --git a/App/Microsoft.Extensions.Configuration.dll b/App/Microsoft.Extensions.Configuration.dll index 4ce2396e..05e76fe9 100644 Binary files a/App/Microsoft.Extensions.Configuration.dll and b/App/Microsoft.Extensions.Configuration.dll differ diff --git a/App/Microsoft.Extensions.DependencyInjection.Abstractions.dll b/App/Microsoft.Extensions.DependencyInjection.Abstractions.dll index 05b7d5d3..3a3d736d 100644 Binary files a/App/Microsoft.Extensions.DependencyInjection.Abstractions.dll and b/App/Microsoft.Extensions.DependencyInjection.Abstractions.dll differ diff --git a/App/Microsoft.Extensions.DependencyInjection.dll b/App/Microsoft.Extensions.DependencyInjection.dll index abdd539d..259a07e3 100644 Binary files a/App/Microsoft.Extensions.DependencyInjection.dll and b/App/Microsoft.Extensions.DependencyInjection.dll differ diff --git a/App/Microsoft.Extensions.Diagnostics.Abstractions.dll b/App/Microsoft.Extensions.Diagnostics.Abstractions.dll index 3aac3efe..0b443583 100644 Binary files a/App/Microsoft.Extensions.Diagnostics.Abstractions.dll and b/App/Microsoft.Extensions.Diagnostics.Abstractions.dll differ diff --git a/App/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll b/App/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll index 842210ae..d813dc13 100644 Binary files a/App/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll and b/App/Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll differ diff --git a/App/Microsoft.Extensions.Diagnostics.HealthChecks.dll b/App/Microsoft.Extensions.Diagnostics.HealthChecks.dll index b1dc9fb0..52311e05 100644 Binary files a/App/Microsoft.Extensions.Diagnostics.HealthChecks.dll and b/App/Microsoft.Extensions.Diagnostics.HealthChecks.dll differ diff --git a/App/Microsoft.Extensions.Diagnostics.dll b/App/Microsoft.Extensions.Diagnostics.dll index bdd2a9a0..c86f5746 100644 Binary files a/App/Microsoft.Extensions.Diagnostics.dll and b/App/Microsoft.Extensions.Diagnostics.dll differ diff --git a/App/Microsoft.Extensions.Features.dll b/App/Microsoft.Extensions.Features.dll index ccd8b000..56e2805b 100644 Binary files a/App/Microsoft.Extensions.Features.dll and b/App/Microsoft.Extensions.Features.dll differ diff --git a/App/Microsoft.Extensions.FileProviders.Abstractions.dll b/App/Microsoft.Extensions.FileProviders.Abstractions.dll index 1c352932..a0f427c0 100644 Binary files a/App/Microsoft.Extensions.FileProviders.Abstractions.dll and b/App/Microsoft.Extensions.FileProviders.Abstractions.dll differ diff --git a/App/Microsoft.Extensions.FileProviders.Composite.dll b/App/Microsoft.Extensions.FileProviders.Composite.dll index f509c485..d3528d49 100644 Binary files a/App/Microsoft.Extensions.FileProviders.Composite.dll and b/App/Microsoft.Extensions.FileProviders.Composite.dll differ diff --git a/App/Microsoft.Extensions.FileProviders.Embedded.dll b/App/Microsoft.Extensions.FileProviders.Embedded.dll index db3a2c0c..7b1581c8 100644 Binary files a/App/Microsoft.Extensions.FileProviders.Embedded.dll and b/App/Microsoft.Extensions.FileProviders.Embedded.dll differ diff --git a/App/Microsoft.Extensions.FileProviders.Physical.dll b/App/Microsoft.Extensions.FileProviders.Physical.dll index dcda9c87..070ea35e 100644 Binary files a/App/Microsoft.Extensions.FileProviders.Physical.dll and b/App/Microsoft.Extensions.FileProviders.Physical.dll differ diff --git a/App/Microsoft.Extensions.FileSystemGlobbing.dll b/App/Microsoft.Extensions.FileSystemGlobbing.dll index 92a05d2e..26b76fcc 100644 Binary files a/App/Microsoft.Extensions.FileSystemGlobbing.dll and b/App/Microsoft.Extensions.FileSystemGlobbing.dll differ diff --git a/App/Microsoft.Extensions.Hosting.Abstractions.dll b/App/Microsoft.Extensions.Hosting.Abstractions.dll index ad7fc63f..40358cd9 100644 Binary files a/App/Microsoft.Extensions.Hosting.Abstractions.dll and b/App/Microsoft.Extensions.Hosting.Abstractions.dll differ diff --git a/App/Microsoft.Extensions.Hosting.dll b/App/Microsoft.Extensions.Hosting.dll index 6aa0006d..890ca5d9 100644 Binary files a/App/Microsoft.Extensions.Hosting.dll and b/App/Microsoft.Extensions.Hosting.dll differ diff --git a/App/Microsoft.Extensions.Http.dll b/App/Microsoft.Extensions.Http.dll index ab825e05..bb29094c 100644 Binary files a/App/Microsoft.Extensions.Http.dll and b/App/Microsoft.Extensions.Http.dll differ diff --git a/App/Microsoft.Extensions.Identity.Core.dll b/App/Microsoft.Extensions.Identity.Core.dll index 8aa4dd91..5b0cabc7 100644 Binary files a/App/Microsoft.Extensions.Identity.Core.dll and b/App/Microsoft.Extensions.Identity.Core.dll differ diff --git a/App/Microsoft.Extensions.Identity.Stores.dll b/App/Microsoft.Extensions.Identity.Stores.dll index c812cd19..54c81cf4 100644 Binary files a/App/Microsoft.Extensions.Identity.Stores.dll and b/App/Microsoft.Extensions.Identity.Stores.dll differ diff --git a/App/Microsoft.Extensions.Localization.Abstractions.dll b/App/Microsoft.Extensions.Localization.Abstractions.dll index 9382285f..3b951d51 100644 Binary files a/App/Microsoft.Extensions.Localization.Abstractions.dll and b/App/Microsoft.Extensions.Localization.Abstractions.dll differ diff --git a/App/Microsoft.Extensions.Localization.dll b/App/Microsoft.Extensions.Localization.dll index 6e07202a..edb05b3f 100644 Binary files a/App/Microsoft.Extensions.Localization.dll and b/App/Microsoft.Extensions.Localization.dll differ diff --git a/App/Microsoft.Extensions.Logging.Abstractions.dll b/App/Microsoft.Extensions.Logging.Abstractions.dll index dd4b8d72..f031aebc 100644 Binary files a/App/Microsoft.Extensions.Logging.Abstractions.dll and b/App/Microsoft.Extensions.Logging.Abstractions.dll differ diff --git a/App/Microsoft.Extensions.Logging.Configuration.dll b/App/Microsoft.Extensions.Logging.Configuration.dll index 4612d100..d7050a1a 100644 Binary files a/App/Microsoft.Extensions.Logging.Configuration.dll and b/App/Microsoft.Extensions.Logging.Configuration.dll differ diff --git a/App/Microsoft.Extensions.Logging.Console.dll b/App/Microsoft.Extensions.Logging.Console.dll index 5df055e5..98fc67cf 100644 Binary files a/App/Microsoft.Extensions.Logging.Console.dll and b/App/Microsoft.Extensions.Logging.Console.dll differ diff --git a/App/Microsoft.Extensions.Logging.Debug.dll b/App/Microsoft.Extensions.Logging.Debug.dll index c3f46866..1df10ca6 100644 Binary files a/App/Microsoft.Extensions.Logging.Debug.dll and b/App/Microsoft.Extensions.Logging.Debug.dll differ diff --git a/App/Microsoft.Extensions.Logging.EventLog.dll b/App/Microsoft.Extensions.Logging.EventLog.dll index 137ebb46..d54cc6b6 100644 Binary files a/App/Microsoft.Extensions.Logging.EventLog.dll and b/App/Microsoft.Extensions.Logging.EventLog.dll differ diff --git a/App/Microsoft.Extensions.Logging.EventSource.dll b/App/Microsoft.Extensions.Logging.EventSource.dll index 6d890544..9a80851b 100644 Binary files a/App/Microsoft.Extensions.Logging.EventSource.dll and b/App/Microsoft.Extensions.Logging.EventSource.dll differ diff --git a/App/Microsoft.Extensions.Logging.TraceSource.dll b/App/Microsoft.Extensions.Logging.TraceSource.dll index d7740eda..a0b077fb 100644 Binary files a/App/Microsoft.Extensions.Logging.TraceSource.dll and b/App/Microsoft.Extensions.Logging.TraceSource.dll differ diff --git a/App/Microsoft.Extensions.Logging.dll b/App/Microsoft.Extensions.Logging.dll index 46cb1952..c4078263 100644 Binary files a/App/Microsoft.Extensions.Logging.dll and b/App/Microsoft.Extensions.Logging.dll differ diff --git a/App/Microsoft.Extensions.ObjectPool.dll b/App/Microsoft.Extensions.ObjectPool.dll index 4e58f875..3fb90c19 100644 Binary files a/App/Microsoft.Extensions.ObjectPool.dll and b/App/Microsoft.Extensions.ObjectPool.dll differ diff --git a/App/Microsoft.Extensions.Options.ConfigurationExtensions.dll b/App/Microsoft.Extensions.Options.ConfigurationExtensions.dll index 6bbc138f..a8e4f622 100644 Binary files a/App/Microsoft.Extensions.Options.ConfigurationExtensions.dll and b/App/Microsoft.Extensions.Options.ConfigurationExtensions.dll differ diff --git a/App/Microsoft.Extensions.Options.DataAnnotations.dll b/App/Microsoft.Extensions.Options.DataAnnotations.dll index 1ee5a621..df363de5 100644 Binary files a/App/Microsoft.Extensions.Options.DataAnnotations.dll and b/App/Microsoft.Extensions.Options.DataAnnotations.dll differ diff --git a/App/Microsoft.Extensions.Options.dll b/App/Microsoft.Extensions.Options.dll index 8bb2246a..4c435d67 100644 Binary files a/App/Microsoft.Extensions.Options.dll and b/App/Microsoft.Extensions.Options.dll differ diff --git a/App/Microsoft.Extensions.Primitives.dll b/App/Microsoft.Extensions.Primitives.dll index 00404303..59f31b00 100644 Binary files a/App/Microsoft.Extensions.Primitives.dll and b/App/Microsoft.Extensions.Primitives.dll differ diff --git a/App/Microsoft.Extensions.Validation.dll b/App/Microsoft.Extensions.Validation.dll index ffdea167..fc46c4c6 100644 Binary files a/App/Microsoft.Extensions.Validation.dll and b/App/Microsoft.Extensions.Validation.dll differ diff --git a/App/Microsoft.Extensions.WebEncoders.dll b/App/Microsoft.Extensions.WebEncoders.dll index 6c9d7fc6..d5ff3ca9 100644 Binary files a/App/Microsoft.Extensions.WebEncoders.dll and b/App/Microsoft.Extensions.WebEncoders.dll differ diff --git a/App/Microsoft.JSInterop.dll b/App/Microsoft.JSInterop.dll index 4db003a1..344e0552 100644 Binary files a/App/Microsoft.JSInterop.dll and b/App/Microsoft.JSInterop.dll differ diff --git a/App/Microsoft.Net.Http.Headers.dll b/App/Microsoft.Net.Http.Headers.dll index 57e42ada..545cff33 100644 Binary files a/App/Microsoft.Net.Http.Headers.dll and b/App/Microsoft.Net.Http.Headers.dll differ diff --git a/App/Microsoft.VisualBasic.Core.dll b/App/Microsoft.VisualBasic.Core.dll index 928091cb..6c4de3d4 100644 Binary files a/App/Microsoft.VisualBasic.Core.dll and b/App/Microsoft.VisualBasic.Core.dll differ diff --git a/App/Microsoft.VisualBasic.Forms.dll b/App/Microsoft.VisualBasic.Forms.dll index e05b79dd..065e1d7e 100644 Binary files a/App/Microsoft.VisualBasic.Forms.dll and b/App/Microsoft.VisualBasic.Forms.dll differ diff --git a/App/Microsoft.VisualBasic.dll b/App/Microsoft.VisualBasic.dll index 059bf8ad..7cd9d918 100644 Binary files a/App/Microsoft.VisualBasic.dll and b/App/Microsoft.VisualBasic.dll differ diff --git a/App/Microsoft.Win32.Primitives.dll b/App/Microsoft.Win32.Primitives.dll index cb2a5cc8..7cccd453 100644 Binary files a/App/Microsoft.Win32.Primitives.dll and b/App/Microsoft.Win32.Primitives.dll differ diff --git a/App/Microsoft.Win32.Registry.AccessControl.dll b/App/Microsoft.Win32.Registry.AccessControl.dll index 8cf142f4..9c098f15 100644 Binary files a/App/Microsoft.Win32.Registry.AccessControl.dll and b/App/Microsoft.Win32.Registry.AccessControl.dll differ diff --git a/App/Microsoft.Win32.Registry.dll b/App/Microsoft.Win32.Registry.dll index d455ab59..1e433a9c 100644 Binary files a/App/Microsoft.Win32.Registry.dll and b/App/Microsoft.Win32.Registry.dll differ diff --git a/App/Microsoft.Win32.SystemEvents.dll b/App/Microsoft.Win32.SystemEvents.dll index 56a88fcc..20407061 100644 Binary files a/App/Microsoft.Win32.SystemEvents.dll and b/App/Microsoft.Win32.SystemEvents.dll differ diff --git a/App/PenImc_cor3.dll b/App/PenImc_cor3.dll index 16b019dc..2e270b08 100644 Binary files a/App/PenImc_cor3.dll and b/App/PenImc_cor3.dll differ diff --git a/App/PresentationCore.dll b/App/PresentationCore.dll index 674a867f..1eb09861 100644 Binary files a/App/PresentationCore.dll and b/App/PresentationCore.dll differ diff --git a/App/PresentationFramework-SystemCore.dll b/App/PresentationFramework-SystemCore.dll index d269e147..21581da8 100644 Binary files a/App/PresentationFramework-SystemCore.dll and b/App/PresentationFramework-SystemCore.dll differ diff --git a/App/PresentationFramework-SystemData.dll b/App/PresentationFramework-SystemData.dll index 3ae4cc67..ac65b3e0 100644 Binary files a/App/PresentationFramework-SystemData.dll and b/App/PresentationFramework-SystemData.dll differ diff --git a/App/PresentationFramework-SystemDrawing.dll b/App/PresentationFramework-SystemDrawing.dll index 8088dc6a..eb3f8e1e 100644 Binary files a/App/PresentationFramework-SystemDrawing.dll and b/App/PresentationFramework-SystemDrawing.dll differ diff --git a/App/PresentationFramework-SystemXml.dll b/App/PresentationFramework-SystemXml.dll index 46f429a1..1291b502 100644 Binary files a/App/PresentationFramework-SystemXml.dll and b/App/PresentationFramework-SystemXml.dll differ diff --git a/App/PresentationFramework-SystemXmlLinq.dll b/App/PresentationFramework-SystemXmlLinq.dll index e5fd1302..9f799906 100644 Binary files a/App/PresentationFramework-SystemXmlLinq.dll and b/App/PresentationFramework-SystemXmlLinq.dll differ diff --git a/App/PresentationFramework.Aero.dll b/App/PresentationFramework.Aero.dll index 8919d724..ff76addf 100644 Binary files a/App/PresentationFramework.Aero.dll and b/App/PresentationFramework.Aero.dll differ diff --git a/App/PresentationFramework.Aero2.dll b/App/PresentationFramework.Aero2.dll index 55d2ee34..3b687096 100644 Binary files a/App/PresentationFramework.Aero2.dll and b/App/PresentationFramework.Aero2.dll differ diff --git a/App/PresentationFramework.AeroLite.dll b/App/PresentationFramework.AeroLite.dll index fa0080ed..563d0b54 100644 Binary files a/App/PresentationFramework.AeroLite.dll and b/App/PresentationFramework.AeroLite.dll differ diff --git a/App/PresentationFramework.Classic.dll b/App/PresentationFramework.Classic.dll index f50ae218..6d3d2031 100644 Binary files a/App/PresentationFramework.Classic.dll and b/App/PresentationFramework.Classic.dll differ diff --git a/App/PresentationFramework.Fluent.dll b/App/PresentationFramework.Fluent.dll index 884c0a00..208d4234 100644 Binary files a/App/PresentationFramework.Fluent.dll and b/App/PresentationFramework.Fluent.dll differ diff --git a/App/PresentationFramework.Luna.dll b/App/PresentationFramework.Luna.dll index 7fac1551..419de786 100644 Binary files a/App/PresentationFramework.Luna.dll and b/App/PresentationFramework.Luna.dll differ diff --git a/App/PresentationFramework.Royale.dll b/App/PresentationFramework.Royale.dll index db2e7bff..42e05e9b 100644 Binary files a/App/PresentationFramework.Royale.dll and b/App/PresentationFramework.Royale.dll differ diff --git a/App/PresentationFramework.dll b/App/PresentationFramework.dll index 01fd9967..dd436bb5 100644 Binary files a/App/PresentationFramework.dll and b/App/PresentationFramework.dll differ diff --git a/App/PresentationNative_cor3.dll b/App/PresentationNative_cor3.dll index b2caf417..14fe1aff 100644 Binary files a/App/PresentationNative_cor3.dll and b/App/PresentationNative_cor3.dll differ diff --git a/App/PresentationUI.dll b/App/PresentationUI.dll index 1eeb1ef5..2cae4494 100644 Binary files a/App/PresentationUI.dll and b/App/PresentationUI.dll differ diff --git a/App/ReachFramework.dll b/App/ReachFramework.dll index b90dd31d..4cf7f1e1 100644 Binary files a/App/ReachFramework.dll and b/App/ReachFramework.dll differ diff --git a/App/Resource/CoatingMaterial/AlTiBN.CoatingMaterial b/App/Resource/CoatingMaterial/AlTiBN.default.CoatingMaterial similarity index 100% rename from App/Resource/CoatingMaterial/AlTiBN.CoatingMaterial rename to App/Resource/CoatingMaterial/AlTiBN.default.CoatingMaterial diff --git a/App/Resource/CoatingMaterial/FireCoating.CoatingMaterial b/App/Resource/CoatingMaterial/FireCoating.default.CoatingMaterial similarity index 100% rename from App/Resource/CoatingMaterial/FireCoating.CoatingMaterial rename to App/Resource/CoatingMaterial/FireCoating.default.CoatingMaterial diff --git a/App/Resource/CoatingMaterial/TiAlN.CoatingMaterial b/App/Resource/CoatingMaterial/TiAlN.default.CoatingMaterial similarity index 100% rename from App/Resource/CoatingMaterial/TiAlN.CoatingMaterial rename to App/Resource/CoatingMaterial/TiAlN.default.CoatingMaterial diff --git a/App/Resource/CoatingMaterial/TiCN.CoatingMaterial b/App/Resource/CoatingMaterial/TiCN.default.CoatingMaterial similarity index 100% rename from App/Resource/CoatingMaterial/TiCN.CoatingMaterial rename to App/Resource/CoatingMaterial/TiCN.default.CoatingMaterial diff --git a/App/Resource/CoatingMaterial/TiN.CoatingMaterial b/App/Resource/CoatingMaterial/TiN.default.CoatingMaterial similarity index 100% rename from App/Resource/CoatingMaterial/TiN.CoatingMaterial rename to App/Resource/CoatingMaterial/TiN.default.CoatingMaterial diff --git a/App/Resource/CoatingMaterial/TiSiN.CoatingMaterial b/App/Resource/CoatingMaterial/TiSiN.default.CoatingMaterial similarity index 100% rename from App/Resource/CoatingMaterial/TiSiN.CoatingMaterial rename to App/Resource/CoatingMaterial/TiSiN.default.CoatingMaterial diff --git a/App/Resource/Controller/Fanuc.default.Controller b/App/Resource/Controller/Fanuc.default.Controller new file mode 100644 index 00000000..ffced629 --- /dev/null +++ b/App/Resource/Controller/Fanuc.default.Controller @@ -0,0 +1,856 @@ + + + + + Fanuc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + NC + + + 1000 + + + 10000 + + + + + + + + + + + + + + + {"CoordinateOffset":{"CoordinateId":"G54"},"CannedCycle":{"Term":"G80"}} + + + + + Parsing + + + + + N + + + @@ + @@^ + + + + + + + Assignments + + + # + + None + + + + + G43.4 + + + + + H + + # + + M + + + + + + G05.1 + + + + + Q + R + + # + + G + M + + + + + + G4 + G04 + + + + P + X + U + S + + + # + + G + M + + + + + + G28 + + + + X + Y + Z + A + B + C + + + # + + G + M + F + S + + + + + + G41 + G42 + + + + + D + + # + + M + + + + + + G43 + G44 + + + + + H + + # + + M + + + + + + G52 + + + + X + Y + Z + + + # + + G + M + F + S + + + + + + G68 + + + + X + Y + Z + I + J + K + R + + + # + + G + M + F + S + + + + + + G68.2 + + + + X + Y + Z + I + J + K + + + # + + G + M + F + S + + + + + + G73 + G74 + G76 + G81 + G82 + G83 + G84 + G85 + G86 + G87 + G89 + + + + X + Y + Z + R + Q + F + + + P + K + + # + + G + M + + + + + + M98 + + + + + P + L + + # + + G + M + F + S + T + + + + + + M99 + + + + + P + + # + + G + M + F + S + T + + + + + + M198 + + + + + P + L + + # + + G + M + F + S + T + + + + + + G65 + + + + A + B + C + D + E + F + H + I + J + K + M + Q + R + S + T + U + V + W + X + Y + Z + + + P + L + + # + + G + + + + + + G66 + + + + A + B + C + D + E + F + H + I + J + K + M + Q + R + S + T + U + V + W + X + Y + Z + + + P + L + + # + + G + + + + + + G54.1 + + + + + P + + # + + G + M + + + + + # + + + X + Y + Z + U + V + W + A + B + C + I + J + K + + false + false + None + + + # + + + F + S + R + Q + E + + false + false + None + + + # + + + T + D + H + P + L + + false + false + None + + + + Flags + + + G + M + + true + + + Debug-Parsing + false + + + + Evaluation + + + + + + + N + + + + + Setup + + + + + + + + + Fanuc + + + + + + + + + + + + N + + + + + + Logic + + + + + G20 + + + G21 + + + + + + + + + G4 + G04 + + + X + U + + + P + + + S + + + + + + + + + + M00 + M01 + + + + + + + + + + + + + + + + + + + + + + + G84 + G74 + + + + Parsing + Parsing/G28 + + + + G53 + + + + Parsing + + + + + + + + + + + TiltTransform + PathSmoothing + IsoLocalCoordinateOffset + CannedCycle + MotionState + CallStack + WhileFrames + SiemensLoopFrames + + + + + Debug-Logic + false + + + + PostLogic + + + + MachineCoordinateState + + + MachineCoordinateState + + + + Expansion + + + Debug-PostLogic + false + + + + Inspection + + + + Debug-Inspection + false + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/App/Resource/Controller/Heidenhain.default.Controller b/App/Resource/Controller/Heidenhain.default.Controller new file mode 100644 index 00000000..1d738a5e --- /dev/null +++ b/App/Resource/Controller/Heidenhain.default.Controller @@ -0,0 +1,603 @@ + + + + + Heidenhain + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + + + NC + + + 1000 + + + + + + + + + + + CYCL DEF + + + + + + {} + + + + + Parsing + + + + // + + + + ; + + + + + + N + + + @@ + @@^ + + + + + + G4 + G04 + + + + P + X + U + S + + + Q + + G + M + + + + + + G28 + + + + X + Y + Z + A + B + C + + + Q + + G + M + F + S + + + + + + G41 + G42 + + + + + D + + Q + + M + + + + + + G43 + G44 + + + + + H + + Q + + M + + + + + + G52 + + + + X + Y + Z + + + Q + + G + M + F + S + + + + + + G68 + + + + X + Y + Z + I + J + K + R + + + Q + + G + M + F + S + + + + + + G68.2 + + + + X + Y + Z + I + J + K + + + Q + + G + M + F + S + + + + + + G73 + G74 + G76 + G81 + G82 + G83 + G84 + G85 + G86 + G87 + G89 + + + + X + Y + Z + R + Q + F + + + P + K + + Q + + G + M + + + + + + + + + + Assignments + + + Q + + Heidenhain + + + + + + X + Y + Z + U + V + W + A + B + C + I + J + K + + + + + X + Y + Z + U + V + W + A + B + C + I + J + K + + + + + + + + + Assignments + + + Q + + Heidenhain + + + + + + + + X + Y + Z + U + V + W + A + B + C + + + + + Flags + + + FMAX + FAUTO + + true + + + + Flags + + + STOP + + false + + + Q + + + F + + false + true + None + + + + + + Q + + + X + Y + Z + U + V + W + A + B + C + I + J + K + + false + false + None + + + Q + + + F + S + R + + false + false + None + + + Q + + + T + D + H + P + L + + false + false + None + + + + Flags + + + G + M + + true + + + Debug-Parsing + false + + + + Evaluation + + + {0}.h + {0}.H + {0} + + 32 + + + + ; + + + + + + + + + + + + + Heidenhain + + + + + + + ; + + + + + + + + + + Logic + + + + + + + INCH + G70 + + + MM + G71 + + + + + + + + + + + + + + + + + M00 + STOP + M01 + + + + + + + + + + + + + + + + + + + + Parsing + Parsing/G28 + + + + G53 + M91 + + + + Parsing + + + + + + + + + true + + + + + TiltTransform + PathSmoothing + IsoLocalCoordinateOffset + CannedCycle + MotionState + CallStack + WhileFrames + SiemensLoopFrames + RotaryWrap + AbsoluteIjkPole + + + + + Debug-Logic + false + + + + PostLogic + + + + MachineCoordinateState + + + MachineCoordinateState + + + + Debug-PostLogic + false + + + + Inspection + + + + Debug-Inspection + false + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/App/Resource/Controller/Mazak.default.Controller b/App/Resource/Controller/Mazak.default.Controller new file mode 100644 index 00000000..526e86be --- /dev/null +++ b/App/Resource/Controller/Mazak.default.Controller @@ -0,0 +1,848 @@ + + + + + Mazak + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + NC + + + 1000 + + + 10000 + + + + + + + + + + + + + + + {"CoordinateOffset":{"CoordinateId":"G54"},"CannedCycle":{"Term":"G80"}} + + + + + Parsing + + + + + N + + + @@ + @@^ + + + + + + + Assignments + + + # + + None + + + + + G43.4 + + + + + H + + # + + M + + + + + + G05.1 + + + + + Q + R + + # + + G + M + + + + + + G4 + G04 + + + + P + X + U + S + + + # + + G + M + + + + + + G28 + + + + X + Y + Z + A + B + C + + + # + + G + M + F + S + + + + + + G41 + G42 + + + + + D + + # + + M + + + + + + G43 + G44 + + + + + H + + # + + M + + + + + + G52 + + + + X + Y + Z + + + # + + G + M + F + S + + + + + + G68 + + + + X + Y + Z + I + J + K + R + + + # + + G + M + F + S + + + + + + G68.2 + + + + X + Y + Z + I + J + K + + + # + + G + M + F + S + + + + + + G73 + G74 + G76 + G81 + G82 + G83 + G84 + G85 + G86 + G87 + G89 + + + + X + Y + Z + R + Q + F + + + P + K + + # + + G + M + + + + + + M98 + + + + + P + L + + # + + G + M + F + S + T + + + + + + M99 + + + + + P + + # + + G + M + F + S + T + + + + + + M198 + + + + + P + L + + # + + G + M + F + S + T + + + + + + G65 + + + + A + B + C + D + E + F + H + I + J + K + M + Q + R + S + T + U + V + W + X + Y + Z + + + P + L + + # + + G + + + + + + G66 + + + + A + B + C + D + E + F + H + I + J + K + M + Q + R + S + T + U + V + W + X + Y + Z + + + P + L + + # + + G + + + + + + G10.9 + + + + + X + + # + + G + M + + + + + + G54.1 + + + + + P + + # + + G + M + + + + + # + + + X + Y + Z + U + V + W + A + B + C + I + J + K + + false + false + None + + + # + + + F + S + R + Q + E + + false + false + None + + + # + + + T + D + H + P + L + + false + false + None + + + + Flags + + + G + M + + true + + + + Evaluation + + + + + + N + + + + + + + + + + + Fanuc + + + + + + + + + + + N + + + + + + Logic + + + + + G20 + + + G21 + + + + + + + + + G4 + G04 + + + X + U + + + P + + + S + + + + + + + + + + M00 + M01 + + + + + + + + + + + + + + + + + + + + + + + G84 + G74 + + + + Parsing + Parsing/G28 + + + + G53 + + + + Parsing + + + + + + + + + + + TiltTransform + PathSmoothing + IsoLocalCoordinateOffset + CannedCycle + MotionState + CallStack + WhileFrames + SiemensLoopFrames + + + + + + PostLogic + + + + MachineCoordinateState + + + MachineCoordinateState + + + + + Inspection + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/App/Resource/Controller/Siemens.default.Controller b/App/Resource/Controller/Siemens.default.Controller new file mode 100644 index 00000000..45b72a75 --- /dev/null +++ b/App/Resource/Controller/Siemens.default.Controller @@ -0,0 +1,639 @@ + + + + + Siemens + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + NC + + + 1000 + + + 10000 + + + 5 + + + + + + + + + + + + + + + {"CoordinateOffset":{"CoordinateId":"G500"},"CannedCycle":{"Term":"G80"}} + + + + + Parsing + + + ; + + + N + + + @@ + @@^ + + + + + + + + + + + CYCLE832 + CYCLE800 + + + + + + + + + WRITE + MSG + DEF + PROC + REPEAT + MCALL + TRAORI + TRAFOOF + GOTOF + GOTOB + IF + ELSE + ENDIF + WHILE + ENDWHILE + FOR + ENDFOR + LOOP + ENDLOOP + REPEATB + UNTIL + CASE + + + + + + R + + + CR + + true + false + Siemens + + + R + + + TURN + + true + false + Siemens + + + + Assignments + + + G + M + F + S + T + + \$\w+(?:\[[^\]=]*\])?|_\w+|[A-Za-z]\w*_\w*|[A-Za-z]\d+ + Siemens + + + + Assignments + + + R + + G + M + F + S + T + + Siemens + + + + + G4 + G04 + + + + F + S + + + R + + G + M + + + + + + G28 + + + + X + Y + Z + A + B + C + + + R + + G + M + F + S + + + + + + G41 + G42 + + + + + D + + R + + M + + + + + + G43 + G44 + + + + + H + + R + + M + + + + + + G52 + + + + X + Y + Z + + + R + + G + M + F + S + + + + + + G68 + + + + X + Y + Z + I + J + K + R + + + R + + G + M + F + S + + + + + + G68.2 + + + + X + Y + Z + I + J + K + + + R + + G + M + F + S + + + + + + G73 + G76 + G81 + G82 + G83 + G84 + G85 + G86 + G87 + G89 + + + + X + Y + Z + R + Q + F + + + P + K + + R + + G + M + + + + + + G74 + G75 + + + + X + Y + Z + A + B + C + F + + + R + + G + M + + + + + Flags + + + TRAORI + TRAFOOF + SUPA + STOPRE + RET + FNORM + SOFT + BRISK + FFWON + FFWOF + COMPCAD + COMPON + COMPOF + UPATH + SPATH + CUT3DC + + false + + + R + + + X + Y + Z + U + V + W + A + B + C + I + J + K + + true + false + Siemens + + + R + + + F + S + Q + E + + true + false + Siemens + + + R + + + T + D + H + P + + false + false + None + + + + Flags + + + G + M + + true + + + Debug-Parsing + false + + + + Evaluation + + + {0}.SPF + {0}.MPF + {0} + + 32 + + + + + + + + + + Siemens + + + + + + + ; + + + N + + + + + + + + + + + Logic + + + + G70 + G700 + + + G710 + G71 + + + + + + + + + G4 + G04 + + + F + + + + S + + + + + + + + + + + + M00 + M01 + + + + + + + + + + + + + + + + + + + + + + G84 + + + + Parsing + Parsing/G28 + + + + G53 + G153 + SUPA + + + + Parsing + + + + + + + + + + + TiltTransform + PathSmoothing + IsoLocalCoordinateOffset + CannedCycle + MotionState + CallStack + WhileFrames + SiemensLoopFrames + + + + + Debug-Logic + false + + + + PostLogic + + + + MachineCoordinateState + + + MachineCoordinateState + + + + Debug-PostLogic + false + + + + Inspection + + + + Debug-Inspection + false + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/App/Resource/Controller/Syntec.default.Controller b/App/Resource/Controller/Syntec.default.Controller new file mode 100644 index 00000000..15e4d388 --- /dev/null +++ b/App/Resource/Controller/Syntec.default.Controller @@ -0,0 +1,832 @@ + + + + + Syntec + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + NC + + + 1000 + + + 10000 + + + + + + + + + + + + + + + {"CoordinateOffset":{"CoordinateId":"G54"},"CannedCycle":{"Term":"G80"}} + + + + + Parsing + + + + + N + + + @@ + @@^ + + + + + + + Assignments + + + # + + None + + + + + G43.4 + + + + + H + + # + + M + + + + + + G05.1 + + + + + Q + R + + # + + G + M + + + + + + G4 + G04 + + + + P + X + U + S + + + # + + G + M + + + + + + G28 + + + + X + Y + Z + A + B + C + + + # + + G + M + F + S + + + + + + G41 + G42 + + + + + D + + # + + M + + + + + + G43 + G44 + + + + + H + + # + + M + + + + + + G52 + + + + X + Y + Z + + + # + + G + M + F + S + + + + + + G68 + + + + X + Y + Z + I + J + K + R + + + # + + G + M + F + S + + + + + + G68.2 + + + + X + Y + Z + I + J + K + + + # + + G + M + F + S + + + + + + G73 + G74 + G76 + G81 + G82 + G83 + G84 + G85 + G86 + G87 + G89 + + + + X + Y + Z + R + Q + F + + + P + K + + # + + G + M + + + + + + M98 + + + + + P + L + + # + + G + M + F + S + T + + + + + + M99 + + + + + P + + # + + G + M + F + S + T + + + + + + M198 + + + + + P + L + + # + + G + M + F + S + T + + + + + + G65 + + + + A + B + C + D + E + F + H + I + J + K + M + Q + R + S + T + U + V + W + X + Y + Z + + + P + L + + # + + G + + + + + + G66 + + + + A + B + C + D + E + F + H + I + J + K + M + Q + R + S + T + U + V + W + X + Y + Z + + + P + L + + # + + G + + + + + + G54.1 + + + + + P + + # + + G + M + + + + + # + + + X + Y + Z + U + V + W + A + B + C + I + J + K + + false + false + None + + + # + + + F + S + R + Q + E + + false + false + None + + + # + + + T + D + H + P + L + + false + false + None + + + + Flags + + + G + M + + true + + + + Evaluation + + + + + + N + + + + + + + + + + + Fanuc + + + + + + + + + + + N + + + + + + Logic + + + + + G20 + + + G21 + + + + + + + + + G4 + G04 + + + X + U + + + P + + + S + + + + + + + + + + M00 + M01 + + + + + + + + + + + + + + + + + + + + + + + G84 + G74 + + + + Parsing + Parsing/G28 + + + + G53 + + + + Parsing + + + + + + + + + + + TiltTransform + PathSmoothing + IsoLocalCoordinateOffset + CannedCycle + MotionState + CallStack + WhileFrames + SiemensLoopFrames + + + + + + PostLogic + + + + MachineCoordinateState + + + MachineCoordinateState + + + + + Inspection + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/App/Resource/CoolantHeatCondition/StandardForcedAir.default.CoolantHeatCondition b/App/Resource/CoolantHeatCondition/StandardForcedAir.default.CoolantHeatCondition new file mode 100644 index 00000000..1730faa4 --- /dev/null +++ b/App/Resource/CoolantHeatCondition/StandardForcedAir.default.CoolantHeatCondition @@ -0,0 +1,8 @@ + + StandardForcedAir + Forced air / dry cutting (air blast only, no liquid coolant). + 25 + 100 + 0.5 + 50 + diff --git a/App/Resource/CoolantHeatCondition/StandardOilBasedCoolant.default.CoolantHeatCondition b/App/Resource/CoolantHeatCondition/StandardOilBasedCoolant.default.CoolantHeatCondition new file mode 100644 index 00000000..f46afeda --- /dev/null +++ b/App/Resource/CoolantHeatCondition/StandardOilBasedCoolant.default.CoolantHeatCondition @@ -0,0 +1,8 @@ + + StandardOilBasedCoolant + Oil-based cutting fluid (neat oil). + 25 + 300 + 0.5 + 50 + diff --git a/App/Resource/CoolantHeatCondition/StandardWaterSolubleCoolant.default.CoolantHeatCondition b/App/Resource/CoolantHeatCondition/StandardWaterSolubleCoolant.default.CoolantHeatCondition new file mode 100644 index 00000000..13d8b6f4 --- /dev/null +++ b/App/Resource/CoolantHeatCondition/StandardWaterSolubleCoolant.default.CoolantHeatCondition @@ -0,0 +1,8 @@ + + StandardWaterSolubleCoolant + Water-soluble cutting fluid (water-based emulsion). + 25 + 1000 + 0.5 + 50 + diff --git a/App/Resource/Cutter/D12-Rc0.5-CH20.Cutter b/App/Resource/Cutter/D12-Rc0.5-CH20.default.Cutter similarity index 100% rename from App/Resource/Cutter/D12-Rc0.5-CH20.Cutter rename to App/Resource/Cutter/D12-Rc0.5-CH20.default.Cutter diff --git a/App/Resource/Cutter/Speed Tiger/PDST040900T ZrN-A.Cutter b/App/Resource/Cutter/Speed Tiger/PDST040900T ZrN-A.default.Cutter similarity index 100% rename from App/Resource/Cutter/Speed Tiger/PDST040900T ZrN-A.Cutter rename to App/Resource/Cutter/Speed Tiger/PDST040900T ZrN-A.default.Cutter diff --git a/App/Resource/CutterMaterial/Al2O3-TiC.CutterMaterial b/App/Resource/CutterMaterial/Al2O3-TiC.default.CutterMaterial similarity index 100% rename from App/Resource/CutterMaterial/Al2O3-TiC.CutterMaterial rename to App/Resource/CutterMaterial/Al2O3-TiC.default.CutterMaterial diff --git a/App/Resource/CutterMaterial/CBN-TiN.CutterMaterial b/App/Resource/CutterMaterial/CBN-TiN.default.CutterMaterial similarity index 100% rename from App/Resource/CutterMaterial/CBN-TiN.CutterMaterial rename to App/Resource/CutterMaterial/CBN-TiN.default.CutterMaterial diff --git a/App/Resource/CutterMaterial/HSS-M2.CutterMaterial b/App/Resource/CutterMaterial/HSS-M2.default.CutterMaterial similarity index 100% rename from App/Resource/CutterMaterial/HSS-M2.CutterMaterial rename to App/Resource/CutterMaterial/HSS-M2.default.CutterMaterial diff --git a/App/Resource/CutterMaterial/HSS-M35.CutterMaterial b/App/Resource/CutterMaterial/HSS-M35.default.CutterMaterial similarity index 100% rename from App/Resource/CutterMaterial/HSS-M35.CutterMaterial rename to App/Resource/CutterMaterial/HSS-M35.default.CutterMaterial diff --git a/App/Resource/CutterMaterial/HSS-M42.CutterMaterial b/App/Resource/CutterMaterial/HSS-M42.default.CutterMaterial similarity index 100% rename from App/Resource/CutterMaterial/HSS-M42.CutterMaterial rename to App/Resource/CutterMaterial/HSS-M42.default.CutterMaterial diff --git a/App/Resource/CutterMaterial/WC-Co10-600nm.CutterMaterial b/App/Resource/CutterMaterial/WC-Co10-600nm.default.CutterMaterial similarity index 100% rename from App/Resource/CutterMaterial/WC-Co10-600nm.CutterMaterial rename to App/Resource/CutterMaterial/WC-Co10-600nm.default.CutterMaterial diff --git a/App/Resource/CutterMaterial/WC-Co6-500nm-Advanced.CutterMaterial b/App/Resource/CutterMaterial/WC-Co6-500nm-Advanced.default.CutterMaterial similarity index 100% rename from App/Resource/CutterMaterial/WC-Co6-500nm-Advanced.CutterMaterial rename to App/Resource/CutterMaterial/WC-Co6-500nm-Advanced.default.CutterMaterial diff --git a/App/Resource/CutterMaterial/WC-Co6-800nm.CutterMaterial b/App/Resource/CutterMaterial/WC-Co6-800nm.default.CutterMaterial similarity index 100% rename from App/Resource/CutterMaterial/WC-Co6-800nm.CutterMaterial rename to App/Resource/CutterMaterial/WC-Co6-800nm.default.CutterMaterial diff --git a/App/Resource/CutterMaterial/WC-Co6-TiC-400nm.CutterMaterial b/App/Resource/CutterMaterial/WC-Co6-TiC-400nm.default.CutterMaterial similarity index 100% rename from App/Resource/CutterMaterial/WC-Co6-TiC-400nm.CutterMaterial rename to App/Resource/CutterMaterial/WC-Co6-TiC-400nm.default.CutterMaterial diff --git a/App/Resource/CutterMaterial/WC.CutterMaterial b/App/Resource/CutterMaterial/WC.default.CutterMaterial similarity index 100% rename from App/Resource/CutterMaterial/WC.CutterMaterial rename to App/Resource/CutterMaterial/WC.default.CutterMaterial diff --git a/App/Resource/CuttingParameter/17-4PH.mp b/App/Resource/CuttingParameter/17-4PH.default.mp similarity index 100% rename from App/Resource/CuttingParameter/17-4PH.mp rename to App/Resource/CuttingParameter/17-4PH.default.mp diff --git a/App/Resource/CuttingParameter/A380.mp b/App/Resource/CuttingParameter/A380.default.mp similarity index 100% rename from App/Resource/CuttingParameter/A380.mp rename to App/Resource/CuttingParameter/A380.default.mp diff --git a/App/Resource/CuttingParameter/AA7075.mp b/App/Resource/CuttingParameter/AA7075.default.mp similarity index 100% rename from App/Resource/CuttingParameter/AA7075.mp rename to App/Resource/CuttingParameter/AA7075.default.mp diff --git a/App/Resource/CuttingParameter/Al6061T6.mp b/App/Resource/CuttingParameter/Al6061T6.default.mp similarity index 100% rename from App/Resource/CuttingParameter/Al6061T6.mp rename to App/Resource/CuttingParameter/Al6061T6.default.mp diff --git a/App/Resource/CuttingParameter/Al6082.mp b/App/Resource/CuttingParameter/Al6082.default.mp similarity index 100% rename from App/Resource/CuttingParameter/Al6082.mp rename to App/Resource/CuttingParameter/Al6082.default.mp diff --git a/App/Resource/CuttingParameter/FC30.mp b/App/Resource/CuttingParameter/FC30.default.mp similarity index 100% rename from App/Resource/CuttingParameter/FC30.mp rename to App/Resource/CuttingParameter/FC30.default.mp diff --git a/App/Resource/CuttingParameter/FDAC.mp b/App/Resource/CuttingParameter/FDAC.default.mp similarity index 100% rename from App/Resource/CuttingParameter/FDAC.mp rename to App/Resource/CuttingParameter/FDAC.default.mp diff --git a/App/Resource/CuttingParameter/Inconel718.mp b/App/Resource/CuttingParameter/Inconel718.default.mp similarity index 100% rename from App/Resource/CuttingParameter/Inconel718.mp rename to App/Resource/CuttingParameter/Inconel718.default.mp diff --git a/App/Resource/CuttingParameter/P20.mp b/App/Resource/CuttingParameter/P20.default.mp similarity index 100% rename from App/Resource/CuttingParameter/P20.mp rename to App/Resource/CuttingParameter/P20.default.mp diff --git a/App/Resource/CuttingParameter/S45C.mp b/App/Resource/CuttingParameter/S45C.default.mp similarity index 100% rename from App/Resource/CuttingParameter/S45C.mp rename to App/Resource/CuttingParameter/S45C.default.mp diff --git a/App/Resource/CuttingParameter/S50C.mp b/App/Resource/CuttingParameter/S50C.default.mp similarity index 100% rename from App/Resource/CuttingParameter/S50C.mp rename to App/Resource/CuttingParameter/S50C.default.mp diff --git a/App/Resource/CuttingParameter/SCM440.mp b/App/Resource/CuttingParameter/SCM440.default.mp similarity index 82% rename from App/Resource/CuttingParameter/SCM440.mp rename to App/Resource/CuttingParameter/SCM440.default.mp index 356cb304..9ca07eab 100644 --- a/App/Resource/CuttingParameter/SCM440.mp +++ b/App/Resource/CuttingParameter/SCM440.default.mp @@ -1,7 +1,7 @@ SCM440 (update on 20241214) - + EN-42CrMoS4; EN-42CrMo4; ISO-42CrMo4; AISI-4140; JIS-SCM440; DIN-42CrMo4; GB-42CrMo; AFNOR-42CD4; AFNOR-42CD4u; UNI-42CrMo4; UNE-40CrMo41; UNE-40CrMo4; UNE-F1252; SS-2244; SFS-42CrMo4; GOST-35KHM; GOST-38KHM; BS-708M40; BS-CFS11 647.1394454467882 704.370142251793 diff --git a/App/Resource/CuttingParameter/Ti6Al4V.mp b/App/Resource/CuttingParameter/Ti6Al4V.default.mp similarity index 100% rename from App/Resource/CuttingParameter/Ti6Al4V.mp rename to App/Resource/CuttingParameter/Ti6Al4V.default.mp diff --git a/App/Resource/Holder/NKUST-BT40-ER16-090.Holder b/App/Resource/Holder/NKUST-BT40-ER16-090.default.Holder similarity index 100% rename from App/Resource/Holder/NKUST-BT40-ER16-090.Holder rename to App/Resource/Holder/NKUST-BT40-ER16-090.default.Holder diff --git a/App/Resource/MachineTool/CT-350/BuildByTongTai.txt b/App/Resource/MachineTool/CT-350.default/BuildByTongTai.txt similarity index 100% rename from App/Resource/MachineTool/CT-350/BuildByTongTai.txt rename to App/Resource/MachineTool/CT-350.default/BuildByTongTai.txt diff --git a/App/Resource/MachineTool/CT-350/CT-350.mt b/App/Resource/MachineTool/CT-350.default/CT-350.mt similarity index 81% rename from App/Resource/MachineTool/CT-350/CT-350.mt rename to App/Resource/MachineTool/CT-350.default/CT-350.mt index 8c7afa89..e0499ccd 100644 --- a/App/Resource/MachineTool/CT-350/CT-350.mt +++ b/App/Resource/MachineTool/CT-350.default/CT-350.mt @@ -31,32 +31,32 @@ - MachineTool/CT-350/base.stl + base.stl - MachineTool/CT-350/y.stl + y.stl - MachineTool/CT-350/x.stl + x.stl - MachineTool/CT-350/a.stl + a.stl - MachineTool/CT-350/c.stl + c.stl - MachineTool/CT-350/z.stl + z.stl diff --git a/App/Resource/MachineTool/CT-350/a.stl b/App/Resource/MachineTool/CT-350.default/a.stl similarity index 100% rename from App/Resource/MachineTool/CT-350/a.stl rename to App/Resource/MachineTool/CT-350.default/a.stl diff --git a/App/Resource/MachineTool/CT-350/base.stl b/App/Resource/MachineTool/CT-350.default/base.stl similarity index 100% rename from App/Resource/MachineTool/CT-350/base.stl rename to App/Resource/MachineTool/CT-350.default/base.stl diff --git a/App/Resource/MachineTool/CT-350/c.stl b/App/Resource/MachineTool/CT-350.default/c.stl similarity index 100% rename from App/Resource/MachineTool/CT-350/c.stl rename to App/Resource/MachineTool/CT-350.default/c.stl diff --git a/App/Resource/MachineTool/CT-350/x.stl b/App/Resource/MachineTool/CT-350.default/x.stl similarity index 100% rename from App/Resource/MachineTool/CT-350/x.stl rename to App/Resource/MachineTool/CT-350.default/x.stl diff --git a/App/Resource/MachineTool/CT-350/y.stl b/App/Resource/MachineTool/CT-350.default/y.stl similarity index 100% rename from App/Resource/MachineTool/CT-350/y.stl rename to App/Resource/MachineTool/CT-350.default/y.stl diff --git a/App/Resource/MachineTool/CT-350/z.stl b/App/Resource/MachineTool/CT-350.default/z.stl similarity index 100% rename from App/Resource/MachineTool/CT-350/z.stl rename to App/Resource/MachineTool/CT-350.default/z.stl diff --git a/App/Resource/MachineTool/CT-350/MachineTool/CT-350/a.stl b/App/Resource/MachineTool/CT-350/MachineTool/CT-350/a.stl deleted file mode 100644 index deed2cee..00000000 Binary files a/App/Resource/MachineTool/CT-350/MachineTool/CT-350/a.stl and /dev/null differ diff --git a/App/Resource/MachineTool/CT-350/MachineTool/CT-350/base.stl b/App/Resource/MachineTool/CT-350/MachineTool/CT-350/base.stl deleted file mode 100644 index 89d86522..00000000 Binary files a/App/Resource/MachineTool/CT-350/MachineTool/CT-350/base.stl and /dev/null differ diff --git a/App/Resource/MachineTool/CT-350/MachineTool/CT-350/c.stl b/App/Resource/MachineTool/CT-350/MachineTool/CT-350/c.stl deleted file mode 100644 index 2618b37e..00000000 Binary files a/App/Resource/MachineTool/CT-350/MachineTool/CT-350/c.stl and /dev/null differ diff --git a/App/Resource/MachineTool/CT-350/MachineTool/CT-350/x.stl b/App/Resource/MachineTool/CT-350/MachineTool/CT-350/x.stl deleted file mode 100644 index 0e9aec5f..00000000 Binary files a/App/Resource/MachineTool/CT-350/MachineTool/CT-350/x.stl and /dev/null differ diff --git a/App/Resource/MachineTool/CT-350/MachineTool/CT-350/y.stl b/App/Resource/MachineTool/CT-350/MachineTool/CT-350/y.stl deleted file mode 100644 index 5f35616e..00000000 Binary files a/App/Resource/MachineTool/CT-350/MachineTool/CT-350/y.stl and /dev/null differ diff --git a/App/Resource/MachineTool/CT-350/MachineTool/CT-350/z.stl b/App/Resource/MachineTool/CT-350/MachineTool/CT-350/z.stl deleted file mode 100644 index e6bcd0f2..00000000 Binary files a/App/Resource/MachineTool/CT-350/MachineTool/CT-350/z.stl and /dev/null differ diff --git a/App/Resource/MachineTool/Empty-wXYOZSt.mt b/App/Resource/MachineTool/Empty-wXYOZSt.default.mt similarity index 100% rename from App/Resource/MachineTool/Empty-wXYOZSt.mt rename to App/Resource/MachineTool/Empty-wXYOZSt.default.mt diff --git a/App/Resource/MachineTool/PMC-B1/B.stl b/App/Resource/MachineTool/Table-B1.default/B.stl similarity index 99% rename from App/Resource/MachineTool/PMC-B1/B.stl rename to App/Resource/MachineTool/Table-B1.default/B.stl index 005609c4..245f9a35 100644 Binary files a/App/Resource/MachineTool/PMC-B1/B.stl and b/App/Resource/MachineTool/Table-B1.default/B.stl differ diff --git a/App/Resource/MachineTool/PMC-B1/C.stl b/App/Resource/MachineTool/Table-B1.default/C.stl similarity index 99% rename from App/Resource/MachineTool/PMC-B1/C.stl rename to App/Resource/MachineTool/Table-B1.default/C.stl index aab90dfb..20c878ed 100644 Binary files a/App/Resource/MachineTool/PMC-B1/C.stl and b/App/Resource/MachineTool/Table-B1.default/C.stl differ diff --git a/App/Resource/MachineTool/PMC-B1/S.stl b/App/Resource/MachineTool/Table-B1.default/S.stl similarity index 99% rename from App/Resource/MachineTool/PMC-B1/S.stl rename to App/Resource/MachineTool/Table-B1.default/S.stl index 75ba00e1..6eedfb8e 100644 Binary files a/App/Resource/MachineTool/PMC-B1/S.stl and b/App/Resource/MachineTool/Table-B1.default/S.stl differ diff --git a/App/Resource/MachineTool/PMC-B1/PMC-B1.general-mech b/App/Resource/MachineTool/Table-B1.default/Table-B1.general-mech similarity index 100% rename from App/Resource/MachineTool/PMC-B1/PMC-B1.general-mech rename to App/Resource/MachineTool/Table-B1.default/Table-B1.general-mech diff --git a/App/Resource/MachineTool/PMC-B1/PMC-B1.mt b/App/Resource/MachineTool/Table-B1.default/Table-B1.mt similarity index 75% rename from App/Resource/MachineTool/PMC-B1/PMC-B1.mt rename to App/Resource/MachineTool/Table-B1.default/Table-B1.mt index 8c9d0c10..4b94c7d6 100644 --- a/App/Resource/MachineTool/PMC-B1/PMC-B1.mt +++ b/App/Resource/MachineTool/Table-B1.default/Table-B1.mt @@ -3,7 +3,7 @@ - PMC-B1.general-mech + Table-B1.general-mech diff --git a/App/Resource/MachineTool/PMC-B1/X.stl b/App/Resource/MachineTool/Table-B1.default/X.stl similarity index 99% rename from App/Resource/MachineTool/PMC-B1/X.stl rename to App/Resource/MachineTool/Table-B1.default/X.stl index e5687d16..cc617bb1 100644 Binary files a/App/Resource/MachineTool/PMC-B1/X.stl and b/App/Resource/MachineTool/Table-B1.default/X.stl differ diff --git a/App/Resource/MachineTool/PMC-B1/Y.stl b/App/Resource/MachineTool/Table-B1.default/Y.stl similarity index 99% rename from App/Resource/MachineTool/PMC-B1/Y.stl rename to App/Resource/MachineTool/Table-B1.default/Y.stl index 0409d710..2c60378a 100644 Binary files a/App/Resource/MachineTool/PMC-B1/Y.stl and b/App/Resource/MachineTool/Table-B1.default/Y.stl differ diff --git a/App/Resource/MachineTool/PMC-B1/Z.stl b/App/Resource/MachineTool/Table-B1.default/Z.stl similarity index 99% rename from App/Resource/MachineTool/PMC-B1/Z.stl rename to App/Resource/MachineTool/Table-B1.default/Z.stl index 14cb91e2..8d80e106 100644 Binary files a/App/Resource/MachineTool/PMC-B1/Z.stl and b/App/Resource/MachineTool/Table-B1.default/Z.stl differ diff --git a/App/Resource/MachineTool/PMC-B1/base.stl b/App/Resource/MachineTool/Table-B1.default/base.stl similarity index 99% rename from App/Resource/MachineTool/PMC-B1/base.stl rename to App/Resource/MachineTool/Table-B1.default/base.stl index 35ca6dd2..8008d80d 100644 Binary files a/App/Resource/MachineTool/PMC-B1/base.stl and b/App/Resource/MachineTool/Table-B1.default/base.stl differ diff --git a/App/Resource/SpindleCapability/FANUC-aT12-12000i.SpindleCapability b/App/Resource/SpindleCapability/FANUC-aT12-12000i.default.SpindleCapability similarity index 100% rename from App/Resource/SpindleCapability/FANUC-aT12-12000i.SpindleCapability rename to App/Resource/SpindleCapability/FANUC-aT12-12000i.default.SpindleCapability diff --git a/App/Resource/SpindleCapability/TMV-720A-STD-8000RPM.SpindleCapability b/App/Resource/SpindleCapability/TMV-720A-STD-8000RPM.default.SpindleCapability similarity index 100% rename from App/Resource/SpindleCapability/TMV-720A-STD-8000RPM.SpindleCapability rename to App/Resource/SpindleCapability/TMV-720A-STD-8000RPM.default.SpindleCapability diff --git a/App/Resource/SpindleCapability/VP-8--Fanuc-10000RPM.SpindleCapability b/App/Resource/SpindleCapability/VP-8--Fanuc-10000RPM.default.SpindleCapability similarity index 100% rename from App/Resource/SpindleCapability/VP-8--Fanuc-10000RPM.SpindleCapability rename to App/Resource/SpindleCapability/VP-8--Fanuc-10000RPM.default.SpindleCapability diff --git a/App/Resource/StructureMaterial/AlloySteel42CrMo.xml b/App/Resource/StructureMaterial/AlloySteel42CrMo.default.xml similarity index 100% rename from App/Resource/StructureMaterial/AlloySteel42CrMo.xml rename to App/Resource/StructureMaterial/AlloySteel42CrMo.default.xml diff --git a/App/Resource/StructureMaterial/CarbonFiberComposite.xml b/App/Resource/StructureMaterial/CarbonFiberComposite.default.xml similarity index 100% rename from App/Resource/StructureMaterial/CarbonFiberComposite.xml rename to App/Resource/StructureMaterial/CarbonFiberComposite.default.xml diff --git a/App/Resource/StructureMaterial/HSS_M2.xml b/App/Resource/StructureMaterial/HSS_M2.default.xml similarity index 100% rename from App/Resource/StructureMaterial/HSS_M2.xml rename to App/Resource/StructureMaterial/HSS_M2.default.xml diff --git a/App/Resource/StructureMaterial/SpecialAlloySteel.xml b/App/Resource/StructureMaterial/SpecialAlloySteel.default.xml similarity index 100% rename from App/Resource/StructureMaterial/SpecialAlloySteel.xml rename to App/Resource/StructureMaterial/SpecialAlloySteel.default.xml diff --git a/App/Resource/WorkpieceMaterial/17-4PH.WorkpieceMaterial b/App/Resource/WorkpieceMaterial/17-4PH.default.WorkpieceMaterial similarity index 100% rename from App/Resource/WorkpieceMaterial/17-4PH.WorkpieceMaterial rename to App/Resource/WorkpieceMaterial/17-4PH.default.WorkpieceMaterial diff --git a/App/Resource/WorkpieceMaterial/A380.WorkpieceMaterial b/App/Resource/WorkpieceMaterial/A380.default.WorkpieceMaterial similarity index 100% rename from App/Resource/WorkpieceMaterial/A380.WorkpieceMaterial rename to App/Resource/WorkpieceMaterial/A380.default.WorkpieceMaterial diff --git a/App/Resource/WorkpieceMaterial/A6082.WorkpieceMaterial b/App/Resource/WorkpieceMaterial/A6082.default.WorkpieceMaterial similarity index 100% rename from App/Resource/WorkpieceMaterial/A6082.WorkpieceMaterial rename to App/Resource/WorkpieceMaterial/A6082.default.WorkpieceMaterial diff --git a/App/Resource/WorkpieceMaterial/AA7075.WorkpieceMaterial b/App/Resource/WorkpieceMaterial/AA7075.default.WorkpieceMaterial similarity index 100% rename from App/Resource/WorkpieceMaterial/AA7075.WorkpieceMaterial rename to App/Resource/WorkpieceMaterial/AA7075.default.WorkpieceMaterial diff --git a/App/Resource/WorkpieceMaterial/Al6061T6.WorkpieceMaterial b/App/Resource/WorkpieceMaterial/Al6061T6.default.WorkpieceMaterial similarity index 100% rename from App/Resource/WorkpieceMaterial/Al6061T6.WorkpieceMaterial rename to App/Resource/WorkpieceMaterial/Al6061T6.default.WorkpieceMaterial diff --git a/App/Resource/WorkpieceMaterial/FC30.WorkpieceMaterial b/App/Resource/WorkpieceMaterial/FC30.default.WorkpieceMaterial similarity index 100% rename from App/Resource/WorkpieceMaterial/FC30.WorkpieceMaterial rename to App/Resource/WorkpieceMaterial/FC30.default.WorkpieceMaterial diff --git a/App/Resource/WorkpieceMaterial/FDAC.WorkpieceMaterial b/App/Resource/WorkpieceMaterial/FDAC.default.WorkpieceMaterial similarity index 100% rename from App/Resource/WorkpieceMaterial/FDAC.WorkpieceMaterial rename to App/Resource/WorkpieceMaterial/FDAC.default.WorkpieceMaterial diff --git a/App/Resource/WorkpieceMaterial/Inconel718.WorkpieceMaterial b/App/Resource/WorkpieceMaterial/Inconel718.default.WorkpieceMaterial similarity index 100% rename from App/Resource/WorkpieceMaterial/Inconel718.WorkpieceMaterial rename to App/Resource/WorkpieceMaterial/Inconel718.default.WorkpieceMaterial diff --git a/App/Resource/WorkpieceMaterial/P20.WorkpieceMaterial b/App/Resource/WorkpieceMaterial/P20.default.WorkpieceMaterial similarity index 100% rename from App/Resource/WorkpieceMaterial/P20.WorkpieceMaterial rename to App/Resource/WorkpieceMaterial/P20.default.WorkpieceMaterial diff --git a/App/Resource/WorkpieceMaterial/S440C.WorkpieceMaterial b/App/Resource/WorkpieceMaterial/S440C.default.WorkpieceMaterial similarity index 100% rename from App/Resource/WorkpieceMaterial/S440C.WorkpieceMaterial rename to App/Resource/WorkpieceMaterial/S440C.default.WorkpieceMaterial diff --git a/App/Resource/WorkpieceMaterial/S45C.WorkpieceMaterial b/App/Resource/WorkpieceMaterial/S45C.default.WorkpieceMaterial similarity index 100% rename from App/Resource/WorkpieceMaterial/S45C.WorkpieceMaterial rename to App/Resource/WorkpieceMaterial/S45C.default.WorkpieceMaterial diff --git a/App/Resource/WorkpieceMaterial/S50C.WorkpieceMaterial b/App/Resource/WorkpieceMaterial/S50C.default.WorkpieceMaterial similarity index 100% rename from App/Resource/WorkpieceMaterial/S50C.WorkpieceMaterial rename to App/Resource/WorkpieceMaterial/S50C.default.WorkpieceMaterial diff --git a/App/Resource/WorkpieceMaterial/SCM440.WorkpieceMaterial b/App/Resource/WorkpieceMaterial/SCM440.default.WorkpieceMaterial similarity index 100% rename from App/Resource/WorkpieceMaterial/SCM440.WorkpieceMaterial rename to App/Resource/WorkpieceMaterial/SCM440.default.WorkpieceMaterial diff --git a/App/Resource/WorkpieceMaterial/SS400.WorkpieceMaterial b/App/Resource/WorkpieceMaterial/SS400.default.WorkpieceMaterial similarity index 100% rename from App/Resource/WorkpieceMaterial/SS400.WorkpieceMaterial rename to App/Resource/WorkpieceMaterial/SS400.default.WorkpieceMaterial diff --git a/App/Resource/WorkpieceMaterial/SUS304.WorkpieceMaterial b/App/Resource/WorkpieceMaterial/SUS304.default.WorkpieceMaterial similarity index 100% rename from App/Resource/WorkpieceMaterial/SUS304.WorkpieceMaterial rename to App/Resource/WorkpieceMaterial/SUS304.default.WorkpieceMaterial diff --git a/App/Resource/WorkpieceMaterial/SUS316.WorkpieceMaterial b/App/Resource/WorkpieceMaterial/SUS316.default.WorkpieceMaterial similarity index 100% rename from App/Resource/WorkpieceMaterial/SUS316.WorkpieceMaterial rename to App/Resource/WorkpieceMaterial/SUS316.default.WorkpieceMaterial diff --git a/App/Resource/WorkpieceMaterial/Ti6Al4V.WorkpieceMaterial b/App/Resource/WorkpieceMaterial/Ti6Al4V.default.WorkpieceMaterial similarity index 100% rename from App/Resource/WorkpieceMaterial/Ti6Al4V.WorkpieceMaterial rename to App/Resource/WorkpieceMaterial/Ti6Al4V.default.WorkpieceMaterial diff --git a/App/SQLitePCLRaw.batteries_v2.dll b/App/SQLitePCLRaw.batteries_v2.dll index 53e53eb0..4482096d 100644 Binary files a/App/SQLitePCLRaw.batteries_v2.dll and b/App/SQLitePCLRaw.batteries_v2.dll differ diff --git a/App/SQLitePCLRaw.core.dll b/App/SQLitePCLRaw.core.dll index b5636775..e6b6029e 100644 Binary files a/App/SQLitePCLRaw.core.dll and b/App/SQLitePCLRaw.core.dll differ diff --git a/App/SQLitePCLRaw.provider.e_sqlite3.dll b/App/SQLitePCLRaw.provider.e_sqlite3.dll index f83896d3..3caf74c3 100644 Binary files a/App/SQLitePCLRaw.provider.e_sqlite3.dll and b/App/SQLitePCLRaw.provider.e_sqlite3.dll differ diff --git a/App/StepPresentCatalog/catalog.en.json b/App/StepPresentCatalog/catalog.en.json new file mode 100644 index 00000000..88af4737 --- /dev/null +++ b/App/StepPresentCatalog/catalog.en.json @@ -0,0 +1,2202 @@ +{ + "schemaVersion": 1, + "engineVersion": "3.2.13.0", + "recordCount": 97, + "records": [ + { + "key": "AccumulatedCraterWear_um", + "baseProperty": "AccumulatedCraterWear_um", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Accumulated Crater Wear", + "englishShortName": "A.C.Wear", + "unit": "um", + "unitDisplay": "um", + "tailUnit": " (um)", + "dataFormatString": "G4", + "category": "Temperature / Wear", + "legacyEnglishKeys": [ + "Accumulated Crater Wear", + "A.C.Wear" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AccumulatedFlankWearDepth_um", + "baseProperty": "AccumulatedFlankWearDepth_um", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Accumulated Flank Wear Depth", + "englishShortName": "A.F.Wear.Depth", + "unit": "um", + "unitDisplay": "um", + "tailUnit": " (um)", + "dataFormatString": "G4", + "category": "Temperature / Wear", + "legacyEnglishKeys": [ + "Accumulated Flank Wear Depth", + "A.F.Wear.Depth" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AccumulatedFlankWearWidth_um", + "baseProperty": "AccumulatedFlankWearWidth_um", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Accumulated Flank Wear Width", + "englishShortName": "A.F.Wear.Width", + "unit": "um", + "unitDisplay": "um", + "tailUnit": " (um)", + "dataFormatString": "G4", + "category": "Temperature / Wear", + "legacyEnglishKeys": [ + "Accumulated Flank Wear Width", + "A.F.Wear.Width" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AccumulatedSpindleEnergyConsumption_kWh", + "baseProperty": "AccumulatedSpindleEnergyConsumption_kWh", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Accumulated Spindle Energy Consumption", + "englishShortName": "Accumulated Spindle Energy Consumption", + "unit": "kWh", + "unitDisplay": "kWh", + "tailUnit": " (kWh)", + "dataFormatString": "G6", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Accumulated Spindle Energy Consumption" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "ActualDateTime", + "baseProperty": "ActualDateTime", + "component": null, + "family": "nonQuantity", + "isQuantity": false, + "clrType": "DateTime?", + "englishName": "Actual DateTime", + "englishShortName": "Act.DT", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": "G", + "category": "Custom", + "legacyEnglishKeys": [ + "Actual DateTime", + "Act.DT" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "ActualTimecode", + "baseProperty": "ActualTimecode", + "component": null, + "family": "nonQuantity", + "isQuantity": false, + "clrType": "TimeSpan?", + "englishName": "Actual Time", + "englishShortName": "Act.Time", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": "G", + "category": "Custom", + "legacyEnglishKeys": [ + "Actual Time", + "Act.Time" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgAbsMomentAboutSensorVec3d_Nm.X", + "baseProperty": "AvgAbsMomentAboutSensorVec3d_Nm", + "component": "X", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Avg Abs Moment To Tool About Sensor.X", + "englishShortName": "Avg-Abs-M-ToTool-Sensor-SR.X", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Abs Moment To Tool About Sensor.X", + "Avg-Abs-M-ToTool-Sensor-SR.X" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgAbsMomentAboutSensorVec3d_Nm.Y", + "baseProperty": "AvgAbsMomentAboutSensorVec3d_Nm", + "component": "Y", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Avg Abs Moment To Tool About Sensor.Y", + "englishShortName": "Avg-Abs-M-ToTool-Sensor-SR.Y", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Abs Moment To Tool About Sensor.Y", + "Avg-Abs-M-ToTool-Sensor-SR.Y" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgAbsMomentAboutSensorVec3d_Nm.Z", + "baseProperty": "AvgAbsMomentAboutSensorVec3d_Nm", + "component": "Z", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Avg Abs Moment To Tool About Sensor.Z", + "englishShortName": "Avg-Abs-M-ToTool-Sensor-SR.Z", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Abs Moment To Tool About Sensor.Z", + "Avg-Abs-M-ToTool-Sensor-SR.Z" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm", + "baseProperty": "AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Avg Abs Moment X To Tool About Sensor On Spindle Rotation Coordinate", + "englishShortName": "AvgAbsMx-ToTool-Sensor-SR", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Abs Moment X To Tool About Sensor On Spindle Rotation Coordinate", + "AvgAbsMx-ToTool-Sensor-SR" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm", + "baseProperty": "AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Avg Abs Moment X To Tool About Tool Tip On Spindle Rotation Coordinate", + "englishShortName": "AvgAbsMx-ToTool-Tip-SR", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Abs Moment X To Tool About Tool Tip On Spindle Rotation Coordinate", + "AvgAbsMx-ToTool-Tip-SR" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgAbsTorqueByMapping_Nm", + "baseProperty": "AvgAbsTorqueByMapping_Nm", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Avg Abs Torque By Mapping", + "englishShortName": "AvgAbsTorque-Map", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Abs Torque By Mapping", + "AvgAbsTorque-Map" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgAbsTorqueErrorRatioWithMapping", + "baseProperty": "AvgAbsTorqueErrorRatioWithMapping", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Avg Torque Error Ratio by Mapping", + "englishShortName": "Torque-Err-R.", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Torque Error Ratio by Mapping", + "Torque-Err-R." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgAbsTorque_Nm", + "baseProperty": "AvgAbsTorque_Nm", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Avg Abs Torque", + "englishShortName": "AvgAbsTorque", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Abs Torque", + "AvgAbsTorque" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgForceToToolOnToolRunningCoordinate_N.X", + "baseProperty": "AvgForceToToolOnToolRunningCoordinate_N", + "component": "X", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "AvgForceToToolOnToolRunningCoordinate.X", + "englishShortName": "AvgForce-ToTool-TR.X", + "unit": "N", + "unitDisplay": "N", + "tailUnit": " (N)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "AvgForceToToolOnToolRunningCoordinate.X", + "AvgForce-ToTool-TR.X" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgForceToToolOnToolRunningCoordinate_N.Y", + "baseProperty": "AvgForceToToolOnToolRunningCoordinate_N", + "component": "Y", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "AvgForceToToolOnToolRunningCoordinate.Y", + "englishShortName": "AvgForce-ToTool-TR.Y", + "unit": "N", + "unitDisplay": "N", + "tailUnit": " (N)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "AvgForceToToolOnToolRunningCoordinate.Y", + "AvgForce-ToTool-TR.Y" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgForceToToolOnToolRunningCoordinate_N.Z", + "baseProperty": "AvgForceToToolOnToolRunningCoordinate_N", + "component": "Z", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "AvgForceToToolOnToolRunningCoordinate.Z", + "englishShortName": "AvgForce-ToTool-TR.Z", + "unit": "N", + "unitDisplay": "N", + "tailUnit": " (N)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "AvgForceToToolOnToolRunningCoordinate.Z", + "AvgForce-ToTool-TR.Z" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgMomentAboutSensor_Nm", + "baseProperty": "AvgMomentAboutSensor_Nm", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Avg Moment To Tool About Sensor", + "englishShortName": "AvgM-ToTool-Sensor-SR", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Moment To Tool About Sensor", + "AvgM-ToTool-Sensor-SR" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgMomentAboutToolTipOnProgramCoordinate_Nm.X", + "baseProperty": "AvgMomentAboutToolTipOnProgramCoordinate_Nm", + "component": "X", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Avg Moment To Tool About Tool Tip On Workpiece Program Coordinate.X", + "englishShortName": "AvgAbsM-ToTool-Tip-W.X", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Moment To Tool About Tool Tip On Workpiece Program Coordinate.X", + "AvgAbsM-ToTool-Tip-W.X" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgMomentAboutToolTipOnProgramCoordinate_Nm.Y", + "baseProperty": "AvgMomentAboutToolTipOnProgramCoordinate_Nm", + "component": "Y", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Avg Moment To Tool About Tool Tip On Workpiece Program Coordinate.Y", + "englishShortName": "AvgAbsM-ToTool-Tip-W.Y", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Moment To Tool About Tool Tip On Workpiece Program Coordinate.Y", + "AvgAbsM-ToTool-Tip-W.Y" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgMomentAboutToolTipOnProgramCoordinate_Nm.Z", + "baseProperty": "AvgMomentAboutToolTipOnProgramCoordinate_Nm", + "component": "Z", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Avg Moment To Tool About Tool Tip On Workpiece Program Coordinate.Z", + "englishShortName": "AvgAbsM-ToTool-Tip-W.Z", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Moment To Tool About Tool Tip On Workpiece Program Coordinate.Z", + "AvgAbsM-ToTool-Tip-W.Z" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgMomentAboutToolTipOnToolRunningCoordinate_Nm.X", + "baseProperty": "AvgMomentAboutToolTipOnToolRunningCoordinate_Nm", + "component": "X", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Avg Moment To Tool About Tool Tip On Tool Running Coordinate.X", + "englishShortName": "AvgAbsM-ToTool-Tip-TR.X", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Moment To Tool About Tool Tip On Tool Running Coordinate.X", + "AvgAbsM-ToTool-Tip-TR.X" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgMomentAboutToolTipOnToolRunningCoordinate_Nm.Y", + "baseProperty": "AvgMomentAboutToolTipOnToolRunningCoordinate_Nm", + "component": "Y", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Avg Moment To Tool About Tool Tip On Tool Running Coordinate.Y", + "englishShortName": "AvgAbsM-ToTool-Tip-TR.Y", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Moment To Tool About Tool Tip On Tool Running Coordinate.Y", + "AvgAbsM-ToTool-Tip-TR.Y" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgMomentAboutToolTipOnToolRunningCoordinate_Nm.Z", + "baseProperty": "AvgMomentAboutToolTipOnToolRunningCoordinate_Nm", + "component": "Z", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Avg Moment To Tool About Tool Tip On Tool Running Coordinate.Z", + "englishShortName": "AvgAbsM-ToTool-Tip-TR.Z", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Moment To Tool About Tool Tip On Tool Running Coordinate.Z", + "AvgAbsM-ToTool-Tip-TR.Z" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgMomentAboutToolTip_Nm", + "baseProperty": "AvgMomentAboutToolTip_Nm", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Avg Moment To Tool About ToolTip", + "englishShortName": "AvgM-ToTool-Tip-SR", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Moment To Tool About ToolTip", + "AvgM-ToTool-Tip-SR" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgMomentXyAboutObservationPoint_Nm", + "baseProperty": "AvgMomentXyAboutObservationPoint_Nm", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Avg Moment XY To Tool About Sensor", + "englishShortName": "AvgM-ToTool-Sensor.XY", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Moment XY To Tool About Sensor", + "AvgM-ToTool-Sensor.XY" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgMomentXyByMapping_Nm", + "baseProperty": "AvgMomentXyByMapping_Nm", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Avg Moment XY By Mapping", + "englishShortName": "AvgM-Map.XY", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Moment XY By Mapping", + "AvgM-Map.XY" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "AvgMomentXyErrorRatioWithMapping", + "baseProperty": "AvgMomentXyErrorRatioWithMapping", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Avg Moment XY Error Ratio by Mapping", + "englishShortName": "M-XY-Err-R.", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Avg Moment XY Error Ratio by Mapping", + "M-XY-Err-R." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "BeginSpindleAngle_deg", + "baseProperty": "BeginSpindleAngle_deg", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Beginning Spindle Angle Shift", + "englishShortName": "Spd. Ang. Shift", + "unit": "deg", + "unitDisplay": "deg", + "tailUnit": " (deg)", + "dataFormatString": "F2", + "category": "Tool / Feedrate / Spindle Speed", + "legacyEnglishKeys": [ + "Beginning Spindle Angle Shift", + "Spd. Ang. Shift" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "ChipMass_mg", + "baseProperty": "ChipMass_mg", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Chip Mass", + "englishShortName": "Chip Mass", + "unit": "mg", + "unitDisplay": "mg", + "tailUnit": " (mg)", + "dataFormatString": "G4", + "category": "Cutting Geometry / Chip / Bias / Roughness", + "legacyEnglishKeys": [ + "Chip Mass" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "ChipTemperature_C", + "baseProperty": "ChipTemperature_C", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Chip Temperature", + "englishShortName": "Chip T.", + "unit": "C", + "unitDisplay": "\u003Csup\u003Eo\u003C/sup\u003EC", + "tailUnit": " (\u003Csup\u003Eo\u003C/sup\u003EC)", + "dataFormatString": "G4", + "category": "Temperature / Wear", + "legacyEnglishKeys": [ + "Chip Temperature", + "Chip T." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "ChipThickness_mm", + "baseProperty": "ChipThickness_mm", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Chip Thickness", + "englishShortName": "Chip Thickness", + "unit": "mm", + "unitDisplay": "mm", + "tailUnit": " (mm)", + "dataFormatString": "G4", + "category": "Cutting Geometry / Chip / Bias / Roughness", + "legacyEnglishKeys": [ + "Chip Thickness" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "ChipVolume_mm3", + "baseProperty": "ChipVolume_mm3", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Chip Volume", + "englishShortName": "Chip Volume", + "unit": "mm3", + "unitDisplay": "mm\u003Csup\u003E3\u003C/sup\u003E", + "tailUnit": " (mm\u003Csup\u003E3\u003C/sup\u003E)", + "dataFormatString": "G4", + "category": "Cutting Geometry / Chip / Bias / Roughness", + "legacyEnglishKeys": [ + "Chip Volume" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "Cl.I", + "baseProperty": "Cl", + "component": "I", + "family": "dvec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Cutter Location.I", + "englishShortName": "CL.I", + "unit": "mm", + "unitDisplay": "mm", + "tailUnit": " (mm)", + "dataFormatString": "F5", + "category": "Coordinate / Move", + "legacyEnglishKeys": [ + "Cutter Location.I", + "CL.I" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "Cl.J", + "baseProperty": "Cl", + "component": "J", + "family": "dvec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Cutter Location.J", + "englishShortName": "CL.J", + "unit": "mm", + "unitDisplay": "mm", + "tailUnit": " (mm)", + "dataFormatString": "F5", + "category": "Coordinate / Move", + "legacyEnglishKeys": [ + "Cutter Location.J", + "CL.J" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "Cl.K", + "baseProperty": "Cl", + "component": "K", + "family": "dvec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Cutter Location.K", + "englishShortName": "CL.K", + "unit": "mm", + "unitDisplay": "mm", + "tailUnit": " (mm)", + "dataFormatString": "F5", + "category": "Coordinate / Move", + "legacyEnglishKeys": [ + "Cutter Location.K", + "CL.K" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "Cl.X", + "baseProperty": "Cl", + "component": "X", + "family": "dvec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Cutter Location.X", + "englishShortName": "CL.X", + "unit": "mm", + "unitDisplay": "mm", + "tailUnit": " (mm)", + "dataFormatString": "F5", + "category": "Coordinate / Move", + "legacyEnglishKeys": [ + "Cutter Location.X", + "CL.X" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "Cl.Y", + "baseProperty": "Cl", + "component": "Y", + "family": "dvec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Cutter Location.Y", + "englishShortName": "CL.Y", + "unit": "mm", + "unitDisplay": "mm", + "tailUnit": " (mm)", + "dataFormatString": "F5", + "category": "Coordinate / Move", + "legacyEnglishKeys": [ + "Cutter Location.Y", + "CL.Y" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "Cl.Z", + "baseProperty": "Cl", + "component": "Z", + "family": "dvec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Cutter Location.Z", + "englishShortName": "CL.Z", + "unit": "mm", + "unitDisplay": "mm", + "tailUnit": " (mm)", + "dataFormatString": "F5", + "category": "Coordinate / Move", + "legacyEnglishKeys": [ + "Cutter Location.Z", + "CL.Z" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "CollisionText", + "baseProperty": "CollisionText", + "component": null, + "family": "nonQuantity", + "isQuantity": false, + "clrType": "string", + "englishName": "CollisionText", + "englishShortName": "CollisionText", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": null, + "category": "Custom", + "legacyEnglishKeys": [ + "CollisionText" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "ContinueSpindlePowerRatio", + "baseProperty": "ContinueSpindlePowerRatio", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Continue Spindle Power Ratio", + "englishShortName": "Cont.Spd.Pow.R.", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Continue Spindle Power Ratio", + "Cont.Spd.Pow.R." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "ContinueSpindleTorqueRatio", + "baseProperty": "ContinueSpindleTorqueRatio", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Continue Spindle Torque Ratio", + "englishShortName": "Cont.Spd.Torque-R.", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Continue Spindle Torque Ratio", + "Cont.Spd.Torque-R." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "CutterBodyTemperature_C", + "baseProperty": "CutterBodyTemperature_C", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Cutter Body Temperature", + "englishShortName": "Ct. Body T.", + "unit": "C", + "unitDisplay": "\u003Csup\u003Eo\u003C/sup\u003EC", + "tailUnit": " (\u003Csup\u003Eo\u003C/sup\u003EC)", + "dataFormatString": "G4", + "category": "Temperature / Wear", + "legacyEnglishKeys": [ + "Cutter Body Temperature", + "Ct. Body T." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "CutterDermisTemperature_C", + "baseProperty": "CutterDermisTemperature_C", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Cutter Dermis Temperature", + "englishShortName": "Ct. Dermis T.", + "unit": "C", + "unitDisplay": "\u003Csup\u003Eo\u003C/sup\u003EC", + "tailUnit": " (\u003Csup\u003Eo\u003C/sup\u003EC)", + "dataFormatString": "G4", + "category": "Temperature / Wear", + "legacyEnglishKeys": [ + "Cutter Dermis Temperature", + "Ct. Dermis T." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "CuttingDepth_mm", + "baseProperty": "CuttingDepth_mm", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Cutting Depth", + "englishShortName": "ap", + "unit": "mm", + "unitDisplay": "mm", + "tailUnit": " (mm)", + "dataFormatString": "G4", + "category": "Cutting Geometry / Chip / Bias / Roughness", + "legacyEnglishKeys": [ + "Cutting Depth", + "ap" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "CuttingSpeed_mmds", + "baseProperty": "CuttingSpeed_mmds", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Cutting Speed", + "englishShortName": "Vc", + "unit": "mmds", + "unitDisplay": "mm/s", + "tailUnit": " (mm/s)", + "dataFormatString": "G5", + "category": "Tool / Feedrate / Spindle Speed", + "legacyEnglishKeys": [ + "Cutting Speed", + "Vc" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "CuttingWidth_mm", + "baseProperty": "CuttingWidth_mm", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Cutting Width", + "englishShortName": "ae", + "unit": "mm", + "unitDisplay": "mm", + "tailUnit": " (mm)", + "dataFormatString": "G4", + "category": "Cutting Geometry / Chip / Bias / Roughness", + "legacyEnglishKeys": [ + "Cutting Width", + "ae" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "DeltaTipDeflectionOnToolRunningCoordinate_um.X", + "baseProperty": "DeltaTipDeflectionOnToolRunningCoordinate_um", + "component": "X", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Delta Tip Deflection On Tool Running Coordinate.X", + "englishShortName": "Dlt.Df.-Tip-TR.X", + "unit": "um", + "unitDisplay": "um", + "tailUnit": " (um)", + "dataFormatString": "G4", + "category": "Cutting Geometry / Chip / Bias / Roughness", + "legacyEnglishKeys": [ + "Delta Tip Deflection On Tool Running Coordinate.X", + "Dlt.Df.-Tip-TR.X" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "DeltaTipDeflectionOnToolRunningCoordinate_um.Y", + "baseProperty": "DeltaTipDeflectionOnToolRunningCoordinate_um", + "component": "Y", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Delta Tip Deflection On Tool Running Coordinate.Y", + "englishShortName": "Dlt.Df.-Tip-TR.Y", + "unit": "um", + "unitDisplay": "um", + "tailUnit": " (um)", + "dataFormatString": "G4", + "category": "Cutting Geometry / Chip / Bias / Roughness", + "legacyEnglishKeys": [ + "Delta Tip Deflection On Tool Running Coordinate.Y", + "Dlt.Df.-Tip-TR.Y" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "DeltaTipDeflectionOnToolRunningCoordinate_um.Z", + "baseProperty": "DeltaTipDeflectionOnToolRunningCoordinate_um", + "component": "Z", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Delta Tip Deflection On Tool Running Coordinate.Z", + "englishShortName": "Dlt.Df.-Tip-TR.Z", + "unit": "um", + "unitDisplay": "um", + "tailUnit": " (um)", + "dataFormatString": "G4", + "category": "Cutting Geometry / Chip / Bias / Roughness", + "legacyEnglishKeys": [ + "Delta Tip Deflection On Tool Running Coordinate.Z", + "Dlt.Df.-Tip-TR.Z" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "EndTimecode", + "baseProperty": "EndTimecode", + "component": null, + "family": "nonQuantity", + "isQuantity": false, + "clrType": "TimeSpan", + "englishName": "Time", + "englishShortName": "Time", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": "G", + "category": "File / Command / Flag / Time / System", + "legacyEnglishKeys": [ + "Time" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "FeedPerCycle_mm", + "baseProperty": "FeedPerCycle_mm", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Feed per Cycle", + "englishShortName": "frc", + "unit": "mm", + "unitDisplay": "mm", + "tailUnit": " (mm)", + "dataFormatString": "G5", + "category": "Tool / Feedrate / Spindle Speed", + "legacyEnglishKeys": [ + "Feed per Cycle", + "frc" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "FeedPerTooth_mm", + "baseProperty": "FeedPerTooth_mm", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Feed per Tooth", + "englishShortName": "frt", + "unit": "mm", + "unitDisplay": "mm", + "tailUnit": " (mm)", + "dataFormatString": "G5", + "category": "Tool / Feedrate / Spindle Speed", + "legacyEnglishKeys": [ + "Feed per Tooth", + "frt" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "Feedrate_mmdmin", + "baseProperty": "Feedrate_mmdmin", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Feedrate", + "englishShortName": "F", + "unit": "mmdmin", + "unitDisplay": "mm/min", + "tailUnit": " (mm/min)", + "dataFormatString": "G5", + "category": "Tool / Feedrate / Spindle Speed", + "legacyEnglishKeys": [ + "Feedrate", + "F" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "FileNo", + "baseProperty": "FileNo", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "int?", + "englishName": "FileNo", + "englishShortName": "FileNo", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": null, + "category": "File / Command / Flag / Time / System", + "legacyEnglishKeys": [ + "FileNo" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "FilePath", + "baseProperty": "FilePath", + "component": null, + "family": "nonQuantity", + "isQuantity": false, + "clrType": "string", + "englishName": "FilePath", + "englishShortName": "FilePath", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": null, + "category": "File / Command / Flag / Time / System", + "legacyEnglishKeys": [ + "FilePath" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "FlagsText", + "baseProperty": "FlagsText", + "component": null, + "family": "nonQuantity", + "isQuantity": false, + "clrType": "string", + "englishName": "FlagsText", + "englishShortName": "FlagsText", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": null, + "category": "File / Command / Flag / Time / System", + "legacyEnglishKeys": [ + "FlagsText" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "InstantCraterWear_um", + "baseProperty": "InstantCraterWear_um", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Instant Crater Wear", + "englishShortName": "I.C.Wear", + "unit": "um", + "unitDisplay": "um", + "tailUnit": " (um)", + "dataFormatString": "G4", + "category": "Temperature / Wear", + "legacyEnglishKeys": [ + "Instant Crater Wear", + "I.C.Wear" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "IsActualTimeInterpolated", + "baseProperty": "IsActualTimeInterpolated", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "bool?", + "englishName": "Actual Interpolated", + "englishShortName": "Act.Int", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": "G", + "category": "Custom", + "legacyEnglishKeys": [ + "Actual Interpolated", + "Act.Int" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "IsReliefFaceCollided", + "baseProperty": "IsReliefFaceCollided", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "bool?", + "englishName": "Is Relief Face Collided", + "englishShortName": "Is-Rlf.C.", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": "G", + "category": "Custom", + "legacyEnglishKeys": [ + "Is Relief Face Collided", + "Is-Rlf.C." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "IsTouched", + "baseProperty": "IsTouched", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "bool", + "englishName": "Is Touched", + "englishShortName": "Is Touched", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": "G", + "category": "Cutting Geometry / Chip / Bias / Roughness", + "legacyEnglishKeys": [ + "Is Touched" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "LineNo", + "baseProperty": "LineNo", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "int?", + "englishName": "LineNo", + "englishShortName": "LineNo", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": null, + "category": "File / Command / Flag / Time / System", + "legacyEnglishKeys": [ + "LineNo" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "LineText", + "baseProperty": "LineText", + "component": null, + "family": "nonQuantity", + "isQuantity": false, + "clrType": "string", + "englishName": "LineText", + "englishShortName": "LineText", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": null, + "category": "File / Command / Flag / Time / System", + "legacyEnglishKeys": [ + "LineText" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "MaxAbsForce_N", + "baseProperty": "MaxAbsForce_N", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Max Absolute Force", + "englishShortName": "Max Abs F.", + "unit": "N", + "unitDisplay": "N", + "tailUnit": " (N)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Max Absolute Force", + "Max Abs F." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "MaxBottomEdgeDeflectionOnToolRunningCoordinate_um.X", + "baseProperty": "MaxBottomEdgeDeflectionOnToolRunningCoordinate_um", + "component": "X", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Max Bottom Edge Deflection On Tool Running Coordinate.X", + "englishShortName": "Df.-Bt.Edge-TR.X", + "unit": "um", + "unitDisplay": "um", + "tailUnit": " (um)", + "dataFormatString": "G4", + "category": "Custom", + "legacyEnglishKeys": [ + "Max Bottom Edge Deflection On Tool Running Coordinate.X", + "Df.-Bt.Edge-TR.X" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "MaxBottomEdgeDeflectionOnToolRunningCoordinate_um.Y", + "baseProperty": "MaxBottomEdgeDeflectionOnToolRunningCoordinate_um", + "component": "Y", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Max Bottom Edge Deflection On Tool Running Coordinate.Y", + "englishShortName": "Df.-Bt.Edge-TR.Y", + "unit": "um", + "unitDisplay": "um", + "tailUnit": " (um)", + "dataFormatString": "G4", + "category": "Custom", + "legacyEnglishKeys": [ + "Max Bottom Edge Deflection On Tool Running Coordinate.Y", + "Df.-Bt.Edge-TR.Y" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "MaxBottomEdgeDeflectionOnToolRunningCoordinate_um.Z", + "baseProperty": "MaxBottomEdgeDeflectionOnToolRunningCoordinate_um", + "component": "Z", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Max Bottom Edge Deflection On Tool Running Coordinate.Z", + "englishShortName": "Df.-Bt.Edge-TR.Z", + "unit": "um", + "unitDisplay": "um", + "tailUnit": " (um)", + "dataFormatString": "G4", + "category": "Custom", + "legacyEnglishKeys": [ + "Max Bottom Edge Deflection On Tool Running Coordinate.Z", + "Df.-Bt.Edge-TR.Z" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "MaxMomentAboutSensor_Nm", + "baseProperty": "MaxMomentAboutSensor_Nm", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Max Moment To Tool About Sensor", + "englishShortName": "MaxM-ToTool-Sensor-SR", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Max Moment To Tool About Sensor", + "MaxM-ToTool-Sensor-SR" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "MaxMomentAboutToolTip_Nm", + "baseProperty": "MaxMomentAboutToolTip_Nm", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Max Moment To Tool About ToolTip", + "englishShortName": "MaxM-ToTool-Tip-SR", + "unit": "Nm", + "unitDisplay": "Nm", + "tailUnit": " (Nm)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Max Moment To Tool About ToolTip", + "MaxM-ToTool-Tip-SR" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "MaxSpindlePowerRatio", + "baseProperty": "MaxSpindlePowerRatio", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Max Spindle Power Ratio", + "englishShortName": "Max.Spd.Pow.R.", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Max Spindle Power Ratio", + "Max.Spd.Pow.R." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "MaxSpindleTorqueRatio", + "baseProperty": "MaxSpindleTorqueRatio", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Max Spindle Torque Ratio", + "englishShortName": "Max.Spd.Torque-R.", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Max Spindle Torque Ratio", + "Max.Spd.Torque-R." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "MaxTipDeflectionOnToolRunningCoordinate_um.X", + "baseProperty": "MaxTipDeflectionOnToolRunningCoordinate_um", + "component": "X", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Max Tip Deflection On Tool Running Coordinate.X", + "englishShortName": "Max.Df.-Tip-TR.X", + "unit": "um", + "unitDisplay": "um", + "tailUnit": " (um)", + "dataFormatString": "G4", + "category": "Cutting Geometry / Chip / Bias / Roughness", + "legacyEnglishKeys": [ + "Max Tip Deflection On Tool Running Coordinate.X", + "Max.Df.-Tip-TR.X" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "MaxTipDeflectionOnToolRunningCoordinate_um.Y", + "baseProperty": "MaxTipDeflectionOnToolRunningCoordinate_um", + "component": "Y", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Max Tip Deflection On Tool Running Coordinate.Y", + "englishShortName": "Max.Df.-Tip-TR.Y", + "unit": "um", + "unitDisplay": "um", + "tailUnit": " (um)", + "dataFormatString": "G4", + "category": "Cutting Geometry / Chip / Bias / Roughness", + "legacyEnglishKeys": [ + "Max Tip Deflection On Tool Running Coordinate.Y", + "Max.Df.-Tip-TR.Y" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "MaxTipDeflectionOnToolRunningCoordinate_um.Z", + "baseProperty": "MaxTipDeflectionOnToolRunningCoordinate_um", + "component": "Z", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Max Tip Deflection On Tool Running Coordinate.Z", + "englishShortName": "Max.Df.-Tip-TR.Z", + "unit": "um", + "unitDisplay": "um", + "tailUnit": " (um)", + "dataFormatString": "G4", + "category": "Cutting Geometry / Chip / Bias / Roughness", + "legacyEnglishKeys": [ + "Max Tip Deflection On Tool Running Coordinate.Z", + "Max.Df.-Tip-TR.Z" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "MoveOnProgramCoordinate.X", + "baseProperty": "MoveOnProgramCoordinate", + "component": "X", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Move On Workpiece Program Coordinate.X", + "englishShortName": "Move-W.X", + "unit": "mm", + "unitDisplay": "mm", + "tailUnit": " (mm)", + "dataFormatString": "F4", + "category": "Coordinate / Move", + "legacyEnglishKeys": [ + "Move On Workpiece Program Coordinate.X", + "Move-W.X" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "MoveOnProgramCoordinate.Y", + "baseProperty": "MoveOnProgramCoordinate", + "component": "Y", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Move On Workpiece Program Coordinate.Y", + "englishShortName": "Move-W.Y", + "unit": "mm", + "unitDisplay": "mm", + "tailUnit": " (mm)", + "dataFormatString": "F4", + "category": "Coordinate / Move", + "legacyEnglishKeys": [ + "Move On Workpiece Program Coordinate.Y", + "Move-W.Y" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "MoveOnProgramCoordinate.Z", + "baseProperty": "MoveOnProgramCoordinate", + "component": "Z", + "family": "vec3", + "isQuantity": true, + "clrType": "double", + "englishName": "Move On Workpiece Program Coordinate.Z", + "englishShortName": "Move-W.Z", + "unit": "mm", + "unitDisplay": "mm", + "tailUnit": " (mm)", + "dataFormatString": "F4", + "category": "Coordinate / Move", + "legacyEnglishKeys": [ + "Move On Workpiece Program Coordinate.Z", + "Move-W.Z" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "MovingLength_mm", + "baseProperty": "MovingLength_mm", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Move Length", + "englishShortName": "Move Len.", + "unit": "mm", + "unitDisplay": "mm", + "tailUnit": " (mm)", + "dataFormatString": "F4", + "category": "Coordinate / Move", + "legacyEnglishKeys": [ + "Move Length", + "Move Len." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "Mrr_mm3ds", + "baseProperty": "Mrr_mm3ds", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "MRR", + "englishShortName": "MRR", + "unit": "mm3ds", + "unitDisplay": "mm\u003Csup\u003E3\u003C/sup\u003E/s", + "tailUnit": " (mm\u003Csup\u003E3\u003C/sup\u003E/s)", + "dataFormatString": "G4", + "category": "Cutting Geometry / Chip / Bias / Roughness", + "legacyEnglishKeys": [ + "MRR" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "ProgramSideCusp_um", + "baseProperty": "ProgramSideCusp_um", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Program Side Cusp", + "englishShortName": "Program Side Cusp", + "unit": "um", + "unitDisplay": "um", + "tailUnit": " (um)", + "dataFormatString": "G4", + "category": "Cutting Geometry / Chip / Bias / Roughness", + "legacyEnglishKeys": [ + "Program Side Cusp" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "ReCutDepth_um", + "baseProperty": "ReCutDepth_um", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Re-Cut Depth on Bottom Edge on Tool Running Coordinate", + "englishShortName": "Re-Cut Depth", + "unit": "um", + "unitDisplay": "um", + "tailUnit": " (um)", + "dataFormatString": "G4", + "category": "Cutting Geometry / Chip / Bias / Roughness", + "legacyEnglishKeys": [ + "Re-Cut Depth on Bottom Edge on Tool Running Coordinate", + "Re-Cut Depth" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "ReliefFaceCollidingVelocity_mmds", + "baseProperty": "ReliefFaceCollidingVelocity_mmds", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Relief Face Colliding Speed", + "englishShortName": "Rlf.C.Speed", + "unit": "mmds", + "unitDisplay": "mm/s", + "tailUnit": " (mm/s)", + "dataFormatString": "G4", + "category": "Custom", + "legacyEnglishKeys": [ + "Relief Face Colliding Speed", + "Rlf.C.Speed" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "SpindleCyclePeriod_s", + "baseProperty": "SpindleCyclePeriod_s", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Spindle Cycle Period", + "englishShortName": "Spindle Cycle Period", + "unit": "sec", + "unitDisplay": "sec", + "tailUnit": " (sec)", + "dataFormatString": "G4", + "category": "Tool / Feedrate / Spindle Speed", + "legacyEnglishKeys": [ + "Spindle Cycle Period" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "SpindleInputPower_W", + "baseProperty": "SpindleInputPower_W", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Spindle Input Power", + "englishShortName": "Spindle Input Power", + "unit": "watt", + "unitDisplay": "watt", + "tailUnit": " (watt)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Spindle Input Power" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "SpindleOutputPower_W", + "baseProperty": "SpindleOutputPower_W", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Spindle Output Power", + "englishShortName": "Spindle Output Power", + "unit": "watt", + "unitDisplay": "watt", + "tailUnit": " (watt)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Spindle Output Power" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "SpindleSpeed_rpm", + "baseProperty": "SpindleSpeed_rpm", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Spindle Speed", + "englishShortName": "S", + "unit": "rpm", + "unitDisplay": "rpm", + "tailUnit": " (rpm)", + "dataFormatString": "G5", + "category": "Tool / Feedrate / Spindle Speed", + "legacyEnglishKeys": [ + "Spindle Speed", + "S" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "SpindleTemperature_C", + "baseProperty": "SpindleTemperature_C", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Spindle Temperature", + "englishShortName": "Spd.Temp.", + "unit": "C", + "unitDisplay": "\u003Csup\u003Eo\u003C/sup\u003EC", + "tailUnit": " (\u003Csup\u003Eo\u003C/sup\u003EC)", + "dataFormatString": "G2", + "category": "Temperature / Wear", + "legacyEnglishKeys": [ + "Spindle Temperature", + "Spd.Temp." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "SpindleWorkingTemperatureRatio", + "baseProperty": "SpindleWorkingTemperatureRatio", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Spindle Working Temperature Ratio", + "englishShortName": "Spd.Temp.R.", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": "G2", + "category": "Temperature / Wear", + "legacyEnglishKeys": [ + "Spindle Working Temperature Ratio", + "Spd.Temp.R." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "StepDuration", + "baseProperty": "StepDuration", + "component": null, + "family": "nonQuantity", + "isQuantity": false, + "clrType": "TimeSpan", + "englishName": "Step Duration", + "englishShortName": "duration", + "unit": "sec", + "unitDisplay": "sec", + "tailUnit": " (sec)", + "dataFormatString": "ss\\.ffffff", + "category": "File / Command / Flag / Time / System", + "legacyEnglishKeys": [ + "Step Duration", + "duration" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "StepIndex", + "baseProperty": "StepIndex", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "int", + "englishName": "Step Index", + "englishShortName": "S.I.", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": "G", + "category": "File / Command / Flag / Time / System", + "legacyEnglishKeys": [ + "Step Index", + "S.I." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "ThermalStress_MPa", + "baseProperty": "ThermalStress_MPa", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Thermal Stress", + "englishShortName": "Th. S.", + "unit": "MPa", + "unitDisplay": "MPa", + "tailUnit": " (MPa)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Thermal Stress", + "Th. S." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "ThermalYieldRatio", + "baseProperty": "ThermalYieldRatio", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Thermal Yield Ratio", + "englishShortName": "Th. Yield R.", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": "G4", + "category": "Temperature / Wear", + "legacyEnglishKeys": [ + "Thermal Yield Ratio", + "Th. Yield R." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "ToolId", + "baseProperty": "ToolId", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "int", + "englishName": "Tool ID", + "englishShortName": "T", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": "G", + "category": "Tool / Feedrate / Spindle Speed", + "legacyEnglishKeys": [ + "Tool ID", + "T" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "ToothArcDuration_s", + "baseProperty": "ToothArcDuration_s", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Tooth Arc Duration", + "englishShortName": "Tooth Arc Duration", + "unit": "sec", + "unitDisplay": "sec", + "tailUnit": " (sec)", + "dataFormatString": "G4", + "category": "Tool / Feedrate / Spindle Speed", + "legacyEnglishKeys": [ + "Tooth Arc Duration" + ], + "legacyKeyRoles": [ + "name" + ] + }, + { + "key": "WorkpieceDermisTemperature_C", + "baseProperty": "WorkpieceDermisTemperature_C", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Workpiece Dermis Temperature", + "englishShortName": "W. Dermis T.", + "unit": "C", + "unitDisplay": "\u003Csup\u003Eo\u003C/sup\u003EC", + "tailUnit": " (\u003Csup\u003Eo\u003C/sup\u003EC)", + "dataFormatString": "G4", + "category": "Temperature / Wear", + "legacyEnglishKeys": [ + "Workpiece Dermis Temperature", + "W. Dermis T." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "WorkpiecePlasticDepth_um", + "baseProperty": "WorkpiecePlasticDepth_um", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double", + "englishName": "Workpiece Plastic Deformation Depth", + "englishShortName": "W.P.Depth", + "unit": "um", + "unitDisplay": "um", + "tailUnit": " (um)", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Workpiece Plastic Deformation Depth", + "W.P.Depth" + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + }, + { + "key": "YieldingStressRatio", + "baseProperty": "YieldingStressRatio", + "component": null, + "family": "scalar", + "isQuantity": true, + "clrType": "double?", + "englishName": "Yielding Stress Ratio", + "englishShortName": "Y-Stress-R.", + "unit": "None", + "unitDisplay": null, + "tailUnit": "", + "dataFormatString": "G4", + "category": "Mechanics / Power / Energy", + "legacyEnglishKeys": [ + "Yielding Stress Ratio", + "Y-Stress-R." + ], + "legacyKeyRoles": [ + "name", + "shortName" + ] + } + ] +} \ No newline at end of file diff --git a/App/StepPresentCatalog/catalog.zh-Hans.json b/App/StepPresentCatalog/catalog.zh-Hans.json new file mode 100644 index 00000000..eb7ad834 --- /dev/null +++ b/App/StepPresentCatalog/catalog.zh-Hans.json @@ -0,0 +1,339 @@ +{ + "schemaVersion": 1, + "language": "zh-Hans", + "sourceEngineVersion": "3.1.186.0", + "labels": { + "AccumulatedCraterWear_um": { + "name": "累计坑磨损", + "shortName": "累坑磨" + }, + "AccumulatedFlankWearDepth_um": { + "name": "累计刃边磨损深度", + "shortName": "累后磨深" + }, + "AccumulatedFlankWearWidth_um": { + "name": "累计刃边磨损宽度", + "shortName": "累后磨宽" + }, + "AccumulatedSpindleEnergyConsumption_kWh": { + "name": "累计主轴能量消耗", + "shortName": "累计主轴能量消耗" + }, + "AvgAbsMomentAboutSensorVec3d_Nm.X": { + "name": "传感器处平均绝对力矩.X", + "shortName": "平均绝对矩-感.X" + }, + "AvgAbsMomentAboutSensorVec3d_Nm.Y": { + "name": "传感器处平均绝对力矩.Y", + "shortName": "平均绝对矩-感.Y" + }, + "AvgAbsMomentAboutSensorVec3d_Nm.Z": { + "name": "传感器处平均绝对力矩.Z", + "shortName": "平均绝对矩-感.Z" + }, + "AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm": { + "name": "主轴旋转坐标系上传感器处X方向平均绝对力矩", + "shortName": "平均绝对矩X-感" + }, + "AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm": { + "name": "主轴旋转坐标系上刀尖处X方向平均绝对力矩", + "shortName": "平均绝对矩X-尖" + }, + "AvgAbsTorqueByMapping_Nm": { + "name": "映射的平均绝对扭矩", + "shortName": "映射扭矩" + }, + "AvgAbsTorqueErrorRatioWithMapping": { + "name": "映射的平均扭矩误差比率", + "shortName": "扭矩误差比" + }, + "AvgAbsTorque_Nm": { + "name": "平均绝对扭矩", + "shortName": "平均扭矩" + }, + "AvgForceToToolOnToolRunningCoordinate_N.X": { + "name": "工具运行坐标系上的平均力.X", + "shortName": "平均力-TR.X" + }, + "AvgForceToToolOnToolRunningCoordinate_N.Y": { + "name": "工具运行坐标系上的平均力.Y", + "shortName": "平均力-TR.Y" + }, + "AvgForceToToolOnToolRunningCoordinate_N.Z": { + "name": "工具运行坐标系上的平均力.Z", + "shortName": "平均力-TR.Z" + }, + "AvgMomentAboutSensor_Nm": { + "name": "传感器处平均力矩", + "shortName": "平均矩-感" + }, + "AvgMomentAboutToolTipOnProgramCoordinate_Nm.X": { + "name": "工件程序坐标系上刀尖处平均力矩.X", + "shortName": "平均矩-尖-W.X" + }, + "AvgMomentAboutToolTipOnProgramCoordinate_Nm.Y": { + "name": "工件程序坐标系上刀尖处平均力矩.Y", + "shortName": "平均矩-尖-W.Y" + }, + "AvgMomentAboutToolTipOnProgramCoordinate_Nm.Z": { + "name": "工件程序坐标系上刀尖处平均力矩.Z", + "shortName": "平均矩-尖-W.Z" + }, + "AvgMomentAboutToolTipOnToolRunningCoordinate_Nm.X": { + "name": "工具运行坐标系上刀尖处平均力矩.X", + "shortName": "平均矩-尖-TR.X" + }, + "AvgMomentAboutToolTipOnToolRunningCoordinate_Nm.Y": { + "name": "工具运行坐标系上刀尖处平均力矩.Y", + "shortName": "平均矩-尖-TR.Y" + }, + "AvgMomentAboutToolTipOnToolRunningCoordinate_Nm.Z": { + "name": "工具运行坐标系上刀尖处平均力矩.Z", + "shortName": "平均矩-尖-TR.Z" + }, + "AvgMomentAboutToolTip_Nm": { + "name": "刀尖处平均力矩", + "shortName": "平均矩-尖" + }, + "AvgMomentXyAboutObservationPoint_Nm": { + "name": "传感器处XY方向平均力矩", + "shortName": "平均矩XY-感" + }, + "AvgMomentXyByMapping_Nm": { + "name": "映射的XY方向平均力矩", + "shortName": "映射矩XY" + }, + "AvgMomentXyErrorRatioWithMapping": { + "name": "映射的XY方向平均力矩误差比率", + "shortName": "矩XY误差比" + }, + "BeginSpindleAngle_deg": { + "name": "起始主轴角度偏移", + "shortName": "角偏移" + }, + "ChipMass_mg": { + "name": "切屑质量", + "shortName": "切屑质量" + }, + "ChipTemperature_C": { + "name": "切屑温度", + "shortName": "切屑温" + }, + "ChipThickness_mm": { + "name": "切屑厚度", + "shortName": "切屑厚度" + }, + "ChipVolume_mm3": { + "name": "切屑体积", + "shortName": "切屑体积" + }, + "Cl.I": { + "name": "刀具位置.I", + "shortName": "刀具路径.I" + }, + "Cl.J": { + "name": "刀具位置.J", + "shortName": "刀具路径.J" + }, + "Cl.K": { + "name": "刀具位置.K", + "shortName": "刀具路径.K" + }, + "Cl.X": { + "name": "刀具位置.X", + "shortName": "刀具路径.X" + }, + "Cl.Y": { + "name": "刀具位置.Y", + "shortName": "刀具路径.Y" + }, + "Cl.Z": { + "name": "刀具位置.Z", + "shortName": "刀具路径.Z" + }, + "ContinueSpindlePowerRatio": { + "name": "持续主轴功率比率", + "shortName": "持续功率比" + }, + "ContinueSpindleTorqueRatio": { + "name": "持续主轴扭矩比率", + "shortName": "持续扭矩比" + }, + "CutterBodyTemperature_C": { + "name": "刀身温度", + "shortName": "刀体温" + }, + "CutterDermisTemperature_C": { + "name": "刃面温度", + "shortName": "刀表温" + }, + "CuttingDepth_mm": { + "name": "切深", + "shortName": "切深" + }, + "CuttingSpeed_mmds": { + "name": "切削速度", + "shortName": "切速" + }, + "CuttingWidth_mm": { + "name": "切宽", + "shortName": "切宽" + }, + "DeltaTipDeflectionOnToolRunningCoordinate_um.X": { + "name": "工具运行坐标系上的刀尖偏差.X", + "shortName": "刀尖偏差-TR.X" + }, + "DeltaTipDeflectionOnToolRunningCoordinate_um.Y": { + "name": "工具运行坐标系上的刀尖偏差.Y", + "shortName": "刀尖偏差-TR.Y" + }, + "DeltaTipDeflectionOnToolRunningCoordinate_um.Z": { + "name": "工具运行坐标系上的刀尖偏差.Z", + "shortName": "刀尖偏差-TR.Z" + }, + "EndTimecode": { + "name": "时间", + "shortName": "时间" + }, + "FeedPerCycle_mm": { + "shortName": "循环进给" + }, + "FeedPerTooth_mm": { + "shortName": "每刃进给" + }, + "Feedrate_mmdmin": { + "name": "进给率" + }, + "FileNo": { + "name": "文件号", + "shortName": "文件号" + }, + "InstantCraterWear_um": { + "name": "瞬时坑磨损", + "shortName": "瞬坑磨" + }, + "IsTouched": { + "name": "是否接触", + "shortName": "是否接触" + }, + "LineNo": { + "name": "行号", + "shortName": "行号" + }, + "MaxAbsForce_N": { + "name": "最大绝对力", + "shortName": "最大力" + }, + "MaxMomentAboutSensor_Nm": { + "name": "传感器处最大力矩", + "shortName": "最大矩-感" + }, + "MaxMomentAboutToolTip_Nm": { + "name": "刀尖处最大力矩", + "shortName": "最大矩-尖" + }, + "MaxSpindlePowerRatio": { + "name": "主轴最大功率比", + "shortName": "最大功率比" + }, + "MaxSpindleTorqueRatio": { + "name": "主轴最大扭矩比", + "shortName": "最大扭矩比" + }, + "MaxTipDeflectionOnToolRunningCoordinate_um.X": { + "name": "工具运行坐标系上的最大刀尖偏差.X", + "shortName": "最大刀尖偏差.X" + }, + "MaxTipDeflectionOnToolRunningCoordinate_um.Y": { + "name": "工具运行坐标系上的最大刀尖偏差.Y", + "shortName": "最大刀尖偏差.Y" + }, + "MaxTipDeflectionOnToolRunningCoordinate_um.Z": { + "name": "工具运行坐标系上的最大刀尖偏差.Z", + "shortName": "最大刀尖偏差.Z" + }, + "MoveOnProgramCoordinate.X": { + "name": "工件程序坐标上的移动.X", + "shortName": "移动-W.X" + }, + "MoveOnProgramCoordinate.Y": { + "name": "工件程序坐标上的移动.Y", + "shortName": "移动-W.Y" + }, + "MoveOnProgramCoordinate.Z": { + "name": "工件程序坐标上的移动.Z", + "shortName": "移动-W.Z" + }, + "MovingLength_mm": { + "name": "移动距离", + "shortName": "移距" + }, + "Mrr_mm3ds": { + "name": "材料移除率", + "shortName": "材料移除率" + }, + "ProgramSideCusp_um": { + "name": "程序侧面残丘", + "shortName": "程序侧面残丘" + }, + "ReCutDepth_um": { + "name": "工具运行坐标系上底边的重切深度", + "shortName": "回切纹深度" + }, + "SpindleCyclePeriod_s": { + "name": "主轴循环周期", + "shortName": "主轴循环周期" + }, + "SpindleInputPower_W": { + "name": "主轴输入功率", + "shortName": "主轴输入功率" + }, + "SpindleOutputPower_W": { + "name": "主轴输出功率", + "shortName": "主轴输出功率" + }, + "SpindleSpeed_rpm": { + "name": "主轴转速", + "shortName": "S" + }, + "SpindleTemperature_C": { + "name": "主轴温度", + "shortName": "主轴温" + }, + "SpindleWorkingTemperatureRatio": { + "name": "主轴工作温度比率", + "shortName": "主轴温比" + }, + "StepDuration": { + "name": "步持续时间" + }, + "StepIndex": { + "name": "步索引", + "shortName": "步索引" + }, + "ThermalStress_MPa": { + "name": "热应力", + "shortName": "热应力" + }, + "ThermalYieldRatio": { + "name": "热屈服比率", + "shortName": "热屈服比" + }, + "ToolId": { + "name": "刀号", + "shortName": "T" + }, + "WorkpieceDermisTemperature_C": { + "name": "工件表面温度", + "shortName": "工表温" + }, + "WorkpiecePlasticDepth_um": { + "name": "工件塑性变形深度", + "shortName": "塑变深度" + }, + "YieldingStressRatio": { + "name": "屈服应力比率", + "shortName": "屈服比" + } + } +} diff --git a/App/StepPresentCatalog/catalog.zh-Hant.json b/App/StepPresentCatalog/catalog.zh-Hant.json new file mode 100644 index 00000000..764ad62a --- /dev/null +++ b/App/StepPresentCatalog/catalog.zh-Hant.json @@ -0,0 +1,343 @@ +{ + "schemaVersion": 1, + "language": "zh-Hant", + "sourceEngineVersion": "3.1.186.0", + "labels": { + "AccumulatedCraterWear_um": { + "name": "累計坑磨損", + "shortName": "累坑磨" + }, + "AccumulatedFlankWearDepth_um": { + "name": "累計刃緣磨耗深度", + "shortName": "累後磨深" + }, + "AccumulatedFlankWearWidth_um": { + "name": "累計刃緣磨耗寬度", + "shortName": "累後磨寬" + }, + "AccumulatedSpindleEnergyConsumption_kWh": { + "name": "累計主軸能量消耗", + "shortName": "累計主軸能量消耗" + }, + "AvgAbsMomentAboutSensorVec3d_Nm.X": { + "name": "感測器處平均絕對力矩.X", + "shortName": "平均絕對矩-感.X" + }, + "AvgAbsMomentAboutSensorVec3d_Nm.Y": { + "name": "感測器處平均絕對力矩.Y", + "shortName": "平均絕對矩-感.Y" + }, + "AvgAbsMomentAboutSensorVec3d_Nm.Z": { + "name": "感測器處平均絕對力矩.Z", + "shortName": "平均絕對矩-感.Z" + }, + "AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm": { + "name": "主軸旋轉座標系上感測器處X方向平均絕對力矩", + "shortName": "平均絕對矩X-感" + }, + "AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm": { + "name": "主軸旋轉座標系上刀尖處X方向平均絕對力矩", + "shortName": "平均絕對矩X-尖" + }, + "AvgAbsTorqueByMapping_Nm": { + "name": "映射的平均絕對扭矩", + "shortName": "映射扭矩" + }, + "AvgAbsTorqueErrorRatioWithMapping": { + "name": "映射的平均扭矩誤差比率", + "shortName": "扭矩誤差比" + }, + "AvgAbsTorque_Nm": { + "name": "平均絕對扭矩", + "shortName": "平均扭矩" + }, + "AvgForceToToolOnToolRunningCoordinate_N.X": { + "name": "工具運行座標系上的平均力.X", + "shortName": "平均力-TR.X" + }, + "AvgForceToToolOnToolRunningCoordinate_N.Y": { + "name": "工具運行座標系上的平均力.Y", + "shortName": "平均力-TR.Y" + }, + "AvgForceToToolOnToolRunningCoordinate_N.Z": { + "name": "工具運行座標系上的平均力.Z", + "shortName": "平均力-TR.Z" + }, + "AvgMomentAboutSensor_Nm": { + "name": "感測器處平均力矩", + "shortName": "平均矩-感" + }, + "AvgMomentAboutToolTipOnProgramCoordinate_Nm.X": { + "name": "工件程式座標系上刀尖處平均力矩.X", + "shortName": "平均矩-尖-W.X" + }, + "AvgMomentAboutToolTipOnProgramCoordinate_Nm.Y": { + "name": "工件程式座標系上刀尖處平均力矩.Y", + "shortName": "平均矩-尖-W.Y" + }, + "AvgMomentAboutToolTipOnProgramCoordinate_Nm.Z": { + "name": "工件程式座標系上刀尖處平均力矩.Z", + "shortName": "平均矩-尖-W.Z" + }, + "AvgMomentAboutToolTipOnToolRunningCoordinate_Nm.X": { + "name": "工具運行座標系上刀尖處平均力矩.X", + "shortName": "平均矩-尖-TR.X" + }, + "AvgMomentAboutToolTipOnToolRunningCoordinate_Nm.Y": { + "name": "工具運行座標系上刀尖處平均力矩.Y", + "shortName": "平均矩-尖-TR.Y" + }, + "AvgMomentAboutToolTipOnToolRunningCoordinate_Nm.Z": { + "name": "工具運行座標系上刀尖處平均力矩.Z", + "shortName": "平均矩-尖-TR.Z" + }, + "AvgMomentAboutToolTip_Nm": { + "name": "刀尖處平均力矩", + "shortName": "平均矩-尖" + }, + "AvgMomentXyAboutObservationPoint_Nm": { + "name": "感測器處XY方向平均力矩", + "shortName": "平均矩XY-感" + }, + "AvgMomentXyByMapping_Nm": { + "name": "映射的XY方向平均力矩", + "shortName": "映射矩XY" + }, + "AvgMomentXyErrorRatioWithMapping": { + "name": "映射的XY方向平均力矩誤差比率", + "shortName": "矩XY誤差比" + }, + "BeginSpindleAngle_deg": { + "name": "起始主軸角度偏移", + "shortName": "角偏移" + }, + "ChipMass_mg": { + "name": "切屑質量", + "shortName": "切屑質量" + }, + "ChipTemperature_C": { + "name": "切屑溫度", + "shortName": "切屑溫" + }, + "ChipThickness_mm": { + "name": "切屑厚度", + "shortName": "切屑厚度" + }, + "ChipVolume_mm3": { + "name": "切屑體積", + "shortName": "切屑體積" + }, + "Cl.I": { + "name": "刀具位置.I", + "shortName": "刀具路徑.I" + }, + "Cl.J": { + "name": "刀具位置.J", + "shortName": "刀具路徑.J" + }, + "Cl.K": { + "name": "刀具位置.K", + "shortName": "刀具路徑.K" + }, + "Cl.X": { + "name": "刀具位置.X", + "shortName": "刀具路徑.X" + }, + "Cl.Y": { + "name": "刀具位置.Y", + "shortName": "刀具路徑.Y" + }, + "Cl.Z": { + "name": "刀具位置.Z", + "shortName": "刀具路徑.Z" + }, + "ContinueSpindlePowerRatio": { + "name": "持續主軸功率比率", + "shortName": "持續功率比" + }, + "ContinueSpindleTorqueRatio": { + "name": "持續主軸扭矩比率", + "shortName": "持續扭矩比" + }, + "CutterBodyTemperature_C": { + "name": "刀身溫度", + "shortName": "刀體溫" + }, + "CutterDermisTemperature_C": { + "name": "刃面溫度", + "shortName": "刀表溫" + }, + "CuttingDepth_mm": { + "name": "切深", + "shortName": "切深" + }, + "CuttingSpeed_mmds": { + "name": "切削速度", + "shortName": "切速" + }, + "CuttingWidth_mm": { + "name": "切寬", + "shortName": "切寬" + }, + "DeltaTipDeflectionOnToolRunningCoordinate_um.X": { + "name": "工具運行座標系上的刀尖偏差.X", + "shortName": "刀尖偏差-TR.X" + }, + "DeltaTipDeflectionOnToolRunningCoordinate_um.Y": { + "name": "工具運行座標系上的刀尖偏差.Y", + "shortName": "刀尖偏差-TR.Y" + }, + "DeltaTipDeflectionOnToolRunningCoordinate_um.Z": { + "name": "工具運行座標系上的刀尖偏差.Z", + "shortName": "刀尖偏差-TR.Z" + }, + "EndTimecode": { + "name": "時間", + "shortName": "時間" + }, + "FeedPerCycle_mm": { + "shortName": "循環進給" + }, + "FeedPerTooth_mm": { + "shortName": "每刃進給" + }, + "Feedrate_mmdmin": { + "name": "進給率" + }, + "FileNo": { + "name": "檔案號", + "shortName": "檔案號" + }, + "InstantCraterWear_um": { + "name": "瞬時坑磨損", + "shortName": "瞬坑磨" + }, + "IsTouched": { + "name": "接觸", + "shortName": "接觸" + }, + "LineNo": { + "name": "行號", + "shortName": "行號" + }, + "MaxAbsForce_N": { + "name": "最大絕對力", + "shortName": "最大力" + }, + "MaxMomentAboutSensor_Nm": { + "name": "感測器處最大力矩", + "shortName": "最大矩-感" + }, + "MaxMomentAboutToolTip_Nm": { + "name": "刀尖處最大力矩", + "shortName": "最大矩-尖" + }, + "MaxSpindlePowerRatio": { + "name": "主軸最大功率比", + "shortName": "最大功率比" + }, + "MaxSpindleTorqueRatio": { + "name": "主軸最大扭矩比", + "shortName": "最大扭矩比" + }, + "MaxTipDeflectionOnToolRunningCoordinate_um.X": { + "name": "工具運行座標系上的最大刀尖偏差.X", + "shortName": "最大刀尖偏差.X" + }, + "MaxTipDeflectionOnToolRunningCoordinate_um.Y": { + "name": "工具運行座標系上的最大刀尖偏差.Y", + "shortName": "最大刀尖偏差.Y" + }, + "MaxTipDeflectionOnToolRunningCoordinate_um.Z": { + "name": "工具運行座標系上的最大刀尖偏差.Z", + "shortName": "最大刀尖偏差.Z" + }, + "MoveOnProgramCoordinate.X": { + "name": "工件程式座標上的移動.X", + "shortName": "移動-W.X" + }, + "MoveOnProgramCoordinate.Y": { + "name": "工件程式座標上的移動.Y", + "shortName": "移動-W.Y" + }, + "MoveOnProgramCoordinate.Z": { + "name": "工件程式座標上的移動.Z", + "shortName": "移動-W.Z" + }, + "MovingLength_mm": { + "name": "移動距離", + "shortName": "移距" + }, + "Mrr_mm3ds": { + "name": "材料移除率", + "shortName": "材料移除率" + }, + "ProgramSideCusp_um": { + "name": "程式側面殘丘", + "shortName": "程式側面殘丘" + }, + "ReCutDepth_um": { + "name": "工具運行座標系上底邊的重切深度", + "shortName": "回切紋深度" + }, + "SpindleCyclePeriod_s": { + "name": "每轉週期", + "shortName": "每轉週期" + }, + "SpindleInputPower_W": { + "name": "主軸輸入功率", + "shortName": "主軸輸入功率" + }, + "SpindleOutputPower_W": { + "name": "主軸輸出功率", + "shortName": "主軸輸出功率" + }, + "SpindleSpeed_rpm": { + "name": "主軸轉速", + "shortName": "S" + }, + "SpindleTemperature_C": { + "name": "主軸溫度", + "shortName": "主軸溫" + }, + "SpindleWorkingTemperatureRatio": { + "name": "主軸工作溫度比", + "shortName": "主軸溫比" + }, + "StepDuration": { + "name": "步驟持續時間" + }, + "StepIndex": { + "name": "步索引", + "shortName": "步索引" + }, + "ThermalStress_MPa": { + "name": "熱應力", + "shortName": "熱應力" + }, + "ThermalYieldRatio": { + "name": "熱塑刃應力比", + "shortName": "熱屈服比" + }, + "ToolId": { + "name": "刀號", + "shortName": "T" + }, + "ToothArcDuration_s": { + "name": "每齒循環週期", + "shortName": "每齒循環週期" + }, + "WorkpieceDermisTemperature_C": { + "name": "工件表面溫度", + "shortName": "工表溫" + }, + "WorkpiecePlasticDepth_um": { + "name": "工件塑性變形深度", + "shortName": "塑變深度" + }, + "YieldingStressRatio": { + "name": "降伏應力比", + "shortName": "屈服比" + } + } +} diff --git a/App/System.AppContext.dll b/App/System.AppContext.dll index bb697c1c..4ab2b968 100644 Binary files a/App/System.AppContext.dll and b/App/System.AppContext.dll differ diff --git a/App/System.Buffers.dll b/App/System.Buffers.dll index 86cbfddd..36b92e8f 100644 Binary files a/App/System.Buffers.dll and b/App/System.Buffers.dll differ diff --git a/App/System.CodeDom.dll b/App/System.CodeDom.dll index 9919375b..501d602b 100644 Binary files a/App/System.CodeDom.dll and b/App/System.CodeDom.dll differ diff --git a/App/System.Collections.Concurrent.dll b/App/System.Collections.Concurrent.dll index e2f1571d..bef46308 100644 Binary files a/App/System.Collections.Concurrent.dll and b/App/System.Collections.Concurrent.dll differ diff --git a/App/System.Collections.Immutable.dll b/App/System.Collections.Immutable.dll index 4a0651f4..1fc1b430 100644 Binary files a/App/System.Collections.Immutable.dll and b/App/System.Collections.Immutable.dll differ diff --git a/App/System.Collections.NonGeneric.dll b/App/System.Collections.NonGeneric.dll index 0d2a20a4..a6b4fef1 100644 Binary files a/App/System.Collections.NonGeneric.dll and b/App/System.Collections.NonGeneric.dll differ diff --git a/App/System.Collections.Specialized.dll b/App/System.Collections.Specialized.dll index d7793188..5dd9cce8 100644 Binary files a/App/System.Collections.Specialized.dll and b/App/System.Collections.Specialized.dll differ diff --git a/App/System.Collections.dll b/App/System.Collections.dll index da3e9452..4a87d2c5 100644 Binary files a/App/System.Collections.dll and b/App/System.Collections.dll differ diff --git a/App/System.ComponentModel.Annotations.dll b/App/System.ComponentModel.Annotations.dll index 294a180a..af530a7b 100644 Binary files a/App/System.ComponentModel.Annotations.dll and b/App/System.ComponentModel.Annotations.dll differ diff --git a/App/System.ComponentModel.DataAnnotations.dll b/App/System.ComponentModel.DataAnnotations.dll index 67dcaba6..eedff3dd 100644 Binary files a/App/System.ComponentModel.DataAnnotations.dll and b/App/System.ComponentModel.DataAnnotations.dll differ diff --git a/App/System.ComponentModel.EventBasedAsync.dll b/App/System.ComponentModel.EventBasedAsync.dll index 70c9b549..bcdea460 100644 Binary files a/App/System.ComponentModel.EventBasedAsync.dll and b/App/System.ComponentModel.EventBasedAsync.dll differ diff --git a/App/System.ComponentModel.Primitives.dll b/App/System.ComponentModel.Primitives.dll index 3cf73820..1a5eacc1 100644 Binary files a/App/System.ComponentModel.Primitives.dll and b/App/System.ComponentModel.Primitives.dll differ diff --git a/App/System.ComponentModel.TypeConverter.dll b/App/System.ComponentModel.TypeConverter.dll index eaac3c58..a28c0c2c 100644 Binary files a/App/System.ComponentModel.TypeConverter.dll and b/App/System.ComponentModel.TypeConverter.dll differ diff --git a/App/System.ComponentModel.dll b/App/System.ComponentModel.dll index 7eb7f707..71f9a87c 100644 Binary files a/App/System.ComponentModel.dll and b/App/System.ComponentModel.dll differ diff --git a/App/System.Configuration.ConfigurationManager.dll b/App/System.Configuration.ConfigurationManager.dll index 3c102325..655259af 100644 Binary files a/App/System.Configuration.ConfigurationManager.dll and b/App/System.Configuration.ConfigurationManager.dll differ diff --git a/App/System.Configuration.dll b/App/System.Configuration.dll index 6897017c..be6d4484 100644 Binary files a/App/System.Configuration.dll and b/App/System.Configuration.dll differ diff --git a/App/System.Console.dll b/App/System.Console.dll index 21622fa9..1e0a3adb 100644 Binary files a/App/System.Console.dll and b/App/System.Console.dll differ diff --git a/App/System.Core.dll b/App/System.Core.dll index 06c9f5cb..724475be 100644 Binary files a/App/System.Core.dll and b/App/System.Core.dll differ diff --git a/App/System.Data.Common.dll b/App/System.Data.Common.dll index 39089cff..ce5d768a 100644 Binary files a/App/System.Data.Common.dll and b/App/System.Data.Common.dll differ diff --git a/App/System.Data.DataSetExtensions.dll b/App/System.Data.DataSetExtensions.dll index 2d25f32a..1796d0c1 100644 Binary files a/App/System.Data.DataSetExtensions.dll and b/App/System.Data.DataSetExtensions.dll differ diff --git a/App/System.Data.dll b/App/System.Data.dll index 5cbf2dd3..c4bda32d 100644 Binary files a/App/System.Data.dll and b/App/System.Data.dll differ diff --git a/App/System.Design.dll b/App/System.Design.dll index a77ec281..d19d3378 100644 Binary files a/App/System.Design.dll and b/App/System.Design.dll differ diff --git a/App/System.Diagnostics.Contracts.dll b/App/System.Diagnostics.Contracts.dll index a8be0fdc..6f42ed3c 100644 Binary files a/App/System.Diagnostics.Contracts.dll and b/App/System.Diagnostics.Contracts.dll differ diff --git a/App/System.Diagnostics.Debug.dll b/App/System.Diagnostics.Debug.dll index 50134ff6..02a5cec0 100644 Binary files a/App/System.Diagnostics.Debug.dll and b/App/System.Diagnostics.Debug.dll differ diff --git a/App/System.Diagnostics.DiagnosticSource.dll b/App/System.Diagnostics.DiagnosticSource.dll index 73fc9fb2..b1c53c58 100644 Binary files a/App/System.Diagnostics.DiagnosticSource.dll and b/App/System.Diagnostics.DiagnosticSource.dll differ diff --git a/App/System.Diagnostics.EventLog.Messages.dll b/App/System.Diagnostics.EventLog.Messages.dll index 06b372b1..1477dfd0 100644 Binary files a/App/System.Diagnostics.EventLog.Messages.dll and b/App/System.Diagnostics.EventLog.Messages.dll differ diff --git a/App/System.Diagnostics.EventLog.dll b/App/System.Diagnostics.EventLog.dll index 63a25fe9..5eebb320 100644 Binary files a/App/System.Diagnostics.EventLog.dll and b/App/System.Diagnostics.EventLog.dll differ diff --git a/App/System.Diagnostics.FileVersionInfo.dll b/App/System.Diagnostics.FileVersionInfo.dll index 718f45c3..0ba67ae8 100644 Binary files a/App/System.Diagnostics.FileVersionInfo.dll and b/App/System.Diagnostics.FileVersionInfo.dll differ diff --git a/App/System.Diagnostics.PerformanceCounter.dll b/App/System.Diagnostics.PerformanceCounter.dll index f9a64cc6..50e8f944 100644 Binary files a/App/System.Diagnostics.PerformanceCounter.dll and b/App/System.Diagnostics.PerformanceCounter.dll differ diff --git a/App/System.Diagnostics.Process.dll b/App/System.Diagnostics.Process.dll index de221bc9..a3a576ea 100644 Binary files a/App/System.Diagnostics.Process.dll and b/App/System.Diagnostics.Process.dll differ diff --git a/App/System.Diagnostics.StackTrace.dll b/App/System.Diagnostics.StackTrace.dll index 5a9d2bb9..d56b403b 100644 Binary files a/App/System.Diagnostics.StackTrace.dll and b/App/System.Diagnostics.StackTrace.dll differ diff --git a/App/System.Diagnostics.TextWriterTraceListener.dll b/App/System.Diagnostics.TextWriterTraceListener.dll index bc5484fb..9bb5e824 100644 Binary files a/App/System.Diagnostics.TextWriterTraceListener.dll and b/App/System.Diagnostics.TextWriterTraceListener.dll differ diff --git a/App/System.Diagnostics.Tools.dll b/App/System.Diagnostics.Tools.dll index 9ed80904..b06acbe7 100644 Binary files a/App/System.Diagnostics.Tools.dll and b/App/System.Diagnostics.Tools.dll differ diff --git a/App/System.Diagnostics.TraceSource.dll b/App/System.Diagnostics.TraceSource.dll index de8ce988..822e7b02 100644 Binary files a/App/System.Diagnostics.TraceSource.dll and b/App/System.Diagnostics.TraceSource.dll differ diff --git a/App/System.Diagnostics.Tracing.dll b/App/System.Diagnostics.Tracing.dll index 14905966..481d421c 100644 Binary files a/App/System.Diagnostics.Tracing.dll and b/App/System.Diagnostics.Tracing.dll differ diff --git a/App/System.DirectoryServices.dll b/App/System.DirectoryServices.dll index 2fdc4ecf..e0b95c89 100644 Binary files a/App/System.DirectoryServices.dll and b/App/System.DirectoryServices.dll differ diff --git a/App/System.Drawing.Common.dll b/App/System.Drawing.Common.dll index ec0d2f0d..74eeeb44 100644 Binary files a/App/System.Drawing.Common.dll and b/App/System.Drawing.Common.dll differ diff --git a/App/System.Drawing.Design.dll b/App/System.Drawing.Design.dll index 8d14288d..1d587752 100644 Binary files a/App/System.Drawing.Design.dll and b/App/System.Drawing.Design.dll differ diff --git a/App/System.Drawing.Primitives.dll b/App/System.Drawing.Primitives.dll index 41a0a5a6..dce1f0d3 100644 Binary files a/App/System.Drawing.Primitives.dll and b/App/System.Drawing.Primitives.dll differ diff --git a/App/System.Drawing.dll b/App/System.Drawing.dll index 0c3b3b2a..4eaac2d2 100644 Binary files a/App/System.Drawing.dll and b/App/System.Drawing.dll differ diff --git a/App/System.Dynamic.Runtime.dll b/App/System.Dynamic.Runtime.dll index 24e9cd8c..3b2c9943 100644 Binary files a/App/System.Dynamic.Runtime.dll and b/App/System.Dynamic.Runtime.dll differ diff --git a/App/System.Formats.Asn1.dll b/App/System.Formats.Asn1.dll index f420ff7d..3f4023cc 100644 Binary files a/App/System.Formats.Asn1.dll and b/App/System.Formats.Asn1.dll differ diff --git a/App/System.Formats.Cbor.dll b/App/System.Formats.Cbor.dll index efbeacb0..ef516953 100644 Binary files a/App/System.Formats.Cbor.dll and b/App/System.Formats.Cbor.dll differ diff --git a/App/System.Formats.Nrbf.dll b/App/System.Formats.Nrbf.dll index d35ff98e..e4d7a031 100644 Binary files a/App/System.Formats.Nrbf.dll and b/App/System.Formats.Nrbf.dll differ diff --git a/App/System.Formats.Tar.dll b/App/System.Formats.Tar.dll index af3450c9..15e4d3c5 100644 Binary files a/App/System.Formats.Tar.dll and b/App/System.Formats.Tar.dll differ diff --git a/App/System.Globalization.Calendars.dll b/App/System.Globalization.Calendars.dll index e666ade1..a9dd7e33 100644 Binary files a/App/System.Globalization.Calendars.dll and b/App/System.Globalization.Calendars.dll differ diff --git a/App/System.Globalization.Extensions.dll b/App/System.Globalization.Extensions.dll index cda437b4..199b4d93 100644 Binary files a/App/System.Globalization.Extensions.dll and b/App/System.Globalization.Extensions.dll differ diff --git a/App/System.Globalization.dll b/App/System.Globalization.dll index a838cf0a..fb2b5e6a 100644 Binary files a/App/System.Globalization.dll and b/App/System.Globalization.dll differ diff --git a/App/System.IO.Compression.Brotli.dll b/App/System.IO.Compression.Brotli.dll index a8338c1b..1226ff15 100644 Binary files a/App/System.IO.Compression.Brotli.dll and b/App/System.IO.Compression.Brotli.dll differ diff --git a/App/System.IO.Compression.FileSystem.dll b/App/System.IO.Compression.FileSystem.dll index ce85c603..8a3633ba 100644 Binary files a/App/System.IO.Compression.FileSystem.dll and b/App/System.IO.Compression.FileSystem.dll differ diff --git a/App/System.IO.Compression.Native.dll b/App/System.IO.Compression.Native.dll index 8b8bfa27..9980ec5a 100644 Binary files a/App/System.IO.Compression.Native.dll and b/App/System.IO.Compression.Native.dll differ diff --git a/App/System.IO.Compression.ZipFile.dll b/App/System.IO.Compression.ZipFile.dll index 7511461b..780c1ddf 100644 Binary files a/App/System.IO.Compression.ZipFile.dll and b/App/System.IO.Compression.ZipFile.dll differ diff --git a/App/System.IO.Compression.dll b/App/System.IO.Compression.dll index fdef7086..dee8a8f0 100644 Binary files a/App/System.IO.Compression.dll and b/App/System.IO.Compression.dll differ diff --git a/App/System.IO.FileSystem.AccessControl.dll b/App/System.IO.FileSystem.AccessControl.dll index 74f7ae43..6e63e222 100644 Binary files a/App/System.IO.FileSystem.AccessControl.dll and b/App/System.IO.FileSystem.AccessControl.dll differ diff --git a/App/System.IO.FileSystem.DriveInfo.dll b/App/System.IO.FileSystem.DriveInfo.dll index 24ed7847..468ee674 100644 Binary files a/App/System.IO.FileSystem.DriveInfo.dll and b/App/System.IO.FileSystem.DriveInfo.dll differ diff --git a/App/System.IO.FileSystem.Primitives.dll b/App/System.IO.FileSystem.Primitives.dll index 6f493568..b8e8af58 100644 Binary files a/App/System.IO.FileSystem.Primitives.dll and b/App/System.IO.FileSystem.Primitives.dll differ diff --git a/App/System.IO.FileSystem.Watcher.dll b/App/System.IO.FileSystem.Watcher.dll index c515376f..e964367f 100644 Binary files a/App/System.IO.FileSystem.Watcher.dll and b/App/System.IO.FileSystem.Watcher.dll differ diff --git a/App/System.IO.FileSystem.dll b/App/System.IO.FileSystem.dll index f57ac24d..15a1c412 100644 Binary files a/App/System.IO.FileSystem.dll and b/App/System.IO.FileSystem.dll differ diff --git a/App/System.IO.IsolatedStorage.dll b/App/System.IO.IsolatedStorage.dll index 3bf34a19..057426d9 100644 Binary files a/App/System.IO.IsolatedStorage.dll and b/App/System.IO.IsolatedStorage.dll differ diff --git a/App/System.IO.MemoryMappedFiles.dll b/App/System.IO.MemoryMappedFiles.dll index 168d9863..289fa9b6 100644 Binary files a/App/System.IO.MemoryMappedFiles.dll and b/App/System.IO.MemoryMappedFiles.dll differ diff --git a/App/System.IO.Packaging.dll b/App/System.IO.Packaging.dll index 7332f841..bc1f5467 100644 Binary files a/App/System.IO.Packaging.dll and b/App/System.IO.Packaging.dll differ diff --git a/App/System.IO.Pipelines.dll b/App/System.IO.Pipelines.dll index 293dc472..4ce08cfe 100644 Binary files a/App/System.IO.Pipelines.dll and b/App/System.IO.Pipelines.dll differ diff --git a/App/System.IO.Pipes.AccessControl.dll b/App/System.IO.Pipes.AccessControl.dll index ebcf9337..ae155ab0 100644 Binary files a/App/System.IO.Pipes.AccessControl.dll and b/App/System.IO.Pipes.AccessControl.dll differ diff --git a/App/System.IO.Pipes.dll b/App/System.IO.Pipes.dll index 9d676001..305679ab 100644 Binary files a/App/System.IO.Pipes.dll and b/App/System.IO.Pipes.dll differ diff --git a/App/System.IO.UnmanagedMemoryStream.dll b/App/System.IO.UnmanagedMemoryStream.dll index 93e18aec..9ce2cf61 100644 Binary files a/App/System.IO.UnmanagedMemoryStream.dll and b/App/System.IO.UnmanagedMemoryStream.dll differ diff --git a/App/System.IO.dll b/App/System.IO.dll index e2283ba4..56b9fdbe 100644 Binary files a/App/System.IO.dll and b/App/System.IO.dll differ diff --git a/App/System.Linq.AsyncEnumerable.dll b/App/System.Linq.AsyncEnumerable.dll index 9407f904..3adcbfa3 100644 Binary files a/App/System.Linq.AsyncEnumerable.dll and b/App/System.Linq.AsyncEnumerable.dll differ diff --git a/App/System.Linq.Expressions.dll b/App/System.Linq.Expressions.dll index 31c62bba..f4e8a1f4 100644 Binary files a/App/System.Linq.Expressions.dll and b/App/System.Linq.Expressions.dll differ diff --git a/App/System.Linq.Parallel.dll b/App/System.Linq.Parallel.dll index 1cf9707c..9cf082e2 100644 Binary files a/App/System.Linq.Parallel.dll and b/App/System.Linq.Parallel.dll differ diff --git a/App/System.Linq.Queryable.dll b/App/System.Linq.Queryable.dll index 92347e5f..70e60c85 100644 Binary files a/App/System.Linq.Queryable.dll and b/App/System.Linq.Queryable.dll differ diff --git a/App/System.Linq.dll b/App/System.Linq.dll index fc28fcdd..4dec228d 100644 Binary files a/App/System.Linq.dll and b/App/System.Linq.dll differ diff --git a/App/System.Memory.dll b/App/System.Memory.dll index 0d8e8e9d..9056ab9e 100644 Binary files a/App/System.Memory.dll and b/App/System.Memory.dll differ diff --git a/App/System.Net.Http.Json.dll b/App/System.Net.Http.Json.dll index 2b6569dd..7c04d392 100644 Binary files a/App/System.Net.Http.Json.dll and b/App/System.Net.Http.Json.dll differ diff --git a/App/System.Net.Http.dll b/App/System.Net.Http.dll index 4c5e4ea2..9df3a303 100644 Binary files a/App/System.Net.Http.dll and b/App/System.Net.Http.dll differ diff --git a/App/System.Net.HttpListener.dll b/App/System.Net.HttpListener.dll index ef706b32..b786f9ce 100644 Binary files a/App/System.Net.HttpListener.dll and b/App/System.Net.HttpListener.dll differ diff --git a/App/System.Net.Mail.dll b/App/System.Net.Mail.dll index a02c7741..c30f34e6 100644 Binary files a/App/System.Net.Mail.dll and b/App/System.Net.Mail.dll differ diff --git a/App/System.Net.NameResolution.dll b/App/System.Net.NameResolution.dll index 69c55550..af93b1cf 100644 Binary files a/App/System.Net.NameResolution.dll and b/App/System.Net.NameResolution.dll differ diff --git a/App/System.Net.NetworkInformation.dll b/App/System.Net.NetworkInformation.dll index 6ce1fb9a..03f78d23 100644 Binary files a/App/System.Net.NetworkInformation.dll and b/App/System.Net.NetworkInformation.dll differ diff --git a/App/System.Net.Ping.dll b/App/System.Net.Ping.dll index e1bd22b6..761ea471 100644 Binary files a/App/System.Net.Ping.dll and b/App/System.Net.Ping.dll differ diff --git a/App/System.Net.Primitives.dll b/App/System.Net.Primitives.dll index a3fbd806..87c4fe93 100644 Binary files a/App/System.Net.Primitives.dll and b/App/System.Net.Primitives.dll differ diff --git a/App/System.Net.Quic.dll b/App/System.Net.Quic.dll index 3e89e4a0..fe7212c4 100644 Binary files a/App/System.Net.Quic.dll and b/App/System.Net.Quic.dll differ diff --git a/App/System.Net.Requests.dll b/App/System.Net.Requests.dll index a970cd3f..aa1d0fdc 100644 Binary files a/App/System.Net.Requests.dll and b/App/System.Net.Requests.dll differ diff --git a/App/System.Net.Security.dll b/App/System.Net.Security.dll index 8e937e52..8c2c568f 100644 Binary files a/App/System.Net.Security.dll and b/App/System.Net.Security.dll differ diff --git a/App/System.Net.ServerSentEvents.dll b/App/System.Net.ServerSentEvents.dll index a3caaa33..2f45c07d 100644 Binary files a/App/System.Net.ServerSentEvents.dll and b/App/System.Net.ServerSentEvents.dll differ diff --git a/App/System.Net.ServicePoint.dll b/App/System.Net.ServicePoint.dll index 8acd6a9c..d2a1cafc 100644 Binary files a/App/System.Net.ServicePoint.dll and b/App/System.Net.ServicePoint.dll differ diff --git a/App/System.Net.Sockets.dll b/App/System.Net.Sockets.dll index 8a2d9336..1fec433d 100644 Binary files a/App/System.Net.Sockets.dll and b/App/System.Net.Sockets.dll differ diff --git a/App/System.Net.WebClient.dll b/App/System.Net.WebClient.dll index 2d317806..8a10e959 100644 Binary files a/App/System.Net.WebClient.dll and b/App/System.Net.WebClient.dll differ diff --git a/App/System.Net.WebHeaderCollection.dll b/App/System.Net.WebHeaderCollection.dll index 49c5a494..ca165f06 100644 Binary files a/App/System.Net.WebHeaderCollection.dll and b/App/System.Net.WebHeaderCollection.dll differ diff --git a/App/System.Net.WebProxy.dll b/App/System.Net.WebProxy.dll index 7351a2d3..617d1dab 100644 Binary files a/App/System.Net.WebProxy.dll and b/App/System.Net.WebProxy.dll differ diff --git a/App/System.Net.WebSockets.Client.dll b/App/System.Net.WebSockets.Client.dll index c6d51482..652af314 100644 Binary files a/App/System.Net.WebSockets.Client.dll and b/App/System.Net.WebSockets.Client.dll differ diff --git a/App/System.Net.WebSockets.dll b/App/System.Net.WebSockets.dll index c4192c79..ee77afac 100644 Binary files a/App/System.Net.WebSockets.dll and b/App/System.Net.WebSockets.dll differ diff --git a/App/System.Net.dll b/App/System.Net.dll index 3eb3ee5e..a7ad7173 100644 Binary files a/App/System.Net.dll and b/App/System.Net.dll differ diff --git a/App/System.Numerics.Vectors.dll b/App/System.Numerics.Vectors.dll index f8f6ebde..f31426c9 100644 Binary files a/App/System.Numerics.Vectors.dll and b/App/System.Numerics.Vectors.dll differ diff --git a/App/System.Numerics.dll b/App/System.Numerics.dll index 26bb2f15..5815e829 100644 Binary files a/App/System.Numerics.dll and b/App/System.Numerics.dll differ diff --git a/App/System.ObjectModel.dll b/App/System.ObjectModel.dll index 413a3b01..4f75e51d 100644 Binary files a/App/System.ObjectModel.dll and b/App/System.ObjectModel.dll differ diff --git a/App/System.Printing.dll b/App/System.Printing.dll index cc30ca1e..21d780a9 100644 Binary files a/App/System.Printing.dll and b/App/System.Printing.dll differ diff --git a/App/System.Private.CoreLib.dll b/App/System.Private.CoreLib.dll index 6ed4d844..f0da40ff 100644 Binary files a/App/System.Private.CoreLib.dll and b/App/System.Private.CoreLib.dll differ diff --git a/App/System.Private.DataContractSerialization.dll b/App/System.Private.DataContractSerialization.dll index 94a4166f..64e994d8 100644 Binary files a/App/System.Private.DataContractSerialization.dll and b/App/System.Private.DataContractSerialization.dll differ diff --git a/App/System.Private.Uri.dll b/App/System.Private.Uri.dll index 65b8e262..b5811951 100644 Binary files a/App/System.Private.Uri.dll and b/App/System.Private.Uri.dll differ diff --git a/App/System.Private.Windows.Core.dll b/App/System.Private.Windows.Core.dll index 92553182..10489e35 100644 Binary files a/App/System.Private.Windows.Core.dll and b/App/System.Private.Windows.Core.dll differ diff --git a/App/System.Private.Windows.GdiPlus.dll b/App/System.Private.Windows.GdiPlus.dll index fe3cbd6b..db1772c2 100644 Binary files a/App/System.Private.Windows.GdiPlus.dll and b/App/System.Private.Windows.GdiPlus.dll differ diff --git a/App/System.Private.Xml.Linq.dll b/App/System.Private.Xml.Linq.dll index 6c524531..e57bdc35 100644 Binary files a/App/System.Private.Xml.Linq.dll and b/App/System.Private.Xml.Linq.dll differ diff --git a/App/System.Private.Xml.dll b/App/System.Private.Xml.dll index 30d7f8cd..49733111 100644 Binary files a/App/System.Private.Xml.dll and b/App/System.Private.Xml.dll differ diff --git a/App/System.Reflection.DispatchProxy.dll b/App/System.Reflection.DispatchProxy.dll index 29481a6c..8cb5da1d 100644 Binary files a/App/System.Reflection.DispatchProxy.dll and b/App/System.Reflection.DispatchProxy.dll differ diff --git a/App/System.Reflection.Emit.ILGeneration.dll b/App/System.Reflection.Emit.ILGeneration.dll index bc1a3824..113014f8 100644 Binary files a/App/System.Reflection.Emit.ILGeneration.dll and b/App/System.Reflection.Emit.ILGeneration.dll differ diff --git a/App/System.Reflection.Emit.Lightweight.dll b/App/System.Reflection.Emit.Lightweight.dll index 4c132019..9ad9af36 100644 Binary files a/App/System.Reflection.Emit.Lightweight.dll and b/App/System.Reflection.Emit.Lightweight.dll differ diff --git a/App/System.Reflection.Emit.dll b/App/System.Reflection.Emit.dll index b9dbfdd9..079c4456 100644 Binary files a/App/System.Reflection.Emit.dll and b/App/System.Reflection.Emit.dll differ diff --git a/App/System.Reflection.Extensions.dll b/App/System.Reflection.Extensions.dll index 6e05c1d1..3e51a43d 100644 Binary files a/App/System.Reflection.Extensions.dll and b/App/System.Reflection.Extensions.dll differ diff --git a/App/System.Reflection.Metadata.dll b/App/System.Reflection.Metadata.dll index fb727d1b..2b6e4668 100644 Binary files a/App/System.Reflection.Metadata.dll and b/App/System.Reflection.Metadata.dll differ diff --git a/App/System.Reflection.Primitives.dll b/App/System.Reflection.Primitives.dll index aa6af96f..bf474b5b 100644 Binary files a/App/System.Reflection.Primitives.dll and b/App/System.Reflection.Primitives.dll differ diff --git a/App/System.Reflection.TypeExtensions.dll b/App/System.Reflection.TypeExtensions.dll index 580070d6..62d2386e 100644 Binary files a/App/System.Reflection.TypeExtensions.dll and b/App/System.Reflection.TypeExtensions.dll differ diff --git a/App/System.Reflection.dll b/App/System.Reflection.dll index 03228a72..c90250d4 100644 Binary files a/App/System.Reflection.dll and b/App/System.Reflection.dll differ diff --git a/App/System.Resources.Extensions.dll b/App/System.Resources.Extensions.dll index c3fad520..f0cf6d25 100644 Binary files a/App/System.Resources.Extensions.dll and b/App/System.Resources.Extensions.dll differ diff --git a/App/System.Resources.Reader.dll b/App/System.Resources.Reader.dll index c80e8207..845d2307 100644 Binary files a/App/System.Resources.Reader.dll and b/App/System.Resources.Reader.dll differ diff --git a/App/System.Resources.ResourceManager.dll b/App/System.Resources.ResourceManager.dll index f112f234..2a2a3c07 100644 Binary files a/App/System.Resources.ResourceManager.dll and b/App/System.Resources.ResourceManager.dll differ diff --git a/App/System.Resources.Writer.dll b/App/System.Resources.Writer.dll index e11ad2e3..5393accb 100644 Binary files a/App/System.Resources.Writer.dll and b/App/System.Resources.Writer.dll differ diff --git a/App/System.Runtime.CompilerServices.Unsafe.dll b/App/System.Runtime.CompilerServices.Unsafe.dll index 91d1c8dd..3700bd47 100644 Binary files a/App/System.Runtime.CompilerServices.Unsafe.dll and b/App/System.Runtime.CompilerServices.Unsafe.dll differ diff --git a/App/System.Runtime.CompilerServices.VisualC.dll b/App/System.Runtime.CompilerServices.VisualC.dll index 84ae1162..aecd99c1 100644 Binary files a/App/System.Runtime.CompilerServices.VisualC.dll and b/App/System.Runtime.CompilerServices.VisualC.dll differ diff --git a/App/System.Runtime.Extensions.dll b/App/System.Runtime.Extensions.dll index 11e5ab99..2f6bb033 100644 Binary files a/App/System.Runtime.Extensions.dll and b/App/System.Runtime.Extensions.dll differ diff --git a/App/System.Runtime.Handles.dll b/App/System.Runtime.Handles.dll index 82dec0bb..841c5a79 100644 Binary files a/App/System.Runtime.Handles.dll and b/App/System.Runtime.Handles.dll differ diff --git a/App/System.Runtime.InteropServices.JavaScript.dll b/App/System.Runtime.InteropServices.JavaScript.dll index 91c0d665..3104f20a 100644 Binary files a/App/System.Runtime.InteropServices.JavaScript.dll and b/App/System.Runtime.InteropServices.JavaScript.dll differ diff --git a/App/System.Runtime.InteropServices.RuntimeInformation.dll b/App/System.Runtime.InteropServices.RuntimeInformation.dll index 6678724f..bc34da8a 100644 Binary files a/App/System.Runtime.InteropServices.RuntimeInformation.dll and b/App/System.Runtime.InteropServices.RuntimeInformation.dll differ diff --git a/App/System.Runtime.InteropServices.dll b/App/System.Runtime.InteropServices.dll index 94217d11..6ae08c29 100644 Binary files a/App/System.Runtime.InteropServices.dll and b/App/System.Runtime.InteropServices.dll differ diff --git a/App/System.Runtime.Intrinsics.dll b/App/System.Runtime.Intrinsics.dll index a5c60455..5a3efc66 100644 Binary files a/App/System.Runtime.Intrinsics.dll and b/App/System.Runtime.Intrinsics.dll differ diff --git a/App/System.Runtime.Loader.dll b/App/System.Runtime.Loader.dll index f8219772..49e1a03e 100644 Binary files a/App/System.Runtime.Loader.dll and b/App/System.Runtime.Loader.dll differ diff --git a/App/System.Runtime.Numerics.dll b/App/System.Runtime.Numerics.dll index 19dbe60b..257367c2 100644 Binary files a/App/System.Runtime.Numerics.dll and b/App/System.Runtime.Numerics.dll differ diff --git a/App/System.Runtime.Serialization.Formatters.dll b/App/System.Runtime.Serialization.Formatters.dll index a29da068..a9983c8c 100644 Binary files a/App/System.Runtime.Serialization.Formatters.dll and b/App/System.Runtime.Serialization.Formatters.dll differ diff --git a/App/System.Runtime.Serialization.Json.dll b/App/System.Runtime.Serialization.Json.dll index cfa7e144..58900711 100644 Binary files a/App/System.Runtime.Serialization.Json.dll and b/App/System.Runtime.Serialization.Json.dll differ diff --git a/App/System.Runtime.Serialization.Primitives.dll b/App/System.Runtime.Serialization.Primitives.dll index c1fcdc9c..9ecd4e54 100644 Binary files a/App/System.Runtime.Serialization.Primitives.dll and b/App/System.Runtime.Serialization.Primitives.dll differ diff --git a/App/System.Runtime.Serialization.Xml.dll b/App/System.Runtime.Serialization.Xml.dll index 04cace1c..5b894377 100644 Binary files a/App/System.Runtime.Serialization.Xml.dll and b/App/System.Runtime.Serialization.Xml.dll differ diff --git a/App/System.Runtime.Serialization.dll b/App/System.Runtime.Serialization.dll index 68a33bac..ff291cde 100644 Binary files a/App/System.Runtime.Serialization.dll and b/App/System.Runtime.Serialization.dll differ diff --git a/App/System.Runtime.dll b/App/System.Runtime.dll index 026732dc..d33c4425 100644 Binary files a/App/System.Runtime.dll and b/App/System.Runtime.dll differ diff --git a/App/System.Security.AccessControl.dll b/App/System.Security.AccessControl.dll index 96eee015..704ce5ba 100644 Binary files a/App/System.Security.AccessControl.dll and b/App/System.Security.AccessControl.dll differ diff --git a/App/System.Security.Claims.dll b/App/System.Security.Claims.dll index aadd4102..d4529ff8 100644 Binary files a/App/System.Security.Claims.dll and b/App/System.Security.Claims.dll differ diff --git a/App/System.Security.Cryptography.Algorithms.dll b/App/System.Security.Cryptography.Algorithms.dll index bd99ba32..d8f6b8c2 100644 Binary files a/App/System.Security.Cryptography.Algorithms.dll and b/App/System.Security.Cryptography.Algorithms.dll differ diff --git a/App/System.Security.Cryptography.Cng.dll b/App/System.Security.Cryptography.Cng.dll index b924e4f3..cc66bbfb 100644 Binary files a/App/System.Security.Cryptography.Cng.dll and b/App/System.Security.Cryptography.Cng.dll differ diff --git a/App/System.Security.Cryptography.Csp.dll b/App/System.Security.Cryptography.Csp.dll index acd66fbe..16802a45 100644 Binary files a/App/System.Security.Cryptography.Csp.dll and b/App/System.Security.Cryptography.Csp.dll differ diff --git a/App/System.Security.Cryptography.Encoding.dll b/App/System.Security.Cryptography.Encoding.dll index e15a41d0..c9ad00e7 100644 Binary files a/App/System.Security.Cryptography.Encoding.dll and b/App/System.Security.Cryptography.Encoding.dll differ diff --git a/App/System.Security.Cryptography.OpenSsl.dll b/App/System.Security.Cryptography.OpenSsl.dll index 6ef264ab..c69c4275 100644 Binary files a/App/System.Security.Cryptography.OpenSsl.dll and b/App/System.Security.Cryptography.OpenSsl.dll differ diff --git a/App/System.Security.Cryptography.Pkcs.dll b/App/System.Security.Cryptography.Pkcs.dll index 553f5353..bd0a171c 100644 Binary files a/App/System.Security.Cryptography.Pkcs.dll and b/App/System.Security.Cryptography.Pkcs.dll differ diff --git a/App/System.Security.Cryptography.Primitives.dll b/App/System.Security.Cryptography.Primitives.dll index afecb269..5996d0a3 100644 Binary files a/App/System.Security.Cryptography.Primitives.dll and b/App/System.Security.Cryptography.Primitives.dll differ diff --git a/App/System.Security.Cryptography.ProtectedData.dll b/App/System.Security.Cryptography.ProtectedData.dll index cd183b52..466ea85a 100644 Binary files a/App/System.Security.Cryptography.ProtectedData.dll and b/App/System.Security.Cryptography.ProtectedData.dll differ diff --git a/App/System.Security.Cryptography.X509Certificates.dll b/App/System.Security.Cryptography.X509Certificates.dll index 54309124..c8cf6fbb 100644 Binary files a/App/System.Security.Cryptography.X509Certificates.dll and b/App/System.Security.Cryptography.X509Certificates.dll differ diff --git a/App/System.Security.Cryptography.Xml.dll b/App/System.Security.Cryptography.Xml.dll index c4f99536..3a0838b9 100644 Binary files a/App/System.Security.Cryptography.Xml.dll and b/App/System.Security.Cryptography.Xml.dll differ diff --git a/App/System.Security.Cryptography.dll b/App/System.Security.Cryptography.dll index 9faab9b9..ecc36119 100644 Binary files a/App/System.Security.Cryptography.dll and b/App/System.Security.Cryptography.dll differ diff --git a/App/System.Security.Permissions.dll b/App/System.Security.Permissions.dll index 8067971a..ca028f8a 100644 Binary files a/App/System.Security.Permissions.dll and b/App/System.Security.Permissions.dll differ diff --git a/App/System.Security.Principal.Windows.dll b/App/System.Security.Principal.Windows.dll index 970e1b4a..4a4fa940 100644 Binary files a/App/System.Security.Principal.Windows.dll and b/App/System.Security.Principal.Windows.dll differ diff --git a/App/System.Security.Principal.dll b/App/System.Security.Principal.dll index e0dab163..71ee240c 100644 Binary files a/App/System.Security.Principal.dll and b/App/System.Security.Principal.dll differ diff --git a/App/System.Security.SecureString.dll b/App/System.Security.SecureString.dll index c8541921..a414859c 100644 Binary files a/App/System.Security.SecureString.dll and b/App/System.Security.SecureString.dll differ diff --git a/App/System.Security.dll b/App/System.Security.dll index 2d520556..71f6ebda 100644 Binary files a/App/System.Security.dll and b/App/System.Security.dll differ diff --git a/App/System.ServiceModel.Web.dll b/App/System.ServiceModel.Web.dll index acd8ca9f..9cce92f8 100644 Binary files a/App/System.ServiceModel.Web.dll and b/App/System.ServiceModel.Web.dll differ diff --git a/App/System.ServiceProcess.dll b/App/System.ServiceProcess.dll index 0a70aa5c..8daa6e4d 100644 Binary files a/App/System.ServiceProcess.dll and b/App/System.ServiceProcess.dll differ diff --git a/App/System.Text.Encoding.CodePages.dll b/App/System.Text.Encoding.CodePages.dll index b8876db5..da39d5a2 100644 Binary files a/App/System.Text.Encoding.CodePages.dll and b/App/System.Text.Encoding.CodePages.dll differ diff --git a/App/System.Text.Encoding.Extensions.dll b/App/System.Text.Encoding.Extensions.dll index b8c7dcb8..a3888902 100644 Binary files a/App/System.Text.Encoding.Extensions.dll and b/App/System.Text.Encoding.Extensions.dll differ diff --git a/App/System.Text.Encoding.dll b/App/System.Text.Encoding.dll index 1bcaac90..05a6e4de 100644 Binary files a/App/System.Text.Encoding.dll and b/App/System.Text.Encoding.dll differ diff --git a/App/System.Text.Encodings.Web.dll b/App/System.Text.Encodings.Web.dll index 120095bf..1b719203 100644 Binary files a/App/System.Text.Encodings.Web.dll and b/App/System.Text.Encodings.Web.dll differ diff --git a/App/System.Text.Json.dll b/App/System.Text.Json.dll index cc44cf33..799121cf 100644 Binary files a/App/System.Text.Json.dll and b/App/System.Text.Json.dll differ diff --git a/App/System.Text.RegularExpressions.dll b/App/System.Text.RegularExpressions.dll index 1eeba2b7..61c3d863 100644 Binary files a/App/System.Text.RegularExpressions.dll and b/App/System.Text.RegularExpressions.dll differ diff --git a/App/System.Threading.AccessControl.dll b/App/System.Threading.AccessControl.dll index c0e88c2a..adaf299b 100644 Binary files a/App/System.Threading.AccessControl.dll and b/App/System.Threading.AccessControl.dll differ diff --git a/App/System.Threading.Channels.dll b/App/System.Threading.Channels.dll index a0e5416c..e89f1abb 100644 Binary files a/App/System.Threading.Channels.dll and b/App/System.Threading.Channels.dll differ diff --git a/App/System.Threading.Overlapped.dll b/App/System.Threading.Overlapped.dll index a3fb8599..87733afe 100644 Binary files a/App/System.Threading.Overlapped.dll and b/App/System.Threading.Overlapped.dll differ diff --git a/App/System.Threading.RateLimiting.dll b/App/System.Threading.RateLimiting.dll index c0aec313..455839f1 100644 Binary files a/App/System.Threading.RateLimiting.dll and b/App/System.Threading.RateLimiting.dll differ diff --git a/App/System.Threading.Tasks.Dataflow.dll b/App/System.Threading.Tasks.Dataflow.dll index aba66d60..a60c0e9c 100644 Binary files a/App/System.Threading.Tasks.Dataflow.dll and b/App/System.Threading.Tasks.Dataflow.dll differ diff --git a/App/System.Threading.Tasks.Extensions.dll b/App/System.Threading.Tasks.Extensions.dll index fca46362..2b23dc7c 100644 Binary files a/App/System.Threading.Tasks.Extensions.dll and b/App/System.Threading.Tasks.Extensions.dll differ diff --git a/App/System.Threading.Tasks.Parallel.dll b/App/System.Threading.Tasks.Parallel.dll index 08101610..c432795c 100644 Binary files a/App/System.Threading.Tasks.Parallel.dll and b/App/System.Threading.Tasks.Parallel.dll differ diff --git a/App/System.Threading.Tasks.dll b/App/System.Threading.Tasks.dll index 35594c34..2bb4a28a 100644 Binary files a/App/System.Threading.Tasks.dll and b/App/System.Threading.Tasks.dll differ diff --git a/App/System.Threading.Thread.dll b/App/System.Threading.Thread.dll index d17a0980..842236fa 100644 Binary files a/App/System.Threading.Thread.dll and b/App/System.Threading.Thread.dll differ diff --git a/App/System.Threading.ThreadPool.dll b/App/System.Threading.ThreadPool.dll index 327640eb..6820fa7a 100644 Binary files a/App/System.Threading.ThreadPool.dll and b/App/System.Threading.ThreadPool.dll differ diff --git a/App/System.Threading.Timer.dll b/App/System.Threading.Timer.dll index 08b30a4c..5f9e3872 100644 Binary files a/App/System.Threading.Timer.dll and b/App/System.Threading.Timer.dll differ diff --git a/App/System.Threading.dll b/App/System.Threading.dll index 34446cf1..8eadc064 100644 Binary files a/App/System.Threading.dll and b/App/System.Threading.dll differ diff --git a/App/System.Transactions.Local.dll b/App/System.Transactions.Local.dll index d2aa77ca..248214bc 100644 Binary files a/App/System.Transactions.Local.dll and b/App/System.Transactions.Local.dll differ diff --git a/App/System.Transactions.dll b/App/System.Transactions.dll index 2804bbcc..e22fbe28 100644 Binary files a/App/System.Transactions.dll and b/App/System.Transactions.dll differ diff --git a/App/System.ValueTuple.dll b/App/System.ValueTuple.dll index 2e0483da..de2c1853 100644 Binary files a/App/System.ValueTuple.dll and b/App/System.ValueTuple.dll differ diff --git a/App/System.Web.HttpUtility.dll b/App/System.Web.HttpUtility.dll index c7442fc0..566364a6 100644 Binary files a/App/System.Web.HttpUtility.dll and b/App/System.Web.HttpUtility.dll differ diff --git a/App/System.Web.dll b/App/System.Web.dll index 045b9e09..6fc431d4 100644 Binary files a/App/System.Web.dll and b/App/System.Web.dll differ diff --git a/App/System.Windows.Controls.Ribbon.dll b/App/System.Windows.Controls.Ribbon.dll index 8b63c044..39eb5686 100644 Binary files a/App/System.Windows.Controls.Ribbon.dll and b/App/System.Windows.Controls.Ribbon.dll differ diff --git a/App/System.Windows.Extensions.dll b/App/System.Windows.Extensions.dll index a0750411..fd72d7da 100644 Binary files a/App/System.Windows.Extensions.dll and b/App/System.Windows.Extensions.dll differ diff --git a/App/System.Windows.Forms.Design.Editors.dll b/App/System.Windows.Forms.Design.Editors.dll index 832c9d55..8730efe6 100644 Binary files a/App/System.Windows.Forms.Design.Editors.dll and b/App/System.Windows.Forms.Design.Editors.dll differ diff --git a/App/System.Windows.Forms.Design.dll b/App/System.Windows.Forms.Design.dll index c5018557..235073be 100644 Binary files a/App/System.Windows.Forms.Design.dll and b/App/System.Windows.Forms.Design.dll differ diff --git a/App/System.Windows.Forms.Primitives.dll b/App/System.Windows.Forms.Primitives.dll index 6fc136a9..adbbe378 100644 Binary files a/App/System.Windows.Forms.Primitives.dll and b/App/System.Windows.Forms.Primitives.dll differ diff --git a/App/System.Windows.Forms.dll b/App/System.Windows.Forms.dll index 0acc1a16..94fb446f 100644 Binary files a/App/System.Windows.Forms.dll and b/App/System.Windows.Forms.dll differ diff --git a/App/System.Windows.Input.Manipulations.dll b/App/System.Windows.Input.Manipulations.dll index fdca69e7..5e8eee8c 100644 Binary files a/App/System.Windows.Input.Manipulations.dll and b/App/System.Windows.Input.Manipulations.dll differ diff --git a/App/System.Windows.Presentation.dll b/App/System.Windows.Presentation.dll index 0bef9cb5..f0fba475 100644 Binary files a/App/System.Windows.Presentation.dll and b/App/System.Windows.Presentation.dll differ diff --git a/App/System.Windows.Primitives.dll b/App/System.Windows.Primitives.dll index 3f689963..a7250bfe 100644 Binary files a/App/System.Windows.Primitives.dll and b/App/System.Windows.Primitives.dll differ diff --git a/App/System.Windows.dll b/App/System.Windows.dll index 4743944e..7e3f484c 100644 Binary files a/App/System.Windows.dll and b/App/System.Windows.dll differ diff --git a/App/System.Xaml.dll b/App/System.Xaml.dll index 19c684c0..f1029469 100644 Binary files a/App/System.Xaml.dll and b/App/System.Xaml.dll differ diff --git a/App/System.Xml.Linq.dll b/App/System.Xml.Linq.dll index 1c1eb9e2..88938ab4 100644 Binary files a/App/System.Xml.Linq.dll and b/App/System.Xml.Linq.dll differ diff --git a/App/System.Xml.ReaderWriter.dll b/App/System.Xml.ReaderWriter.dll index 47076729..023d4e1c 100644 Binary files a/App/System.Xml.ReaderWriter.dll and b/App/System.Xml.ReaderWriter.dll differ diff --git a/App/System.Xml.Serialization.dll b/App/System.Xml.Serialization.dll index 3eec787a..bb33590d 100644 Binary files a/App/System.Xml.Serialization.dll and b/App/System.Xml.Serialization.dll differ diff --git a/App/System.Xml.XDocument.dll b/App/System.Xml.XDocument.dll index 95a92283..1fc8e1f0 100644 Binary files a/App/System.Xml.XDocument.dll and b/App/System.Xml.XDocument.dll differ diff --git a/App/System.Xml.XPath.XDocument.dll b/App/System.Xml.XPath.XDocument.dll index 2f9e383f..1542617d 100644 Binary files a/App/System.Xml.XPath.XDocument.dll and b/App/System.Xml.XPath.XDocument.dll differ diff --git a/App/System.Xml.XPath.dll b/App/System.Xml.XPath.dll index c60bf3d4..abc7a482 100644 Binary files a/App/System.Xml.XPath.dll and b/App/System.Xml.XPath.dll differ diff --git a/App/System.Xml.XmlDocument.dll b/App/System.Xml.XmlDocument.dll index 5b689b1b..8269862f 100644 Binary files a/App/System.Xml.XmlDocument.dll and b/App/System.Xml.XmlDocument.dll differ diff --git a/App/System.Xml.XmlSerializer.dll b/App/System.Xml.XmlSerializer.dll index 84bbd7ae..d5a34077 100644 Binary files a/App/System.Xml.XmlSerializer.dll and b/App/System.Xml.XmlSerializer.dll differ diff --git a/App/System.Xml.dll b/App/System.Xml.dll index 5bcb8610..eb5f938b 100644 Binary files a/App/System.Xml.dll and b/App/System.Xml.dll differ diff --git a/App/System.dll b/App/System.dll index be599346..efcdb9cc 100644 Binary files a/App/System.dll and b/App/System.dll differ diff --git a/App/UIAutomationClient.dll b/App/UIAutomationClient.dll index 5b1d970e..650608b5 100644 Binary files a/App/UIAutomationClient.dll and b/App/UIAutomationClient.dll differ diff --git a/App/UIAutomationClientSideProviders.dll b/App/UIAutomationClientSideProviders.dll index 15c360e6..54ed5310 100644 Binary files a/App/UIAutomationClientSideProviders.dll and b/App/UIAutomationClientSideProviders.dll differ diff --git a/App/UIAutomationProvider.dll b/App/UIAutomationProvider.dll index 9a439169..46e940ae 100644 Binary files a/App/UIAutomationProvider.dll and b/App/UIAutomationProvider.dll differ diff --git a/App/UIAutomationTypes.dll b/App/UIAutomationTypes.dll index 9ede339a..27c5e6cf 100644 Binary files a/App/UIAutomationTypes.dll and b/App/UIAutomationTypes.dll differ diff --git a/App/WindowsBase.dll b/App/WindowsBase.dll index 6d9cb1a5..9df8ae29 100644 Binary files a/App/WindowsBase.dll and b/App/WindowsBase.dll differ diff --git a/App/WindowsFormsIntegration.dll b/App/WindowsFormsIntegration.dll index 6c830b3d..c373c9b0 100644 Binary files a/App/WindowsFormsIntegration.dll and b/App/WindowsFormsIntegration.dll differ diff --git a/App/aspnetcorev2_inprocess.dll b/App/aspnetcorev2_inprocess.dll index e777695a..e206df7f 100644 Binary files a/App/aspnetcorev2_inprocess.dll and b/App/aspnetcorev2_inprocess.dll differ diff --git a/App/clretwrc.dll b/App/clretwrc.dll index c3cebd9f..27305d2f 100644 Binary files a/App/clretwrc.dll and b/App/clretwrc.dll differ diff --git a/App/clrgc.dll b/App/clrgc.dll index 48e5b166..8a9b8f49 100644 Binary files a/App/clrgc.dll and b/App/clrgc.dll differ diff --git a/App/clrgcexp.dll b/App/clrgcexp.dll index f243ccaf..3ff7ab8c 100644 Binary files a/App/clrgcexp.dll and b/App/clrgcexp.dll differ diff --git a/App/clrjit.dll b/App/clrjit.dll index 458352e3..8c5ffda5 100644 Binary files a/App/clrjit.dll and b/App/clrjit.dll differ diff --git a/App/core.dll b/App/core.dll index 856c5d82..8a6bf42a 100644 Binary files a/App/core.dll and b/App/core.dll differ diff --git a/App/coreclr.dll b/App/coreclr.dll index 77c079ae..eba04e2f 100644 Binary files a/App/coreclr.dll and b/App/coreclr.dll differ diff --git a/App/createdump.exe b/App/createdump.exe index 28968666..9ec14ad7 100644 Binary files a/App/createdump.exe and b/App/createdump.exe differ diff --git a/App/cs/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll b/App/cs/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll index 5ba9e2cc..c4c204b0 100644 Binary files a/App/cs/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll and b/App/cs/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll differ diff --git a/App/cs/Microsoft.CodeAnalysis.CSharp.resources.dll b/App/cs/Microsoft.CodeAnalysis.CSharp.resources.dll index 90291a70..17f39c1f 100644 Binary files a/App/cs/Microsoft.CodeAnalysis.CSharp.resources.dll and b/App/cs/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/App/cs/Microsoft.CodeAnalysis.Scripting.resources.dll b/App/cs/Microsoft.CodeAnalysis.Scripting.resources.dll index 51b9fbc2..44055164 100644 Binary files a/App/cs/Microsoft.CodeAnalysis.Scripting.resources.dll and b/App/cs/Microsoft.CodeAnalysis.Scripting.resources.dll differ diff --git a/App/cs/Microsoft.CodeAnalysis.resources.dll b/App/cs/Microsoft.CodeAnalysis.resources.dll index ce4bb889..25df1f0c 100644 Binary files a/App/cs/Microsoft.CodeAnalysis.resources.dll and b/App/cs/Microsoft.CodeAnalysis.resources.dll differ diff --git a/App/cs/Microsoft.VisualBasic.Forms.resources.dll b/App/cs/Microsoft.VisualBasic.Forms.resources.dll index 939f7941..fc6a2b47 100644 Binary files a/App/cs/Microsoft.VisualBasic.Forms.resources.dll and b/App/cs/Microsoft.VisualBasic.Forms.resources.dll differ diff --git a/App/cs/PresentationCore.resources.dll b/App/cs/PresentationCore.resources.dll index c4353c97..6da7d4b2 100644 Binary files a/App/cs/PresentationCore.resources.dll and b/App/cs/PresentationCore.resources.dll differ diff --git a/App/cs/PresentationFramework.resources.dll b/App/cs/PresentationFramework.resources.dll index 583225fc..b774adef 100644 Binary files a/App/cs/PresentationFramework.resources.dll and b/App/cs/PresentationFramework.resources.dll differ diff --git a/App/cs/PresentationUI.resources.dll b/App/cs/PresentationUI.resources.dll index c281e93d..5e1f4db1 100644 Binary files a/App/cs/PresentationUI.resources.dll and b/App/cs/PresentationUI.resources.dll differ diff --git a/App/cs/ReachFramework.resources.dll b/App/cs/ReachFramework.resources.dll index 0a1e177f..69708831 100644 Binary files a/App/cs/ReachFramework.resources.dll and b/App/cs/ReachFramework.resources.dll differ diff --git a/App/cs/System.Windows.Controls.Ribbon.resources.dll b/App/cs/System.Windows.Controls.Ribbon.resources.dll index f2bc6ef3..3c0c57df 100644 Binary files a/App/cs/System.Windows.Controls.Ribbon.resources.dll and b/App/cs/System.Windows.Controls.Ribbon.resources.dll differ diff --git a/App/cs/System.Windows.Forms.Design.resources.dll b/App/cs/System.Windows.Forms.Design.resources.dll index 7ee295cf..4ced8946 100644 Binary files a/App/cs/System.Windows.Forms.Design.resources.dll and b/App/cs/System.Windows.Forms.Design.resources.dll differ diff --git a/App/cs/System.Windows.Forms.Primitives.resources.dll b/App/cs/System.Windows.Forms.Primitives.resources.dll index 2df71f8c..b4c1c953 100644 Binary files a/App/cs/System.Windows.Forms.Primitives.resources.dll and b/App/cs/System.Windows.Forms.Primitives.resources.dll differ diff --git a/App/cs/System.Windows.Forms.resources.dll b/App/cs/System.Windows.Forms.resources.dll index 245fa8b4..7378c384 100644 Binary files a/App/cs/System.Windows.Forms.resources.dll and b/App/cs/System.Windows.Forms.resources.dll differ diff --git a/App/cs/System.Windows.Input.Manipulations.resources.dll b/App/cs/System.Windows.Input.Manipulations.resources.dll index d32c6d0d..6b6b6da9 100644 Binary files a/App/cs/System.Windows.Input.Manipulations.resources.dll and b/App/cs/System.Windows.Input.Manipulations.resources.dll differ diff --git a/App/cs/System.Xaml.resources.dll b/App/cs/System.Xaml.resources.dll index a0897246..cd295f63 100644 Binary files a/App/cs/System.Xaml.resources.dll and b/App/cs/System.Xaml.resources.dll differ diff --git a/App/cs/UIAutomationClient.resources.dll b/App/cs/UIAutomationClient.resources.dll index 2508f0f4..04dcbe40 100644 Binary files a/App/cs/UIAutomationClient.resources.dll and b/App/cs/UIAutomationClient.resources.dll differ diff --git a/App/cs/UIAutomationClientSideProviders.resources.dll b/App/cs/UIAutomationClientSideProviders.resources.dll index b69f4966..ec4222d0 100644 Binary files a/App/cs/UIAutomationClientSideProviders.resources.dll and b/App/cs/UIAutomationClientSideProviders.resources.dll differ diff --git a/App/cs/UIAutomationProvider.resources.dll b/App/cs/UIAutomationProvider.resources.dll index 2cdd4e00..226956b4 100644 Binary files a/App/cs/UIAutomationProvider.resources.dll and b/App/cs/UIAutomationProvider.resources.dll differ diff --git a/App/cs/UIAutomationTypes.resources.dll b/App/cs/UIAutomationTypes.resources.dll index 64bea723..c9b2c2d3 100644 Binary files a/App/cs/UIAutomationTypes.resources.dll and b/App/cs/UIAutomationTypes.resources.dll differ diff --git a/App/cs/WindowsBase.resources.dll b/App/cs/WindowsBase.resources.dll index 2c734021..ec64d8cf 100644 Binary files a/App/cs/WindowsBase.resources.dll and b/App/cs/WindowsBase.resources.dll differ diff --git a/App/cs/WindowsFormsIntegration.resources.dll b/App/cs/WindowsFormsIntegration.resources.dll index 08c46dd5..2e10bc6c 100644 Binary files a/App/cs/WindowsFormsIntegration.resources.dll and b/App/cs/WindowsFormsIntegration.resources.dll differ diff --git a/App/de/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll b/App/de/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll index 9ad7e8c0..ff5195b8 100644 Binary files a/App/de/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll and b/App/de/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll differ diff --git a/App/de/Microsoft.CodeAnalysis.CSharp.resources.dll b/App/de/Microsoft.CodeAnalysis.CSharp.resources.dll index 9068f862..cf40d8a4 100644 Binary files a/App/de/Microsoft.CodeAnalysis.CSharp.resources.dll and b/App/de/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/App/de/Microsoft.CodeAnalysis.Scripting.resources.dll b/App/de/Microsoft.CodeAnalysis.Scripting.resources.dll index 6cde108d..c47596ed 100644 Binary files a/App/de/Microsoft.CodeAnalysis.Scripting.resources.dll and b/App/de/Microsoft.CodeAnalysis.Scripting.resources.dll differ diff --git a/App/de/Microsoft.CodeAnalysis.resources.dll b/App/de/Microsoft.CodeAnalysis.resources.dll index cd816c57..dd1640c0 100644 Binary files a/App/de/Microsoft.CodeAnalysis.resources.dll and b/App/de/Microsoft.CodeAnalysis.resources.dll differ diff --git a/App/de/Microsoft.VisualBasic.Forms.resources.dll b/App/de/Microsoft.VisualBasic.Forms.resources.dll index 84c405fa..8fcde2fe 100644 Binary files a/App/de/Microsoft.VisualBasic.Forms.resources.dll and b/App/de/Microsoft.VisualBasic.Forms.resources.dll differ diff --git a/App/de/PresentationCore.resources.dll b/App/de/PresentationCore.resources.dll index 8724b2df..3d318e72 100644 Binary files a/App/de/PresentationCore.resources.dll and b/App/de/PresentationCore.resources.dll differ diff --git a/App/de/PresentationFramework.resources.dll b/App/de/PresentationFramework.resources.dll index 97849f8e..7f2bc15f 100644 Binary files a/App/de/PresentationFramework.resources.dll and b/App/de/PresentationFramework.resources.dll differ diff --git a/App/de/PresentationUI.resources.dll b/App/de/PresentationUI.resources.dll index 547a1ced..15969a88 100644 Binary files a/App/de/PresentationUI.resources.dll and b/App/de/PresentationUI.resources.dll differ diff --git a/App/de/ReachFramework.resources.dll b/App/de/ReachFramework.resources.dll index fa776268..24231994 100644 Binary files a/App/de/ReachFramework.resources.dll and b/App/de/ReachFramework.resources.dll differ diff --git a/App/de/System.Windows.Controls.Ribbon.resources.dll b/App/de/System.Windows.Controls.Ribbon.resources.dll index d02df1ec..1ae65e8f 100644 Binary files a/App/de/System.Windows.Controls.Ribbon.resources.dll and b/App/de/System.Windows.Controls.Ribbon.resources.dll differ diff --git a/App/de/System.Windows.Forms.Design.resources.dll b/App/de/System.Windows.Forms.Design.resources.dll index a14424fd..434d6e2e 100644 Binary files a/App/de/System.Windows.Forms.Design.resources.dll and b/App/de/System.Windows.Forms.Design.resources.dll differ diff --git a/App/de/System.Windows.Forms.Primitives.resources.dll b/App/de/System.Windows.Forms.Primitives.resources.dll index 97274bc2..b014be79 100644 Binary files a/App/de/System.Windows.Forms.Primitives.resources.dll and b/App/de/System.Windows.Forms.Primitives.resources.dll differ diff --git a/App/de/System.Windows.Forms.resources.dll b/App/de/System.Windows.Forms.resources.dll index 7d7ba58f..0b8bba4c 100644 Binary files a/App/de/System.Windows.Forms.resources.dll and b/App/de/System.Windows.Forms.resources.dll differ diff --git a/App/de/System.Windows.Input.Manipulations.resources.dll b/App/de/System.Windows.Input.Manipulations.resources.dll index 5b98a689..d956b478 100644 Binary files a/App/de/System.Windows.Input.Manipulations.resources.dll and b/App/de/System.Windows.Input.Manipulations.resources.dll differ diff --git a/App/de/System.Xaml.resources.dll b/App/de/System.Xaml.resources.dll index 5c465142..0503bd34 100644 Binary files a/App/de/System.Xaml.resources.dll and b/App/de/System.Xaml.resources.dll differ diff --git a/App/de/UIAutomationClient.resources.dll b/App/de/UIAutomationClient.resources.dll index c57a488e..a24a3937 100644 Binary files a/App/de/UIAutomationClient.resources.dll and b/App/de/UIAutomationClient.resources.dll differ diff --git a/App/de/UIAutomationClientSideProviders.resources.dll b/App/de/UIAutomationClientSideProviders.resources.dll index 6bd6fb79..fac85025 100644 Binary files a/App/de/UIAutomationClientSideProviders.resources.dll and b/App/de/UIAutomationClientSideProviders.resources.dll differ diff --git a/App/de/UIAutomationProvider.resources.dll b/App/de/UIAutomationProvider.resources.dll index 78633a7c..d68d04f3 100644 Binary files a/App/de/UIAutomationProvider.resources.dll and b/App/de/UIAutomationProvider.resources.dll differ diff --git a/App/de/UIAutomationTypes.resources.dll b/App/de/UIAutomationTypes.resources.dll index ec3e06be..263e973a 100644 Binary files a/App/de/UIAutomationTypes.resources.dll and b/App/de/UIAutomationTypes.resources.dll differ diff --git a/App/de/WindowsBase.resources.dll b/App/de/WindowsBase.resources.dll index a5c9e65d..3106227e 100644 Binary files a/App/de/WindowsBase.resources.dll and b/App/de/WindowsBase.resources.dll differ diff --git a/App/de/WindowsFormsIntegration.resources.dll b/App/de/WindowsFormsIntegration.resources.dll index e5ea2f1f..ffc73330 100644 Binary files a/App/de/WindowsFormsIntegration.resources.dll and b/App/de/WindowsFormsIntegration.resources.dll differ diff --git a/App/e_sqlite3.dll b/App/e_sqlite3.dll index 8c1c1d9e..db121f29 100644 Binary files a/App/e_sqlite3.dll and b/App/e_sqlite3.dll differ diff --git a/App/en/HiGeom.resources.dll b/App/en/HiGeom.resources.dll index 053d0b92..230291f5 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 401358d2..bc23b55f 100644 Binary files a/App/en/HiMech.resources.dll and b/App/en/HiMech.resources.dll differ diff --git a/App/es/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll b/App/es/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll index 63b7e074..4678c74c 100644 Binary files a/App/es/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll and b/App/es/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll differ diff --git a/App/es/Microsoft.CodeAnalysis.CSharp.resources.dll b/App/es/Microsoft.CodeAnalysis.CSharp.resources.dll index 32ae524a..d8c1ed66 100644 Binary files a/App/es/Microsoft.CodeAnalysis.CSharp.resources.dll and b/App/es/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/App/es/Microsoft.CodeAnalysis.Scripting.resources.dll b/App/es/Microsoft.CodeAnalysis.Scripting.resources.dll index 59c2248d..3b5a7072 100644 Binary files a/App/es/Microsoft.CodeAnalysis.Scripting.resources.dll and b/App/es/Microsoft.CodeAnalysis.Scripting.resources.dll differ diff --git a/App/es/Microsoft.CodeAnalysis.resources.dll b/App/es/Microsoft.CodeAnalysis.resources.dll index fc813c0c..919b9964 100644 Binary files a/App/es/Microsoft.CodeAnalysis.resources.dll and b/App/es/Microsoft.CodeAnalysis.resources.dll differ diff --git a/App/es/Microsoft.VisualBasic.Forms.resources.dll b/App/es/Microsoft.VisualBasic.Forms.resources.dll index d3679c70..892d1155 100644 Binary files a/App/es/Microsoft.VisualBasic.Forms.resources.dll and b/App/es/Microsoft.VisualBasic.Forms.resources.dll differ diff --git a/App/es/PresentationCore.resources.dll b/App/es/PresentationCore.resources.dll index fed360dc..b82fffd5 100644 Binary files a/App/es/PresentationCore.resources.dll and b/App/es/PresentationCore.resources.dll differ diff --git a/App/es/PresentationFramework.resources.dll b/App/es/PresentationFramework.resources.dll index 5b539b89..41bb6b7c 100644 Binary files a/App/es/PresentationFramework.resources.dll and b/App/es/PresentationFramework.resources.dll differ diff --git a/App/es/PresentationUI.resources.dll b/App/es/PresentationUI.resources.dll index be43f010..05d71e03 100644 Binary files a/App/es/PresentationUI.resources.dll and b/App/es/PresentationUI.resources.dll differ diff --git a/App/es/ReachFramework.resources.dll b/App/es/ReachFramework.resources.dll index 925ba637..d2f688e3 100644 Binary files a/App/es/ReachFramework.resources.dll and b/App/es/ReachFramework.resources.dll differ diff --git a/App/es/System.Windows.Controls.Ribbon.resources.dll b/App/es/System.Windows.Controls.Ribbon.resources.dll index 5334da6b..f35d41e0 100644 Binary files a/App/es/System.Windows.Controls.Ribbon.resources.dll and b/App/es/System.Windows.Controls.Ribbon.resources.dll differ diff --git a/App/es/System.Windows.Forms.Design.resources.dll b/App/es/System.Windows.Forms.Design.resources.dll index c737d4b3..a64c9f2c 100644 Binary files a/App/es/System.Windows.Forms.Design.resources.dll and b/App/es/System.Windows.Forms.Design.resources.dll differ diff --git a/App/es/System.Windows.Forms.Primitives.resources.dll b/App/es/System.Windows.Forms.Primitives.resources.dll index 87ee19e5..e152eb75 100644 Binary files a/App/es/System.Windows.Forms.Primitives.resources.dll and b/App/es/System.Windows.Forms.Primitives.resources.dll differ diff --git a/App/es/System.Windows.Forms.resources.dll b/App/es/System.Windows.Forms.resources.dll index b2a4cb9e..619e845c 100644 Binary files a/App/es/System.Windows.Forms.resources.dll and b/App/es/System.Windows.Forms.resources.dll differ diff --git a/App/es/System.Windows.Input.Manipulations.resources.dll b/App/es/System.Windows.Input.Manipulations.resources.dll index 3f04457a..d3434624 100644 Binary files a/App/es/System.Windows.Input.Manipulations.resources.dll and b/App/es/System.Windows.Input.Manipulations.resources.dll differ diff --git a/App/es/System.Xaml.resources.dll b/App/es/System.Xaml.resources.dll index 84a365fc..17d4028c 100644 Binary files a/App/es/System.Xaml.resources.dll and b/App/es/System.Xaml.resources.dll differ diff --git a/App/es/UIAutomationClient.resources.dll b/App/es/UIAutomationClient.resources.dll index a6eca4bf..17d95eb0 100644 Binary files a/App/es/UIAutomationClient.resources.dll and b/App/es/UIAutomationClient.resources.dll differ diff --git a/App/es/UIAutomationClientSideProviders.resources.dll b/App/es/UIAutomationClientSideProviders.resources.dll index 4bd5bd28..95d032be 100644 Binary files a/App/es/UIAutomationClientSideProviders.resources.dll and b/App/es/UIAutomationClientSideProviders.resources.dll differ diff --git a/App/es/UIAutomationProvider.resources.dll b/App/es/UIAutomationProvider.resources.dll index be6943ab..8ce140ff 100644 Binary files a/App/es/UIAutomationProvider.resources.dll and b/App/es/UIAutomationProvider.resources.dll differ diff --git a/App/es/UIAutomationTypes.resources.dll b/App/es/UIAutomationTypes.resources.dll index 4a0c0956..fbbd2474 100644 Binary files a/App/es/UIAutomationTypes.resources.dll and b/App/es/UIAutomationTypes.resources.dll differ diff --git a/App/es/WindowsBase.resources.dll b/App/es/WindowsBase.resources.dll index 3b694e82..0698aa8c 100644 Binary files a/App/es/WindowsBase.resources.dll and b/App/es/WindowsBase.resources.dll differ diff --git a/App/es/WindowsFormsIntegration.resources.dll b/App/es/WindowsFormsIntegration.resources.dll index a67bbd4e..dfa0a49d 100644 Binary files a/App/es/WindowsFormsIntegration.resources.dll and b/App/es/WindowsFormsIntegration.resources.dll differ diff --git a/App/fr/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll b/App/fr/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll index 9002c032..a66c2253 100644 Binary files a/App/fr/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll and b/App/fr/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll differ diff --git a/App/fr/Microsoft.CodeAnalysis.CSharp.resources.dll b/App/fr/Microsoft.CodeAnalysis.CSharp.resources.dll index 093412e2..28138621 100644 Binary files a/App/fr/Microsoft.CodeAnalysis.CSharp.resources.dll and b/App/fr/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/App/fr/Microsoft.CodeAnalysis.Scripting.resources.dll b/App/fr/Microsoft.CodeAnalysis.Scripting.resources.dll index 06ffb023..eeee2e2b 100644 Binary files a/App/fr/Microsoft.CodeAnalysis.Scripting.resources.dll and b/App/fr/Microsoft.CodeAnalysis.Scripting.resources.dll differ diff --git a/App/fr/Microsoft.CodeAnalysis.resources.dll b/App/fr/Microsoft.CodeAnalysis.resources.dll index 1fa9aaa5..4b0f16fb 100644 Binary files a/App/fr/Microsoft.CodeAnalysis.resources.dll and b/App/fr/Microsoft.CodeAnalysis.resources.dll differ diff --git a/App/fr/Microsoft.VisualBasic.Forms.resources.dll b/App/fr/Microsoft.VisualBasic.Forms.resources.dll index a0770311..f9fc8d85 100644 Binary files a/App/fr/Microsoft.VisualBasic.Forms.resources.dll and b/App/fr/Microsoft.VisualBasic.Forms.resources.dll differ diff --git a/App/fr/PresentationCore.resources.dll b/App/fr/PresentationCore.resources.dll index e2ce29cc..0e3f1331 100644 Binary files a/App/fr/PresentationCore.resources.dll and b/App/fr/PresentationCore.resources.dll differ diff --git a/App/fr/PresentationFramework.resources.dll b/App/fr/PresentationFramework.resources.dll index 33b20601..aa8d975c 100644 Binary files a/App/fr/PresentationFramework.resources.dll and b/App/fr/PresentationFramework.resources.dll differ diff --git a/App/fr/PresentationUI.resources.dll b/App/fr/PresentationUI.resources.dll index 57eeac2d..390fd6b5 100644 Binary files a/App/fr/PresentationUI.resources.dll and b/App/fr/PresentationUI.resources.dll differ diff --git a/App/fr/ReachFramework.resources.dll b/App/fr/ReachFramework.resources.dll index abcd6304..1fbe116e 100644 Binary files a/App/fr/ReachFramework.resources.dll and b/App/fr/ReachFramework.resources.dll differ diff --git a/App/fr/System.Windows.Controls.Ribbon.resources.dll b/App/fr/System.Windows.Controls.Ribbon.resources.dll index c4acb28e..75f115bc 100644 Binary files a/App/fr/System.Windows.Controls.Ribbon.resources.dll and b/App/fr/System.Windows.Controls.Ribbon.resources.dll differ diff --git a/App/fr/System.Windows.Forms.Design.resources.dll b/App/fr/System.Windows.Forms.Design.resources.dll index b1efa06e..935f1437 100644 Binary files a/App/fr/System.Windows.Forms.Design.resources.dll and b/App/fr/System.Windows.Forms.Design.resources.dll differ diff --git a/App/fr/System.Windows.Forms.Primitives.resources.dll b/App/fr/System.Windows.Forms.Primitives.resources.dll index 10d8c0f0..a517e222 100644 Binary files a/App/fr/System.Windows.Forms.Primitives.resources.dll and b/App/fr/System.Windows.Forms.Primitives.resources.dll differ diff --git a/App/fr/System.Windows.Forms.resources.dll b/App/fr/System.Windows.Forms.resources.dll index 86b9f2ea..0d80617d 100644 Binary files a/App/fr/System.Windows.Forms.resources.dll and b/App/fr/System.Windows.Forms.resources.dll differ diff --git a/App/fr/System.Windows.Input.Manipulations.resources.dll b/App/fr/System.Windows.Input.Manipulations.resources.dll index b88ab4b2..96b29aaa 100644 Binary files a/App/fr/System.Windows.Input.Manipulations.resources.dll and b/App/fr/System.Windows.Input.Manipulations.resources.dll differ diff --git a/App/fr/System.Xaml.resources.dll b/App/fr/System.Xaml.resources.dll index 63fa344e..e7ff3a60 100644 Binary files a/App/fr/System.Xaml.resources.dll and b/App/fr/System.Xaml.resources.dll differ diff --git a/App/fr/UIAutomationClient.resources.dll b/App/fr/UIAutomationClient.resources.dll index abfb541e..58a3fdd8 100644 Binary files a/App/fr/UIAutomationClient.resources.dll and b/App/fr/UIAutomationClient.resources.dll differ diff --git a/App/fr/UIAutomationClientSideProviders.resources.dll b/App/fr/UIAutomationClientSideProviders.resources.dll index 6c15311d..edfa3482 100644 Binary files a/App/fr/UIAutomationClientSideProviders.resources.dll and b/App/fr/UIAutomationClientSideProviders.resources.dll differ diff --git a/App/fr/UIAutomationProvider.resources.dll b/App/fr/UIAutomationProvider.resources.dll index ab82caa2..adcf46ac 100644 Binary files a/App/fr/UIAutomationProvider.resources.dll and b/App/fr/UIAutomationProvider.resources.dll differ diff --git a/App/fr/UIAutomationTypes.resources.dll b/App/fr/UIAutomationTypes.resources.dll index eaa476ea..952d38c8 100644 Binary files a/App/fr/UIAutomationTypes.resources.dll and b/App/fr/UIAutomationTypes.resources.dll differ diff --git a/App/fr/WindowsBase.resources.dll b/App/fr/WindowsBase.resources.dll index e43b4be8..a0fca92a 100644 Binary files a/App/fr/WindowsBase.resources.dll and b/App/fr/WindowsBase.resources.dll differ diff --git a/App/fr/WindowsFormsIntegration.resources.dll b/App/fr/WindowsFormsIntegration.resources.dll index a818bff8..2266eba3 100644 Binary files a/App/fr/WindowsFormsIntegration.resources.dll and b/App/fr/WindowsFormsIntegration.resources.dll differ diff --git a/App/hi-key.dll b/App/hi-key.dll index de7c7248..3bf36602 100644 Binary files a/App/hi-key.dll and b/App/hi-key.dll differ diff --git a/App/hostfxr.dll b/App/hostfxr.dll index 0a74de5f..2ee75e03 100644 Binary files a/App/hostfxr.dll and b/App/hostfxr.dll differ diff --git a/App/hostpolicy.dll b/App/hostpolicy.dll index 93e9574c..b79c99af 100644 Binary files a/App/hostpolicy.dll and b/App/hostpolicy.dll differ diff --git a/App/it/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll b/App/it/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll index 7c1faf07..a3b0133d 100644 Binary files a/App/it/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll and b/App/it/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll differ diff --git a/App/it/Microsoft.CodeAnalysis.CSharp.resources.dll b/App/it/Microsoft.CodeAnalysis.CSharp.resources.dll index 8271ba06..c1d8f0bf 100644 Binary files a/App/it/Microsoft.CodeAnalysis.CSharp.resources.dll and b/App/it/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/App/it/Microsoft.CodeAnalysis.Scripting.resources.dll b/App/it/Microsoft.CodeAnalysis.Scripting.resources.dll index 86751b0a..a8fd274c 100644 Binary files a/App/it/Microsoft.CodeAnalysis.Scripting.resources.dll and b/App/it/Microsoft.CodeAnalysis.Scripting.resources.dll differ diff --git a/App/it/Microsoft.CodeAnalysis.resources.dll b/App/it/Microsoft.CodeAnalysis.resources.dll index ce986ea4..7d8d7929 100644 Binary files a/App/it/Microsoft.CodeAnalysis.resources.dll and b/App/it/Microsoft.CodeAnalysis.resources.dll differ diff --git a/App/it/Microsoft.VisualBasic.Forms.resources.dll b/App/it/Microsoft.VisualBasic.Forms.resources.dll index ed996771..fc0ca517 100644 Binary files a/App/it/Microsoft.VisualBasic.Forms.resources.dll and b/App/it/Microsoft.VisualBasic.Forms.resources.dll differ diff --git a/App/it/PresentationCore.resources.dll b/App/it/PresentationCore.resources.dll index 455ad53b..f098467e 100644 Binary files a/App/it/PresentationCore.resources.dll and b/App/it/PresentationCore.resources.dll differ diff --git a/App/it/PresentationFramework.resources.dll b/App/it/PresentationFramework.resources.dll index c7f8cea0..83d254ca 100644 Binary files a/App/it/PresentationFramework.resources.dll and b/App/it/PresentationFramework.resources.dll differ diff --git a/App/it/PresentationUI.resources.dll b/App/it/PresentationUI.resources.dll index 18d1e578..6dfa9b75 100644 Binary files a/App/it/PresentationUI.resources.dll and b/App/it/PresentationUI.resources.dll differ diff --git a/App/it/ReachFramework.resources.dll b/App/it/ReachFramework.resources.dll index afc03597..54f645e4 100644 Binary files a/App/it/ReachFramework.resources.dll and b/App/it/ReachFramework.resources.dll differ diff --git a/App/it/System.Windows.Controls.Ribbon.resources.dll b/App/it/System.Windows.Controls.Ribbon.resources.dll index 9679b737..38861bb3 100644 Binary files a/App/it/System.Windows.Controls.Ribbon.resources.dll and b/App/it/System.Windows.Controls.Ribbon.resources.dll differ diff --git a/App/it/System.Windows.Forms.Design.resources.dll b/App/it/System.Windows.Forms.Design.resources.dll index 51d98345..03e375d0 100644 Binary files a/App/it/System.Windows.Forms.Design.resources.dll and b/App/it/System.Windows.Forms.Design.resources.dll differ diff --git a/App/it/System.Windows.Forms.Primitives.resources.dll b/App/it/System.Windows.Forms.Primitives.resources.dll index fca56085..2230db51 100644 Binary files a/App/it/System.Windows.Forms.Primitives.resources.dll and b/App/it/System.Windows.Forms.Primitives.resources.dll differ diff --git a/App/it/System.Windows.Forms.resources.dll b/App/it/System.Windows.Forms.resources.dll index f2f5feb3..58894deb 100644 Binary files a/App/it/System.Windows.Forms.resources.dll and b/App/it/System.Windows.Forms.resources.dll differ diff --git a/App/it/System.Windows.Input.Manipulations.resources.dll b/App/it/System.Windows.Input.Manipulations.resources.dll index 0be62c93..5a9debf0 100644 Binary files a/App/it/System.Windows.Input.Manipulations.resources.dll and b/App/it/System.Windows.Input.Manipulations.resources.dll differ diff --git a/App/it/System.Xaml.resources.dll b/App/it/System.Xaml.resources.dll index e1d9bce1..43f68f1e 100644 Binary files a/App/it/System.Xaml.resources.dll and b/App/it/System.Xaml.resources.dll differ diff --git a/App/it/UIAutomationClient.resources.dll b/App/it/UIAutomationClient.resources.dll index c2ed1789..93282137 100644 Binary files a/App/it/UIAutomationClient.resources.dll and b/App/it/UIAutomationClient.resources.dll differ diff --git a/App/it/UIAutomationClientSideProviders.resources.dll b/App/it/UIAutomationClientSideProviders.resources.dll index d4a07501..a23f2e64 100644 Binary files a/App/it/UIAutomationClientSideProviders.resources.dll and b/App/it/UIAutomationClientSideProviders.resources.dll differ diff --git a/App/it/UIAutomationProvider.resources.dll b/App/it/UIAutomationProvider.resources.dll index 890c08e1..27c74f1c 100644 Binary files a/App/it/UIAutomationProvider.resources.dll and b/App/it/UIAutomationProvider.resources.dll differ diff --git a/App/it/UIAutomationTypes.resources.dll b/App/it/UIAutomationTypes.resources.dll index 0d8db389..604bfa20 100644 Binary files a/App/it/UIAutomationTypes.resources.dll and b/App/it/UIAutomationTypes.resources.dll differ diff --git a/App/it/WindowsBase.resources.dll b/App/it/WindowsBase.resources.dll index 33645877..d7c8a2bd 100644 Binary files a/App/it/WindowsBase.resources.dll and b/App/it/WindowsBase.resources.dll differ diff --git a/App/it/WindowsFormsIntegration.resources.dll b/App/it/WindowsFormsIntegration.resources.dll index 53284b2c..01c897df 100644 Binary files a/App/it/WindowsFormsIntegration.resources.dll and b/App/it/WindowsFormsIntegration.resources.dll differ diff --git a/App/ja/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll b/App/ja/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll index 572f4b12..06da4cfa 100644 Binary files a/App/ja/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll and b/App/ja/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll differ diff --git a/App/ja/Microsoft.CodeAnalysis.CSharp.resources.dll b/App/ja/Microsoft.CodeAnalysis.CSharp.resources.dll index 606d33f1..891b499a 100644 Binary files a/App/ja/Microsoft.CodeAnalysis.CSharp.resources.dll and b/App/ja/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/App/ja/Microsoft.CodeAnalysis.Scripting.resources.dll b/App/ja/Microsoft.CodeAnalysis.Scripting.resources.dll index f28e92f9..60020e1a 100644 Binary files a/App/ja/Microsoft.CodeAnalysis.Scripting.resources.dll and b/App/ja/Microsoft.CodeAnalysis.Scripting.resources.dll differ diff --git a/App/ja/Microsoft.CodeAnalysis.resources.dll b/App/ja/Microsoft.CodeAnalysis.resources.dll index cf66bf78..456bb4cb 100644 Binary files a/App/ja/Microsoft.CodeAnalysis.resources.dll and b/App/ja/Microsoft.CodeAnalysis.resources.dll differ diff --git a/App/ja/Microsoft.VisualBasic.Forms.resources.dll b/App/ja/Microsoft.VisualBasic.Forms.resources.dll index 994b78c6..fe62e646 100644 Binary files a/App/ja/Microsoft.VisualBasic.Forms.resources.dll and b/App/ja/Microsoft.VisualBasic.Forms.resources.dll differ diff --git a/App/ja/PresentationCore.resources.dll b/App/ja/PresentationCore.resources.dll index d7a90e31..7cbd1812 100644 Binary files a/App/ja/PresentationCore.resources.dll and b/App/ja/PresentationCore.resources.dll differ diff --git a/App/ja/PresentationFramework.resources.dll b/App/ja/PresentationFramework.resources.dll index 2cba17fb..94c82183 100644 Binary files a/App/ja/PresentationFramework.resources.dll and b/App/ja/PresentationFramework.resources.dll differ diff --git a/App/ja/PresentationUI.resources.dll b/App/ja/PresentationUI.resources.dll index 2b667f72..0bdf8e0f 100644 Binary files a/App/ja/PresentationUI.resources.dll and b/App/ja/PresentationUI.resources.dll differ diff --git a/App/ja/ReachFramework.resources.dll b/App/ja/ReachFramework.resources.dll index afd69376..6fd774bb 100644 Binary files a/App/ja/ReachFramework.resources.dll and b/App/ja/ReachFramework.resources.dll differ diff --git a/App/ja/System.Windows.Controls.Ribbon.resources.dll b/App/ja/System.Windows.Controls.Ribbon.resources.dll index 97eb64d2..e0e4331a 100644 Binary files a/App/ja/System.Windows.Controls.Ribbon.resources.dll and b/App/ja/System.Windows.Controls.Ribbon.resources.dll differ diff --git a/App/ja/System.Windows.Forms.Design.resources.dll b/App/ja/System.Windows.Forms.Design.resources.dll index 1b7f449a..92bbcdce 100644 Binary files a/App/ja/System.Windows.Forms.Design.resources.dll and b/App/ja/System.Windows.Forms.Design.resources.dll differ diff --git a/App/ja/System.Windows.Forms.Primitives.resources.dll b/App/ja/System.Windows.Forms.Primitives.resources.dll index 486419b7..6515f003 100644 Binary files a/App/ja/System.Windows.Forms.Primitives.resources.dll and b/App/ja/System.Windows.Forms.Primitives.resources.dll differ diff --git a/App/ja/System.Windows.Forms.resources.dll b/App/ja/System.Windows.Forms.resources.dll index a80d21ae..8f41e4f6 100644 Binary files a/App/ja/System.Windows.Forms.resources.dll and b/App/ja/System.Windows.Forms.resources.dll differ diff --git a/App/ja/System.Windows.Input.Manipulations.resources.dll b/App/ja/System.Windows.Input.Manipulations.resources.dll index b9ec3b0f..a09e0ee5 100644 Binary files a/App/ja/System.Windows.Input.Manipulations.resources.dll and b/App/ja/System.Windows.Input.Manipulations.resources.dll differ diff --git a/App/ja/System.Xaml.resources.dll b/App/ja/System.Xaml.resources.dll index 7f8989f0..11edc1cc 100644 Binary files a/App/ja/System.Xaml.resources.dll and b/App/ja/System.Xaml.resources.dll differ diff --git a/App/ja/UIAutomationClient.resources.dll b/App/ja/UIAutomationClient.resources.dll index 890f2e06..6cdf45a6 100644 Binary files a/App/ja/UIAutomationClient.resources.dll and b/App/ja/UIAutomationClient.resources.dll differ diff --git a/App/ja/UIAutomationClientSideProviders.resources.dll b/App/ja/UIAutomationClientSideProviders.resources.dll index b587dd8b..af9fbec4 100644 Binary files a/App/ja/UIAutomationClientSideProviders.resources.dll and b/App/ja/UIAutomationClientSideProviders.resources.dll differ diff --git a/App/ja/UIAutomationProvider.resources.dll b/App/ja/UIAutomationProvider.resources.dll index 230e97a8..963afbfa 100644 Binary files a/App/ja/UIAutomationProvider.resources.dll and b/App/ja/UIAutomationProvider.resources.dll differ diff --git a/App/ja/UIAutomationTypes.resources.dll b/App/ja/UIAutomationTypes.resources.dll index 5350ea69..3299c152 100644 Binary files a/App/ja/UIAutomationTypes.resources.dll and b/App/ja/UIAutomationTypes.resources.dll differ diff --git a/App/ja/WindowsBase.resources.dll b/App/ja/WindowsBase.resources.dll index e3dcc847..bfac8f99 100644 Binary files a/App/ja/WindowsBase.resources.dll and b/App/ja/WindowsBase.resources.dll differ diff --git a/App/ja/WindowsFormsIntegration.resources.dll b/App/ja/WindowsFormsIntegration.resources.dll index 803d68f4..35a58623 100644 Binary files a/App/ja/WindowsFormsIntegration.resources.dll and b/App/ja/WindowsFormsIntegration.resources.dll differ diff --git a/App/ko/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll b/App/ko/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll index 6234f622..86aa4d7c 100644 Binary files a/App/ko/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll and b/App/ko/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll differ diff --git a/App/ko/Microsoft.CodeAnalysis.CSharp.resources.dll b/App/ko/Microsoft.CodeAnalysis.CSharp.resources.dll index 77c17c0c..fb7c03bc 100644 Binary files a/App/ko/Microsoft.CodeAnalysis.CSharp.resources.dll and b/App/ko/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/App/ko/Microsoft.CodeAnalysis.Scripting.resources.dll b/App/ko/Microsoft.CodeAnalysis.Scripting.resources.dll index 04add7a2..afb9cd75 100644 Binary files a/App/ko/Microsoft.CodeAnalysis.Scripting.resources.dll and b/App/ko/Microsoft.CodeAnalysis.Scripting.resources.dll differ diff --git a/App/ko/Microsoft.CodeAnalysis.resources.dll b/App/ko/Microsoft.CodeAnalysis.resources.dll index 8847743d..0dca5fcd 100644 Binary files a/App/ko/Microsoft.CodeAnalysis.resources.dll and b/App/ko/Microsoft.CodeAnalysis.resources.dll differ diff --git a/App/ko/Microsoft.VisualBasic.Forms.resources.dll b/App/ko/Microsoft.VisualBasic.Forms.resources.dll index fc3c2743..5b8c2f67 100644 Binary files a/App/ko/Microsoft.VisualBasic.Forms.resources.dll and b/App/ko/Microsoft.VisualBasic.Forms.resources.dll differ diff --git a/App/ko/PresentationCore.resources.dll b/App/ko/PresentationCore.resources.dll index 9d46e472..f2429681 100644 Binary files a/App/ko/PresentationCore.resources.dll and b/App/ko/PresentationCore.resources.dll differ diff --git a/App/ko/PresentationFramework.resources.dll b/App/ko/PresentationFramework.resources.dll index 7edeffc9..636be89f 100644 Binary files a/App/ko/PresentationFramework.resources.dll and b/App/ko/PresentationFramework.resources.dll differ diff --git a/App/ko/PresentationUI.resources.dll b/App/ko/PresentationUI.resources.dll index 1d2206fe..172de46e 100644 Binary files a/App/ko/PresentationUI.resources.dll and b/App/ko/PresentationUI.resources.dll differ diff --git a/App/ko/ReachFramework.resources.dll b/App/ko/ReachFramework.resources.dll index 3903dc74..841522e5 100644 Binary files a/App/ko/ReachFramework.resources.dll and b/App/ko/ReachFramework.resources.dll differ diff --git a/App/ko/System.Windows.Controls.Ribbon.resources.dll b/App/ko/System.Windows.Controls.Ribbon.resources.dll index 30c08168..a026442a 100644 Binary files a/App/ko/System.Windows.Controls.Ribbon.resources.dll and b/App/ko/System.Windows.Controls.Ribbon.resources.dll differ diff --git a/App/ko/System.Windows.Forms.Design.resources.dll b/App/ko/System.Windows.Forms.Design.resources.dll index d21ba54b..bb1195c6 100644 Binary files a/App/ko/System.Windows.Forms.Design.resources.dll and b/App/ko/System.Windows.Forms.Design.resources.dll differ diff --git a/App/ko/System.Windows.Forms.Primitives.resources.dll b/App/ko/System.Windows.Forms.Primitives.resources.dll index ad7125b2..34e819a6 100644 Binary files a/App/ko/System.Windows.Forms.Primitives.resources.dll and b/App/ko/System.Windows.Forms.Primitives.resources.dll differ diff --git a/App/ko/System.Windows.Forms.resources.dll b/App/ko/System.Windows.Forms.resources.dll index a0bc6c4b..e4a7a108 100644 Binary files a/App/ko/System.Windows.Forms.resources.dll and b/App/ko/System.Windows.Forms.resources.dll differ diff --git a/App/ko/System.Windows.Input.Manipulations.resources.dll b/App/ko/System.Windows.Input.Manipulations.resources.dll index 4a1807f7..1e516b9c 100644 Binary files a/App/ko/System.Windows.Input.Manipulations.resources.dll and b/App/ko/System.Windows.Input.Manipulations.resources.dll differ diff --git a/App/ko/System.Xaml.resources.dll b/App/ko/System.Xaml.resources.dll index c554f648..169e975a 100644 Binary files a/App/ko/System.Xaml.resources.dll and b/App/ko/System.Xaml.resources.dll differ diff --git a/App/ko/UIAutomationClient.resources.dll b/App/ko/UIAutomationClient.resources.dll index 7387c8eb..5760a5e1 100644 Binary files a/App/ko/UIAutomationClient.resources.dll and b/App/ko/UIAutomationClient.resources.dll differ diff --git a/App/ko/UIAutomationClientSideProviders.resources.dll b/App/ko/UIAutomationClientSideProviders.resources.dll index ed1675a5..cb41db4f 100644 Binary files a/App/ko/UIAutomationClientSideProviders.resources.dll and b/App/ko/UIAutomationClientSideProviders.resources.dll differ diff --git a/App/ko/UIAutomationProvider.resources.dll b/App/ko/UIAutomationProvider.resources.dll index 1e47355c..1037f0c2 100644 Binary files a/App/ko/UIAutomationProvider.resources.dll and b/App/ko/UIAutomationProvider.resources.dll differ diff --git a/App/ko/UIAutomationTypes.resources.dll b/App/ko/UIAutomationTypes.resources.dll index 29c93702..79f70ebe 100644 Binary files a/App/ko/UIAutomationTypes.resources.dll and b/App/ko/UIAutomationTypes.resources.dll differ diff --git a/App/ko/WindowsBase.resources.dll b/App/ko/WindowsBase.resources.dll index 38f0c362..345a931a 100644 Binary files a/App/ko/WindowsBase.resources.dll and b/App/ko/WindowsBase.resources.dll differ diff --git a/App/ko/WindowsFormsIntegration.resources.dll b/App/ko/WindowsFormsIntegration.resources.dll index 1f6ddbb4..3472e39b 100644 Binary files a/App/ko/WindowsFormsIntegration.resources.dll and b/App/ko/WindowsFormsIntegration.resources.dll differ diff --git a/App/mscordaccore.dll b/App/mscordaccore.dll index d5f48ff8..0a734784 100644 Binary files a/App/mscordaccore.dll and b/App/mscordaccore.dll differ diff --git a/App/mscordaccore_amd64_amd64_10.0.1126.37416.dll b/App/mscordaccore_amd64_amd64_10.0.1126.37416.dll new file mode 100644 index 00000000..0a734784 Binary files /dev/null and b/App/mscordaccore_amd64_amd64_10.0.1126.37416.dll differ diff --git a/App/mscordaccore_amd64_amd64_10.0.826.23019.dll b/App/mscordaccore_amd64_amd64_10.0.826.23019.dll deleted file mode 100644 index d5f48ff8..00000000 Binary files a/App/mscordaccore_amd64_amd64_10.0.826.23019.dll and /dev/null differ diff --git a/App/mscordbi.dll b/App/mscordbi.dll index 30a64989..02f1aa8c 100644 Binary files a/App/mscordbi.dll and b/App/mscordbi.dll differ diff --git a/App/mscorlib.dll b/App/mscorlib.dll index 2485e71e..fcf806e7 100644 Binary files a/App/mscorlib.dll and b/App/mscorlib.dll differ diff --git a/App/mscorrc.dll b/App/mscorrc.dll index d4571e17..953aa29b 100644 Binary files a/App/mscorrc.dll and b/App/mscorrc.dll differ diff --git a/App/msquic.dll b/App/msquic.dll index 9f0824ab..3ccd8626 100644 Binary files a/App/msquic.dll and b/App/msquic.dll differ diff --git a/App/netstandard.dll b/App/netstandard.dll index d871880f..96a47ff1 100644 Binary files a/App/netstandard.dll and b/App/netstandard.dll differ diff --git a/App/pl/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll b/App/pl/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll index 98df1be4..09405130 100644 Binary files a/App/pl/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll and b/App/pl/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll differ diff --git a/App/pl/Microsoft.CodeAnalysis.CSharp.resources.dll b/App/pl/Microsoft.CodeAnalysis.CSharp.resources.dll index ebdd094b..b2a83f9a 100644 Binary files a/App/pl/Microsoft.CodeAnalysis.CSharp.resources.dll and b/App/pl/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/App/pl/Microsoft.CodeAnalysis.Scripting.resources.dll b/App/pl/Microsoft.CodeAnalysis.Scripting.resources.dll index a003b02f..e5956b00 100644 Binary files a/App/pl/Microsoft.CodeAnalysis.Scripting.resources.dll and b/App/pl/Microsoft.CodeAnalysis.Scripting.resources.dll differ diff --git a/App/pl/Microsoft.CodeAnalysis.resources.dll b/App/pl/Microsoft.CodeAnalysis.resources.dll index 29ab5e24..2c71a4df 100644 Binary files a/App/pl/Microsoft.CodeAnalysis.resources.dll and b/App/pl/Microsoft.CodeAnalysis.resources.dll differ diff --git a/App/pl/Microsoft.VisualBasic.Forms.resources.dll b/App/pl/Microsoft.VisualBasic.Forms.resources.dll index c6ac6f97..2c87f912 100644 Binary files a/App/pl/Microsoft.VisualBasic.Forms.resources.dll and b/App/pl/Microsoft.VisualBasic.Forms.resources.dll differ diff --git a/App/pl/PresentationCore.resources.dll b/App/pl/PresentationCore.resources.dll index d0c866b1..ec781781 100644 Binary files a/App/pl/PresentationCore.resources.dll and b/App/pl/PresentationCore.resources.dll differ diff --git a/App/pl/PresentationFramework.resources.dll b/App/pl/PresentationFramework.resources.dll index 9ba698fa..3a673969 100644 Binary files a/App/pl/PresentationFramework.resources.dll and b/App/pl/PresentationFramework.resources.dll differ diff --git a/App/pl/PresentationUI.resources.dll b/App/pl/PresentationUI.resources.dll index 6b4a7613..f4808b09 100644 Binary files a/App/pl/PresentationUI.resources.dll and b/App/pl/PresentationUI.resources.dll differ diff --git a/App/pl/ReachFramework.resources.dll b/App/pl/ReachFramework.resources.dll index 2e0be58a..a8218cae 100644 Binary files a/App/pl/ReachFramework.resources.dll and b/App/pl/ReachFramework.resources.dll differ diff --git a/App/pl/System.Windows.Controls.Ribbon.resources.dll b/App/pl/System.Windows.Controls.Ribbon.resources.dll index ef33d267..f384d1cf 100644 Binary files a/App/pl/System.Windows.Controls.Ribbon.resources.dll and b/App/pl/System.Windows.Controls.Ribbon.resources.dll differ diff --git a/App/pl/System.Windows.Forms.Design.resources.dll b/App/pl/System.Windows.Forms.Design.resources.dll index 39849260..f07ef692 100644 Binary files a/App/pl/System.Windows.Forms.Design.resources.dll and b/App/pl/System.Windows.Forms.Design.resources.dll differ diff --git a/App/pl/System.Windows.Forms.Primitives.resources.dll b/App/pl/System.Windows.Forms.Primitives.resources.dll index 74791070..a66c87b7 100644 Binary files a/App/pl/System.Windows.Forms.Primitives.resources.dll and b/App/pl/System.Windows.Forms.Primitives.resources.dll differ diff --git a/App/pl/System.Windows.Forms.resources.dll b/App/pl/System.Windows.Forms.resources.dll index 8d4ee1d1..da0d61c3 100644 Binary files a/App/pl/System.Windows.Forms.resources.dll and b/App/pl/System.Windows.Forms.resources.dll differ diff --git a/App/pl/System.Windows.Input.Manipulations.resources.dll b/App/pl/System.Windows.Input.Manipulations.resources.dll index 6b203339..99cf3853 100644 Binary files a/App/pl/System.Windows.Input.Manipulations.resources.dll and b/App/pl/System.Windows.Input.Manipulations.resources.dll differ diff --git a/App/pl/System.Xaml.resources.dll b/App/pl/System.Xaml.resources.dll index ac4a6d3b..af2bdafe 100644 Binary files a/App/pl/System.Xaml.resources.dll and b/App/pl/System.Xaml.resources.dll differ diff --git a/App/pl/UIAutomationClient.resources.dll b/App/pl/UIAutomationClient.resources.dll index 5322f268..2eb34bfc 100644 Binary files a/App/pl/UIAutomationClient.resources.dll and b/App/pl/UIAutomationClient.resources.dll differ diff --git a/App/pl/UIAutomationClientSideProviders.resources.dll b/App/pl/UIAutomationClientSideProviders.resources.dll index 2dd3f20b..bd153986 100644 Binary files a/App/pl/UIAutomationClientSideProviders.resources.dll and b/App/pl/UIAutomationClientSideProviders.resources.dll differ diff --git a/App/pl/UIAutomationProvider.resources.dll b/App/pl/UIAutomationProvider.resources.dll index 4ab552b4..88bf6b36 100644 Binary files a/App/pl/UIAutomationProvider.resources.dll and b/App/pl/UIAutomationProvider.resources.dll differ diff --git a/App/pl/UIAutomationTypes.resources.dll b/App/pl/UIAutomationTypes.resources.dll index d3caa568..d39f5569 100644 Binary files a/App/pl/UIAutomationTypes.resources.dll and b/App/pl/UIAutomationTypes.resources.dll differ diff --git a/App/pl/WindowsBase.resources.dll b/App/pl/WindowsBase.resources.dll index a64a1e51..4f799f66 100644 Binary files a/App/pl/WindowsBase.resources.dll and b/App/pl/WindowsBase.resources.dll differ diff --git a/App/pl/WindowsFormsIntegration.resources.dll b/App/pl/WindowsFormsIntegration.resources.dll index c88d98dd..a0fe522f 100644 Binary files a/App/pl/WindowsFormsIntegration.resources.dll and b/App/pl/WindowsFormsIntegration.resources.dll differ diff --git a/App/pt-BR/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll b/App/pt-BR/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll index de19d6b4..a6f9b00e 100644 Binary files a/App/pt-BR/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll and b/App/pt-BR/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll differ diff --git a/App/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll b/App/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll index e6e859f2..8db0efea 100644 Binary files a/App/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll and b/App/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/App/pt-BR/Microsoft.CodeAnalysis.Scripting.resources.dll b/App/pt-BR/Microsoft.CodeAnalysis.Scripting.resources.dll index ce60152f..6c674723 100644 Binary files a/App/pt-BR/Microsoft.CodeAnalysis.Scripting.resources.dll and b/App/pt-BR/Microsoft.CodeAnalysis.Scripting.resources.dll differ diff --git a/App/pt-BR/Microsoft.CodeAnalysis.resources.dll b/App/pt-BR/Microsoft.CodeAnalysis.resources.dll index 3ecc7058..4062eade 100644 Binary files a/App/pt-BR/Microsoft.CodeAnalysis.resources.dll and b/App/pt-BR/Microsoft.CodeAnalysis.resources.dll differ diff --git a/App/pt-BR/Microsoft.VisualBasic.Forms.resources.dll b/App/pt-BR/Microsoft.VisualBasic.Forms.resources.dll index 712a65ee..b0625ef2 100644 Binary files a/App/pt-BR/Microsoft.VisualBasic.Forms.resources.dll and b/App/pt-BR/Microsoft.VisualBasic.Forms.resources.dll differ diff --git a/App/pt-BR/PresentationCore.resources.dll b/App/pt-BR/PresentationCore.resources.dll index 03cdba43..959ec9f4 100644 Binary files a/App/pt-BR/PresentationCore.resources.dll and b/App/pt-BR/PresentationCore.resources.dll differ diff --git a/App/pt-BR/PresentationFramework.resources.dll b/App/pt-BR/PresentationFramework.resources.dll index 951a3f0d..6e890a05 100644 Binary files a/App/pt-BR/PresentationFramework.resources.dll and b/App/pt-BR/PresentationFramework.resources.dll differ diff --git a/App/pt-BR/PresentationUI.resources.dll b/App/pt-BR/PresentationUI.resources.dll index 4812e9ed..43c8bbcf 100644 Binary files a/App/pt-BR/PresentationUI.resources.dll and b/App/pt-BR/PresentationUI.resources.dll differ diff --git a/App/pt-BR/ReachFramework.resources.dll b/App/pt-BR/ReachFramework.resources.dll index 1bcaa0a5..0cf29532 100644 Binary files a/App/pt-BR/ReachFramework.resources.dll and b/App/pt-BR/ReachFramework.resources.dll differ diff --git a/App/pt-BR/System.Windows.Controls.Ribbon.resources.dll b/App/pt-BR/System.Windows.Controls.Ribbon.resources.dll index 83f93148..61b73eb9 100644 Binary files a/App/pt-BR/System.Windows.Controls.Ribbon.resources.dll and b/App/pt-BR/System.Windows.Controls.Ribbon.resources.dll differ diff --git a/App/pt-BR/System.Windows.Forms.Design.resources.dll b/App/pt-BR/System.Windows.Forms.Design.resources.dll index 793178e6..441f13f8 100644 Binary files a/App/pt-BR/System.Windows.Forms.Design.resources.dll and b/App/pt-BR/System.Windows.Forms.Design.resources.dll differ diff --git a/App/pt-BR/System.Windows.Forms.Primitives.resources.dll b/App/pt-BR/System.Windows.Forms.Primitives.resources.dll index 4f4dfca8..c131dd09 100644 Binary files a/App/pt-BR/System.Windows.Forms.Primitives.resources.dll and b/App/pt-BR/System.Windows.Forms.Primitives.resources.dll differ diff --git a/App/pt-BR/System.Windows.Forms.resources.dll b/App/pt-BR/System.Windows.Forms.resources.dll index c74391da..2a3ebde0 100644 Binary files a/App/pt-BR/System.Windows.Forms.resources.dll and b/App/pt-BR/System.Windows.Forms.resources.dll differ diff --git a/App/pt-BR/System.Windows.Input.Manipulations.resources.dll b/App/pt-BR/System.Windows.Input.Manipulations.resources.dll index b8c04745..d60a5276 100644 Binary files a/App/pt-BR/System.Windows.Input.Manipulations.resources.dll and b/App/pt-BR/System.Windows.Input.Manipulations.resources.dll differ diff --git a/App/pt-BR/System.Xaml.resources.dll b/App/pt-BR/System.Xaml.resources.dll index 90fa7b66..c05094f4 100644 Binary files a/App/pt-BR/System.Xaml.resources.dll and b/App/pt-BR/System.Xaml.resources.dll differ diff --git a/App/pt-BR/UIAutomationClient.resources.dll b/App/pt-BR/UIAutomationClient.resources.dll index 5cc02695..299484cd 100644 Binary files a/App/pt-BR/UIAutomationClient.resources.dll and b/App/pt-BR/UIAutomationClient.resources.dll differ diff --git a/App/pt-BR/UIAutomationClientSideProviders.resources.dll b/App/pt-BR/UIAutomationClientSideProviders.resources.dll index 976e774b..ea2a6fe5 100644 Binary files a/App/pt-BR/UIAutomationClientSideProviders.resources.dll and b/App/pt-BR/UIAutomationClientSideProviders.resources.dll differ diff --git a/App/pt-BR/UIAutomationProvider.resources.dll b/App/pt-BR/UIAutomationProvider.resources.dll index e8d99176..a213841f 100644 Binary files a/App/pt-BR/UIAutomationProvider.resources.dll and b/App/pt-BR/UIAutomationProvider.resources.dll differ diff --git a/App/pt-BR/UIAutomationTypes.resources.dll b/App/pt-BR/UIAutomationTypes.resources.dll index 90001bd4..79bffbe1 100644 Binary files a/App/pt-BR/UIAutomationTypes.resources.dll and b/App/pt-BR/UIAutomationTypes.resources.dll differ diff --git a/App/pt-BR/WindowsBase.resources.dll b/App/pt-BR/WindowsBase.resources.dll index 851d7517..9942e695 100644 Binary files a/App/pt-BR/WindowsBase.resources.dll and b/App/pt-BR/WindowsBase.resources.dll differ diff --git a/App/pt-BR/WindowsFormsIntegration.resources.dll b/App/pt-BR/WindowsFormsIntegration.resources.dll index 6198cdb0..3c5f74a6 100644 Binary files a/App/pt-BR/WindowsFormsIntegration.resources.dll and b/App/pt-BR/WindowsFormsIntegration.resources.dll differ diff --git a/App/ru/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll b/App/ru/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll index b6fd6ed0..6b6f7138 100644 Binary files a/App/ru/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll and b/App/ru/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll differ diff --git a/App/ru/Microsoft.CodeAnalysis.CSharp.resources.dll b/App/ru/Microsoft.CodeAnalysis.CSharp.resources.dll index bdb13d05..fa0c6000 100644 Binary files a/App/ru/Microsoft.CodeAnalysis.CSharp.resources.dll and b/App/ru/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/App/ru/Microsoft.CodeAnalysis.Scripting.resources.dll b/App/ru/Microsoft.CodeAnalysis.Scripting.resources.dll index bd737d6b..0b24b331 100644 Binary files a/App/ru/Microsoft.CodeAnalysis.Scripting.resources.dll and b/App/ru/Microsoft.CodeAnalysis.Scripting.resources.dll differ diff --git a/App/ru/Microsoft.CodeAnalysis.resources.dll b/App/ru/Microsoft.CodeAnalysis.resources.dll index dbe0a8bf..174a1596 100644 Binary files a/App/ru/Microsoft.CodeAnalysis.resources.dll and b/App/ru/Microsoft.CodeAnalysis.resources.dll differ diff --git a/App/ru/Microsoft.VisualBasic.Forms.resources.dll b/App/ru/Microsoft.VisualBasic.Forms.resources.dll index 8d6fbc3b..84fd9563 100644 Binary files a/App/ru/Microsoft.VisualBasic.Forms.resources.dll and b/App/ru/Microsoft.VisualBasic.Forms.resources.dll differ diff --git a/App/ru/PresentationCore.resources.dll b/App/ru/PresentationCore.resources.dll index e1a75c34..a0b62a86 100644 Binary files a/App/ru/PresentationCore.resources.dll and b/App/ru/PresentationCore.resources.dll differ diff --git a/App/ru/PresentationFramework.resources.dll b/App/ru/PresentationFramework.resources.dll index cac866f3..15786344 100644 Binary files a/App/ru/PresentationFramework.resources.dll and b/App/ru/PresentationFramework.resources.dll differ diff --git a/App/ru/PresentationUI.resources.dll b/App/ru/PresentationUI.resources.dll index d83b671f..d2edbd5e 100644 Binary files a/App/ru/PresentationUI.resources.dll and b/App/ru/PresentationUI.resources.dll differ diff --git a/App/ru/ReachFramework.resources.dll b/App/ru/ReachFramework.resources.dll index 23b7cbd0..b9706ef6 100644 Binary files a/App/ru/ReachFramework.resources.dll and b/App/ru/ReachFramework.resources.dll differ diff --git a/App/ru/System.Windows.Controls.Ribbon.resources.dll b/App/ru/System.Windows.Controls.Ribbon.resources.dll index adae8ccc..10907126 100644 Binary files a/App/ru/System.Windows.Controls.Ribbon.resources.dll and b/App/ru/System.Windows.Controls.Ribbon.resources.dll differ diff --git a/App/ru/System.Windows.Forms.Design.resources.dll b/App/ru/System.Windows.Forms.Design.resources.dll index 48dd0b5a..26ec8b0a 100644 Binary files a/App/ru/System.Windows.Forms.Design.resources.dll and b/App/ru/System.Windows.Forms.Design.resources.dll differ diff --git a/App/ru/System.Windows.Forms.Primitives.resources.dll b/App/ru/System.Windows.Forms.Primitives.resources.dll index a33f5938..6ae9414b 100644 Binary files a/App/ru/System.Windows.Forms.Primitives.resources.dll and b/App/ru/System.Windows.Forms.Primitives.resources.dll differ diff --git a/App/ru/System.Windows.Forms.resources.dll b/App/ru/System.Windows.Forms.resources.dll index f891ed28..c82d9afb 100644 Binary files a/App/ru/System.Windows.Forms.resources.dll and b/App/ru/System.Windows.Forms.resources.dll differ diff --git a/App/ru/System.Windows.Input.Manipulations.resources.dll b/App/ru/System.Windows.Input.Manipulations.resources.dll index ea84fda9..c9cd7e7a 100644 Binary files a/App/ru/System.Windows.Input.Manipulations.resources.dll and b/App/ru/System.Windows.Input.Manipulations.resources.dll differ diff --git a/App/ru/System.Xaml.resources.dll b/App/ru/System.Xaml.resources.dll index 05ded4ee..5636f1ae 100644 Binary files a/App/ru/System.Xaml.resources.dll and b/App/ru/System.Xaml.resources.dll differ diff --git a/App/ru/UIAutomationClient.resources.dll b/App/ru/UIAutomationClient.resources.dll index 0799a09c..0cd02cb5 100644 Binary files a/App/ru/UIAutomationClient.resources.dll and b/App/ru/UIAutomationClient.resources.dll differ diff --git a/App/ru/UIAutomationClientSideProviders.resources.dll b/App/ru/UIAutomationClientSideProviders.resources.dll index 08a54650..4e8a8c08 100644 Binary files a/App/ru/UIAutomationClientSideProviders.resources.dll and b/App/ru/UIAutomationClientSideProviders.resources.dll differ diff --git a/App/ru/UIAutomationProvider.resources.dll b/App/ru/UIAutomationProvider.resources.dll index 808cb852..de479eed 100644 Binary files a/App/ru/UIAutomationProvider.resources.dll and b/App/ru/UIAutomationProvider.resources.dll differ diff --git a/App/ru/UIAutomationTypes.resources.dll b/App/ru/UIAutomationTypes.resources.dll index d1329d78..a7d8b433 100644 Binary files a/App/ru/UIAutomationTypes.resources.dll and b/App/ru/UIAutomationTypes.resources.dll differ diff --git a/App/ru/WindowsBase.resources.dll b/App/ru/WindowsBase.resources.dll index a5e8521a..dc3d0880 100644 Binary files a/App/ru/WindowsBase.resources.dll and b/App/ru/WindowsBase.resources.dll differ diff --git a/App/ru/WindowsFormsIntegration.resources.dll b/App/ru/WindowsFormsIntegration.resources.dll index ca90c857..9c40557f 100644 Binary files a/App/ru/WindowsFormsIntegration.resources.dll and b/App/ru/WindowsFormsIntegration.resources.dll differ diff --git a/App/tr/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll b/App/tr/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll index 8a1e089e..7b99d4ec 100644 Binary files a/App/tr/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll and b/App/tr/Microsoft.CodeAnalysis.CSharp.Scripting.resources.dll differ diff --git a/App/tr/Microsoft.CodeAnalysis.CSharp.resources.dll b/App/tr/Microsoft.CodeAnalysis.CSharp.resources.dll index 21e9fff9..cc0bc9cc 100644 Binary files a/App/tr/Microsoft.CodeAnalysis.CSharp.resources.dll and b/App/tr/Microsoft.CodeAnalysis.CSharp.resources.dll differ diff --git a/App/tr/Microsoft.CodeAnalysis.Scripting.resources.dll b/App/tr/Microsoft.CodeAnalysis.Scripting.resources.dll index d494fc12..540a98ec 100644 Binary files a/App/tr/Microsoft.CodeAnalysis.Scripting.resources.dll and b/App/tr/Microsoft.CodeAnalysis.Scripting.resources.dll differ diff --git a/App/tr/Microsoft.CodeAnalysis.resources.dll b/App/tr/Microsoft.CodeAnalysis.resources.dll index eb7c172a..0ebb3f79 100644 Binary files a/App/tr/Microsoft.CodeAnalysis.resources.dll and b/App/tr/Microsoft.CodeAnalysis.resources.dll differ diff --git a/App/tr/Microsoft.VisualBasic.Forms.resources.dll b/App/tr/Microsoft.VisualBasic.Forms.resources.dll index be88e8dc..52b2b5f0 100644 Binary files a/App/tr/Microsoft.VisualBasic.Forms.resources.dll and b/App/tr/Microsoft.VisualBasic.Forms.resources.dll differ diff --git a/App/tr/PresentationCore.resources.dll b/App/tr/PresentationCore.resources.dll index 3480d856..3e94db1d 100644 Binary files a/App/tr/PresentationCore.resources.dll and b/App/tr/PresentationCore.resources.dll differ diff --git a/App/tr/PresentationFramework.resources.dll b/App/tr/PresentationFramework.resources.dll index 6145ce9b..033b3e40 100644 Binary files a/App/tr/PresentationFramework.resources.dll and b/App/tr/PresentationFramework.resources.dll differ diff --git a/App/tr/PresentationUI.resources.dll b/App/tr/PresentationUI.resources.dll index 22fbd008..0034ce2d 100644 Binary files a/App/tr/PresentationUI.resources.dll and b/App/tr/PresentationUI.resources.dll differ diff --git a/App/tr/ReachFramework.resources.dll b/App/tr/ReachFramework.resources.dll index e60288a1..4ffe5ed9 100644 Binary files a/App/tr/ReachFramework.resources.dll and b/App/tr/ReachFramework.resources.dll differ diff --git a/App/tr/System.Windows.Controls.Ribbon.resources.dll b/App/tr/System.Windows.Controls.Ribbon.resources.dll index ae290efe..caafc904 100644 Binary files a/App/tr/System.Windows.Controls.Ribbon.resources.dll and b/App/tr/System.Windows.Controls.Ribbon.resources.dll differ diff --git a/App/tr/System.Windows.Forms.Design.resources.dll b/App/tr/System.Windows.Forms.Design.resources.dll index 0e76054a..60714900 100644 Binary files a/App/tr/System.Windows.Forms.Design.resources.dll and b/App/tr/System.Windows.Forms.Design.resources.dll differ diff --git a/App/tr/System.Windows.Forms.Primitives.resources.dll b/App/tr/System.Windows.Forms.Primitives.resources.dll index 542ba028..659e42da 100644 Binary files a/App/tr/System.Windows.Forms.Primitives.resources.dll and b/App/tr/System.Windows.Forms.Primitives.resources.dll differ diff --git a/App/tr/System.Windows.Forms.resources.dll b/App/tr/System.Windows.Forms.resources.dll index 849d18dc..0a0f0b08 100644 Binary files a/App/tr/System.Windows.Forms.resources.dll and b/App/tr/System.Windows.Forms.resources.dll differ diff --git a/App/tr/System.Windows.Input.Manipulations.resources.dll b/App/tr/System.Windows.Input.Manipulations.resources.dll index 9ea6e09e..1e47545a 100644 Binary files a/App/tr/System.Windows.Input.Manipulations.resources.dll and b/App/tr/System.Windows.Input.Manipulations.resources.dll differ diff --git a/App/tr/System.Xaml.resources.dll b/App/tr/System.Xaml.resources.dll index 844e1b7e..56e02fd3 100644 Binary files a/App/tr/System.Xaml.resources.dll and b/App/tr/System.Xaml.resources.dll differ diff --git a/App/tr/UIAutomationClient.resources.dll b/App/tr/UIAutomationClient.resources.dll index 70c26cb7..c5287a56 100644 Binary files a/App/tr/UIAutomationClient.resources.dll and b/App/tr/UIAutomationClient.resources.dll differ diff --git a/App/tr/UIAutomationClientSideProviders.resources.dll b/App/tr/UIAutomationClientSideProviders.resources.dll index 34f9c788..bcfb8b43 100644 Binary files a/App/tr/UIAutomationClientSideProviders.resources.dll and b/App/tr/UIAutomationClientSideProviders.resources.dll differ diff --git a/App/tr/UIAutomationProvider.resources.dll b/App/tr/UIAutomationProvider.resources.dll index 4df45063..af4dbe06 100644 Binary files a/App/tr/UIAutomationProvider.resources.dll and b/App/tr/UIAutomationProvider.resources.dll differ diff --git a/App/tr/UIAutomationTypes.resources.dll b/App/tr/UIAutomationTypes.resources.dll index b08533df..1a3ee4ff 100644 Binary files a/App/tr/UIAutomationTypes.resources.dll and b/App/tr/UIAutomationTypes.resources.dll differ diff --git a/App/tr/WindowsBase.resources.dll b/App/tr/WindowsBase.resources.dll index dfae5b0d..f77f1a5f 100644 Binary files a/App/tr/WindowsBase.resources.dll and b/App/tr/WindowsBase.resources.dll differ diff --git a/App/tr/WindowsFormsIntegration.resources.dll b/App/tr/WindowsFormsIntegration.resources.dll index b7ef639b..b1a337e2 100644 Binary files a/App/tr/WindowsFormsIntegration.resources.dll and b/App/tr/WindowsFormsIntegration.resources.dll differ diff --git a/App/wpfgfx_cor3.dll b/App/wpfgfx_cor3.dll index 5082c6a8..0d62d2ee 100644 Binary files a/App/wpfgfx_cor3.dll and b/App/wpfgfx_cor3.dll differ diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.CachedTris.html b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.CachedTris.html index e3f2de8d..7cff8de9 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.CachedTris.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.CachedTris.html @@ -191,8 +191,8 @@ Class CachedTris -

- CachedTris(NativeTopoStld, Mat4d, double) +

+ CachedTris(NativeTopoStl3d, Mat4d, double)

@@ -202,12 +202,12 @@ only available for geometry that does not contains near point or points on the s
-
public CachedTris(NativeTopoStld stl, Mat4d mat, double fractionTolerance)
+
public CachedTris(NativeTopoStl3d stl, Mat4d mat, double fractionTolerance)

Parameters

-
stl NativeTopoStld
+
stl NativeTopoStl3d

stl

mat Mat4d
@@ -231,8 +231,8 @@ only available for geometry that does not contains near point or points on the s -

- CachedTris(NativeTopoStld, NativeTopoStlfr, Mat4d, Mat4d, double, SweepingMode) +

+ CachedTris(NativeTopoStl3d, NativeTopoStl3wfr, Mat4d, Mat4d, double, SweepingMode)

@@ -242,15 +242,15 @@ The sweeping is from the transformation of pre to
-
public CachedTris(NativeTopoStld tstl, NativeTopoStlfr tstlfr, Mat4d pre, Mat4d cur, double fractionTolerance, CachedTris.SweepingMode sweepingMode = SweepingMode.Auto)
+
public CachedTris(NativeTopoStl3d tstl, NativeTopoStl3wfr tstlfr, Mat4d pre, Mat4d cur, double fractionTolerance, CachedTris.SweepingMode sweepingMode = SweepingMode.Auto)

Parameters

-
tstl NativeTopoStld
+
tstl NativeTopoStl3d

Topo Stl

-
tstlfr NativeTopoStlfr
+
tstlfr NativeTopoStl3wfr

Topo Stl with fraction tolerance

pre Mat4d
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.CbtrPickable.html b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.CbtrPickable.html index a9dd6264..6ee9e431 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.CbtrPickable.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.CbtrPickable.html @@ -324,6 +324,42 @@ NAN is the lowest priority. the smaller number is the lower priority.

+ + +

+ IsColorTableCovered + +

+ +

True when this attachment's color is served by the native attachment +color table, i.e. a Rgb change reaches the screen without +cleaning the affected drawing caches. When false (no picking id, or the +id exceeds the table ceiling) callers must keep the legacy +CleanAttachedCbtrNodesDrawingCache() after a recolor.

+
+
+ +
+
public bool IsColorTableCovered { get; }
+
+ + + + + +

Property Value

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

@@ -360,20 +396,20 @@ NAN is the lowest priority. the smaller number is the lower priority.

- + -

- CleanLinkedCbtrNodesDrawingCache() +

+ CleanAttachedCbtrNodesDrawingCache()

-

CleanLinkedNodesDrawingCache. +

CleanAttachedNodesDrawingCache. Not thread safe with substraction process.

-
public void CleanLinkedCbtrNodesDrawingCache()
+
public void CleanAttachedCbtrNodesDrawingCache()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.ConstructionDefectDisplayee.html b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.ConstructionDefectDisplayee.html index 92647807..320cf058 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.ConstructionDefectDisplayee.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.ConstructionDefectDisplayee.html @@ -192,8 +192,8 @@ including both defect data and visualization drawings.

-

- ConstructionDefectDisplayee(List<DefectNodeInfo>, IProgress<object>) +

+ ConstructionDefectDisplayee(List<DefectNodeInfo>, IProgress<IMessage>)

@@ -202,7 +202,7 @@ including both defect data and visualization drawings.

-
public ConstructionDefectDisplayee(List<CubeTree.DefectNodeInfo> defectNodeInfos, IProgress<object> progress = null)
+
public ConstructionDefectDisplayee(List<CubeTree.DefectNodeInfo> defectNodeInfos, IProgress<IMessage> messageProgress = null)

Parameters

@@ -210,7 +210,7 @@ including both defect data and visualization drawings.

defectNodeInfos List<CubeTree.DefectNodeInfo>

Defect node infos from cube tree construction.

-
progress IProgress<object>
+
messageProgress IProgress<IMessage>

Progress reporter for user-facing messages.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.CubeTree.html b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.CubeTree.html index 70e0679e..5ec334c9 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.CubeTree.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.CubeTree.html @@ -173,6 +173,9 @@ Class CubeTree
InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>)
+
+ SweptableUtil.AddBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool) +
SweptableUtil.RemoveBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool)
@@ -493,6 +496,39 @@ Errors relative to the input geometry are distributed at sharp edges and curved + + +

+ IsDisposed + +

+ +

Gets a value indicating whether this tree has been disposed. +All native-backed members become no-ops afterwards (value getters return neutral defaults).

+
+
+ +
+
public bool IsDisposed { get; }
+
+ + + + + +

Property Value

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

@@ -595,6 +631,144 @@ Sum of + + +

+ Add(CachedTris, double, bool, bool) + +

+ +

Boolean-union counterpart of Substract(CachedTris, double, bool, bool). +Using BufferedTris is more efficient than NativeStl. +If the resolution of the addition region differs from the body's resolution, the lower resolution is applied to that region.

+
+
+ +
+
public UnmanagedAddition Add(CachedTris adderBufferedTris, double preferredCubeWidth, bool isBuildContactContours = false, bool isAggressiveAdd = false)
+
+ +

Parameters

+
+
adderBufferedTris CachedTris
+

Addition geometry

+
+
preferredCubeWidth double
+

The preferred cube width for the operation.

+
+
isBuildContactContours bool
+

If true, the returned Addition contains contour groups of the newly created surface, which can be used for further analysis.

+
+
isAggressiveAdd bool
+

If true, uses aggressive adding mode.

+
+
+ +

Returns

+
+
UnmanagedAddition
+
+
+ + + + + + + + + + + + + +

+ Add(GeomBoolCache, bool, bool) + +

+ +

Adds (boolean union) a geometry to the cube tree using a geometry boolean cache.

+
+
+ +
+
public UnmanagedAddition Add(GeomBoolCache geomBoolCache, bool isBuildContactContours = false, bool isAggressiveAdd = false)
+
+ +

Parameters

+
+
geomBoolCache GeomBoolCache
+

The geometry boolean cache containing the geometry to add.

+
+
isBuildContactContours bool
+

If true, the returned Addition will contain the contours of the newly created surface.

+
+
isAggressiveAdd bool
+

If true, uses aggressive adding mode.

+
+
+ +

Returns

+
+
UnmanagedAddition
+

The result of the addition operation.

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

+ Add(NativeStl, double, bool, bool) + +

+ +

Boolean-union counterpart of Substract(NativeStl, double, bool, bool). +Same functionality as Add(CachedTris,...). Less efficient due to the additional step of converting to CachedTris.

+
+
+ +
+
public UnmanagedAddition Add(NativeStl adderStl, double preferredCubeWidth = 0, bool isBuildContactContours = false, bool isAggressiveAdd = false)
+
+ +

Parameters

+
+
adderStl NativeStl
+
+
preferredCubeWidth double
+
+
isBuildContactContours bool
+
+
isAggressiveAdd bool
+
+
+ +

Returns

+
+
UnmanagedAddition
+
+
+ + + + + + + + + + +

@@ -682,10 +856,78 @@ Sum of + +

+ DetachAttachments() + +

+ +

Detach-ALL: nulls every node's attachment WITHOUT erasing nodes from those attachments' +node maps — a fast reset of all colouring for when the attached attachments are about to +be disposed (their own disposal clears their maps). Runs under the write gate so it also +acts as a render barrier (in-flight renders drain, new renders read null), letting the +detached attachments be freed in the background with no render holding a stale pointer. +The caller MUST dispose the detached attachments. Must NOT be called while holding this +tree's read gate.

+
+
+ +
+
public void DetachAttachments()
+
+ + + + + + + + + + + + + + + +

+ DetachUnderWriteGate(IReadOnlyCollection<CbtrPickable>) + +

+ +

Targeted detach: under the write gate (render barrier), nulls node->attachment for ONLY +the given attachments' nodes (idempotent ==this guard; never touches other attachments). +After this returns, dispose them in the background — the barrier guarantees no render +still holds a stale pointer. Must NOT be called while holding this tree's read gate.

+
+
+ +
+
public void DetachUnderWriteGate(IReadOnlyCollection<CbtrPickable> attachments)
+
+ +

Parameters

+
+
attachments IReadOnlyCollection<CbtrPickable>
+
+
+ + + + + + + + + + + + -

- Diff(NativeStl, double, RangeColorRule, IProgress<object>) +

+ Diff(NativeStl, double, RangeColorRule, IProgress<IMessage>)

@@ -694,7 +936,7 @@ Sum of
-
public ConcurrentBag<DiffAttachment> Diff(NativeStl idealGeom, double diffRadius, RangeColorRule diffRangeColorRule, IProgress<object> progress = null)
+
public ConcurrentBag<DiffAttachment> Diff(NativeStl idealGeom, double diffRadius, RangeColorRule diffRangeColorRule, IProgress<IMessage> messageProgress = null)

Parameters

@@ -708,7 +950,7 @@ Sum of
diffRangeColorRule RangeColorRule

The color rule for visualizing differences.

-
progress IProgress<object>
+
messageProgress IProgress<IMessage>

Progress reporter for the operation.

@@ -821,6 +1063,82 @@ Sum of + +

+ DisposeBackground() + +

+ +

Frees the native cube tree on a background task. Disposals are serialized: if a +previous background disposal has not finished, this one waits for it. Returns the +task representing this disposal (see WaitForPendingDisposals() to drain).

+
+
+ +
+
public Task DisposeBackground()
+
+ + +

Returns

+
+
Task
+
+
+ + + + + + + + + + + + + +

+ DisposeBackground(IReadOnlyCollection<IDisposable>) + +

+ +

Enqueues disposal of objects retired alongside a tree (typically its attachments) on +the SAME serialized chain as DisposeBackground(), so there is a single +drain point (WaitForPendingDisposals()). Disposing a CbtrPickable +now clears its (possibly huge) attached node map — O(nodes) — which must not run on the +hot path. Enqueue the owning tree's DisposeBackground() first so the +gated tree teardown (which waits out in-flight renders) runs before its attachments are freed.

+
+
+ +
+
public static Task DisposeBackground(IReadOnlyCollection<IDisposable> disposables)
+
+ +

Parameters

+
+
disposables IReadOnlyCollection<IDisposable>
+
+
+ +

Returns

+
+
Task
+
+
+ + + + + + + + + + +

@@ -1069,8 +1387,8 @@ A triangle take 15 double.

-

- NewWithDefectInfos(NativeStl, double, CancellationToken, IProgress<object>) +

+ NewWithDefectInfos(NativeStl, double, CancellationToken, IProgress<IMessage>)

@@ -1079,7 +1397,7 @@ A triangle take 15 double.

-
public static (CubeTree cubeTree, List<CubeTree.DefectNodeInfo> defectInfos) NewWithDefectInfos(NativeStl stl, double preferredGridWidth, CancellationToken token, IProgress<object> progress)
+
public static (CubeTree cubeTree, List<CubeTree.DefectNodeInfo> defectInfos) NewWithDefectInfos(NativeStl stl, double preferredGridWidth, CancellationToken token, IProgress<IMessage> messageProgress)

Parameters

@@ -1090,7 +1408,7 @@ A triangle take 15 double.

token CancellationToken
-
progress IProgress<object>
+
messageProgress IProgress<IMessage>
@@ -1112,8 +1430,8 @@ A triangle take 15 double.

-

- NewWithDefectInfos(Stl, double, CancellationToken, IProgress<object>) +

+ NewWithDefectInfos(Stl, double, CancellationToken, IProgress<IMessage>)

@@ -1122,7 +1440,7 @@ A triangle take 15 double.

-
public static (CubeTree cubeTree, List<CubeTree.DefectNodeInfo> defectInfos) NewWithDefectInfos(Stl stl, double preferredGridWidth, CancellationToken token, IProgress<object> progress)
+
public static (CubeTree cubeTree, List<CubeTree.DefectNodeInfo> defectInfos) NewWithDefectInfos(Stl stl, double preferredGridWidth, CancellationToken token, IProgress<IMessage> messageProgress)

Parameters

@@ -1133,7 +1451,7 @@ A triangle take 15 double.

token CancellationToken
-
progress IProgress<object>
+
messageProgress IProgress<IMessage>
@@ -1536,6 +1854,39 @@ This function put src to the nodes that contain nu + + +

+ WaitForPendingDisposals() + +

+ +

A task that completes when all queued background disposals have finished. +Await this at application shutdown before the native dll is unloaded.

+
+
+ +
+
public static Task WaitForPendingDisposals()
+
+ + +

Returns

+
+
Task
+
+
+ + + + + + + + + + +

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.CubeTreeFile.html b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.CubeTreeFile.html index 453889b1..17f3059f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.CubeTreeFile.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.CubeTreeFile.html @@ -512,7 +512,7 @@ Since the folder can be moving with the configuration file.

-

Convert to presentation DTO (Data Transfer Object) for JSON serialization. +

Convert CubeTreeFile to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation.

@@ -525,7 +525,7 @@ The returned object includes type metadata for web API presentation.

Returns

object
-

DTO object with type and object properties

+

DTO dictionary with Type and SourceFile keys

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.DiffAttachment.html b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.DiffAttachment.html index 2bc44d2f..eaaf9f24 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.DiffAttachment.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.DiffAttachment.html @@ -133,6 +133,9 @@ Class DiffAttachment
CbtrPickable.Rgb
+
+ CbtrPickable.IsColorTableCovered +
CbtrPickable.AttachmentPriority
@@ -140,7 +143,7 @@ Class DiffAttachment CbtrPickable.Highlight(bool)
- CbtrPickable.CleanLinkedCbtrNodesDrawingCache() + CbtrPickable.CleanAttachedCbtrNodesDrawingCache()
CbtrPickable.ShrinkToFitNodeMap() diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.InfDefectDisplayee.html b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.InfDefectDisplayee.html index b8e35c27..be116195 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.InfDefectDisplayee.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.InfDefectDisplayee.html @@ -453,8 +453,8 @@ This function is usually used to compute the bounding box of elements.

-

- ReportTo(IProgress<object>) +

+ ReportTo(IProgress<IMessage>)

@@ -463,12 +463,12 @@ This function is usually used to compute the bounding box of elements.

-
public void ReportTo(IProgress<object> messageHost)
+
public void ReportTo(IProgress<IMessage> messageProgress)

Parameters

-
messageHost IProgress<object>
+
messageProgress IProgress<IMessage>
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.UnhighlightablePickable.html b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.UnhighlightablePickable.html index 52abb42a..b8c6d6ae 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.UnhighlightablePickable.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.UnhighlightablePickable.html @@ -134,6 +134,9 @@ For initailizing purpose by CbtrPickable.Rgb
+
+ CbtrPickable.IsColorTableCovered +
CbtrPickable.AttachmentPriority
@@ -141,7 +144,7 @@ For initailizing purpose by CbtrPickable.Highlight(bool)
- CbtrPickable.CleanLinkedCbtrNodesDrawingCache() + CbtrPickable.CleanAttachedCbtrNodesDrawingCache()
CbtrPickable.ShrinkToFitNodeMap() diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.UnmanagedAddition.html b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.UnmanagedAddition.html new file mode 100644 index 00000000..612226e7 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.UnmanagedAddition.html @@ -0,0 +1,606 @@ + + + + + Class UnmanagedAddition | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class UnmanagedAddition +

+ +
+
Namespace
Hi.Cbtr
+
Assembly
HiCbtr.dll
+
+ +

Data about the adding behavior of CubeTree. +The dual of UnmanagedSubstraction.

+
+
+ +
+
public class UnmanagedAddition : IDisplayee, IExpandToBox3d, IDisposable
+
+ + + + +
+
Inheritance
+
+ +
UnmanagedAddition
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + + +
+ + + + + +

Fields +

+ + + +

+ preserveCount + +

+ +

The count of preservations to prevent disposal.

+
+
+ +
+
public int preserveCount
+
+ + + + +

Field Value

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

Properties +

+ + + + +

+ ContactContours + +

+ +

Contours of the newly created surface +(the dual of the substraction's newly exposed surface).

+

Each contour is composed by 3~12 points.

+
+
+ +
+
public List<List<Vec3d>> ContactContours { get; }
+
+ + + + + +

Property Value

+
+
List<List<Vec3d>>
+
+
+ + + + + + + + + + +

+ ContactContoursArea + +

+ +

Gets the area of the contact contours.

+
+
+ +
+
public double ContactContoursArea { get; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ IsTouched + +

+ +

Is the adder and workpiece touched (any material actually added).

+
+
+ +
+
public bool IsTouched { get; }
+
+ + + + + +

Property Value

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

Methods +

+ + + + +

+ Display(Bind) + +

+ +

Display function called in DispEngine rendering loop.

+
+
+ +
+
public void Display(Bind bind)
+
+ +

Parameters

+
+
bind Bind
+

Bind with DispEngine. See Bind.

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

+ DisplayContours(Bind) + +

+ +

Display ContactContours by lines.

+
+
+ +
+
public void DisplayContours(Bind bind)
+
+ +

Parameters

+
+
bind Bind
+

bind

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

+ Dispose() + +

+ +

Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

+
+
+ +
+
public void Dispose()
+
+ + + + + + + + + + + + + + + +

+ Dispose(bool) + +

+ +
+
+ +
+
protected virtual void Dispose(bool disposing)
+
+ +

Parameters

+
+
disposing bool
+
+
+ + + + + + + + + + + + + + +

+ ExpandToBox3d(Box3d) + +

+ +

Expands the destination box. +This function is usually used to compute the bounding box of elements.

+
+
+ +
+
public void ExpandToBox3d(Box3d dst)
+
+ +

Parameters

+
+
dst Box3d
+

Destination box

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

+ ~UnmanagedAddition() + +

+ +
+
+ +
+
protected ~UnmanagedAddition()
+
+ + + + + + + + + + + + + + + +

+ PreserveBegin() + +

+ +

Preserve the object from arising Dispose(). +Add preserve count for 1.

+
+
+ +
+
public void PreserveBegin()
+
+ + + + + + + + + + + +
+
See Also
+
+ +
+
+ + + + +

+ PreserveEnd() + +

+ +

Minus preserve count for 1. +If preserve count is eqaul or lower than 0, call Dispose().

+
+
+ +
+
public void PreserveEnd()
+
+ + + + + + + + + + + +
+
See Also
+
+ +
+
+ + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.UnmanagedSubstraction.html b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.UnmanagedSubstraction.html index 95a85c73..f44878b3 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.UnmanagedSubstraction.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.UnmanagedSubstraction.html @@ -321,6 +321,41 @@ Class UnmanagedSubstraction + + +

+ SubstractionPtr + +

+ +

Internal Use Only. +The native pointer to the substraction object. HiMech reads it to build +the milling engagement natively at the substraction completion point, +without copying contours through the managed heap.

+
+
+ +
+
public nint SubstractionPtr { get; }
+
+ + + + + +

Property Value

+
+
nint
+
+
+ + + + + + + +

Methods

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.html b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.html index c69db8e0..7d165a6f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.html @@ -159,11 +159,6 @@ including defect boxes, edge segments, and flag drawings.

InitStickConvex

Represents a stick convex initialization object.

-
-
-
-
LsStl
-

Linear Sweptable Stl.

@@ -175,6 +170,12 @@ including defect boxes, edge segments, and flag drawings.

UnhighlightablePickable

Cbtr un-highlightable pickable. For initailizing purpose by RebuildAttach(CbtrPickable).

+
+
+
+
UnmanagedAddition
+

Data about the adding behavior of CubeTree. +The dual of UnmanagedSubstraction.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Collision.AnchoredCollidablePair.html b/App/wwwroot/HiAPI-docsite/api/Hi.Collision.AnchoredCollidablePair.html index 384c3fc7..90a85136 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Collision.AnchoredCollidablePair.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Collision.AnchoredCollidablePair.html @@ -255,8 +255,8 @@ Class AnchoredCollidablePair -

- AnchoredCollidablePair(XElement, string, IProgress<object>, object[]) +

+ AnchoredCollidablePair(XElement, string, IProgress<IMessage>, object[])

@@ -265,7 +265,7 @@ Class AnchoredCollidablePair
-
public AnchoredCollidablePair(XElement src, string baseDirectory, IProgress<object> progress, object[] res)
+
public AnchoredCollidablePair(XElement src, string baseDirectory, IProgress<IMessage> progress, object[] res)

Parameters

@@ -276,7 +276,7 @@ Class AnchoredCollidablePair
baseDirectory string

The base directory for resolving relative paths.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

res object[]
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Collision.CollisionIndexPair.html b/App/wwwroot/HiAPI-docsite/api/Hi.Collision.CollisionIndexPair.html index c5f64784..6f6fcd91 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Collision.CollisionIndexPair.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Collision.CollisionIndexPair.html @@ -216,8 +216,8 @@ Class CollisionIndexPair -

- CollisionIndexPair(XElement, string, IProgress<object>, object[]) +

+ CollisionIndexPair(XElement, string, IProgress<IMessage>, object[])

@@ -226,7 +226,7 @@ Class CollisionIndexPair
-
public CollisionIndexPair(XElement src, string baseDirectory, IProgress<object> progress, object[] res)
+
public CollisionIndexPair(XElement src, string baseDirectory, IProgress<IMessage> progress, object[] res)

Parameters

@@ -237,7 +237,7 @@ Class CollisionIndexPair
baseDirectory string

The base directory for resolving relative paths.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

res object[]
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Coloring.ColorUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Coloring.ColorUtil.html index 75d7437b..07cb89f8 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Coloring.ColorUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Coloring.ColorUtil.html @@ -349,6 +349,47 @@ Class ColorUtil + + +

+ FromDualHexString(string) + +

+ +

Parses an RRGGBB hexadecimal string (optionally prefixed with +#) back to an RGB color vector with channels in 0~1. +Inverse of ToDualHexString(Vec3d) up to 8-bit rounding.

+
+
+ +
+
public static Vec3d FromDualHexString(string hex)
+
+ +

Parameters

+
+
hex string
+

The hexadecimal color string, e.g. #3fa0c8.

+
+
+ +

Returns

+
+
Vec3d
+

RGB color vector.

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

@@ -536,6 +577,61 @@ This function is good to auto set color for lot of components.

+ + +

+ GetGloomyColor(Guid, double, double) + +

+ +

Gloomy color (blue tune by default) seeded by a persisted identity. +The same Guid always yields the same color — across loads, +threads, processes and platforms — unlike +GetGloomyColor(object, double, double), whose identity-hash +seed is stable only within one thread's allocation order.

+
+
+ +
+
public static Vec3d GetGloomyColor(this Guid seed, double hueMin = 0.5, double hueMax = 0.7)
+
+ +

Parameters

+
+
seed Guid
+

Persisted identity, e.g. an anchor's Guid.

+
+
hueMin double
+

The beginning of the hue range.

+
+
hueMax double
+

The end of the hue range.

+
+
+ +

Returns

+
+
Vec3d
+

RGB color vector.

+
+
+ + + + + + + +

Remarks

+

Uses an FNV-1a hash over ToByteArray() rather than +GetHashCode() or GetHashCode(): +the latter are not guaranteed stable across runtimes, and string hashing +is randomized per process on .NET Core.

+
+ + + +

@@ -573,6 +669,14 @@ This function is good to auto set color for lot of components.

+

Remarks

+

The hue is seeded by GetHashCode(). For a type that +does not override it, that is the CLR identity hash — drawn per thread +on the first call — so the color depends on which thread asks first and +in what order, and two loads of the same data get different colors. +When a persisted identity is available, prefer +GetGloomyColor(Guid, double, double).

+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Coloring.DictionaryColorGuide.html b/App/wwwroot/HiAPI-docsite/api/Hi.Coloring.DictionaryColorGuide.html index b54b441a..33c2c7e1 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Coloring.DictionaryColorGuide.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Coloring.DictionaryColorGuide.html @@ -248,8 +248,8 @@ Class DictionaryColorGuide -

- DictionaryColorGuide(XElement, string, IProgress<object>, Dictionary<string, object>) +

+ DictionaryColorGuide(XElement, string, IProgress<IMessage>, Dictionary<string, object>)

@@ -258,7 +258,7 @@ Class DictionaryColorGuide
-
public DictionaryColorGuide(XElement src, string baseDirectory, IProgress<object> progress, Dictionary<string, object> colorGuideCtorArgDictionary)
+
public DictionaryColorGuide(XElement src, string baseDirectory, IProgress<IMessage> progress, Dictionary<string, object> colorGuideCtorArgDictionary)

Parameters

@@ -269,7 +269,7 @@ Class DictionaryColorGuide
baseDirectory string

The base directory for resolving relative paths.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

colorGuideCtorArgDictionary Dictionary<string, object>
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Coloring.FilteredColorGuide.html b/App/wwwroot/HiAPI-docsite/api/Hi.Coloring.FilteredColorGuide.html index 21d49cfd..63ddd669 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Coloring.FilteredColorGuide.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Coloring.FilteredColorGuide.html @@ -215,8 +215,8 @@ Class FilteredColorGuide -

- FilteredColorGuide(XElement, string, IProgress<object>, Dictionary<string, object>) +

+ FilteredColorGuide(XElement, string, IProgress<IMessage>, Dictionary<string, object>)

@@ -225,7 +225,7 @@ Class FilteredColorGuide
-
public FilteredColorGuide(XElement src, string baseDirectory, IProgress<object> progress, Dictionary<string, object> colorGuideCtorArgDictionary)
+
public FilteredColorGuide(XElement src, string baseDirectory, IProgress<IMessage> progress, Dictionary<string, object> colorGuideCtorArgDictionary)

Parameters

@@ -236,7 +236,7 @@ Class FilteredColorGuide
baseDirectory string

The base directory for resolving relative paths.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

colorGuideCtorArgDictionary Dictionary<string, object>
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.SynList-1.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.SynList-1.html index 402a699a..20d4e2cb 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.SynList-1.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Collections.SynList-1.html @@ -576,6 +576,46 @@ Class SynList<T> + + +

+ AddAndGetIndex(T) + +

+ +

Atomically appends item and returns the index it was inserted at. +Use this instead of Add(T) + Count when the caller needs the +position of the just-added item under concurrent appends (computing Count - 1 +after Add(T) would race with other writers).

+
+
+ +
+
public int AddAndGetIndex(T item)
+
+ +

Parameters

+
+
item T
+
+
+ +

Returns

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

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.CultureTextAttribute.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.CultureTextAttribute.html new file mode 100644 index 00000000..611bb662 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.CultureTextAttribute.html @@ -0,0 +1,460 @@ + + + + + Class CultureTextAttribute | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class CultureTextAttribute +

+ +
+
Namespace
Hi.Common
+
Assembly
HiGeom.dll
+
+ +

Declares one culture's text for one vocabulary key on the member carrying +the attribute — the static wording of command titles and labels, owned by +the declaring library as a DEFAULT: a GUI layer may override it or add +cultures the library never declared (see +SetTextOverride(string, string, string)), and a culture left undeclared +is not an error — lookups fall back toward the English key.

+

+The key defaults to the member's own display name: its +DisplayNameAttribute value when +present, otherwise the member name spaced into words +(SpacePascalWords(string)). Set Key to declare +a word the member does not itself name (a shared switch word, a mode +label). Apply the attribute once per culture. +

+
+
+ +
+
[AttributeUsage(AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Enum|AttributeTargets.Method|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Interface, AllowMultiple = true, Inherited = false)]
+public sealed class CultureTextAttribute : Attribute
+
+ + + + +
+
Inheritance
+
+ + +
CultureTextAttribute
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ CultureTextAttribute(string, string) + +

+ +

Declares text as the wording of this member's +vocabulary key in the culture named cultureName.

+
+
+ +
+
public CultureTextAttribute(string cultureName, string text)
+
+ +

Parameters

+
+
cultureName string
+

Culture name the text is written in (e.g. zh-Hant).

+
+
text string
+

The text in that culture.

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

Properties +

+ + + + +

+ CultureName + +

+ +

Culture name the text is written in (e.g. zh-Hant).

+
+
+ +
+
public string CultureName { get; }
+
+ + + + + +

Property Value

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

+ Key + +

+ +

Explicit vocabulary key. Default (null): the member's display name as +described on the class summary.

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

Property Value

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

+ Text + +

+ +

The text in that culture.

+
+
+ +
+
public string Text { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.CultureUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.CultureUtil.html index 0e66818d..e84b9712 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.CultureUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.CultureUtil.html @@ -6,7 +6,7 @@ - + @@ -97,7 +97,8 @@ Class CultureUtil
Assembly
HiGeom.dll

-

Utility class for managing culture and localization settings.

+

The English culture the engine formats and parses with, and the one call +that pins a thread to it.

@@ -153,19 +154,20 @@ Class CultureUtil - + -

- SupportedCultureNames +

+ English

-

Gets the array of supported culture names.

+

English, with NaNSymbol forced to +“NaN” so a non-finite value round-trips through text.

-
public static string[] SupportedCultureNames { get; }
+
public static CultureInfo English { get; }
@@ -174,13 +176,19 @@ Class CultureUtil

Property Value

-
string[]
+
CultureInfo
+

Remarks

+

Read-only, and safe to hand to APIs that keep the reference: ASP.NET +request localization matches by name and returns +ReadOnly(CultureInfo) clones, which preserve +the patched symbol.

+
@@ -189,39 +197,6 @@ Class CultureUtil - - -

- SetCurrentCulture(string) - -

- -

Sets the current thread culture to the specified culture code.

-
-
- -
-
public static void SetCurrentCulture(string cultureCode)
-
- -

Parameters

-
-
cultureCode string
-

The culture code to set (e.g., “en”, “zh-Hant”)

-
-
- - - - - - - - - - - -

@@ -229,7 +204,7 @@ Class CultureUtil

-

Sets the current culture to English.

+

Pins the calling thread to English.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.FileLineCharIndex.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.FileLineCharIndex.html index e48f6374..81f5a18a 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.FileLineCharIndex.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.FileLineCharIndex.html @@ -161,18 +161,15 @@ All indices are 0-based.

MathUtil.Clamp<T>(T, T, T)
+
+ FileLineUtil.CompareFileLine(IFileLineIndex, IFileLineIndex) +
FileLineUtil.GetFileNo(IFileLineIndex)
FileLineUtil.GetLineNo(IFileLineIndex)
-
- FileLineUtil.MixedIndex(IFileLineIndex) -
-
- FileLineUtil.MixedIndex(IGetFileLineIndex) -
ColorUtil.GetGloomyColor(object, double, double)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.FileLineIndex.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.FileLineIndex.html index e0278ebb..5e728e17 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.FileLineIndex.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.FileLineIndex.html @@ -102,7 +102,7 @@ Class FileLineIndex
-
public class FileLineIndex : IFileLineIndex, IGetFileLineIndex, IComparable<IFileLineIndex>, IMakeXmlSource, IToXElement, IToPresentDto
+
public class FileLineIndex : IFileLineIndex, IGetFileLineIndex, IComparable<IFileLineIndex>, IComparable<FileLineIndex>, IMakeXmlSource, IToXElement, IToPresentDto
@@ -122,6 +122,7 @@ Class FileLineIndex
IFileLineIndex
IGetFileLineIndex
IComparable<IFileLineIndex>
+
IComparable<FileLineIndex>
IMakeXmlSource
IToXElement
IToPresentDto
@@ -161,18 +162,15 @@ Class FileLineIndex
MathUtil.Clamp<T>(T, T, T)
+
+ FileLineUtil.CompareFileLine(IFileLineIndex, IFileLineIndex) +
FileLineUtil.GetFileNo(IFileLineIndex)
FileLineUtil.GetLineNo(IFileLineIndex)
-
- FileLineUtil.MixedIndex(IFileLineIndex) -
-
- FileLineUtil.MixedIndex(IGetFileLineIndex) -
XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool)
@@ -503,6 +501,46 @@ Start on 0.

+ + +

+ CompareTo(FileLineIndex) + +

+ +

Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object.

+
+
+ +
+
public int CompareTo(FileLineIndex other)
+
+ +

Parameters

+
+
other FileLineIndex
+

An object to compare with this instance.

+
+
+ +

Returns

+
+
int
+

A value that indicates the relative order of the objects being compared. The return value has these meanings:

+
Value Meaning
Less than zero This instance precedes other in the sort order.
Zero This instance occurs in the same position in the sort order as other.
Greater than zero This instance follows other in the sort order.
+
+
+ + + + + + + + + + +

@@ -706,7 +744,7 @@ Since the folder can be moving with the configuration file.

-

Convert to presentation DTO (Data Transfer Object) for JSON serialization. +

Convert FileLineIndex to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation.

@@ -719,7 +757,7 @@ The returned object includes type metadata for web API presentation.

Returns

object
-

DTO object with type and object properties

+

DTO dictionary with Type, FileIndex, LineIndex keys

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.FileLineUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.FileLineUtil.html index f3d50c19..e55e23a2 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.FileLineUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.FileLineUtil.html @@ -153,6 +153,47 @@ Class FileLineUtil + + +

+ CompareFileLine(IFileLineIndex, IFileLineIndex) + +

+ +

Orders two file-line positions by FileIndex +then LineIndex. Both operands must be +non-null; callers decide how a missing (null) position sorts.

+
+
+ +
+
public static int CompareFileLine(this IFileLineIndex a, IFileLineIndex b)
+
+ +

Parameters

+
+
a IFileLineIndex
+
+
b IFileLineIndex
+
+
+ +

Returns

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

@@ -231,128 +272,6 @@ Class FileLineUtil - - -

- GetMixedIndex(int, int) - -

- -

Creates a mixed index from file index and line index.

-
-
- -
-
public static int GetMixedIndex(int fileIndex, int lineIndex)
-
- -

Parameters

-
-
fileIndex int
-

The file index (0-based).

-
-
lineIndex int
-

The line index (0-based).

-
-
- -

Returns

-
-
int
-

A mixed index combining file and line indices.

-
-
- - - - - - - - - - - - - -

- MixedIndex(IFileLineIndex) - -

- -

Mix FileIndex and LineIndex. -Return FileIndex* 10_000_000 + LineIndex.

-
-
- -
-
public static int MixedIndex(this IFileLineIndex src)
-
- -

Parameters

-
-
src IFileLineIndex
-

src

-
-
- -

Returns

-
-
int
-

Mixed number

-
-
- - - - - - - - - - - - - -

- MixedIndex(IGetFileLineIndex) - -

- -

Mix FileIndex and LineIndex. -Return FileIndex* 10_000_000 + LineIndex.

-
-
- -
-
public static int MixedIndex(this IGetFileLineIndex src)
-
- -

Parameters

-
-
src IGetFileLineIndex
-

src

-
-
- -

Returns

-
-
int
-

Mixed number

-
-
- - - - - - - - - - - diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.FileUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.FileUtil.html index de11e990..c7482da4 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.FileUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.FileUtil.html @@ -265,6 +265,58 @@ Class FileUtil + + +

+ DetectRoundTripEncoding(string) + +

+ +

Detects a text encoding for filePath that survives a +read-modify-write round trip byte for byte on untouched lines.

+
+
+ +
+
public static Encoding DetectRoundTripEncoding(string filePath)
+
+ +

Parameters

+
+
filePath string
+

The path of the file to sniff.

+
+
+ +

Returns

+
+
Encoding
+

The encoding of the UTF-8 / UTF-16 byte-order mark when one is +present; otherwise strict-validated UTF-8 (without a mark); otherwise +Latin-1.

+
+
+ + + + + + + +

Remarks

+

The Latin-1 fallback maps every byte to the char of the same value, so +a file in any ANSI-family encoding (GBK, Big5, Shift-JIS, ...) +re-encodes to its original bytes. ASCII-keyed parsing is unaffected: +those encodings never reuse bytes below 0x40 as trail bytes, so +delimiters such as ‘;’ and ‘(’ cannot occur inside a multi-byte +character. The BCL's default UTF-8 reader instead replaces every +undecodable byte with U+FFFD, which irreversibly destroys such content +on write-back.

+
+ + + +

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IFileLineCharIndex.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IFileLineCharIndex.html index 6e174e94..3106e83f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IFileLineCharIndex.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IFileLineCharIndex.html @@ -138,18 +138,15 @@ All indices are 0-based.

+ - - diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IFileLineIndex.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IFileLineIndex.html index de1dae34..952e8d78 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IFileLineIndex.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IFileLineIndex.html @@ -125,24 +125,21 @@ Interface IFileLineIndex + - - diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IGetFileLineIndex.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IGetFileLineIndex.html index 437322e8..53a7d6b2 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IGetFileLineIndex.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IGetFileLineIndex.html @@ -118,9 +118,6 @@ Interface IGetFileLineIndex - diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IIndexedFileLine.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IIndexedFileLine.html index 122d2715..07fbbbcb 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IIndexedFileLine.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IIndexedFileLine.html @@ -137,18 +137,15 @@ Interface IIndexedFileLine
Extension Methods
+ - - diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IndexedFileLine.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IndexedFileLine.html index 885b101e..647612bd 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IndexedFileLine.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IndexedFileLine.html @@ -148,18 +148,15 @@ Class IndexedFileLine
Extension Methods
+ - - diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IndexedFileLineChar.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IndexedFileLineChar.html index 8edddc82..98d189f6 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IndexedFileLineChar.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.FileLines.IndexedFileLineChar.html @@ -148,18 +148,15 @@ Analogous to Ind
Extension Methods
+ - - diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.ICommandTextSource.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.ICommandTextSource.html new file mode 100644 index 00000000..30efaa20 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.ICommandTextSource.html @@ -0,0 +1,221 @@ + + + + + Interface ICommandTextSource | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Interface ICommandTextSource +

+ +
+
Namespace
Hi.Common
+
Assembly
HiGeom.dll
+
+ +

A culture-bearing vocabulary commands compose their titles and labels +from: it maps a vocabulary key — the English default text — onto that +culture's text. The CALLER picks the source, so the presentation layer +owns the language (no thread culture involved); the command keeps its +composition and degradation rules. Presentation layers can implement +their own source or take the engine-default one from +GenTextSource(CultureInfo, params Type[]) ([CultureText] declarations +overlaid by SetTextOverride(string, string, string) registrations).

+
+
+ +
+
public interface ICommandTextSource
+
+ + + + + + + + +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ this[string] + +

+ +

The text of key in this source's culture; the key +itself when the source carries no entry — the key doubles as the +English default.

+
+
+ +
+
string this[string key] { get; }
+
+ +

Parameters

+
+
key string
+

Vocabulary key — the English default text.

+
+
+ + + + +

Property Value

+
+
string
+

The culture's text, or the key itself.

+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.IToPresentDto.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.IToPresentDto.html index bcc1d7f3..7af0d729 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.IToPresentDto.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.IToPresentDto.html @@ -140,6 +140,16 @@ Interface IToPresentDto +

Remarks

+

Implementations must not return anonymous types: release assemblies are obfuscated +with only the public API kept, so an anonymous type gets renamed and loses its +constructor parameter names, which makes System.Text.Json throw +NotSupportedException when serializing it. Return a +Dictionary<string, object> instead — its keys are emitted verbatim as +the JSON property names. Key by nameof of the mirrored member where one +exists (nameof compiles to a string literal, so obfuscation cannot touch +it); use a literal for marker keys such as “Type”.

+

Methods diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.IndexSegment.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.IndexSegment.html index 1fb8e3a7..74f91635 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.IndexSegment.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.IndexSegment.html @@ -767,17 +767,19 @@ Used for defining segment of data in collections or arrays.

-

- GetIndexSegment<TData>(IList<TData>, int, int, Func<TData, int?>) +

+ GetIndexSegment<TData, TKey>(IList<TData>, int, TKey, Func<TData, TKey>, TKey)

-

Gets an index segment from a list of data items by the specific group index.

+

Finds the contiguous run of items whose key equals +targetGroupKey, scanning outward from +seekingStartListIndex.

-
public static IndexSegment GetIndexSegment<TData>(IList<TData> steps, int seekingStartListIndex, int targetGroupIndex, Func<TData, int?> dataToGroupIndexFunc)
+
public static IndexSegment GetIndexSegment<TData, TKey>(IList<TData> steps, int seekingStartListIndex, TKey targetGroupKey, Func<TData, TKey> keyFunc, TKey seekStartFallbackKey = null) where TKey : class, IComparable<TKey>

Parameters

@@ -788,11 +790,14 @@ Used for defining segment of data in collections or arrays.

seekingStartListIndex int

The start step index for seeking.

-
targetGroupIndex int
-

The target segment key.

+
targetGroupKey TKey
+

The key of the segment to locate.

-
dataToGroupIndexFunc Func<TData, int?>
-

A function that extracts a segmentkey from a data item.

+
keyFunc Func<TData, TKey>
+

Extracts the ordering key from a data item; may return null for an item with no key.

+
+
seekStartFallbackKey TKey
+

Key used when the seeking-start item has none (a null cache lands in the equality branch).

@@ -807,6 +812,9 @@ Used for defining segment of data in collections or arrays.

TData

The type of data items.

+
+
TKey
+

The ordering key type (e.g. a file-line position).

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.JsonUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.JsonUtil.html index d5908ffe..1fb64faa 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.JsonUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.JsonUtil.html @@ -149,6 +149,47 @@ Class JsonUtil +

Properties +

+ + + + +

+ CompactNanOptions + +

+ +

Compact (single-line) serializer options supporting NaN / Infinity / +-Infinity as quoted literal strings. This is the exact leaf encoding +ToLeafCompactJsonString(JsonNode, JsonSerializerOptions) uses, exposed so other +serialization paths (e.g. freezing a parse tree to UTF-8 bytes) can +guarantee a byte-identical projection after a serialize → parse +round-trip. Null-valued entries are written explicitly.

+
+
+ +
+
public static JsonSerializerOptions CompactNanOptions { get; }
+
+ + + + + +

Property Value

+
+
JsonSerializerOptions
+
+
+ + + + + + + +

Methods

@@ -247,7 +288,12 @@ Creates missing intermediate objects as needed.

Gets a double from a JsonNode that may hold -int, long, or double.

+int, long, or double. +Also maps the named floating-point literal strings “NaN”, +“Infinity” and "-Infinity" — the quoted form +AllowNamedFloatingPointLiterals writes +for those values — back to their double constants, so a +node re-parsed from serialized JSON reads the same as the live value.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.ActionProgress-1.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.ActionProgress-1.html index 8fe24225..31b18f8d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.ActionProgress-1.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.ActionProgress-1.html @@ -236,8 +236,8 @@ and invokes the handler synchronously on the caller's thread.

-

Creates an IProgress<T> that routes -MultiTagMessage to the appropriate ILogger level.

+

Creates an IProgress<T> that routes an IMessage +(or a raw Exception) to the appropriate ILogger level.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticCategory.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.Category.html similarity index 62% rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticCategory.html rename to App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.Category.html index 886114aa..3a593559 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticCategory.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.Category.html @@ -2,11 +2,11 @@ - Enum NcDiagnosticCategory | HiAPI-C# 2025 + Enum Category | HiAPI-C# 2025 - + - + @@ -84,27 +84,29 @@
-
+
-

-Enum NcDiagnosticCategory +

+Enum Category

-
Namespace
Hi.NcParsers
-
Assembly
HiMech.dll
+
Namespace
Hi.Common.Messages
+
Assembly
HiGeom.dll
-

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
+

Classification of an IMessage — the “what kind of concern” axis, orthogonal to the +Severity importance axis it pairs with. Applies to every IMessage on +the channel (lifecycle / progress notices, configuration checks, NC-pipeline diagnostics, …), +not only NC messages.

-
public enum NcDiagnosticCategory
+
public enum Category
@@ -146,27 +148,31 @@ Enum NcDiagnosticCategory

Fields

-
Configuration = 3
+
Configuration = 3
-

End-user XML configuration issue: missing or misconfigured -INcDependency (e.g., coordinate table, +

Missing or misconfigured end-user dependency / configuration (e.g. coordinate table, tool offset table, machine axis config, rapid feedrate config).

-
System = 0
+
System = 0
-

Pipeline infrastructure, lifecycle, internal exceptions.

+

General program / pipeline output — lifecycle, progress, infrastructure, internal exceptions. +The default when no more-specific category applies.

-
Unsupported = 1
+
Unsupported = 1
-

Recognized but unimplemented G-code or feature.

+

Recognized but unimplemented feature.

-
Validation = 2
+
Validation = 2
-

Manufacturing/physics feasibility check.

+

Manufacturing / physics feasibility check.

+

Remarks

+

Representative (Category × Severity) combinations:

+
  • System + Message / Progress → lifecycle, progress, general program output
  • 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
  • Configuration + Warning → dependency / config missing, using fallback
  • Configuration + Error → dependency / config missing, cannot proceed
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.IMessage.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.IMessage.html new file mode 100644 index 00000000..5ed94822 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.IMessage.html @@ -0,0 +1,417 @@ + + + + + Interface IMessage | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Interface IMessage +

+ +
+
Namespace
Hi.Common.Messages
+
Assembly
HiGeom.dll
+
+ +

Common contract for a single reportable item on an IProgress<T> +channel — an NC diagnostic, a step-anchored notice, a simple message, or a progress +fraction. Consumers (GUI / log) treat every kind uniformly through this view, while each +concrete kind is still stored by its own owner (e.g. NcDiagnostic by +NcDiagnosticProgress, ClStripPos by ClStrip) rather than being mixed +into one shared collection.

+
+
+ +
+
public interface IMessage
+
+ + + + + + + + +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Methods +

+ + + + +

+ GetArgs() + +

+ +

Gets the values interpolated into GetFormat(); null when +GetFormat() is null, possibly empty for a hole-less template. +Default interface method so external implementers are unaffected.

+
+
+ +
+
object[] GetArgs()
+
+ + +

Returns

+
+
object[]
+

The interpolation arguments, or null when untemplated.

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

+ GetCategory() + +

+ +

Gets the classification — see Category.

+
+
+ +
+
Category GetCategory()
+
+ + +

Returns

+
+
Category
+

The category of this message.

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

+ GetDetail() + +

+ +

Gets the optional detail payload or exception; null when not applicable.

+
+
+ +
+
object GetDetail()
+
+ + +

Returns

+
+
object
+

The detail object, or null.

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

+ GetFormat() + +

+ +

Gets the composite-format template behind GetNotification() — a +{0}-style .NET format string — when this message was produced from an +interpolated template; null when the notification has no structured template. +Together with GetArgs() this lets a consumer re-render the message +in another language without losing the interpolated live values, while +GetNotification() stays the invariant English rendering. +Default interface method so external implementers are unaffected.

+
+
+ +
+
string GetFormat()
+
+ + +

Returns

+
+
string
+

The composite format string, or null when untemplated.

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

+ GetId() + +

+ +

Gets the structured id used for filtering / suppression; may be null.

+
+
+ +
+
string GetId()
+
+ + +

Returns

+
+
string
+

The message id, or null when not applicable.

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

+ GetNotification() + +

+ +

Gets the end-user friendly notification text.

+
+
+ +
+
string GetNotification()
+
+ + +

Returns

+
+
string
+

The notification text.

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

+ GetSeverity() + +

+ +

Gets the importance level — see Severity.

+
+
+ +
+
Severity GetSeverity()
+
+ + +

Returns

+
+
Severity
+

The severity of this message.

+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.IProgressMessage.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.IProgressMessage.html new file mode 100644 index 00000000..2fa39171 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.IProgressMessage.html @@ -0,0 +1,203 @@ + + + + + Interface IProgressMessage | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Interface IProgressMessage +

+ +
+
Namespace
Hi.Common.Messages
+
Assembly
HiGeom.dll
+
+ +

Marker for an IMessage that is itself a container of messages (a batch +produced over the course of some scoped work) rather than a single leaf notice. A sink may give +it special treatment — unrolling its accumulated children, in order, instead of storing the +composite object itself.

+

+Empty by design: the contract is purely the marker. The children are exposed by the concrete +type (e.g. StepScopedProgress.MessageList) and drained at the point that owns the +ordering guarantee, so a consumer that does not recognize IProgressMessage simply +treats the composite as an opaque IMessage. +

+
+
+ +
+
public interface IProgressMessage : IMessage
+
+ + + + + + + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.MessageCollector.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.MessageCollector.html new file mode 100644 index 00000000..1f178f39 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.MessageCollector.html @@ -0,0 +1,363 @@ + + + + + Class MessageCollector | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class MessageCollector +

+ +
+
Namespace
Hi.Common.Messages
+
Assembly
HiGeom.dll
+
+ +

A minimal IProgress<T> of IMessage that buffers every +reported message into Messages. Intended as a per-call / per-request +sink: a caller injects it into a have-both function (one that takes an +IProgress<IMessage> messageProgress), runs the operation, then reads the +collected messages back — e.g. to return them in an HTTP response so a REST / AI +caller sees progress, success, and error notifications inline.

+

Unlike the session / strip sinks (SessionProgress, StepDiagnosticProgress) it +fires no events and holds no session or pipeline state; it is cheap to create and +discard for the lifetime of a single call.

+
+
+ +
+
public sealed class MessageCollector : IProgress<IMessage>
+
+ + + + +
+
Inheritance
+
+ +
MessageCollector
+
+
+ +
+
Implements
+
+ +
+
+ + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ Messages + +

+ +

The messages reported so far, in arrival order.

+
+
+ +
+
public List<IMessage> Messages { get; }
+
+ + + + + +

Property Value

+
+
List<IMessage>
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ Report(IMessage) + +

+ +

Reports a progress update.

+
+
+ +
+
public void Report(IMessage value)
+
+ +

Parameters

+
+
value IMessage
+

The value of the updated progress.

+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.MessageUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.MessageUtil.html new file mode 100644 index 00000000..a3c2ec3d --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.MessageUtil.html @@ -0,0 +1,1180 @@ + + + + + Class MessageUtil | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class MessageUtil +

+ +
+
Namespace
Hi.Common.Messages
+
Assembly
HiGeom.dll
+
+ +

Extension helpers for reporting SimpleMessage records onto an +IProgress<T> of IMessage sink — the IMessage-channel +counterpart of NcDiagnosticProgress's shorthand methods. Every helper is named +{Category}{Severity} and is id-first; the structured id is used for +filtering / suppression. All overloads are null-safe on host.

+

+Each helper has a {Category}{Severity}Fmt sibling taking a +FormattableString: it keeps the interpolated template and values +(Format / Args) so a client can +re-render the message in another language, while the notification stays the invariant +English rendering. The sibling must be opted into by name — an interpolated string literal +passed to the string helper binds to string and is not captured. +

+
+
+ +
+
public static class MessageUtil
+
+ + + + +
+
Inheritance
+
+ +
MessageUtil
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ ConfigurationError(IProgress<IMessage>, string, string, object) + +

+ +

Reports Configuration + Error (dependency/config missing, cannot proceed).

+
+
+ +
+
public static void ConfigurationError(this IProgress<IMessage> host, string id, string text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text string
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ ConfigurationErrorFmt(IProgress<IMessage>, string, FormattableString, object) + +

+ +

Templated ConfigurationError(IProgress<IMessage>, string, string, object) — keeps format + args for localization.

+
+
+ +
+
public static void ConfigurationErrorFmt(this IProgress<IMessage> host, string id, FormattableString text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text FormattableString
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ ConfigurationMessage(IProgress<IMessage>, string, string, object) + +

+ +

Reports Configuration + Message (dependency/config applied, informational).

+
+
+ +
+
public static void ConfigurationMessage(this IProgress<IMessage> host, string id, string text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text string
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ ConfigurationMessageFmt(IProgress<IMessage>, string, FormattableString, object) + +

+ +

Templated ConfigurationMessage(IProgress<IMessage>, string, string, object) — keeps format + args for localization.

+
+
+ +
+
public static void ConfigurationMessageFmt(this IProgress<IMessage> host, string id, FormattableString text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text FormattableString
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ ConfigurationWarning(IProgress<IMessage>, string, string, object) + +

+ +

Reports Configuration + Warning (dependency/config missing, using fallback).

+
+
+ +
+
public static void ConfigurationWarning(this IProgress<IMessage> host, string id, string text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text string
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ ConfigurationWarningFmt(IProgress<IMessage>, string, FormattableString, object) + +

+ +

Templated ConfigurationWarning(IProgress<IMessage>, string, string, object) — keeps format + args for localization.

+
+
+ +
+
public static void ConfigurationWarningFmt(this IProgress<IMessage> host, string id, FormattableString text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text FormattableString
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ SystemError(IProgress<IMessage>, string, string, object) + +

+ +

Reports System + Error (exception or unconsidered case).

+
+
+ +
+
public static void SystemError(this IProgress<IMessage> host, string id, string text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text string
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ SystemErrorFmt(IProgress<IMessage>, string, FormattableString, object) + +

+ +

Templated SystemError(IProgress<IMessage>, string, string, object) — keeps format + args for localization.

+
+
+ +
+
public static void SystemErrorFmt(this IProgress<IMessage> host, string id, FormattableString text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text FormattableString
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ SystemMessage(IProgress<IMessage>, string, string, object) + +

+ +

Reports System + Message (pipeline lifecycle / informational).

+
+
+ +
+
public static void SystemMessage(this IProgress<IMessage> host, string id, string text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text string
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ SystemMessageFmt(IProgress<IMessage>, string, FormattableString, object) + +

+ +

Templated SystemMessage(IProgress<IMessage>, string, string, object) — keeps format + args for localization.

+
+
+ +
+
public static void SystemMessageFmt(this IProgress<IMessage> host, string id, FormattableString text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text FormattableString
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ SystemProgress(IProgress<IMessage>, string, string, object) + +

+ +

Reports System + Progress (ongoing pipeline progress).

+
+
+ +
+
public static void SystemProgress(this IProgress<IMessage> host, string id, string text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text string
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ SystemProgressFmt(IProgress<IMessage>, string, FormattableString, object) + +

+ +

Templated SystemProgress(IProgress<IMessage>, string, string, object) — keeps format + args for localization.

+
+
+ +
+
public static void SystemProgressFmt(this IProgress<IMessage> host, string id, FormattableString text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text FormattableString
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ SystemSuccess(IProgress<IMessage>, string, string, object) + +

+ +

Reports System + Success (pipeline step completed).

+
+
+ +
+
public static void SystemSuccess(this IProgress<IMessage> host, string id, string text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text string
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ SystemSuccessFmt(IProgress<IMessage>, string, FormattableString, object) + +

+ +

Templated SystemSuccess(IProgress<IMessage>, string, string, object) — keeps format + args for localization.

+
+
+ +
+
public static void SystemSuccessFmt(this IProgress<IMessage> host, string id, FormattableString text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text FormattableString
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ SystemWarning(IProgress<IMessage>, string, string, object) + +

+ +

Reports System + Warning (pipeline anomaly, processing continues).

+
+
+ +
+
public static void SystemWarning(this IProgress<IMessage> host, string id, string text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text string
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ SystemWarningFmt(IProgress<IMessage>, string, FormattableString, object) + +

+ +

Templated SystemWarning(IProgress<IMessage>, string, string, object) — keeps format + args for localization.

+
+
+ +
+
public static void SystemWarningFmt(this IProgress<IMessage> host, string id, FormattableString text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text FormattableString
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ UnsupportedError(IProgress<IMessage>, string, string, object) + +

+ +

Reports Unsupported + Error (recognized but unimplemented, likely matters).

+
+
+ +
+
public static void UnsupportedError(this IProgress<IMessage> host, string id, string text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text string
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ UnsupportedErrorFmt(IProgress<IMessage>, string, FormattableString, object) + +

+ +

Templated UnsupportedError(IProgress<IMessage>, string, string, object) — keeps format + args for localization.

+
+
+ +
+
public static void UnsupportedErrorFmt(this IProgress<IMessage> host, string id, FormattableString text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text FormattableString
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ UnsupportedMessage(IProgress<IMessage>, string, string, object) + +

+ +

Reports Unsupported + Message (recognized, intentionally not simulated).

+
+
+ +
+
public static void UnsupportedMessage(this IProgress<IMessage> host, string id, string text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text string
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ UnsupportedMessageFmt(IProgress<IMessage>, string, FormattableString, object) + +

+ +

Templated UnsupportedMessage(IProgress<IMessage>, string, string, object) — keeps format + args for localization.

+
+
+ +
+
public static void UnsupportedMessageFmt(this IProgress<IMessage> host, string id, FormattableString text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text FormattableString
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ UnsupportedWarning(IProgress<IMessage>, string, string, object) + +

+ +

Reports Unsupported + Warning (recognized but unimplemented, likely harmless).

+
+
+ +
+
public static void UnsupportedWarning(this IProgress<IMessage> host, string id, string text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text string
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ UnsupportedWarningFmt(IProgress<IMessage>, string, FormattableString, object) + +

+ +

Templated UnsupportedWarning(IProgress<IMessage>, string, string, object) — keeps format + args for localization.

+
+
+ +
+
public static void UnsupportedWarningFmt(this IProgress<IMessage> host, string id, FormattableString text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text FormattableString
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ ValidationError(IProgress<IMessage>, string, string, object) + +

+ +

Reports Validation + Error (manufacturing/physics is unfeasible).

+
+
+ +
+
public static void ValidationError(this IProgress<IMessage> host, string id, string text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text string
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ ValidationErrorFmt(IProgress<IMessage>, string, FormattableString, object) + +

+ +

Templated ValidationError(IProgress<IMessage>, string, string, object) — keeps format + args for localization.

+
+
+ +
+
public static void ValidationErrorFmt(this IProgress<IMessage> host, string id, FormattableString text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text FormattableString
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ ValidationWarning(IProgress<IMessage>, string, string, object) + +

+ +

Reports Validation + Warning (manufacturing/physics may be unfeasible).

+
+
+ +
+
public static void ValidationWarning(this IProgress<IMessage> host, string id, string text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text string
+
+
detail object
+
+
+ + + + + + + + + + + + + + +

+ ValidationWarningFmt(IProgress<IMessage>, string, FormattableString, object) + +

+ +

Templated ValidationWarning(IProgress<IMessage>, string, string, object) — keeps format + args for localization.

+
+
+ +
+
public static void ValidationWarningFmt(this IProgress<IMessage> host, string id, FormattableString text, object detail = null)
+
+ +

Parameters

+
+
host IProgress<IMessage>
+
+
id string
+
+
text FormattableString
+
+
detail object
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.MultiTagMessage.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.MultiTagMessage.html deleted file mode 100644 index 66f6b4ad..00000000 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.MultiTagMessage.html +++ /dev/null @@ -1,595 +0,0 @@ - - - - - Class MultiTagMessage | HiAPI-C# 2025 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
-
-
Table of Contents
- -
-
- -
-
-
- -
-
- - - -
- -
- - - -

-Class MultiTagMessage -

- -
-
Namespace
Hi.Common.Messages
-
Assembly
HiGeom.dll
-
- -

Represents a message with multiple tags for categorization and filtering.

-
-
- -
-
public class MultiTagMessage
-
- - - - -
-
Inheritance
-
- -
MultiTagMessage
-
-
- - - -
-
Inherited Members
-
- - - - - - -
- -
-
Extension Methods
-
- - - - - - - -
- - - - - -

Constructors -

- - - - -

- MultiTagMessage(object, params string[]) - -

- -

Initializes a new instance of the MultiTagMessage class with the specified message and tags.

-
-
- -
-
public MultiTagMessage(object message, params string[] tags)
-
- -

Parameters

-
-
message object
-

The message content

-
-
tags string[]
-

The tags to associate with this message

-
-
- - - - - - - - - - - - -

Properties -

- - - - -

- Message - -

- -

Gets or sets the message content.

-
-
- -
-
public object Message { get; set; }
-
- - - - - -

Property Value

-
-
object
-
-
- - - - - - - - - - -

- Tags - -

- -

Gets or sets the collection of tags associated with this message.

-
-
- -
-
public HashSet<string> Tags { get; set; }
-
- - - - - -

Property Value

-
-
HashSet<string>
-
-
- - - - - - - - -

Methods -

- - - - -

- Error(string, params string[]) - -

- -

Creates a Error message.

-
-
- -
-
public static MultiTagMessage Error(string message, params string[] otherTags)
-
- -

Parameters

-
-
message string
-

The message content

-
-
otherTags string[]
-

Additional tags to associate with the message

-
-
- -

Returns

-
-
MultiTagMessage
-

A new MultiTagMessage tagged with Error

-
-
- - - - - - - - - - - - - -

- Exception(Exception, params string[]) - -

- -

Creates a Exception message.

-
-
- -
-
public static MultiTagMessage Exception(Exception exception, params string[] otherTags)
-
- -

Parameters

-
-
exception Exception
-

The exception to log

-
-
otherTags string[]
-

Additional tags to associate with the message

-
-
- -

Returns

-
-
MultiTagMessage
-

A new MultiTagMessage tagged with Exception

-
-
- - - - - - - - - - - - - -

- Info(string, params string[]) - -

- -

Creates a Info message.

-
-
- -
-
public static MultiTagMessage Info(string message, params string[] otherTags)
-
- -

Parameters

-
-
message string
-

The message content

-
-
otherTags string[]
-

Additional tags to associate with the message

-
-
- -

Returns

-
-
MultiTagMessage
-

A new MultiTagMessage tagged with Info

-
-
- - - - - - - - - - - - - -

- Progress(string, params string[]) - -

- -

Creates a Progress message.

-
-
- -
-
public static MultiTagMessage Progress(string message, params string[] otherTags)
-
- -

Parameters

-
-
message string
-

The message content

-
-
otherTags string[]
-

Additional tags to associate with the message

-
-
- -

Returns

-
-
MultiTagMessage
-

A new MultiTagMessage tagged with Progress

-
-
- - - - - - - - - - - - - -

- Success(string, params string[]) - -

- -

Creates a Success message.

-
-
- -
-
public static MultiTagMessage Success(string message, params string[] otherTags)
-
- -

Parameters

-
-
message string
-

The message content

-
-
otherTags string[]
-

Additional tags to associate with the message

-
-
- -

Returns

-
-
MultiTagMessage
-

A new MultiTagMessage tagged with Success

-
-
- - - - - - - - - - - - - -

- ToString() - -

- -

Returns a string that represents the current object.

-
-
- -
-
public override string ToString()
-
- - -

Returns

-
-
string
-

A string that represents the current object.

-
-
- - - - - - - - - - - - - -

- Warning(string, params string[]) - -

- -

Creates a Warning message.

-
-
- -
-
public static MultiTagMessage Warning(string message, params string[] otherTags)
-
- -

Parameters

-
-
message string
-

The message content

-
-
otherTags string[]
-

Additional tags to associate with the message

-
-
- -

Returns

-
-
MultiTagMessage
-

A new MultiTagMessage tagged with Warning

-
-
- - - - - - - - - - - - -
- -
-
- - -
- -
- -
-
- -
- - - - diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.MultiTagMessageUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.MultiTagMessageUtil.html deleted file mode 100644 index 6552a719..00000000 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.MultiTagMessageUtil.html +++ /dev/null @@ -1,453 +0,0 @@ - - - - - Class MultiTagMessageUtil | HiAPI-C# 2025 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
-
-
Table of Contents
- -
-
- -
-
-
- -
-
- - - -
- -
- - - -

-Class MultiTagMessageUtil -

- -
-
Namespace
Hi.Common.Messages
-
Assembly
HiGeom.dll
-
- -

Utility methods for working with IProgress implementations.

-
-
- -
-
public static class MultiTagMessageUtil
-
- - - - -
-
Inheritance
-
- -
MultiTagMessageUtil
-
-
- - - -
-
Inherited Members
-
- - - - - - - -
- - - - - - -

Methods -

- - - - -

- ReportError(IProgress<object>, string, params string[]) - -

- -

Adds an Error message to the message host.

-
-
- -
-
public static void ReportError(this IProgress<object> host, string message, params string[] otherTags)
-
- -

Parameters

-
-
host IProgress<object>
-

The message host

-
-
message string
-

The message content

-
-
otherTags string[]
-

Additional tags to associate with the message

-
-
- - - - - - - - - - - - - - -

- ReportException(IProgress<object>, Exception, params string[]) - -

- -

Adds an Exception message to the message host.

-
-
- -
-
public static void ReportException(this IProgress<object> host, Exception exception, params string[] otherTags)
-
- -

Parameters

-
-
host IProgress<object>
-

The message host

-
-
exception Exception
-

The exception to log

-
-
otherTags string[]
-

Additional tags to associate with the message

-
-
- - - - - - - - - - - - - - -

- ReportInfo(IProgress<object>, string, params string[]) - -

- -

Adds an Info message to the message host.

-
-
- -
-
public static void ReportInfo(this IProgress<object> host, string message, params string[] otherTags)
-
- -

Parameters

-
-
host IProgress<object>
-

The message host

-
-
message string
-

The message content

-
-
otherTags string[]
-

Additional tags to associate with the message

-
-
- - - - - - - - - - - - - - -

- ReportMessage(IProgress<object>, string, params string[]) - -

- -

Adds a message with the specified tags to the message host.

-
-
- -
-
public static void ReportMessage(this IProgress<object> host, string msg, params string[] tags)
-
- -

Parameters

-
-
host IProgress<object>
-

The message host

-
-
msg string
-

The message content

-
-
tags string[]
-

The tags to associate with the message

-
-
- - - - - - - - - - - - - - -

- ReportProgress(IProgress<object>, string, params string[]) - -

- -

Adds a Progress message to the message host.

-
-
- -
-
public static void ReportProgress(this IProgress<object> host, string message, params string[] otherTags)
-
- -

Parameters

-
-
host IProgress<object>
-

The message host

-
-
message string
-

The message content

-
-
otherTags string[]
-

Additional tags to associate with the message

-
-
- - - - - - - - - - - - - - -

- ReportSuccess(IProgress<object>, string, params string[]) - -

- -

Adds a Success message to the message host.

-
-
- -
-
public static void ReportSuccess(this IProgress<object> host, string message, params string[] otherTags)
-
- -

Parameters

-
-
host IProgress<object>
-

The message host

-
-
message string
-

The message content

-
-
otherTags string[]
-

Additional tags to associate with the message

-
-
- - - - - - - - - - - - - - -

- ReportWarning(IProgress<object>, string, params string[]) - -

- -

Adds a warning message to the message host.

-
-
- -
-
public static void ReportWarning(this IProgress<object> host, string message, params string[] otherTags)
-
- -

Parameters

-
-
host IProgress<object>
-

The message host

-
-
message string
-

The message content

-
-
otherTags string[]
-

Additional tags to associate with the message

-
-
- - - - - - - - - - - - - -
- -
-
- - -
- -
- -
-
- -
- - - - diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mappings.FileTimeSection.TimeOption.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.Severity.html similarity index 77% rename from App/wwwroot/HiAPI-docsite/api/Hi.Mappings.FileTimeSection.TimeOption.html rename to App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.Severity.html index e86daa50..76dc5b57 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mappings.FileTimeSection.TimeOption.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.Severity.html @@ -2,11 +2,11 @@ - Enum FileTimeSection.TimeOption | HiAPI-C# 2025 + Enum Severity | HiAPI-C# 2025 - + - + @@ -84,26 +84,29 @@
-
+
-

-Enum FileTimeSection.TimeOption +

+Enum Severity

-
Namespace
Hi.Mappings
+
Namespace
Hi.Common.Messages
Assembly
HiGeom.dll
-

Defines options for representing time values.

+

Importance level of an IMessage. Combined with Category to form +the full meaning (e.g. Validation + Warning). Promoted from the former +NcDiagnosticSeverity so non-NC messages (simple notices, progress fractions) share a +single scale.

-
public enum FileTimeSection.TimeOption
+
public enum Severity
@@ -145,13 +148,25 @@ Enum FileTimeSection.TimeOption

Fields

-
TimeSpan = 1
+
Error = 4
-

Represent time as a TimeSpan.

+

Definite issue — result may be incorrect.

-
TotalSeconds = 0
+
Message = 0
-

Represent time as total seconds.

+

Informational status.

+
+
Progress = 2
+ +

Ongoing progress / fraction update.

+
+
Success = 1
+ +

Completed successfully.

+
+
Warning = 3
+ +

Potential issue — processing continues.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.SimpleMessage.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.SimpleMessage.html new file mode 100644 index 00000000..9284980e --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.SimpleMessage.html @@ -0,0 +1,810 @@ + + + + + Class SimpleMessage | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SimpleMessage +

+ +
+
Namespace
Hi.Common.Messages
+
Assembly
HiGeom.dll
+
+ +

A plain IMessage with no anchor: severity, category, id, notification text and +optional detail. This is the default carrier for ad-hoc messages that have no other home. +When step context is available, a step-anchored decorator wraps a SimpleMessage +to add the StepIndex / SentenceCarrier without the producer needing to know it.

+
+
+ +
+
public class SimpleMessage : IMessage
+
+ + + + +
+
Inheritance
+
+ +
SimpleMessage
+
+
+ +
+
Implements
+
+ +
+
+ + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ SimpleMessage(Severity, FormattableString, Category, string, object) + +

+ +

Initializes a templated instance: the interpolated template and its values are kept on +Format / Args and Notification becomes the +culture-invariant English rendering. An interpolated string literal passed to the +string constructor is NOT captured here — call sites opt in through the +*Fmt helpers on MessageUtil.

+
+
+ +
+
public SimpleMessage(Severity severity, FormattableString notification, Category category = Category.System, string id = null, object detail = null)
+
+ +

Parameters

+
+
severity Severity
+

Importance level.

+
+
notification FormattableString
+

Interpolated notification template.

+
+
category Category
+

Classification; defaults to System.

+
+
id string
+

Optional structured id.

+
+
detail object
+

Optional detail payload or exception.

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

+ SimpleMessage(Severity, string, Category, string, object) + +

+ +

Initializes a new instance of the SimpleMessage class.

+
+
+ +
+
public SimpleMessage(Severity severity, string notification, Category category = Category.System, string id = null, object detail = null)
+
+ +

Parameters

+
+
severity Severity
+

Importance level.

+
+
notification string
+

End-user friendly notification text.

+
+
category Category
+

Classification; defaults to System.

+
+
id string
+

Optional structured id.

+
+
detail object
+

Optional detail payload or exception.

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

Properties +

+ + + + +

+ Args + +

+ +

Gets the values interpolated into Format; null when untemplated.

+
+
+ +
+
public object[] Args { get; }
+
+ + + + + +

Property Value

+
+
object[]
+
+
+ + + + + + + + + + +

+ Category + +

+ +

Gets the classification.

+
+
+ +
+
public Category Category { get; }
+
+ + + + + +

Property Value

+
+
Category
+
+
+ + + + + + + + + + +

+ Detail + +

+ +

Gets the optional detail payload or exception; null when not applicable.

+
+
+ +
+
public object Detail { get; }
+
+ + + + + +

Property Value

+
+
object
+
+
+ + + + + + + + + + +

+ Format + +

+ +

Gets the composite-format template behind Notification; null when the +message was built from a plain string (untemplated).

+
+
+ +
+
public string Format { get; }
+
+ + + + + +

Property Value

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

+ Id + +

+ +

Gets the structured id for filtering / suppression; may be null.

+
+
+ +
+
public string Id { get; }
+
+ + + + + +

Property Value

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

+ Notification + +

+ +

Gets the end-user friendly notification text.

+
+
+ +
+
public string Notification { get; }
+
+ + + + + +

Property Value

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

+ Severity + +

+ +

Gets the importance level.

+
+
+ +
+
public Severity Severity { get; }
+
+ + + + + +

Property Value

+
+
Severity
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ GetArgs() + +

+ +

Gets the values interpolated into GetFormat(); null when +GetFormat() is null, possibly empty for a hole-less template. +Default interface method so external implementers are unaffected.

+
+
+ +
+
public object[] GetArgs()
+
+ + +

Returns

+
+
object[]
+

The interpolation arguments, or null when untemplated.

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

+ GetCategory() + +

+ +

Gets the classification — see Category.

+
+
+ +
+
public Category GetCategory()
+
+ + +

Returns

+
+
Category
+

The category of this message.

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

+ GetDetail() + +

+ +

Gets the optional detail payload or exception; null when not applicable.

+
+
+ +
+
public object GetDetail()
+
+ + +

Returns

+
+
object
+

The detail object, or null.

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

+ GetFormat() + +

+ +

Gets the composite-format template behind GetNotification() — a +{0}-style .NET format string — when this message was produced from an +interpolated template; null when the notification has no structured template. +Together with GetArgs() this lets a consumer re-render the message +in another language without losing the interpolated live values, while +GetNotification() stays the invariant English rendering. +Default interface method so external implementers are unaffected.

+
+
+ +
+
public string GetFormat()
+
+ + +

Returns

+
+
string
+

The composite format string, or null when untemplated.

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

+ GetId() + +

+ +

Gets the structured id used for filtering / suppression; may be null.

+
+
+ +
+
public string GetId()
+
+ + +

Returns

+
+
string
+

The message id, or null when not applicable.

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

+ GetNotification() + +

+ +

Gets the end-user friendly notification text.

+
+
+ +
+
public string GetNotification()
+
+ + +

Returns

+
+
string
+

The notification text.

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

+ GetSeverity() + +

+ +

Gets the importance level — see Severity.

+
+
+ +
+
public Severity GetSeverity()
+
+ + +

Returns

+
+
Severity
+

The severity of this message.

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

+ ToString() + +

+ +

Returns a string that represents the current object.

+
+
+ +
+
public override string ToString()
+
+ + +

Returns

+
+
string
+

A string that represents the current object.

+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.html index 3e6ec21d..0316b466 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.Messages.html @@ -118,13 +118,68 @@ and invokes the handler synchronously on the caller's thread.

-
MultiTagMessage
-

Represents a message with multiple tags for categorization and filtering.

+
MessageCollector
+

A minimal IProgress<T> of IMessage that buffers every +reported message into Messages. Intended as a per-call / per-request +sink: a caller injects it into a have-both function (one that takes an +IProgress<IMessage> messageProgress), runs the operation, then reads the +collected messages back — e.g. to return them in an HTTP response so a REST / AI +caller sees progress, success, and error notifications inline.

+

Unlike the session / strip sinks (SessionProgress, StepDiagnosticProgress) it +fires no events and holds no session or pipeline state; it is cheap to create and +discard for the lifetime of a single call.

-
MultiTagMessageUtil
-

Utility methods for working with IProgress implementations.

+
MessageUtil
+

Extension helpers for reporting SimpleMessage records onto an +IProgress<T> of IMessage sink — the IMessage-channel +counterpart of NcDiagnosticProgress's shorthand methods. Every helper is named +{Category}{Severity} and is id-first; the structured id is used for +filtering / suppression. All overloads are null-safe on host.

+

+Each helper has a {Category}{Severity}Fmt sibling taking a +FormattableString: it keeps the interpolated template and values +(Format / Args) so a client can +re-render the message in another language, while the notification stays the invariant +English rendering. The sibling must be opted into by name — an interpolated string literal +passed to the string helper binds to string and is not captured. +

+
+
+
+
SimpleMessage
+

A plain IMessage with no anchor: severity, category, id, notification text and +optional detail. This is the default carrier for ad-hoc messages that have no other home. +When step context is available, a step-anchored decorator wraps a SimpleMessage +to add the StepIndex / SentenceCarrier without the producer needing to know it.

+
+
+

+Interfaces +

+
+
IMessage
+

Common contract for a single reportable item on an IProgress<T> +channel — an NC diagnostic, a step-anchored notice, a simple message, or a progress +fraction. Consumers (GUI / log) treat every kind uniformly through this view, while each +concrete kind is still stored by its own owner (e.g. NcDiagnostic by +NcDiagnosticProgress, ClStripPos by ClStrip) rather than being mixed +into one shared collection.

+
+
+
+
IProgressMessage
+

Marker for an IMessage that is itself a container of messages (a batch +produced over the course of some scoped work) rather than a single leaf notice. A sink may give +it special treatment — unrolling its accumulated children, in order, instead of storing the +composite object itself.

+

+Empty by design: the contract is purely the marker. The children are exposed by the concrete +type (e.g. StepScopedProgress.MessageList) and drained at the point that owns the +ordering guarantee, so a consumer that does not recognize IProgressMessage simply +treats the composite as an opaque IMessage. +

@@ -133,11 +188,27 @@ Enums
BootstrapTheme

Bootstrap theme colors for UI styling.

+
+
+
+
Category
+

Classification of an IMessage — the “what kind of concern” axis, orthogonal to the +Severity importance axis it pairs with. Applies to every IMessage on +the channel (lifecycle / progress notices, configuration checks, NC-pipeline diagnostics, …), +not only NC messages.

MessageFlag

Enumeration of common message types used for system notifications.

+
+
+
+
Severity
+

Importance level of an IMessage. Combined with Category to form +the full meaning (e.g. Validation + Warning). Promoted from the former +NcDiagnosticSeverity so non-NC messages (simple notices, progress fractions) share a +single scale.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.NameUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.NameUtil.html index da1e87d3..512ae352 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.NameUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.NameUtil.html @@ -268,6 +268,49 @@ or falling back to the type name.

+ + +

+ SpacePascalWords(string) + +

+ +

Spaces a PascalCase member name into display words: an underscore +suffix is dropped and a space is inserted before each capital that +starts a new word, so MachiningResolution_mm becomes +“Machining Resolution” and ReadOnFirstOrWrite becomes +“Read On First Or Write”. Consecutive capitals stay one word.

+
+
+ +
+
public static string SpacePascalWords(string name)
+
+ +

Parameters

+
+
name string
+

The member name to space.

+
+
+ +

Returns

+
+
string
+

The spaced display words.

+
+
+ + + + + + + + + + +
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.PacePlayer.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.PacePlayer.html index eb7963ab..03a446c2 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.PacePlayer.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.PacePlayer.html @@ -416,6 +416,43 @@ The property is true if a task started and the task has not yet finished and + +

+ RunCount + +

+ +

Monotonically increasing count of runs started by Start(), +incremented synchronously before the run's task launches (never reset). +Serves as the run identity for status pollers: pairing this with +IsFinished in one snapshot lets a client distinguish +“the run I started has finished” from a stale Finished left by a +previous run. 0 until the first run starts.

+
+
+ +
+
public long RunCount { get; }
+
+ + + + + +

Property Value

+
+
long
+
+
+ + + + + + + +

Methods

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html index 074e47ac..6fe1de84 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html @@ -193,8 +193,8 @@ Manages reading data in parallel with forward and backward caching to optimize p -

- ParallelBulkReader(int, int, int, ReadBulkDelegate<TData>, Func<TData, int?>, Func<int>, Action<Exception>) +

+ ParallelBulkReader(int, int, int, ReadBulkDelegate<TData>, Func<TData, int?>, Action<Exception>)

@@ -203,7 +203,7 @@ Manages reading data in parallel with forward and backward caching to optimize p
-
public ParallelBulkReader(int cacheBackwardDistance, int cacheForwardDistance, int cacheQueueLimit, ReadBulkDelegate<TData> readBulkFunc, Func<TData, int?> getIndexFunc, Func<int> countFunc, Action<Exception> exceptionAction = null)
+
public ParallelBulkReader(int cacheBackwardDistance, int cacheForwardDistance, int cacheQueueLimit, ReadBulkDelegate<TData> readBulkFunc, Func<TData, int?> getIndexFunc, Action<Exception> exceptionAction = null)

Parameters

@@ -222,9 +222,6 @@ Manages reading data in parallel with forward and backward caching to optimize p
getIndexFunc Func<TData, int?>

The function used to extract an index from a data item.

-
-
countFunc Func<int>
-

The function that returns the total count of available data items.

exceptionAction Action<Exception>

Optional action invoked when an exception occurs in cache operations.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html index fe944b81..dced7d40 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html @@ -187,8 +187,8 @@ Unlike -

- SequentialBulkReader(int, int, ReadBulkDelegate<TData>, Func<TData, int?>, Func<int>) +

+ SequentialBulkReader(int, int, ReadBulkDelegate<TData>, Func<TData, int?>)

@@ -197,7 +197,7 @@ Unlike
-
public SequentialBulkReader(int bulkListSize, int bulkSize, ReadBulkDelegate<TData> readBulkFunc, Func<TData, int?> getIndexFunc, Func<int> countFunc)
+
public SequentialBulkReader(int bulkListSize, int bulkSize, ReadBulkDelegate<TData> readBulkFunc, Func<TData, int?> getIndexFunc)

Parameters

@@ -213,9 +213,6 @@ Unlike
Func<TData, int?>

The function used to extract an index from a data item.

-
-
countFunc Func<int>
-

The function that returns the total count of available data items.

@@ -234,38 +231,6 @@ Unlike - -

- CountFunc - -

- -

Gets the function that returns the total count of available data items.

-
-
- -
-
public Func<int> CountFunc { get; }
-
- - - - - -

Property Value

-
-
Func<int>
-
-
- - - - - - - -

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.ProgressFraction.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.ProgressFraction.html index c7852e48..4a50e85b 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.ProgressFraction.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.ProgressFraction.html @@ -6,7 +6,7 @@ - + @@ -97,12 +97,16 @@ Class ProgressFraction
Assembly
HiDisp.dll

-

Represents a progress report implementation.

+

Represents a progress report implementation. Also exposes an IMessage view +(explicitly implemented) so a progress fraction can ride the unified message channel uniformly +alongside SimpleMessage / NcDiagnostic: Progress + +System, with Msg as the notification and Detail +as the detail payload.

-
public class ProgressFraction : IProgressFraction
+
public class ProgressFraction : IProgressFraction, IMessage
@@ -120,6 +124,7 @@ Class ProgressFraction
Implements
IProgressFraction
+
IMessage
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.ResourceDefaultMarker.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.ResourceDefaultMarker.html new file mode 100644 index 00000000..0be85c24 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.ResourceDefaultMarker.html @@ -0,0 +1,383 @@ + + + + + Class ResourceDefaultMarker | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class ResourceDefaultMarker +

+ +
+
Namespace
Hi.Common
+
Assembly
HiGeom.dll
+
+ +

File-name convention that marks a shipped resource item as a system-owned +default: a file carries the token before its final extension +(AlTiBN.default.CoatingMaterial), a folder-shaped resource carries it +as a folder-name suffix (MachineTool/Table-B1.default/) with the +files inside left untouched.

+
+
+ +
+
public static class ResourceDefaultMarker
+
+ + + + +
+
Inheritance
+
+ +
ResourceDefaultMarker
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + +

Remarks

+

Marked means system territory — the resource seeder may overwrite the item +on version updates and delete marked items that are no longer shipped. +Unmarked items belong to the user and are never touched. The marker is a +declaration, not an enforcement: user edits to a marked file survive until +the next shipped-version change overwrites them.

+
+ + +

Fields +

+ + + +

+ Token + +

+ +

The marker token. Files embed it before the final extension; folders +end with it.

+
+
+ +
+
public const string Token = ".default"
+
+ + + + +

Field Value

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

Methods +

+ + + + +

+ IsMarkedFileName(string) + +

+ +

Whether fileName carries the marker +(contains .default.).

+
+
+ +
+
public static bool IsMarkedFileName(string fileName)
+
+ +

Parameters

+
+
fileName string
+

File name without directory.

+
+
+ +

Returns

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

+ IsMarkedFolderName(string) + +

+ +

Whether folderName carries the marker +(ends with .default).

+
+
+ +
+
public static bool IsMarkedFolderName(string folderName)
+
+ +

Parameters

+
+
folderName string
+

Folder name without directory.

+
+
+ +

Returns

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

+ StripFileName(string) + +

+ +

Removes the marker from a marked file name +(X.default.mpX.mp); an unmarked name passes through.

+
+
+ +
+
public static string StripFileName(string fileName)
+
+ +

Parameters

+
+
fileName string
+

File name without directory.

+
+
+ +

Returns

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

+ StripFolderName(string) + +

+ +

Removes the marker from a marked folder name +(CT-350.defaultCT-350); an unmarked name passes through.

+
+
+ +
+
public static string StripFolderName(string folderName)
+
+ +

Parameters

+
+
folderName string
+

Folder name without directory.

+
+
+ +

Returns

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

+Class ResourceLayout +

+ +
+
Namespace
Hi.Common
+
Assembly
HiNc.dll
+
+ +

Provides the relative folder paths that make up the shipped resource tree.

+
+
+ +
+
public static class ResourceLayout
+
+ + + + +
+
Inheritance
+
+ +
ResourceLayout
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Fields +

+ + + +

+ CoatingMaterialFolder + +

+ +

Gets the path to the coating material resource folder.

+
+
+ +
+
public const string CoatingMaterialFolder = "Resource/CoatingMaterial"
+
+ + + + +

Field Value

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

+ ControllerFolder + +

+ +

Gets the path to the CNC controller resource folder, holding the brand +SoftNcRunner presets written by +ControllerPresetWriter.

+
+
+ +
+
public const string ControllerFolder = "Resource/Controller"
+
+ + + + +

Field Value

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

+ CutterFolder + +

+ +

Gets the path to the cutter resource folder.

+
+
+ +
+
public const string CutterFolder = "Resource/Cutter"
+
+ + + + +

Field Value

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

+ CuttingParameterFolder + +

+ +

Gets the path to the cutting parameter resource folder.

+
+
+ +
+
public const string CuttingParameterFolder = "Resource/CuttingParameter"
+
+ + + + +

Field Value

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

+ HolderFolder + +

+ +

Gets the path to the holder resource folder.

+
+
+ +
+
public const string HolderFolder = "Resource/Holder"
+
+ + + + +

Field Value

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

+ MachineToolFolder + +

+ +

Gets the path to the machine tool resource folder.

+
+
+ +
+
public const string MachineToolFolder = "Resource/MachineTool"
+
+ + + + +

Field Value

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

+ ResourceFolder + +

+ +

Gets the path to the main resource folder.

+
+
+ +
+
public const string ResourceFolder = "Resource"
+
+ + + + +

Field Value

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

+ SpindleCapabilityFolder + +

+ +

Gets the path to the spindle capability resource folder.

+
+
+ +
+
public const string SpindleCapabilityFolder = "Resource/SpindleCapability"
+
+ + + + +

Field Value

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

+ StructureMaterialFolder + +

+ +

Gets the path to the structure material resource folder.

+
+
+ +
+
public const string StructureMaterialFolder = "Resource/StructureMaterial"
+
+ + + + +

Field Value

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

+ WorkpieceMaterialFolder + +

+ +

Gets the path to the workpiece material resource folder.

+
+
+ +
+
public const string WorkpieceMaterialFolder = "Resource/WorkpieceMaterial"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.ResourceUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.ResourceUtil.html index 93495bbc..2f804d59 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.ResourceUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.ResourceUtil.html @@ -6,7 +6,7 @@ - + @@ -97,7 +97,12 @@ Class ResourceUtil
Assembly
HiGeom.dll
-

Utility class for working with resource managers and localized strings.

+

Utility class for working with resource managers and localized strings, +and the home of the attribute-declared command vocabulary: the +CultureTextAttribute declarations of an assembly, exposed as +“type/member + culture → text” queries and as +ICommandTextSource instances, with GUI-layer overrides +layered on top (SetTextOverride(string, string, string)).

@@ -149,293 +154,57 @@ Class ResourceUtil -

Fields -

- - - -

- CoatingMaterialFolder - -

- -

Gets the path to the coating material resource folder.

-
-
- -
-
public const string CoatingMaterialFolder = "Resource/CoatingMaterial"
-
- - - - -

Field Value

-
-
string
-
-
- - - - - - - - - - -

- CutterFolder - -

- -

Gets the path to the cutter resource folder.

-
-
- -
-
public const string CutterFolder = "Resource/Cutter"
-
- - - - -

Field Value

-
-
string
-
-
- - - - - - - - - - -

- CuttingParameterFolder - -

- -

Gets the path to the cutting parameter resource folder.

-
-
- -
-
public const string CuttingParameterFolder = "Resource/CuttingParameter"
-
- - - - -

Field Value

-
-
string
-
-
- - - - - - - - - - -

- HolderFolder - -

- -

Gets the path to the holder resource folder.

-
-
- -
-
public const string HolderFolder = "Resource/Holder"
-
- - - - -

Field Value

-
-
string
-
-
- - - - - - - - - - -

- MachineToolFolder - -

- -

Gets the path to the machine tool resource folder.

-
-
- -
-
public const string MachineToolFolder = "Resource/MachineTool"
-
- - - - -

Field Value

-
-
string
-
-
- - - - - - - - - - -

- ResourceFolder - -

- -

Gets the path to the main resource folder.

-
-
- -
-
public const string ResourceFolder = "Resource"
-
- - - - -

Field Value

-
-
string
-
-
- - - - - - - - - - -

- SpindleCapabilityFolder - -

- -

Gets the path to the spindle capability resource folder.

-
-
- -
-
public const string SpindleCapabilityFolder = "Resource/SpindleCapability"
-
- - - - -

Field Value

-
-
string
-
-
- - - - - - - - - - -

- StructureMaterialFolder - -

- -

Gets the path to the structure material resource folder.

-
-
- -
-
public const string StructureMaterialFolder = "Resource/StructureMaterial"
-
- - - - -

Field Value

-
-
string
-
-
- - - - - - - - - - -

- WorkpieceMaterialFolder - -

- -

Gets the path to the workpiece material resource folder.

-
-
- -
-
public const string WorkpieceMaterialFolder = "Resource/WorkpieceMaterial"
-
- - - - -

Field Value

-
-
string
-
-
- - - - - - - - -

Methods

+ + +

+ GenTextSource(CultureInfo, params Type[]) + +

+ +

Generates an ICommandTextSource carrying +culture, resolving keys against the +CultureTextAttribute declarations of the +vocabTypes' assemblies plus the registered +overrides — the engine-default localizer a caller injects into +title-composing commands.

+
+
+ +
+
public static ICommandTextSource GenTextSource(CultureInfo culture, params Type[] vocabTypes)
+
+ +

Parameters

+
+
culture CultureInfo
+

Culture the source carries; null takes the current UI culture.

+
+
vocabTypes Type[]
+

Types anchoring the assemblies whose declarations feed the source.

+
+
+ +

Returns

+
+
ICommandTextSource
+

The text source.

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

@@ -518,6 +287,95 @@ The default value is the name itself.

+ + +

+ GetText(MemberInfo, CultureInfo) + +

+ +

The text of member's vocabulary key in +culture — the “type/member + culture → text” query. +Resolution walks the culture's parent chain; on each level a +registered override (SetTextOverride(string, string, string)) outranks the +member assembly's CultureTextAttribute declaration. With +no match the key itself — the English default — is returned.

+
+
+ +
+
public static string GetText(MemberInfo member, CultureInfo culture)
+
+ +

Parameters

+
+
member MemberInfo
+

The type or member owning the vocabulary key.

+
+
culture CultureInfo
+

Wanted culture; null takes the current UI culture.

+
+
+ +

Returns

+
+
string
+

The culture's text, or the key itself.

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

+ SetTextOverride(string, string, string) + +

+ +

Registers a GUI-layer text for a vocabulary key in one culture. An +override outranks the assembly's own CultureTextAttribute +declaration in that culture, and may add a culture the assembly never +declared. Process-level; typically called once at GUI startup.

+
+
+ +
+
public static void SetTextOverride(string cultureName, string key, string text)
+
+ +

Parameters

+
+
cultureName string
+

Culture name the text is written in (e.g. zh-Hant).

+
+
key string
+

Vocabulary key — the English default text.

+
+
text string
+

The overriding text; null removes the override.

+
+
+ + + + + + + + + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.ProjectApiVersion.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.ProjectApiVersion.html index c3036f09..9d56aa75 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.ProjectApiVersion.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.ProjectApiVersion.html @@ -263,7 +263,11 @@ Consumers retrieve it with res?.OfType<ProjectApiVersion>().FirstOrD

Returns true if the source file was saved by an API version older than version. -Returns false when the source version is unknown (null).

+Returns false when the source version is unknown (null) — without +the explicit guard, Version's comparison +operator ranks a null left operand as OLDEST and every legacy +patch would fire on an unversioned file, contradicting this +contract that version-gated upgrades rely on.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XFactory.XGeneratorDelegate.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XFactory.XGeneratorDelegate.html index 902bcbc7..2bab5e1e 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XFactory.XGeneratorDelegate.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XFactory.XGeneratorDelegate.html @@ -103,7 +103,7 @@ file path context.

-
public delegate object XFactory.XGeneratorDelegate(XElement src, string baseDirectory, string relFile, IProgress<object> progress, object[] res)
+
public delegate object XFactory.XGeneratorDelegate(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress, object[] res)

Parameters

@@ -117,7 +117,7 @@ file path context.

relFile string

The relative file path.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for the XML parsing chain.

res object[]
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 9696bcc7..6e32e183 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XFactory.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XFactory.html @@ -245,12 +245,14 @@ no explicit factory argument.

XML-name → generator-function map for this factory instance. Populated -by each type's Reg(this) call.

+by each type's Reg(this) call. Concurrent so that parallel +Reg calls (e.g. independent test classes each booting the +registration graph) can TryAdd without corrupting the map.

-
public Dictionary<string, XFactory.XGeneratorDelegate> Generators { get; }
+
public ConcurrentDictionary<string, XFactory.XGeneratorDelegate> Generators { get; }
@@ -259,7 +261,7 @@ by each type's Reg(this) call.

Property Value

-
Dictionary<string, XFactory.XGeneratorDelegate>
+
ConcurrentDictionary<string, XFactory.XGeneratorDelegate>
@@ -276,8 +278,8 @@ by each type's Reg(this) call.

-

- GenByChild<T>(XElement, string, IProgress<object>, bool, object[]) +

+ GenByChild<T>(XElement, string, IProgress<IMessage>, bool, object[])

@@ -286,7 +288,7 @@ by each type's Reg(this) call.

-
public static T GenByChild<T>(XElement src, string baseDirectory, IProgress<object> progress, bool enableRebase = true, object[] res = null) where T : class
+
public static T GenByChild<T>(XElement src, string baseDirectory, IProgress<IMessage> progress, bool enableRebase = true, object[] res = null) where T : class

Parameters

@@ -295,7 +297,7 @@ by each type's Reg(this) call.

baseDirectory string
-
progress IProgress<object>
+
progress IProgress<IMessage>
enableRebase bool
@@ -326,8 +328,8 @@ by each type's Reg(this) call.

-

- GenByChild<T>(XElement, string, out string, IProgress<object>, bool, object[]) +

+ GenByChild<T>(XElement, string, out string, IProgress<IMessage>, bool, object[])

@@ -336,7 +338,7 @@ by each type's Reg(this) call.

-
public static T GenByChild<T>(XElement src, string baseDirectory, out string relFile, IProgress<object> progress, bool enableRebase = true, object[] res = null) where T : class
+
public static T GenByChild<T>(XElement src, string baseDirectory, out string relFile, IProgress<IMessage> progress, bool enableRebase = true, object[] res = null) where T : class

Parameters

@@ -347,7 +349,7 @@ by each type's Reg(this) call.

relFile string
-
progress IProgress<object>
+
progress IProgress<IMessage>
enableRebase bool
@@ -378,8 +380,8 @@ by each type's Reg(this) call.

-

- GenByFile<T>(string, string, IProgress<object>, bool, object[]) +

+ GenByFile<T>(string, string, IProgress<IMessage>, bool, object[])

@@ -388,7 +390,7 @@ by each type's Reg(this) call.

-
public static T GenByFile<T>(string baseDirectory, string relFile, IProgress<object> progress, bool enableRebase = true, object[] res = null) where T : class
+
public static T GenByFile<T>(string baseDirectory, string relFile, IProgress<IMessage> progress, bool enableRebase = true, object[] res = null) where T : class

Parameters

@@ -397,7 +399,7 @@ by each type's Reg(this) call.

relFile string
-
progress IProgress<object>
+
progress IProgress<IMessage>
enableRebase bool
@@ -428,8 +430,8 @@ by each type's Reg(this) call.

-

- GenFileRefSourceByChild<T>(XElement, string, IProgress<object>, bool, object[]) +

+ GenFileRefSourceByChild<T>(XElement, string, IProgress<IMessage>, bool, object[])

@@ -438,7 +440,7 @@ by each type's Reg(this) call.

-
public static FileRefSource<T> GenFileRefSourceByChild<T>(XElement src, string baseDirectory, IProgress<object> progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource
+
public static FileRefSource<T> GenFileRefSourceByChild<T>(XElement src, string baseDirectory, IProgress<IMessage> progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource

Parameters

@@ -447,7 +449,7 @@ by each type's Reg(this) call.

baseDirectory string
-
progress IProgress<object>
+
progress IProgress<IMessage>
enableRebase bool
@@ -478,8 +480,8 @@ by each type's Reg(this) call.

-

- GenFileRefSourceByFile<T>(string, string, IProgress<object>, bool, object[]) +

+ GenFileRefSourceByFile<T>(string, string, IProgress<IMessage>, bool, object[])

@@ -488,7 +490,7 @@ by each type's Reg(this) call.

-
public static FileRefSource<T> GenFileRefSourceByFile<T>(string baseDirectory, string relFile, IProgress<object> progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource
+
public static FileRefSource<T> GenFileRefSourceByFile<T>(string baseDirectory, string relFile, IProgress<IMessage> progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource

Parameters

@@ -497,7 +499,7 @@ by each type's Reg(this) call.

relFile string
-
progress IProgress<object>
+
progress IProgress<IMessage>
enableRebase bool
@@ -528,8 +530,8 @@ by each type's Reg(this) call.

-

- GenFileRefSource<T>(XElement, string, IProgress<object>, bool, object[]) +

+ GenFileRefSource<T>(XElement, string, IProgress<IMessage>, bool, object[])

@@ -538,7 +540,7 @@ by each type's Reg(this) call.

-
public static FileRefSource<T> GenFileRefSource<T>(XElement src, string baseDirectory, IProgress<object> progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource
+
public static FileRefSource<T> GenFileRefSource<T>(XElement src, string baseDirectory, IProgress<IMessage> progress, bool enableRebase = true, object[] res = null) where T : class, IMakeXmlSource

Parameters

@@ -547,7 +549,7 @@ by each type's Reg(this) call.

baseDirectory string
-
progress IProgress<object>
+
progress IProgress<IMessage>
enableRebase bool
@@ -578,8 +580,8 @@ by each type's Reg(this) call.

-

- GenListSkippingUnloadable<T>(IEnumerable<XElement>, string, IProgress<object>, bool, object[]) +

+ GenListSkippingUnloadable<T>(IEnumerable<XElement>, string, IProgress<IMessage>, bool, object[])

@@ -595,7 +597,7 @@ the whole load.

-
public static List<T> GenListSkippingUnloadable<T>(IEnumerable<XElement> elements, string baseDirectory, IProgress<object> progress, bool enableRebase = true, object[] res = null) where T : class
+
public static List<T> GenListSkippingUnloadable<T>(IEnumerable<XElement> elements, string baseDirectory, IProgress<IMessage> progress, bool enableRebase = true, object[] res = null) where T : class

Parameters

@@ -604,7 +606,7 @@ the whole load.

baseDirectory string
-
progress IProgress<object>
+
progress IProgress<IMessage>
enableRebase bool
@@ -635,8 +637,8 @@ the whole load.

-

- Gen<T>(XElement, string, IProgress<object>, bool, object[]) +

+ Gen<T>(XElement, string, IProgress<IMessage>, bool, object[])

@@ -645,7 +647,7 @@ the whole load.

-
public static T Gen<T>(XElement src, string baseDirectory, IProgress<object> progress, bool enableRebase = true, object[] res = null) where T : class
+
public static T Gen<T>(XElement src, string baseDirectory, IProgress<IMessage> progress, bool enableRebase = true, object[] res = null) where T : class

Parameters

@@ -654,7 +656,7 @@ the whole load.

baseDirectory string
-
progress IProgress<object>
+
progress IProgress<IMessage>
enableRebase bool
@@ -685,8 +687,8 @@ the whole load.

-

- Gen<T>(XElement, string, out string, IProgress<object>, bool, object[]) +

+ Gen<T>(XElement, string, out string, IProgress<IMessage>, bool, object[])

@@ -695,7 +697,7 @@ the whole load.

-
public static T Gen<T>(XElement src, string baseDirectory, out string relFile, IProgress<object> progress, bool enableRebase = true, object[] res = null) where T : class
+
public static T Gen<T>(XElement src, string baseDirectory, out string relFile, IProgress<IMessage> progress, bool enableRebase = true, object[] res = null) where T : class

Parameters

@@ -706,7 +708,7 @@ the whole load.

relFile string
-
progress IProgress<object>
+
progress IProgress<IMessage>
enableRebase bool
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XmlUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XmlUtil.html index 4f98992b..6a7ebda1 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XmlUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.XmlUtils.XmlUtil.html @@ -221,8 +221,8 @@ Class XmlUtil -

- GetDictionaryByXmlSource<T>(XElement, string, IProgress<object>, bool) +

+ GetDictionaryByXmlSource<T>(XElement, string, IProgress<IMessage>, bool)

@@ -231,7 +231,7 @@ Class XmlUtil
-
public static Dictionary<string, T> GetDictionaryByXmlSource<T>(this XElement src, string baseDirectory, IProgress<object> progress, bool enableRebase = true) where T : class
+
public static Dictionary<string, T> GetDictionaryByXmlSource<T>(this XElement src, string baseDirectory, IProgress<IMessage> progress, bool enableRebase = true) where T : class

Parameters

@@ -242,7 +242,7 @@ Class XmlUtil
baseDirectory string

The base directory for resolving paths

-
progress IProgress<object>
+
progress IProgress<IMessage>

Optional progress reporter for the XML parsing chain

enableRebase bool
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Common.html b/App/wwwroot/HiAPI-docsite/api/Hi.Common.html index 55c531cd..4aee3815 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Common.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Common.html @@ -130,11 +130,30 @@ If the execution time is over the
CppLogUtil

Internal Use Only.

+
+ +
+
CultureTextAttribute
+

Declares one culture's text for one vocabulary key on the member carrying +the attribute — the static wording of command titles and labels, owned by +the declaring library as a DEFAULT: a GUI layer may override it or add +cultures the library never declared (see +SetTextOverride(string, string, string)), and a culture left undeclared +is not an error — lookups fall back toward the English key.

+

+The key defaults to the member's own display name: its +DisplayNameAttribute value when +present, otherwise the member name spaced into words +(SpacePascalWords(string)). Set Key to declare +a word the member does not itself name (a shared switch word, a mode +label). Apply the attribute once per culture. +

CultureUtil
-

Utility class for managing culture and localization settings.

+

The English culture the engine formats and parses with, and the one call +that pins a thread to it.

@@ -222,17 +241,40 @@ Only the most recent action is executed and previous pending actions are discard
ProgressFraction
-

Represents a progress report implementation.

+

Represents a progress report implementation. Also exposes an IMessage view +(explicitly implemented) so a progress fraction can ride the unified message channel uniformly +alongside SimpleMessage / NcDiagnostic: Progress + +System, with Msg as the notification and Detail +as the detail payload.

Range<T>

Range from Min to Max.

+
+
+
+
ResourceDefaultMarker
+

File-name convention that marks a shipped resource item as a system-owned +default: a file carries the token before its final extension +(AlTiBN.default.CoatingMaterial), a folder-shaped resource carries it +as a folder-name suffix (MachineTool/Table-B1.default/) with the +files inside left untouched.

+
+
+
+
ResourceLayout
+

Provides the relative folder paths that make up the shipped resource tree.

ResourceUtil
-

Utility class for working with resource managers and localized strings.

+

Utility class for working with resource managers and localized strings, +and the home of the attribute-declared command vocabulary: the +CultureTextAttribute declarations of an assembly, exposed as +“type/member + culture → text” queries and as +ICommandTextSource instances, with GUI-layer overrides +layered on top (SetTextOverride(string, string, string)).

@@ -295,6 +337,18 @@ Extends IWriteBin to provide
IClearCache

Interface for objects that can clear their internal cache.

+
+
+
+
ICommandTextSource
+

A culture-bearing vocabulary commands compose their titles and labels +from: it maps a vocabulary key — the English default text — onto that +culture's text. The CALLER picks the source, so the presentation layer +owns the language (no thread culture involved); the command keeps its +composition and degradation rules. Presentation layers can implement +their own source or take the engine-default one from +GenTextSource(CultureInfo, params Type[]) ([CultureText] declarations +overlaid by SetTextOverride(string, string, string) registrations).

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.CutterLocations.ClStrips.ClStrip.html b/App/wwwroot/HiAPI-docsite/api/Hi.CutterLocations.ClStrips.ClStrip.html index a8a77510..ae6888fa 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.CutterLocations.ClStrips.ClStrip.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.CutterLocations.ClStrips.ClStrip.html @@ -459,6 +459,42 @@ The members' value is possible to be null for the un-available status.

+ + +

+ LastRefreshHadUncoveredRecolor + +

+ +

True when the last RefreshDrawingInRendering(bool) re-stamped at +least one position whose attachment is not covered by the native color +table. Only then do stale colors remain baked in the workpiece display +caches, so the whole-tree clean after the re-stamp is still required; +covered recolors reach the screen through the table without any clean.

+
+
+ +
+
public bool LastRefreshHadUncoveredRecolor { get; }
+
+ + + + + +

Property Value

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

@@ -556,6 +592,41 @@ Do not add or remove elements directly.

+ + +

+ StripPosesRetirer + +

+ +

Optional sink for retiring abandoned ClStripPos when the strip is cleared. Injected by the +owner (MachiningActRunner) to route through WorkpieceService.RetireAttachments — detach the +poses from the live runtime tree under its render barrier, then free them in the background. +When null, the poses are freed directly on CubeTree's background chain.

+
+
+ +
+
public Action<IReadOnlyList<ClStripPos>> StripPosesRetirer { get; set; }
+
+ + + + + +

Property Value

+
+
Action<IReadOnlyList<ClStripPos>>
+
+
+ + + + + + + +

Methods

@@ -1401,6 +1472,38 @@ This method sets both the beginning and ending positions of the display range. + Cleared + + + +

Event raised after Clear(object) has emptied StripPoses, so list-style +consumers (e.g. a step table) can reset without polling.

+
+
+ +
+
public event Action Cleared
+
+ + + + + + +

Event Type

+
+
Action
+
+
+ + + + + + + +

DispBeginChanged @@ -1463,17 +1566,20 @@ This method sets both the beginning and ending positions of the display range. - DrawingRefreshing +

+ DrawingRefreshed

-

Event raised when the drawing is being refreshed.

+

Event raised after the strip drawing has been refreshed — pos colors re-stamped +from their states and the drawing slices rebuilt (see RefreshDrawingInRendering(bool)). +Subscribers that cache colors baked from the strip attachments (e.g. a meshed +workpiece's display cache) should invalidate on this event.

-
public event EventHandler DrawingRefreshing
+
public event EventHandler DrawingRefreshed
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.CutterLocations.ClStrips.ClStripPos.html b/App/wwwroot/HiAPI-docsite/api/Hi.CutterLocations.ClStrips.ClStripPos.html index a8b2a7fd..e59c0d18 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.CutterLocations.ClStrips.ClStripPos.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.CutterLocations.ClStrips.ClStripPos.html @@ -102,7 +102,7 @@ Class ClStripPos
-
public class ClStripPos : CbtrPickable, IGetPickable, IDisposable, IGetProgramCl
+
public class ClStripPos : CbtrPickable, IGetPickable, IDisposable, IGetProgramCl, IMotionStepIndex
@@ -124,6 +124,7 @@ Class ClStripPos +
@@ -134,6 +135,9 @@ Class ClStripPos + @@ -141,7 +145,7 @@ Class ClStripPos CbtrPickable.Highlight(bool)
- CbtrPickable.CleanLinkedCbtrNodesDrawingCache() + CbtrPickable.CleanAttachedCbtrNodesDrawingCache()
CbtrPickable.ShrinkToFitNodeMap() @@ -222,7 +226,8 @@ Class ClStripPos -

Gets the index of this position in the strip.

+

Gets the index of this position in the strip. This is also the step's +execution-order ordinal — exposed via StepIndex.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Disp.DispEngine.html b/App/wwwroot/HiAPI-docsite/api/Hi.Disp.DispEngine.html index ff1d42ba..a7414704 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Disp.DispEngine.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Disp.DispEngine.html @@ -303,12 +303,14 @@ The

The default font file path used by the display engine.

+

Sentinel selecting the embedded default font (Noto Sans CJK TC, SIL Open Font License 1.1). +Passing this value (or null) to Init(string) loads the embedded font from memory without writing any file to disk. +This is not a path; no file of this name is looked up or created.

-
public const string defaultFontFile = "Font/WCL06.ttf"
+
public const string defaultFontFile = "(embedded)"
@@ -634,7 +636,7 @@ The

Font file.

+

Font file. Null while the embedded default font (loaded from memory) is in use.

@@ -659,6 +661,77 @@ The
+ +

+ IdleBackoffHeartbeat + +

+ +

Idle backoff heartbeat. While the rendered image stays identical, no input +arrives and progressive refinement has converged, the engine re-renders +only once per this interval instead of every RefreshingPeriod. +Zero (the default) disables the backoff. +Any input, scene invalidation or an explicit ClearCache() +restores the full refresh rate immediately.

+
+
+ +
+
public TimeSpan IdleBackoffHeartbeat { set; }
+
+ + + + + +

Property Value

+
+
TimeSpan
+
+
+ + + + + + + + + + +

+ IsDisposed + +

+ +

Gets a value indicating whether this engine has been disposed. +All native-backed members become no-ops afterwards +(value getters return neutral defaults).

+
+
+ +
+
public bool IsDisposed { get; }
+
+ + + + + +

Property Value

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

@@ -990,6 +1063,41 @@ Where view matrix is in MVP convention.

+ + +

+ SuppressHoverPickWhileDragging + +

+ +

When true, mouse moves with a button held do not trigger the hover pick +pass (which re-renders the whole scene in picking mode). Enable this for +hosts whose drags are pure camera transforms; keep the default (false) +when API users drag a picked object via Pickable events.

+
+
+ +
+
public bool SuppressHoverPickWhileDragging { set; }
+
+ + + + + +

Property Value

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

Methods

@@ -1334,7 +1442,7 @@ Probably not essential.

Parameters

fontFile string
-

The font file to use. If null, the default font file will be used.

+

The font file to use. If null, the embedded default font is loaded from memory and no file is written to disk.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Disp.DispList.html b/App/wwwroot/HiAPI-docsite/api/Hi.Disp.DispList.html index 40226f82..6c8105ee 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Disp.DispList.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Disp.DispList.html @@ -151,6 +151,9 @@ Class DispList + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Disp.GL.html b/App/wwwroot/HiAPI-docsite/api/Hi.Disp.GL.html index edaa0aa2..b0460b9d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Disp.GL.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Disp.GL.html @@ -40424,44 +40424,6 @@ Class GL - - -

- glFenceSync(uint, uint) - -

- -
-
- -
-
public static extern nint glFenceSync(uint condition, uint flags)
-
- -

Parameters

-
-
condition uint
-
-
flags uint
-
-
- -

Returns

-
-
nint
-
-
- - - - - - - - - - -

@@ -46070,109 +46032,6 @@ Class GL - - -

- glGetDoubleIndexedvEXT(uint, uint, double*) - -

- -
-
- -
-
public static extern void glGetDoubleIndexedvEXT(uint target, uint index, double* data)
-
- -

Parameters

-
-
target uint
-
-
index uint
-
-
data double*
-
-
- - - - - - - - - - - - - - -

- glGetDoublei_v(uint, uint, double*) - -

- -
-
- -
-
public static extern void glGetDoublei_v(uint target, uint index, double* data)
-
- -

Parameters

-
-
target uint
-
-
index uint
-
-
data double*
-
-
- - - - - - - - - - - - - - -

- glGetDoublev(uint, double*) - -

- -
-
- -
-
public static extern void glGetDoublev(uint pname, double* @params)
-
- -

Parameters

-
-
pname uint
-
-
params double*
-
-
- - - - - - - - - - - -

@@ -56121,39 +55980,6 @@ Class GL - - -

- glIglooInterfaceSGIX(uint, nint) - -

- -
-
- -
-
public static extern void glIglooInterfaceSGIX(uint pname, nint @params)
-
- -

Parameters

-
-
pname uint
-
-
params nint
-
-
- - - - - - - - - - - -

@@ -68080,72 +67906,6 @@ Class GL - - -

- glPNTrianglesfATI(uint, float) - -

- -
-
- -
-
public static extern void glPNTrianglesfATI(uint pname, float param)
-
- -

Parameters

-
-
pname uint
-
-
param float
-
-
- - - - - - - - - - - - - - -

- glPNTrianglesiATI(uint, int) - -

- -
-
- -
-
public static extern void glPNTrianglesiATI(uint pname, int param)
-
- -

Parameters

-
-
pname uint
-
-
param int
-
-
- - - - - - - - - - - -

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Disp.StringDrawing.html b/App/wwwroot/HiAPI-docsite/api/Hi.Disp.StringDrawing.html index 4d6848e9..3b92f916 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Disp.StringDrawing.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Disp.StringDrawing.html @@ -6,7 +6,7 @@ - + @@ -97,7 +97,8 @@ Class StringDrawing
Assembly
HiDisp.dll

-

An IDisplayee to draw string.

+

An IDisplayee to draw string. +Multi-line text is supported: ‘\n’ starts a new line.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Disp.html b/App/wwwroot/HiAPI-docsite/api/Hi.Disp.html index d5018b32..d3af8f33 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Disp.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Disp.html @@ -196,7 +196,8 @@ This function should be use with
StringDrawing
-

An IDisplayee to draw string.

+

An IDisplayee to draw string. +Multi-line text is supported: ‘\n’ starts a new line.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Box3d.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Box3d.html index 22f103d7..e996037e 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Box3d.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Box3d.html @@ -2265,7 +2265,7 @@ The returned object includes type metadata for web API presentation.

Returns

object
-

DTO object with type, min, max properties

+

DTO dictionary with Type, Min, Max keys

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Cylindroid.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Cylindroid.html index 656abc9f..a9af8cd4 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Cylindroid.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Cylindroid.html @@ -842,7 +842,7 @@ The returned object includes type metadata for web API presentation.

Returns

object
-

DTO object with type and zrPairs properties

+

DTO dictionary with Type and PairZrs keys

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.GeomCombination.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.GeomCombination.html index 4e1dc2d0..7dd2bc1c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.GeomCombination.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.GeomCombination.html @@ -261,8 +261,8 @@ Class GeomCombination -

- GeomCombination(XElement, string, string, IProgress<object>) +

+ GeomCombination(XElement, string, string, IProgress<IMessage>)

@@ -271,7 +271,7 @@ Class GeomCombination
-
public GeomCombination(XElement src, string baseDirectory, string relFile, IProgress<object> progress)
+
public GeomCombination(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress)

Parameters

@@ -285,7 +285,7 @@ Class GeomCombination
relFile string

Relative file path

-
progress IProgress<object>
+
progress IProgress<IMessage>

Optional progress reporter for the XML parsing chain

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.MathUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.MathUtil.html index a987f1ed..aa6a0720 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.MathUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.MathUtil.html @@ -1193,6 +1193,58 @@ The source code:

+ + +

+ CycleUpperInclusive(double, double, double) + +

+ +

Cycles a value into the lower-exclusive/upper-inclusive window +(lowerBound, upperBound] — the +mirror of Cycle(double, double, double), whose window is +lower-inclusive/upper-exclusive. A value congruent with the bounds +resolves to upperBound, never +lowerBound — the property a negative-direction +rotary window (anchor-2π, anchor] needs so a target congruent with +the anchor stays put instead of committing a full negative turn.

+
+
+ +
+
public static double CycleUpperInclusive(double value, double lowerBound, double upperBound)
+
+ +

Parameters

+
+
value double
+

value

+
+
lowerBound double
+

lower bound, exclusive

+
+
upperBound double
+

upper bound, inclusive

+
+
+ +

Returns

+
+
double
+

cycled value

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

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.StlFile.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.StlFile.html index 69ee1677..d9441022 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.StlFile.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.StlFile.html @@ -307,8 +307,8 @@ If base directory is provided, the STL will be loaded immediately.

-

- StlFile(XElement, string, IProgress<object>) +

+ StlFile(XElement, string, IProgress<IMessage>)

@@ -317,7 +317,7 @@ If base directory is provided, the STL will be loaded immediately.

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

Parameters

@@ -328,7 +328,7 @@ If base directory is provided, the STL will be loaded immediately.

baseDirectory string

Base directory path

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

@@ -731,7 +731,7 @@ The returned object includes type metadata for web API presentation.

Returns

object
-

DTO object with type and sourceFile properties

+

DTO dictionary with Type and SourceFile keys

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionProgress.FilterFlag.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.CarveBooleanKind.html similarity index 81% rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionProgress.FilterFlag.html rename to App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.CarveBooleanKind.html index b237ca79..80580ab9 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionProgress.FilterFlag.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.CarveBooleanKind.html @@ -2,11 +2,11 @@ - Enum SessionProgress.FilterFlag | HiAPI-C# 2025 + Enum CarveBooleanKind | HiAPI-C# 2025 - + - + @@ -84,27 +84,26 @@
-
+
-

-Enum SessionProgress.FilterFlag +

+Enum CarveBooleanKind

-
Namespace
Hi.MachiningProcs
-
Assembly
HiMech.dll
+
Namespace
Hi.Geom.Topo
+
Assembly
HiDisp.dll
-

Filtering flags for querying messages.

+

What a carve boolean did to the workpiece container.

-
[Flags]
-public enum SessionProgress.FilterFlag
+
public enum CarveBooleanKind
@@ -146,21 +145,21 @@ public enum SessionProgress.FilterFlag

Fields

-
Error = 8
+
AddedShell = 1
-

Include error, warning, or exception messages.

+

Union with a strictly disjoint tool: the tool joined as a second shell.

-
NC = 2
+
Crossed = 0
-

Include NC text messages.

+

The surfaces crossed and were stitched along the seam contour.

-
Progress = 4
+
Kept = 2
-

Include progress messages.

+

The operation was a no-op (e.g. union with a tool inside the workpiece).

-
Step = 1
+
Replaced = 3
-

Include machining step messages.

+

Union with an enclosing tool: the workpiece content was replaced by the tool.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.CarveBooleanResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.CarveBooleanResult.html new file mode 100644 index 00000000..e71bb3de --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.CarveBooleanResult.html @@ -0,0 +1,395 @@ + + + + + Class CarveBooleanResult | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class CarveBooleanResult +

+ +
+
Namespace
Hi.Geom.Topo
+
Assembly
HiDisp.dll
+
+ +

Result of one carve boolean step. On failure the workpiece is untouched +and the step may simply be skipped.

+
+
+ +
+
public sealed class CarveBooleanResult
+
+ + + + +
+
Inheritance
+
+ +
CarveBooleanResult
+
+
+ + + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ FailReason + +

+ +

Reason of a failed step, empty otherwise.

+
+
+ +
+
public string FailReason { get; }
+
+ + + + + +

Property Value

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

+ Failed + +

+ +

Whether the boolean refused the step (non-manifold cut, contact without crossing, ...).

+
+
+ +
+
public bool Failed { get; }
+
+ + + + + +

Property Value

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

+ KeyLines + +

+ +

The seam contour segments (double-evaluated copies of the exact seam).

+
+
+ +
+
public IReadOnlyList<Segment3d> KeyLines { get; }
+
+ + + + + +

Property Value

+
+
IReadOnlyList<Segment3d>
+
+
+ + + + + + + + + + +

+ Kind + +

+ +

What the boolean did. Meaningless when Failed is set.

+
+
+ +
+
public CarveBooleanKind Kind { get; }
+
+ + + + + +

Property Value

+
+
CarveBooleanKind
+
+
+ + + + + + + + + + +

+ RemovedWorkpieceTris + +

+ +

Number of workpiece triangles removed by the surgery.

+
+
+ +
+
public int RemovedWorkpieceTris { get; }
+
+ + + + + +

Property Value

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

+ SewnToolTris + +

+ +

Number of tool triangles sewn into the workpiece.

+
+
+ +
+
public int SewnToolTris { get; }
+
+ + + + + +

Property Value

+
+
int
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.CarveStl.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.CarveStl.html new file mode 100644 index 00000000..791a79fc --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.CarveStl.html @@ -0,0 +1,921 @@ + + + + + Class CarveStl | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class CarveStl +

+ +
+
Namespace
Hi.Geom.Topo
+
Assembly
HiDisp.dll
+
+ +

A triangle mesh that can be carved: an exact-fraction topology graph with +an incrementally maintained spatial index, mutated in place by exact +boolean steps (SubstractVolume(Stl, double) / +AddVolume(Stl, double)). Unlike +NativeTopoStl3wfr (build-once sweeping input), this object is +long-lived and accumulates cut geometry step after step; sharp edges and +exact planar faces survive the booleans exactly. Not thread-safe.

+
+
+ +
+
public class CarveStl : IDisposable, IDisplayee, IExpandToBox3d
+
+ + + + +
+
Inheritance
+
+ +
CarveStl
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + + +
+ + + +

Remarks

+

Conversion loss, by source:

+
  • NativeTopoStl3wfr and another +CarveStl are already exact fractions, so those overloads copy +coordinates verbatim and take no tolerance — the only lossless inbound +paths.
  • Stl and NativeTopoStl3d hold +doubles, which have no small-denominator exact form, so those overloads +convert at fractionTolerance. The loss is inherent to the source +type, not to the route: converting such a mesh by any other path costs the +same.
  • Outbound, GenStl() evaluates to double, so a +carved result round-tripped through it loses the compound coordinates the +booleans produced. Keep the CarveStl itself, or pass it +directly as a tool, when the exact surface is the deliverable.
+
+ + +

Constructors +

+ + + + +

+ CarveStl(Stl, double) + +

+ +

Initializes the container from an STL model. The triangles are +converted to exact fractions at fractionTolerance.

+
+
+ +
+
public CarveStl(Stl stl, double fractionTolerance)
+
+ +

Parameters

+
+
stl Stl
+

The initial workpiece mesh (a closed shell).

+
+
fractionTolerance double
+

The tolerance for fraction conversion.

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

+ CarveStl(CarveStl) + +

+ +

Initializes the container as an exact copy of another +CarveStl — a snapshot that later boolean steps on either +object leave untouched. Lossless.

+
+
+ +
+
public CarveStl(CarveStl src)
+
+ +

Parameters

+
+
src CarveStl
+

The container to copy.

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

+ CarveStl(NativeTopoStl3d, double) + +

+ +

Initializes the container from a double-precision topology graph. The +triangles are converted to exact fractions at +fractionTolerance — the source holds doubles, so +this is inherently the lossy path.

+
+
+ +
+
public CarveStl(NativeTopoStl3d src, double fractionTolerance)
+
+ +

Parameters

+
+
src NativeTopoStl3d
+

The source mesh (a closed shell).

+
+
fractionTolerance double
+

The tolerance for fraction conversion.

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

+ CarveStl(NativeTopoStl3wfr) + +

+ +

Initializes the container from an exact-fraction topology graph, +copying every coordinate verbatim. Lossless, hence no tolerance: the +source is already the same numeric type. The source is only read.

+
+
+ +
+
public CarveStl(NativeTopoStl3wfr src)
+
+ +

Parameters

+
+
src NativeTopoStl3wfr
+

The source mesh (a closed shell).

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

Properties +

+ + + + +

+ CarvePtr + +

+ +

Gets the pointer to the native container.

+
+
+ +
+
public nint CarvePtr { get; }
+
+ + + + + +

Property Value

+
+
nint
+
+
+ + + + + + + + + + +

+ IsSeamless + +

+ +

Gets whether every directed edge is paired with an owned reverse (the +manifold invariant the booleans maintain).

+
+
+ +
+
public bool IsSeamless { get; }
+
+ + + + + +

Property Value

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

+ Size + +

+ +

Gets the number of triangles currently in the container.

+
+
+ +
+
public int Size { get; }
+
+ + + + + +

Property Value

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

Methods +

+ + + + +

+ AddVolume(Stl, double) + +

+ +

Exact in-place union: merges the tool volume into the container. +Same calling contract as SubstractVolume(Stl, double).

+
+
+ +
+
public CarveBooleanResult AddVolume(Stl tool, double fractionTolerance)
+
+ +

Parameters

+
+
tool Stl
+

The tool mesh (a closed shell).

+
+
fractionTolerance double
+

The tolerance for the tool's fraction conversion.

+
+
+ +

Returns

+
+
CarveBooleanResult
+

The step result; on failure the container is untouched.

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

+ AddVolume(CarveStl) + +

+ +

Exact in-place union with another container's current state. +Lossless; tool is only read.

+
+
+ +
+
public CarveBooleanResult AddVolume(CarveStl tool)
+
+ +

Parameters

+
+
tool CarveStl
+

The container whose volume is merged in.

+
+
+ +

Returns

+
+
CarveBooleanResult
+

The step result; on failure this container is untouched.

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

+ AddVolume(NativeTopoStl3wfr) + +

+ +

Exact in-place union with an exact-fraction tool — the lossless tool +path, hence no tolerance. The tool mesh is copied natively before the +surgery consumes it, so tool survives the call.

+
+
+ +
+
public CarveBooleanResult AddVolume(NativeTopoStl3wfr tool)
+
+ +

Parameters

+
+
tool NativeTopoStl3wfr
+

The tool mesh (a closed shell).

+
+
+ +

Returns

+
+
CarveBooleanResult
+

The step result; on failure the container is untouched.

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

+ Display(Bind) + +

+ +

Display function called in DispEngine rendering loop.

+
+
+ +
+
public void Display(Bind bind)
+
+ +

Parameters

+
+
bind Bind
+

Bind with DispEngine. See Bind.

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

+ Dispose() + +

+ +

Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

+
+
+ +
+
public void Dispose()
+
+ + + + + + + + + + + + + + + +

+ Dispose(bool) + +

+ +
+
+ +
+
protected virtual void Dispose(bool disposing)
+
+ +

Parameters

+
+
disposing bool
+
+
+ + + + + + + + + + + + + + +

+ ExpandToBox3d(Box3d) + +

+ +

Expands the destination box. +This function is usually used to compute the bounding box of elements.

+
+
+ +
+
public void ExpandToBox3d(Box3d dst)
+
+ +

Parameters

+
+
dst Box3d
+

Destination box

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

+ ~CarveStl() + +

+ +
+
+ +
+
protected ~CarveStl()
+
+ + + + + + + + + + + + + + + +

+ GenStl() + +

+ +

Generates an STL model from the container's current state.

+
+
+ +
+
public Stl GenStl()
+
+ + +

Returns

+
+
Stl
+

A new STL model.

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

+ SubstractVolume(Stl, double) + +

+ +

Exact in-place difference: carves the tool volume out of the +container. The tool triangles are consumed natively per call, so the +same Stl may be reused for further steps.

+
+
+ +
+
public CarveBooleanResult SubstractVolume(Stl tool, double fractionTolerance)
+
+ +

Parameters

+
+
tool Stl
+

The tool mesh (a closed shell).

+
+
fractionTolerance double
+

The tolerance for the tool's fraction conversion.

+
+
+ +

Returns

+
+
CarveBooleanResult
+

The step result; on failure the container is untouched.

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

+ SubstractVolume(CarveStl) + +

+ +

Exact in-place difference using another container's current state as +the tool. Lossless; tool is only read.

+
+
+ +
+
public CarveBooleanResult SubstractVolume(CarveStl tool)
+
+ +

Parameters

+
+
tool CarveStl
+

The container whose volume is carved away.

+
+
+ +

Returns

+
+
CarveBooleanResult
+

The step result; on failure this container is untouched.

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

+ SubstractVolume(NativeTopoStl3wfr) + +

+ +

Exact in-place difference with an exact-fraction tool — the lossless +tool path, hence no tolerance. The tool mesh is copied natively before +the surgery consumes it, so tool survives the call +and may be reused for further steps.

+
+
+ +
+
public CarveBooleanResult SubstractVolume(NativeTopoStl3wfr tool)
+
+ +

Parameters

+
+
tool NativeTopoStl3wfr
+

The tool mesh (a closed shell).

+
+
+ +

Returns

+
+
CarveBooleanResult
+

The step result; on failure the container is untouched.

+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.NativeTopoStld.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.NativeTopoStl3d.html similarity index 80% rename from App/wwwroot/HiAPI-docsite/api/Hi.Geom.NativeTopoStld.html rename to App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.NativeTopoStl3d.html index 6bb20b04..9046c801 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.NativeTopoStld.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.NativeTopoStl3d.html @@ -2,9 +2,9 @@ - Class NativeTopoStld | HiAPI-C# 2025 + Class NativeTopoStl3d | HiAPI-C# 2025 - + @@ -84,16 +84,16 @@
-
+
-

-Class NativeTopoStld +

+Class NativeTopoStl3d

-
Namespace
Hi.Geom
+
Namespace
Hi.Geom.Topo
Assembly
HiDisp.dll
@@ -102,7 +102,7 @@ Class NativeTopoStld
-
public class NativeTopoStld : IDisposable, IDisplayee, IExpandToBox3d
+
public class NativeTopoStl3d : IDisposable, IDisplayee, IExpandToBox3d
@@ -112,7 +112,7 @@ Class NativeTopoStld
Inheritance
-
NativeTopoStld
+
NativeTopoStl3d
@@ -189,19 +189,19 @@ Class NativeTopoStld - + -

- NativeTopoStld(Stl) +

+ NativeTopoStl3d(Stl)

-

Initializes a new instance of the NativeTopoStld class.

+

Initializes a new instance of the NativeTopoStl3d class.

-
public NativeTopoStld(Stl stl)
+
public NativeTopoStl3d(Stl stl)

Parameters

@@ -226,9 +226,9 @@ Class NativeTopoStld - + -

+

CosRoundAngle

@@ -258,9 +258,9 @@ Class NativeTopoStld - + -

+

Size

@@ -290,9 +290,9 @@ Class NativeTopoStld - + -

+

TopoStlPtr

@@ -326,9 +326,9 @@ Class NativeTopoStld - + -

+

Display(Bind)

@@ -359,9 +359,9 @@ Class NativeTopoStld - + -

+

DisplaySharpEdges(Bind)

@@ -392,9 +392,9 @@ Class NativeTopoStld - + -

+

Dispose()

@@ -419,9 +419,9 @@ Class NativeTopoStld - + -

+

Dispose(bool)

@@ -450,9 +450,9 @@ Class NativeTopoStld - + -

+

ExpandToBox3d(Box3d)

@@ -484,10 +484,10 @@ This function is usually used to compute the bounding box of elements.

- + -

- ~NativeTopoStld() +

+ ~NativeTopoStl3d()

@@ -495,7 +495,7 @@ This function is usually used to compute the bounding box of elements.

-
protected ~NativeTopoStld()
+
protected ~NativeTopoStl3d()
@@ -510,9 +510,9 @@ This function is usually used to compute the bounding box of elements.

- + -

+

GenStl()

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.NativeTopoStlfr.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.NativeTopoStl3wfr.html similarity index 81% rename from App/wwwroot/HiAPI-docsite/api/Hi.Geom.NativeTopoStlfr.html rename to App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.NativeTopoStl3wfr.html index 46ceb423..4ec38416 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.NativeTopoStlfr.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.NativeTopoStl3wfr.html @@ -2,9 +2,9 @@ - Class NativeTopoStlfr | HiAPI-C# 2025 + Class NativeTopoStl3wfr | HiAPI-C# 2025 - + @@ -84,16 +84,16 @@
-
+
-

-Class NativeTopoStlfr +

+Class NativeTopoStl3wfr

-
Namespace
Hi.Geom
+
Namespace
Hi.Geom.Topo
Assembly
HiDisp.dll
@@ -102,7 +102,7 @@ Class NativeTopoStlfr
-
public class NativeTopoStlfr : IDisposable, IDisplayee, IExpandToBox3d
+
public class NativeTopoStl3wfr : IDisposable, IDisplayee, IExpandToBox3d
@@ -112,7 +112,7 @@ Class NativeTopoStlfr
Inheritance
-
NativeTopoStlfr
+
NativeTopoStl3wfr
@@ -189,19 +189,19 @@ Class NativeTopoStlfr - + -

- NativeTopoStlfr(Stl, double) +

+ NativeTopoStl3wfr(Stl, double)

-

Initializes a new instance of the NativeTopoStlfr class.

+

Initializes a new instance of the NativeTopoStl3wfr class.

-
public NativeTopoStlfr(Stl stl, double fractionTolerance)
+
public NativeTopoStl3wfr(Stl stl, double fractionTolerance)

Parameters

@@ -229,9 +229,9 @@ Class NativeTopoStlfr - + -

+

Size

@@ -261,9 +261,9 @@ Class NativeTopoStlfr - + -

+

TopoStlPtr

@@ -297,9 +297,9 @@ Class NativeTopoStlfr - + -

+

Display(Bind)

@@ -330,9 +330,9 @@ Class NativeTopoStlfr - + -

+

Dispose()

@@ -357,9 +357,9 @@ Class NativeTopoStlfr - + -

+

Dispose(bool)

@@ -388,9 +388,9 @@ Class NativeTopoStlfr - + -

+

ExpandToBox3d(Box3d)

@@ -422,10 +422,10 @@ This function is usually used to compute the bounding box of elements.

- + -

- ~NativeTopoStlfr() +

+ ~NativeTopoStl3wfr()

@@ -433,7 +433,7 @@ This function is usually used to compute the bounding box of elements.

-
protected ~NativeTopoStlfr()
+
protected ~NativeTopoStl3wfr()
@@ -448,9 +448,9 @@ This function is usually used to compute the bounding box of elements.

- + -

+

GenStl()

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoLine3Hfr.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoLine3Hfr.html index 5c5cdb0b..91ba66cb 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoLine3Hfr.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoLine3Hfr.html @@ -6,7 +6,7 @@ - + @@ -99,7 +99,7 @@ Class TopoLine3Hfr

Topological 3D line (directed edge) with Fraction<decimal> coordinates. Maintains connectivity to adjacent reversed line and owning triangle. -Corresponds to C++ topo_line3_t.

+Corresponds to C++ topo_line3wfr_t.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoLine3StockHfr.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoLine3StockHfr.html index e135af94..14e13497 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoLine3StockHfr.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoLine3StockHfr.html @@ -6,7 +6,7 @@ - + @@ -98,7 +98,7 @@ Class TopoLine3StockHfr

Stock (pool) of topological lines with deduplication based on endpoint identity. -Corresponds to C++ topo_line3_stock_t.

+Corresponds to C++ topo_line3wfr_stock_t.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoPoint3Hfr.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoPoint3Hfr.html index 4dd880c7..69c02917 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoPoint3Hfr.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoPoint3Hfr.html @@ -6,7 +6,7 @@ - + @@ -99,7 +99,7 @@ Class TopoPoint3Hfr

Topological 3D point with Fraction<decimal> coordinates. Maintains connectivity to adjacent lines and triangles. -Corresponds to C++ topo_point3_t.

+Corresponds to C++ topo_point3wfr_t.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoPoint3StockHfr.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoPoint3StockHfr.html index 780cd611..8360dd7c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoPoint3StockHfr.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoPoint3StockHfr.html @@ -6,7 +6,7 @@ - + @@ -98,7 +98,7 @@ Class TopoPoint3StockHfr

Stock (pool) of topological points with deduplication based on fraction coordinates. -Corresponds to C++ topo_point3_stock_t.

+Corresponds to C++ topo_point3wfr_stock_t.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoStl3Hfr.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoStl3Hfr.html index 81b80915..27c58143 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoStl3Hfr.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoStl3Hfr.html @@ -6,7 +6,7 @@ - + @@ -101,7 +101,7 @@ Class TopoStl3Hfr Hfr: High-Precision (decimal) FRaction. Provides unlimited-precision exact arithmetic for geometric computations without relying on native (C++) interop. -Corresponds to C++ topo_stl3_t.

+Corresponds to C++ topo_stl3wfr_t.

@@ -235,7 +235,7 @@ Corresponds to C++ topo_stl3_t.

Initializes a topological STL from fraction-precision triangles (Vec3Hfr arrays). Each element is a 3-element array of Vec3Hfr representing triangle apexes. -Corresponds to C++ constructor topo_stl3_t(Tri3fr_Iter, Tri3fr_Iter).

+Corresponds to C++ constructor topo_stl3wfr_t(Tri3fr_Iter, Tri3fr_Iter).

@@ -271,7 +271,7 @@ Corresponds to C++ constructor topo_stl3_t(Tri3fr_Iter, Tri3fr_Iter)

Initializes a topological STL from double-precision triangles. Phase 1 (parallel): converts vertices to fraction coordinates via Stern-Brocot approximation. Phase 2 (sequential): builds topology (stocks, connectivity). -Corresponds to C++ constructor topo_stl3_t(Tri3d_Iter, Tri3d_Iter, double).

+Corresponds to C++ constructor topo_stl3wfr_t(Tri3d_Iter, Tri3d_Iter, double).

@@ -698,7 +698,7 @@ Corresponds to C++ is_seamless().

Checks whether the mesh is seamless. Defect lines are output to dstDefectLines. -Corresponds to C++ is_seamless(vector<topo_line3_t*>&).

+Corresponds to C++ is_seamless(vector<topo_line3wfr_t*>&).

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoStl3HfrFlatDisplayee.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoStl3HfrFlatDisplayee.html index 1f63d124..76757429 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoStl3HfrFlatDisplayee.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoStl3HfrFlatDisplayee.html @@ -6,7 +6,7 @@ - + @@ -99,7 +99,7 @@ Class TopoStl3HfrFlatDisplayee

Flat-shaded displayee for TopoStl3Hfr. Renders flat triangle faces (one normal per triangle) and all unique edge lines. -Corresponds to C++ TopoStl3::_flatDraw + all-lines draw.

+Corresponds to C++ topo_stl3::_flatDraw + all-lines draw.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee.html index d2e9a658..164e4452 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee.html @@ -6,7 +6,7 @@ - + @@ -101,7 +101,7 @@ Class TopoStl3HfrSmoothDisplayee Renders smooth faces (per-vertex averaged normals) and sharp edges only. All rendering-related cached data (adjacent cos², smooth normals) is stored in this class via dictionaries, keeping the source TopoStl3Hfr clean. -Corresponds to C++ TopoStl3::_smoothDraw + _edgeDraw.

+Corresponds to C++ topo_stl3::_smoothDraw + _edgeDraw.

@@ -406,7 +406,7 @@ Call this after modifying the source topology or changing

Displays the smooth-shaded topological STL: sharp edges in black + smooth-shaded faces. -Corresponds to C++ TopoStl3::Render.

+Corresponds to C++ topo_stl3::Render.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoTri3Hfr.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoTri3Hfr.html index 2f48c6a9..70f4e8cc 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoTri3Hfr.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoTri3Hfr.html @@ -6,7 +6,7 @@ - + @@ -99,7 +99,7 @@ Class TopoTri3Hfr

Topological 3D triangle with Fraction<decimal> coordinates. Maintains connectivity to points and lines. -Corresponds to C++ topo_tri3_t.

+Corresponds to C++ topo_tri3wfr_t.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoTri3StockHfr.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoTri3StockHfr.html index 822e4abd..b8e46fa9 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoTri3StockHfr.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.TopoTri3StockHfr.html @@ -6,7 +6,7 @@ - + @@ -98,7 +98,7 @@ Class TopoTri3StockHfr

Stock (pool) of topological triangles. -Corresponds to C++ topo_tri3_stock_t.

+Corresponds to C++ topo_tri3wfr_stock_t.

@@ -368,7 +368,7 @@ Corresponds to C++ topo_tri3_stock_t.

-
public TopoTri3Hfr Gen(TopoPoint3Hfr tp0, TopoPoint3Hfr tp1, TopoPoint3Hfr tp2, TopoLine3StockHfr tlStock)
+
public TopoTri3Hfr Gen(TopoPoint3Hfr tp0, TopoPoint3Hfr tp1, TopoPoint3Hfr tp2, TopoLine3StockHfr lineStock)

Parameters

@@ -379,7 +379,7 @@ Corresponds to C++ topo_tri3_stock_t.

tp2 TopoPoint3Hfr
-
tlStock TopoLine3StockHfr
+
lineStock TopoLine3StockHfr
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.html index a433faf2..b5013fcc 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Topo.html @@ -94,30 +94,57 @@

Classes

+
+
CarveBooleanResult
+

Result of one carve boolean step. On failure the workpiece is untouched +and the step may simply be skipped.

+
+
+
+
CarveStl
+

A triangle mesh that can be carved: an exact-fraction topology graph with +an incrementally maintained spatial index, mutated in place by exact +boolean steps (SubstractVolume(Stl, double) / +AddVolume(Stl, double)). Unlike +NativeTopoStl3wfr (build-once sweeping input), this object is +long-lived and accumulates cut geometry step after step; sharp edges and +exact planar faces survive the booleans exactly. Not thread-safe.

+
+
+
+
NativeTopoStl3d
+

Native TopoStl with element type double.

+
+
+
+
NativeTopoStl3wfr
+

Native TopoStl with element type fraction.

+
+
TopoLine3Hfr

Topological 3D line (directed edge) with Fraction<decimal> coordinates. Maintains connectivity to adjacent reversed line and owning triangle. -Corresponds to C++ topo_line3_t.

+Corresponds to C++ topo_line3wfr_t.

TopoLine3StockHfr

Stock (pool) of topological lines with deduplication based on endpoint identity. -Corresponds to C++ topo_line3_stock_t.

+Corresponds to C++ topo_line3wfr_stock_t.

TopoPoint3Hfr

Topological 3D point with Fraction<decimal> coordinates. Maintains connectivity to adjacent lines and triangles. -Corresponds to C++ topo_point3_t.

+Corresponds to C++ topo_point3wfr_t.

TopoPoint3StockHfr

Stock (pool) of topological points with deduplication based on fraction coordinates. -Corresponds to C++ topo_point3_stock_t.

+Corresponds to C++ topo_point3wfr_stock_t.

@@ -126,14 +153,14 @@ Corresponds to C++ topo_point3_stock_t.

Hfr: High-Precision (decimal) FRaction. Provides unlimited-precision exact arithmetic for geometric computations without relying on native (C++) interop. -Corresponds to C++ topo_stl3_t.

+Corresponds to C++ topo_stl3wfr_t.

TopoStl3HfrFlatDisplayee

Flat-shaded displayee for TopoStl3Hfr. Renders flat triangle faces (one normal per triangle) and all unique edge lines. -Corresponds to C++ TopoStl3::_flatDraw + all-lines draw.

+Corresponds to C++ topo_stl3::_flatDraw + all-lines draw.

@@ -142,20 +169,20 @@ Corresponds to C++ TopoStl3::_flatDraw + all-lines draw.

Renders smooth faces (per-vertex averaged normals) and sharp edges only. All rendering-related cached data (adjacent cos², smooth normals) is stored in this class via dictionaries, keeping the source TopoStl3Hfr clean. -Corresponds to C++ TopoStl3::_smoothDraw + _edgeDraw.

+Corresponds to C++ topo_stl3::_smoothDraw + _edgeDraw.

TopoTri3Hfr

Topological 3D triangle with Fraction<decimal> coordinates. Maintains connectivity to points and lines. -Corresponds to C++ topo_tri3_t.

+Corresponds to C++ topo_tri3wfr_t.

TopoTri3StockHfr

Stock (pool) of topological triangles. -Corresponds to C++ topo_tri3_stock_t.

+Corresponds to C++ topo_tri3wfr_stock_t.

@@ -166,6 +193,14 @@ Structs

3D vector with Fraction<decimal> elements. Provides unlimited-precision exact arithmetic for geometric computations. Corresponds to C++ vec3<wfr_t>.

+
+ +

+Enums +

+
+
CarveBooleanKind
+

What a carve boolean did to the workpiece container.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.TransformationGeom.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.TransformationGeom.html index e3dc46cc..081d7b95 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.TransformationGeom.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.TransformationGeom.html @@ -268,8 +268,8 @@ This class combines a transformer with a target geometry to produce transformed -

- TransformationGeom(XElement, string, IProgress<object>) +

+ TransformationGeom(XElement, string, IProgress<IMessage>)

@@ -278,7 +278,7 @@ This class combines a transformer with a target geometry to produce transformed
-
public TransformationGeom(XElement src, string baseDirectory, IProgress<object> progress)
+
public TransformationGeom(XElement src, string baseDirectory, IProgress<IMessage> progress)

Parameters

@@ -289,7 +289,7 @@ This class combines a transformer with a target geometry to produce transformed
baseDirectory string

The base directory for resolving relative paths.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

@@ -301,7 +301,7 @@ This class combines a transformer with a target geometry to produce transformed -

Remarks

+

Remarks

This constructor deserializes both the transformer and geometry data from the provided XML. If either element is missing or invalid, the corresponding property will be null.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Vec3d.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Vec3d.html index 05899e3b..d5016817 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Vec3d.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.Vec3d.html @@ -3773,7 +3773,7 @@ The returned object includes type metadata for web API presentation.

Returns

object
-

DTO object with type, x, y, z properties

+

DTO dictionary with Type, x, y, z keys

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.html b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.html index ace2f483..61920bab 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Geom.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Geom.html @@ -183,16 +183,6 @@ A fraction consists of a numerator and denominator using unlimited precision int
NativeStl

Native Stl. For purpose of efficient swept volume.

-
-
-
-
NativeTopoStld
-

Native TopoStl with element type double.

-
-
-
-
NativeTopoStlfr
-

Native TopoStl with element type fraction.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.HiNcKits.ResourceSeeder.html b/App/wwwroot/HiAPI-docsite/api/Hi.HiNcKits.ResourceSeeder.html new file mode 100644 index 00000000..80ed2f3b --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.HiNcKits.ResourceSeeder.html @@ -0,0 +1,305 @@ + + + + + Class ResourceSeeder | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class ResourceSeeder +

+ +
+
Namespace
Hi.HiNcKits
+
Assembly
HiNc.dll
+
+ +

Seeds the shipped default resources (Resource/** from the +HiNc-Resource content package, next to the executable) into the +admin resource directory, honoring the ResourceDefaultMarker +ownership convention:

+
  • Marked items (X.default.Ext files, Name.default/ +folders) are system territory — they are copied in, refreshed when the +shipped bytes change, and deleted when no longer shipped.
  • Unmarked items belong to the user and are never touched.
+A version stamp file at the destination root records the last-seeded +HiNc-Resource version; when it matches, the whole pass is skipped, +so steady-state startup cost is one small file read. +
+
+ +
+
public static class ResourceSeeder
+
+ + + + +
+
Inheritance
+
+ +
ResourceSeeder
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + +

Remarks

+

One-time migration for pre-marker installs: an unmarked twin of a shipped +item (same path with the marker stripped) whose bytes equal the shipped +bytes is absorbed — deleted so the marked copy replaces it. A twin with +different bytes is a user customization and is left alone.

+

+Unmarked files in the source tree are ignored entirely; stale +additive-only build output therefore never propagates to the admin folder. +All failures are logged as warnings — seeding never throws. +

+
+ + +

Fields +

+ + + +

+ ResourceAssemblyFileName + +

+ +

Assembly file probed (next to the executable) for the shipped resource +version.

+
+
+ +
+
public const string ResourceAssemblyFileName = "HiNc-Resource.dll"
+
+ + + + +

Field Value

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

+ VersionStampFileName + +

+ +

Version stamp file name written at the destination resource root.

+
+
+ +
+
public const string VersionStampFileName = ".hinc-resource-version"
+
+ + + + +

Field Value

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

Methods +

+ + + + +

+ Seed(string, ILogger) + +

+ +

Seeds the shipped defaults into adminResourceDirectory. +Source is Resource/ under BaseDirectory +(the process CWD is not stable enough to anchor on). Never throws.

+
+
+ +
+
public static void Seed(string adminResourceDirectory, ILogger logger)
+
+ +

Parameters

+
+
adminResourceDirectory string
+

Absolute path of the admin Resource root.

+
+
logger ILogger
+

Sink for the pass summary and warnings.

+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.HiNcKits.html b/App/wwwroot/HiAPI-docsite/api/Hi.HiNcKits.html index 5305b347..ccab7405 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.HiNcKits.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.HiNcKits.html @@ -108,15 +108,6 @@ Host class for HiNC functionality that provides project management, path resolut
LocalAppConfig

Configuration for host-related settings.

-
-
-
-
PlayerDivConfig
-

Per-user visibility flags for the Player page's divisions (charts and -info panels). Mirrors the HiNcRcl PlayerDivConfig + PlayerDivFlag -pair, flattened into a single all-boolean config so the webservice -(which has no HiNcHost / HiNcUser) can persist the whole -layout through UserConfig alone.

@@ -125,13 +116,17 @@ layout through UserConfig
-
UserConfig
-

User Configuration

-
-
-
-
UserService
-

User Service.

+
ResourceSeeder
+

Seeds the shipped default resources (Resource/** from the +HiNc-Resource content package, next to the executable) into the +admin resource directory, honoring the ResourceDefaultMarker +ownership convention:

+
  • Marked items (X.default.Ext files, Name.default/ +folders) are system territory — they are copied in, refreshed when the +shipped bytes change, and deleted when no longer shipped.
  • Unmarked items belong to the user and are never touched.
+A version stamp file at the destination root records the last-seeded +HiNc-Resource version; when it matches, the whole pass is skipped, +so steady-state startup cost is one small file read.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Licenses.AuthFeature.html b/App/wwwroot/HiAPI-docsite/api/Hi.Licenses.AuthFeature.html index d789d4ab..36d7cbbf 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Licenses.AuthFeature.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Licenses.AuthFeature.html @@ -196,6 +196,13 @@ Enum AuthFeature
MtBuilder = 12

MtBuilder feature.

+
+
NcComposition = 22
+ +

NC composition feature: registering external (non-built-in) processing +units into the SoftNc pipeline, and executing NC-embedded C# scripts. +Without it the built-in dialects run unchanged; external units are +skipped with a diagnostic.

OptNcNoLimit = 14
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.FreeformRemover.html b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.FreeformRemover.html index 3bb4054a..58b10ab8 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.FreeformRemover.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.FreeformRemover.html @@ -266,8 +266,8 @@ and topology bricks for both the noble and shaper parts.

-

- FreeformRemover(XElement, string, string, IProgress<object>, object[]) +

+ FreeformRemover(XElement, string, string, IProgress<IMessage>, object[])

@@ -276,7 +276,7 @@ and topology bricks for both the noble and shaper parts.

-
public FreeformRemover(XElement src, string baseDirectory, string relFile, IProgress<object> progress, object[] res)
+
public FreeformRemover(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress, object[] res)

Parameters

@@ -290,7 +290,7 @@ and topology bricks for both the noble and shaper parts.

relFile string

The relative file path for resolving references.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

res object[]
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html index 9611c3ad..c7f6825d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html @@ -146,10 +146,10 @@ Interface IGetMachiningEquipment - + -

- GetMillingEquipment() +

+ GetMachiningEquipment()

@@ -158,7 +158,43 @@ Interface IGetMachiningEquipment
-
MachiningEquipment GetMillingEquipment()
+
MachiningEquipment GetMachiningEquipment()
+
+ + +

Returns

+
+
MachiningEquipment
+

MachiningEquipment

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

+ GetMillingEquipment() + +

+ +

Source-compatible delegate for callers written against the pre-rename +name; the equipment has been machining-scoped (not milling-only) since +MillingEquipment became MachiningEquipment.

+
+
+ +
+
[Obsolete("Renamed to GetMachiningEquipment.")]
+MachiningEquipment GetMillingEquipment()
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html index 2553ef5a..3e50123d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html @@ -167,6 +167,9 @@ Interface IMachiningEquipment
MachiningEquipmentUtil.GetMachinePositionAtTableBuckleZero(IMachiningEquipment)
+
+ MachiningEquipmentUtil.GetProgramToPnMat4d(IMachiningEquipment) +
TopoUtil.Display(IGetAnchor, Bind, Dictionary<Anchor, Mat4d>)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html index e822cf4b..c5171182 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html @@ -178,6 +178,9 @@ Class MachiningEquipment
MachiningEquipmentUtil.GetMachinePositionAtTableBuckleZero(IMachiningEquipment)
+
+ MachiningEquipmentUtil.GetProgramToPnMat4d(IMachiningEquipment) +
DuplicateUtil.TryDuplicate<TSelf>(TSelf, params object[])
@@ -244,8 +247,8 @@ Class MachiningEquipment -

- MachiningEquipment(XElement, string, string, IProgress<object>) +

+ MachiningEquipment(XElement, string, string, IProgress<IMessage>)

@@ -254,7 +257,7 @@ Class MachiningEquipment
-
public MachiningEquipment(XElement src, string baseDirectory, string relFile, IProgress<object> progress)
+
public MachiningEquipment(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress)

Parameters

@@ -268,7 +271,7 @@ Class MachiningEquipment
relFile string

The relative file path for XML serialization.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

@@ -419,6 +422,41 @@ This includes coolant temperature and heat transfer coefficients.

+ + +

+ CoolantHeatConditionFile + +

+ +

Gets or sets the file path of the coolant heat condition +(WorkpieceMaterial pattern: when set, XML IO externalizes +CoolantHeatCondition to this side-file; when null the +condition serializes inline).

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

Property Value

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

@@ -987,10 +1025,10 @@ This function is usually used to compute the bounding box of elements.

- + -

- GetMillingEquipment() +

+ GetMachiningEquipment()

@@ -999,7 +1037,7 @@ This function is usually used to compute the bounding box of elements.

-
public MachiningEquipment GetMillingEquipment()
+
public MachiningEquipment GetMachiningEquipment()
@@ -1020,6 +1058,42 @@ This function is usually used to compute the bounding box of elements.

+ + +

+ GetMillingEquipment() + +

+ +

Source-compatible delegate for callers written against the pre-rename +name — the interface's default member is not reachable through a +concrete-typed reference, so it is restated here.

+
+
+ +
+
[Obsolete("Renamed to GetMachiningEquipment.")]
+public MachiningEquipment GetMillingEquipment()
+
+ + +

Returns

+
+
MachiningEquipment
+

This equipment.

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

@@ -1241,7 +1315,8 @@ and chains Reg(factory) on dependents. Idempotent.

Resets all collision flags to their default states. -This should be called after collision detection is complete.

+This should be called after collision detection is complete, +and by a runtime reset so no part stays painted red.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html index 32b9bb31..36913201 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html @@ -434,19 +434,19 @@ When set, updates the component anchor and collidable based on the equipment's s - + -

- WorkpieceRuntimeGeomGetter +

+ WorkpieceMeshedGeomGetter

-

Getter for runtime geometry of the workpiece. Set by the service layer.

+

Getter for meshed geometry of the workpiece. Set by the service layer.

-
public Func<CubeTree> WorkpieceRuntimeGeomGetter { get; set; }
+
public Func<CubeTree> WorkpieceMeshedGeomGetter { get; set; }
@@ -531,7 +531,7 @@ When set, updates the component anchor and collidable based on the equipment's s

The collidable object representing the component's geometry. The type of collidable returned depends on the component key:

    -
  • Workpiece: Runtime geometry
  • +
  • Workpiece: Meshed geometry
  • Fixture: Solid collidable
  • ToolHolder: Cylindroid or freeform holder solid
  • CutterShank: Upper beam topo brick solid
  • diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html index b5ce1bae..57ac9c49 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html @@ -172,6 +172,13 @@ bottom/top centers of geom). Only GeomToTableTransformer is mutated.

    Returns the assigned translation, or null when workpiece / fixture / Xyzabc machine tool is missing.

    +

    The alignment is computed in the machine-coordinate (MC) zero state: the +assembly is reflected and every IDynamicRegular axis is set +to Step = 0 before querying displacements. The live equipment may +have its axes moved, which would otherwise distort the +ToolBuckle -> FixtureTableBuckle leg (it crosses the X/Y/Z/A/B/C +axes) and break the vector-chain assumption that the legs share a common +orientation — isoOffset is itself an MC-zero quantity.

@@ -321,6 +328,59 @@ The machine coordinate are all assumed to be zero.

+ + +

+ GetProgramToPnMat4d(IMachiningEquipment) + +

+ +

Gets the rigid transform that maps a point in program (workpiece) +coordinates — the ProgramZeroAnchor frame — +into the kinematic Pn frame (the chain's table-buckle anchor frame +that XyzabcSolver solves in).

+

+Both anchors live on the same rigid table-side subtree (the +table-buckle→fixture→workpiece leg crosses no machine axis), so the +transform is pose-independent and is queried on the live assembly — +no MC-zero reflection needed (this runs per parsed motion block; a +whole-assembly TopoReflection clone here would dominate +large-file parse time). Falls back to identity (program frame ≡ +table-buckle frame) when the workpiece has no +ProgramZeroAnchor; returns null when +the chain has no table buckle. +

+
+
+ +
+
public static Mat4d GetProgramToPnMat4d(this IMachiningEquipment equipment)
+
+ +

Parameters

+
+
equipment IMachiningEquipment
+

The machining equipment.

+
+
+ +

Returns

+
+
Mat4d
+

The program→Pn transform, or null.

+
+
+ + + + + + + + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningToolHouse.html b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningToolHouse.html index 9a2a1ba7..a1fa544a 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningToolHouse.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.MachiningToolHouse.html @@ -102,7 +102,7 @@ Class MachiningToolHouse
-
public class MachiningToolHouse : Dictionary<object, IMachiningTool>, IDictionary<object, IMachiningTool>, ICollection<KeyValuePair<object, IMachiningTool>>, IReadOnlyDictionary<object, IMachiningTool>, IReadOnlyCollection<KeyValuePair<object, IMachiningTool>>, IEnumerable<KeyValuePair<object, IMachiningTool>>, IDictionary, ICollection, IEnumerable, IDeserializationCallback, ISerializable, INcDependency, IMakeXmlSource
+
public class MachiningToolHouse : Dictionary<int, IMachiningTool>, IDictionary<int, IMachiningTool>, ICollection<KeyValuePair<int, IMachiningTool>>, IReadOnlyDictionary<int, IMachiningTool>, IReadOnlyCollection<KeyValuePair<int, IMachiningTool>>, IEnumerable<KeyValuePair<int, IMachiningTool>>, IDictionary, ICollection, IEnumerable, IDeserializationCallback, ISerializable, INcDependency, IMakeXmlSource
@@ -112,7 +112,7 @@ Class MachiningToolHouse
Inheritance
object
-
Dictionary<object, IMachiningTool>
+
Dictionary<int, IMachiningTool>
MachiningToolHouse
@@ -120,11 +120,11 @@ Class MachiningToolHouse
Implements
-
IDictionary<object, IMachiningTool>
-
ICollection<KeyValuePair<object, IMachiningTool>>
-
IReadOnlyDictionary<object, IMachiningTool>
-
IReadOnlyCollection<KeyValuePair<object, IMachiningTool>>
-
IEnumerable<KeyValuePair<object, IMachiningTool>>
+
IDictionary<int, IMachiningTool>
+
ICollection<KeyValuePair<int, IMachiningTool>>
+
IReadOnlyDictionary<int, IMachiningTool>
+
IReadOnlyCollection<KeyValuePair<int, IMachiningTool>>
+
IEnumerable<KeyValuePair<int, IMachiningTool>>
IDictionary
ICollection
IEnumerable
@@ -140,67 +140,67 @@ Class MachiningToolHouse
Inherited Members
- Dictionary<object, IMachiningTool>.Add(object, IMachiningTool) + Dictionary<int, IMachiningTool>.Add(int, IMachiningTool)
- Dictionary<object, IMachiningTool>.Clear() + Dictionary<int, IMachiningTool>.Clear()
- Dictionary<object, IMachiningTool>.ContainsKey(object) + Dictionary<int, IMachiningTool>.ContainsKey(int)
- Dictionary<object, IMachiningTool>.ContainsValue(IMachiningTool) + Dictionary<int, IMachiningTool>.ContainsValue(IMachiningTool)
- Dictionary<object, IMachiningTool>.EnsureCapacity(int) + Dictionary<int, IMachiningTool>.EnsureCapacity(int)
- Dictionary<object, IMachiningTool>.GetAlternateLookup<TAlternateKey>() + Dictionary<int, IMachiningTool>.GetAlternateLookup<TAlternateKey>()
- Dictionary<object, IMachiningTool>.GetEnumerator() + Dictionary<int, IMachiningTool>.GetEnumerator()
- Dictionary<object, IMachiningTool>.OnDeserialization(object) + Dictionary<int, IMachiningTool>.OnDeserialization(object)
- Dictionary<object, IMachiningTool>.Remove(object) + Dictionary<int, IMachiningTool>.Remove(int)
- Dictionary<object, IMachiningTool>.Remove(object, out IMachiningTool) + Dictionary<int, IMachiningTool>.Remove(int, out IMachiningTool)
- Dictionary<object, IMachiningTool>.TrimExcess() + Dictionary<int, IMachiningTool>.TrimExcess()
- Dictionary<object, IMachiningTool>.TrimExcess(int) + Dictionary<int, IMachiningTool>.TrimExcess(int)
- Dictionary<object, IMachiningTool>.TryAdd(object, IMachiningTool) + Dictionary<int, IMachiningTool>.TryAdd(int, IMachiningTool)
- Dictionary<object, IMachiningTool>.TryGetAlternateLookup<TAlternateKey>(out Dictionary<object, IMachiningTool>.AlternateLookup<TAlternateKey>) + Dictionary<int, IMachiningTool>.TryGetAlternateLookup<TAlternateKey>(out Dictionary<int, IMachiningTool>.AlternateLookup<TAlternateKey>)
- Dictionary<object, IMachiningTool>.TryGetValue(object, out IMachiningTool) + Dictionary<int, IMachiningTool>.TryGetValue(int, out IMachiningTool)
- Dictionary<object, IMachiningTool>.Comparer + Dictionary<int, IMachiningTool>.Comparer
- Dictionary<object, IMachiningTool>.Count + Dictionary<int, IMachiningTool>.Count
- Dictionary<object, IMachiningTool>.Capacity + Dictionary<int, IMachiningTool>.Capacity
- Dictionary<object, IMachiningTool>.this[object] + Dictionary<int, IMachiningTool>.this[int]
- Dictionary<object, IMachiningTool>.Keys + Dictionary<int, IMachiningTool>.Keys
- Dictionary<object, IMachiningTool>.Values + Dictionary<int, IMachiningTool>.Values
object.Equals(object) @@ -303,8 +303,8 @@ Class MachiningToolHouse -

- MachiningToolHouse(XElement, string, string, IProgress<object>) +

+ MachiningToolHouse(XElement, string, string, IProgress<IMessage>)

@@ -313,7 +313,7 @@ Class MachiningToolHouse
-
public MachiningToolHouse(XElement src, string baseDirectory, string relFile, IProgress<object> progress)
+
public MachiningToolHouse(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress)

Parameters

@@ -327,7 +327,7 @@ Class MachiningToolHouse
relFile string

Relative file path

-
progress IProgress<object>
+
progress IProgress<IMessage>

The progress reporter.

@@ -396,13 +396,13 @@ The tool ID is 1 if no tool existed; otherwise, the tool ID is the max tool ID p
-
public KeyValuePair<object, MillingTool> CreateStickMillingTool()
+
public KeyValuePair<int, MillingTool> CreateStickMillingTool()

Returns

-
KeyValuePair<object, MillingTool>
+
KeyValuePair<int, MillingTool>

the generated tool id and the generated tool

@@ -504,8 +504,8 @@ Since the folder can be moving with the configuration file.

-

- SetToolId(object, IMachiningTool) +

+ SetToolId(int, IMachiningTool)

@@ -514,12 +514,12 @@ Since the folder can be moving with the configuration file.

-
public void SetToolId(object toolId, IMachiningTool millingTool)
+
public void SetToolId(int toolId, IMachiningTool millingTool)

Parameters

-
toolId object
+
toolId int
millingTool IMachiningTool
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.Sweptable.html b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.Sweptable.html index c7a6f7a8..3faf80ac 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.Sweptable.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.Sweptable.html @@ -260,10 +260,10 @@ Class Sweptable - + -

- NativeTopoStl +

+ NativeTopoStl3d

@@ -272,7 +272,7 @@ Class Sweptable
-
public NativeTopoStld NativeTopoStl { get; }
+
public NativeTopoStl3d NativeTopoStl3d { get; }
@@ -281,7 +281,7 @@ Class Sweptable

Property Value

-
NativeTopoStld
+
NativeTopoStl3d

geoemtry

@@ -293,10 +293,10 @@ Class Sweptable - + -

- NativeTopoStlfr +

+ NativeTopoStl3wfr

@@ -305,7 +305,7 @@ Class Sweptable
-
public NativeTopoStlfr NativeTopoStlfr { get; }
+
public NativeTopoStl3wfr NativeTopoStl3wfr { get; }
@@ -314,7 +314,7 @@ Class Sweptable

Property Value

-
NativeTopoStlfr
+
NativeTopoStl3wfr
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.SweptableUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.SweptableUtil.html index ca375d3e..3887692b 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Machining.SweptableUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Machining.SweptableUtil.html @@ -153,6 +153,68 @@ Class SweptableUtil + + +

+ AddBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool) + +

+ +

Add volume by sweeping volume — the boolean-union dual of +RemoveBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool). Deposits the swept solid into the geometry +(additive manufacturing: weld / cladding / FDM bead), rather than removing it.

+
+
+ +
+
public static UnmanagedAddition AddBySweepingVolume(this CubeTree cubeTree, IGetSweptable sweptable, Mat4d beginMat, Mat4d endMat, double preferredCubeWidth = 0, double fractionTolerance = 0, bool enableBuildingContactContours = false, bool isAggressiveAdd = false)
+
+ +

Parameters

+
+
cubeTree CubeTree
+

geom to be volume-added

+
+
sweptable IGetSweptable
+

swaptable

+
+
beginMat Mat4d
+

previous transformation matrix in sequence

+
+
endMat Mat4d
+

current transformation matrix in sequence

+
+
preferredCubeWidth double
+

preferred cube width for the operation, defaults to cubeTree's resolution if 0

+
+
fractionTolerance double
+

fraction tolerance for the sweptable, defaults to preferredCubeWidth * 1e-4 if 0

+
+
enableBuildingContactContours bool
+

enable building contours of the newly created surface

+
+
isAggressiveAdd bool
+

whether to use aggressive adding mode

+
+
+ +

Returns

+
+
UnmanagedAddition
+

Addition

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

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.AllowNoActiveSessionAttribute.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.AllowNoActiveSessionAttribute.html new file mode 100644 index 00000000..a6496d60 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.AllowNoActiveSessionAttribute.html @@ -0,0 +1,307 @@ + + + + + Class AllowNoActiveSessionAttribute | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class AllowNoActiveSessionAttribute +

+ +
+
Namespace
Hi.MachiningProcs
+
Assembly
HiNc.dll
+
+ +

Marks a session-scoped controller action as callable without an active session, exempting it +from RequireActiveSessionAttribute. Use on the session lifecycle entry points +(BeginSession / EndSession), which by definition run when no session exists yet.

+
+
+ +
+
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
+public sealed class AllowNoActiveSessionAttribute : Attribute
+
+ + + + +
+
Inheritance
+
+ + +
AllowNoActiveSessionAttribute
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.AllowNoLoadedProjectAttribute.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.AllowNoLoadedProjectAttribute.html new file mode 100644 index 00000000..edc9cba2 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.AllowNoLoadedProjectAttribute.html @@ -0,0 +1,307 @@ + + + + + Class AllowNoLoadedProjectAttribute | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class AllowNoLoadedProjectAttribute +

+ +
+
Namespace
Hi.MachiningProcs
+
Assembly
HiNc.dll
+
+ +

Marks a project-level controller action as callable without a loaded project, exempting it +from RequireLoadedProjectAttribute. Use on the endpoints that create or load a +project (which by definition run when no project is open yet).

+
+
+ +
+
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
+public sealed class AllowNoLoadedProjectAttribute : Attribute
+
+ + + + +
+
Inheritance
+
+ + +
AllowNoLoadedProjectAttribute
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.ApiActionResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.ApiActionResult.html new file mode 100644 index 00000000..8fcddec2 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.ApiActionResult.html @@ -0,0 +1,448 @@ + + + + + Class ApiActionResult | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class ApiActionResult +

+ +
+
Namespace
Hi.MachiningProcs
+
Assembly
HiNc.dll
+
+ +

The shared outcome envelope for a web-API action: whether it succeeded and the messages +it reported, in order. Returned by the project-level surface +(LocalProjectServiceController) and, on the no-active-session boundary, by +the session-scoped surface (SessionShellController via +RequireActiveSessionAttribute). A REST / AI caller therefore reads the +progress / success / error notifications inline in the HTTP response instead of +only out-of-band via the SignalR sinks, and can branch on Success without +parsing severities.

+
+
+ +
+
public record ApiActionResult : IEquatable<ApiActionResult>
+
+ + + + +
+
Inheritance
+
+ +
ApiActionResult
+
+
+ +
+
Implements
+
+ +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ ApiActionResult(bool, IReadOnlyList<MessageDto>) + +

+ +

The shared outcome envelope for a web-API action: whether it succeeded and the messages +it reported, in order. Returned by the project-level surface +(LocalProjectServiceController) and, on the no-active-session boundary, by +the session-scoped surface (SessionShellController via +RequireActiveSessionAttribute). A REST / AI caller therefore reads the +progress / success / error notifications inline in the HTTP response instead of +only out-of-band via the SignalR sinks, and can branch on Success without +parsing severities.

+
+
+ +
+
public ApiActionResult(bool Success, IReadOnlyList<MessageDto> Messages)
+
+ +

Parameters

+
+
Success bool
+

False when any reported message is an error; true otherwise.

+
+
Messages IReadOnlyList<MessageDto>
+

The messages reported during the call, in arrival order.

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

Properties +

+ + + + +

+ Messages + +

+ +

The messages reported during the call, in arrival order.

+
+
+ +
+
public IReadOnlyList<MessageDto> Messages { get; init; }
+
+ + + + + +

Property Value

+
+
IReadOnlyList<MessageDto>
+
+
+ + + + + + + + + + +

+ Success + +

+ +

False when any reported message is an error; true otherwise.

+
+
+ +
+
public bool Success { get; init; }
+
+ + + + + +

Property Value

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

Methods +

+ + + + +

+ FromCollector(MessageCollector, bool?) + +

+ +

Builds a result from a per-call MessageCollector. Success is inferred as +“no error-severity message was reported” unless success overrides it.

+
+
+ +
+
public static ApiActionResult FromCollector(MessageCollector collector, bool? success = null)
+
+ +

Parameters

+
+
collector MessageCollector
+

The per-call sink whose messages to flatten.

+
+
success bool?
+

Explicit success flag, or null to infer from the messages.

+
+
+ +

Returns

+
+
ApiActionResult
+

The outcome envelope.

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

+ NoActiveSession() + +

+ +

The canonical “no active session” result: a single configuration error telling the +caller to start a session first. Returned (with HTTP 409) by +RequireActiveSessionAttribute when a session-scoped endpoint is invoked +outside a session.

+
+
+ +
+
public static ApiActionResult NoActiveSession()
+
+ + +

Returns

+
+
ApiActionResult
+

An unsuccessful envelope carrying the guidance message.

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

+ NoProjectLoaded() + +

+ +

The canonical “no project loaded” result: a single configuration error telling the +caller to create or load a project first. Returned (with HTTP 409) by +RequireLoadedProjectAttribute when a project-level endpoint is invoked +before any project is open.

+
+
+ +
+
public static ApiActionResult NoProjectLoaded()
+
+ + +

Returns

+
+
ApiActionResult
+

An unsuccessful envelope carrying the guidance message.

+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.LocalProjectService.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.LocalProjectService.html index e1e01de6..6ab60d29 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.LocalProjectService.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.LocalProjectService.html @@ -103,7 +103,7 @@ Apply absolute file path.

-
public class LocalProjectService : IProjectService, IMachiningProjectGetter, IMachiningService, IGetMachiningEquipment, IDisposable
+
public class LocalProjectService : IProjectService, IMachiningProjectGetter, IMachiningService, IGetMachiningEquipment, IStepPropertyAccessHost, IDisposable
@@ -124,6 +124,7 @@ Apply absolute file path.

IMachiningProjectGetter
IMachiningService
IGetMachiningEquipment
+
IStepPropertyAccessHost
IDisposable

@@ -193,42 +194,6 @@ Compare to Machin - - -

- LocalProjectService(UserService, ILogger<LocalProjectService>) - -

- -

Initializes a new instance.

-
-
- -
-
public LocalProjectService(UserService userService, ILogger<LocalProjectService> logger)
-
- -

Parameters

-
-
userService UserService
-

The application service.

-
-
logger ILogger<LocalProjectService>
-

The logger instance.

-
-
- - - - - - - - - - - -

@@ -278,7 +243,7 @@ Compare to Machin
-
public IControlRunner ActiveNcRunner { get; }
+
public INcRunner ActiveNcRunner { get; }
@@ -287,7 +252,39 @@ Compare to
Machin

Property Value

-
IControlRunner
+
INcRunner
+
+
+ + + + + + + + + + +

+ BaseDirectory + +

+ +

Gets the project base directory (relative-path root).

+
+
+ +
+
public string BaseDirectory { get; }
+
+ + + + + +

Property Value

+
+
string
@@ -330,6 +327,39 @@ Compare to Machin + + +

+ ClRunner + +

+ +

Gets the NX-CL (CLSF) runner of the project +(NxClRunner); null when there is no project.

+
+
+ +
+
public INcRunner ClRunner { get; }
+
+ + + + + +

Property Value

+
+
INcRunner
+
+
+ + + + + + + +

@@ -362,6 +392,39 @@ Compare to Machin + + +

+ CsvRunner + +

+ +

Gets the CSV runner — the CSV suit's pipeline +(GeneralCsvRunner); null when there is no project.

+
+
+ +
+
public INcRunner CsvRunner { get; }
+
+ + + + + +

Property Value

+
+
INcRunner
+
+
+ + + + + + + +

@@ -394,39 +457,6 @@ Compare to Machin - - -

- EnableCollisionDetection - -

- -

Gets or sets whether collision detection is enabled. -When set to true, initializes collision detection mechanism.

-
-
- -
-
public bool EnableCollisionDetection { get; set; }
-
- - - - - -

Property Value

-
-
bool
-
-
- - - - - - - -

@@ -466,8 +496,12 @@ When set to true, initializes collision detection mechanism.

-

Workaround flag to switch between SoftNcRunner and HardNcRunner. -When true and SoftNcRunner is available, uses SoftNcRunner. +

Switches between SoftNcRunner and the legacy +HardNcRunner. Default true (2026-07-17): +SoftNcRunner is the flagship NC pipeline; set +false to fall back to HardNcRunner for the +features that still depend on it (e.g. Hi.NcOpt.NcOptProc +optimization reads NcLines). Will be removed when HardNcRunner is fully replaced.

@@ -655,6 +689,77 @@ When set, updates the inspecting quantity function.

+ + +

+ IsCollisionDetectionEnabled + +

+ +

Gets whether collision detection is currently enabled.

+
+
+ +
+
public bool IsCollisionDetectionEnabled { get; }
+
+ + + + + +

Property Value

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

+ LastMillingParaTrainResult + +

+ +

Snapshot of the most recent TrainMillingPara(SampleFlag, bool, double, string, CancellationToken, ICuttingPara, IProgress<IMessage>) / +ReTrainMillingPara(SampleFlag, double, string, CancellationToken, IProgress<IMessage>) outcome — sampleFlags, correlation R, +filtered sample count, output file and the built parameter's XML — so a +caller (e.g. the webservice) can read the training result without +re-opening the output .mp file. Service lifetime, last-wins; +null until the first training call completes. Deliberately not cleared +by ResetRuntime(IProgress<IMessage>) so the result stays readable after a +post-run reset.

+
+
+ +
+
public MillingParaTrainResult LastMillingParaTrainResult { get; }
+
+ + + + + +

Property Value

+
+
MillingParaTrainResult
+
+
+ + + + + + + +

@@ -817,6 +922,39 @@ Updates related components when changed.

+ + +

+ MachiningMotionResolution + +

+ +

Gets or sets the machining motion resolution strategy (project-level; +backed by MachiningActRunner).

+
+
+ +
+
public IMachiningMotionResolution MachiningMotionResolution { get; set; }
+
+ + + + + +

Property Value

+
+
IMachiningMotionResolution
+
+
+ + + + + + + +

@@ -824,7 +962,12 @@ Updates related components when changed.

-

Gets or sets the machining project instance.

+

Gets or sets the machining project. The setter runs the full change +lifecycle (teardown of the outgoing project, then +Hi.MachiningProcs.LocalProjectService.OnMachiningProjectChanged()), so external assignment — +e.g. through MachiningProject or a +desktop host — can no longer bypass the hooks and leave the runner +config un-wired (equipment-split P2).

@@ -880,6 +1023,43 @@ Updates related components when changed.

+ + +

+ MachiningResolution_mm + +

+ +

Gets the machining resolution (mm) — the act-runner value, or the workpiece +bottom resolution when unset. Set via SetMachiningResolution_mm(double, IProgress<IMessage>) +(have-both: the caller injects the message host). Seeded from +InitResolution when a project +is loaded/assigned; an explicit setting then survives +ResetRuntime(IProgress<IMessage>) and workpiece swaps.

+
+
+ +
+
public double MachiningResolution_mm { get; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + +

@@ -1040,6 +1220,79 @@ Updates related components when changed.

+ + +

+ NcDiagnosticProgress + +

+ +

NC-pipeline diagnostic sink on the IMessage channel — sibling of +StepDiagnosticProgress. Stable for the service lifetime (created in the ctor, +only Cleared on reset, never swapped per session).

+
+
+ +
+
public NcDiagnosticProgress NcDiagnosticProgress { get; }
+
+ + + + + +

Property Value

+
+
NcDiagnosticProgress
+
+
+ + + + + + + + + + +

+ NcManipulationDiagnosticProgress + +

+ +

Gets the NC-manipulation diagnostic sink — the second diagnostic home, +for operations that rework an already-played NC/CL program (writeback +conversion, NC optimization) as opposed to the play-time pipeline +diagnostics in NcDiagnosticProgress. Keeping the two +scenarios in separate homes lets a play reset clear run diagnostics +without discarding manipulation results, and vice versa; each +manipulation run clears this home at its start so it always holds the +latest run.

+
+
+ +
+
public NcDiagnosticProgress NcManipulationDiagnosticProgress { get; }
+
+ + + + + +

Property Value

+
+
NcDiagnosticProgress
+
+
+ + + + + + + +

@@ -1061,7 +1314,7 @@ Updates related components when changed.

Property Value

-
NcOptProc
+
NcOptProc
@@ -1168,19 +1421,20 @@ Updates related components when changed.

- + -

- SessionProgress +

+ ScriptOptions

-

Gets the message host for displaying messages, warnings, and errors.

+

Project-level Roslyn script options for session script execution. +Initialized from DefaultScriptOptions.

-
public SessionProgress SessionProgress { get; }
+
public ScriptOptions ScriptOptions { get; set; }
@@ -1189,7 +1443,7 @@ Updates related components when changed.

Property Value

-
SessionProgress
+
ScriptOptions
@@ -1207,7 +1461,10 @@ Updates related components when changed.

-

Gets the shell API for interacting with this machining process.

+

Gets the shell API for the active session. Created at BeginSession(), +nulled at EndSession(); null outside a session — its lifetime is +unified with MachiningSession, so a non-null instance always implies an +active session.

@@ -1232,6 +1489,110 @@ Updates related components when changed.

+ + +

+ ShellProgress + +

+ +

Session-level routine / lifecycle message sink on the IMessage channel +(cache reset, file progress, …). Owned by MachiningSession (truly +session-scoped); null outside a session. Use null-safely.

+
+
+ +
+
public ShellProgress ShellProgress { get; }
+
+ + + + + +

Property Value

+
+
ShellProgress
+
+
+ + + + + + + + + + +

+ SoftNcRunner + +

+ +

Facade over the active suit's NC pipeline +(MachiningProject.NcRunnerSuit.SoftNcRunner). The getter is null-safe +(returns null when there is no project/suit). The setter is the single +rewiring entry point: it assigns the suit's runner and re-binds everything +that depends on it (proxy hosts, kinematics provider, session script +dictionaries, and the per-session NcRunnerSessionState).

+
+
+ +
+
public SoftNcRunner SoftNcRunner { get; set; }
+
+ + + + + +

Property Value

+
+
SoftNcRunner
+
+
+ + + + + + + + + + +

+ StepDiagnosticProgress + +

+ +

Step-anchored message sink on the IMessage channel, threaded through the +runner / act-processing chain.

+
+
+ +
+
public StepDiagnosticProgress StepDiagnosticProgress { get; }
+
+ + + + + +

Property Value

+
+
StepDiagnosticProgress
+
+
+ + + + + + + +

@@ -1296,38 +1657,6 @@ Updates related components when changed.

- - -

- UserService - -

- -

Gets the application service instance.

-
-
- -
-
public UserService UserService { get; }
-
- - - - - -

Property Value

-
-
UserService
-
-
- - - - - - - -

@@ -1393,14 +1722,49 @@ Ensures proper initialization of workpiece properties.

+ + +

+ XyzabcSolver + +

+ +

Gets the shared kinematics solver — the third topology entity of the +equipment split, owned by the service (runtime side) rather than the +persisted project graph. Rebuilt by Hi.MachiningProcs.LocalProjectService.BuildCoordinateConverter() +whenever the machine chain changes.

+
+
+ +
+
public XyzabcSolver XyzabcSolver { get; }
+
+ + + + + +

Property Value

+
+
XyzabcSolver
+
+
+ + + + + + + +

Methods

-

- Act(IAct, IGetSentence, CancellationToken?) +

+ Act(IAct, ISentenceCarrier, CancellationToken?)

@@ -1409,7 +1773,7 @@ Ensures proper initialization of workpiece properties.

-
public void Act(IAct act, IGetSentence sourceCommand = null, CancellationToken? cancellationToken = null)
+
public void Act(IAct act, ISentenceCarrier sourceCommand = null, CancellationToken? cancellationToken = null)

Parameters

@@ -1417,7 +1781,7 @@ Ensures proper initialization of workpiece properties.

act IAct

The act to execute.

-
sourceCommand IGetSentence
+
sourceCommand ISentenceCarrier

The source command that triggered the act.

cancellationToken CancellationToken?
@@ -1436,6 +1800,35 @@ Ensures proper initialization of workpiece properties.

+ + +

+ BeginNcRunner() + +

+ +

Prepares the NC runner for a play session by initializing the +workpiece meshed geometry (when not already initialized), reporting +progress through ShellProgress.

+
+
+ +
+
public void BeginNcRunner()
+
+ + + + + + + + + + + + +

@@ -1464,6 +1857,41 @@ Clear the state from previous session (if existed).

+ + +

+ CheckStrokeLimitOnStep() + +

+ +

Checks stroke limit at the current MC position. +Uses IStrokeLimitConfig when EnableSoftNcRunner is active, +otherwise falls back to CheckStrokeLimit(DVec3d, IProgress<IMessage>).

+
+
+ +
+
public bool CheckStrokeLimitOnStep()
+
+ + +

Returns

+
+
bool
+

True if within limits or no limits configured.

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

@@ -1491,6 +1919,52 @@ Clear the state from previous session (if existed).

+ + +

+ ConvertClToNcFiles(string, IProgress<IMessage>) + +

+ +

Converts the CLSF play of the current session into Fanuc NC files +(writeback synthesis — MSYS tilt becomes G68.2, RTCP becomes +G43.4). Play a CL file on an XYZABC machine chain first, then +convert; see ConvertClToNcFiles(string, string, IProgress<IMessage>).

+
+
+ +
+
public IReadOnlyList<string> ConvertClToNcFiles(string relNcFileTemplate = "Output/[NcName].nc", IProgress<IMessage> messageProgress = null)
+
+ +

Parameters

+
+
relNcFileTemplate string
+

Output path template; [NcName] +is replaced by the source file name.

+
+
messageProgress IProgress<IMessage>
+

Optional message sink for lifecycle reporting.

+
+
+ +

Returns

+
+
IReadOnlyList<string>
+

Written NC file paths, relative to the project base directory.

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

@@ -1549,6 +2023,44 @@ Clear the state from previous session (if existed).

+ + +

+ EnableCollisionDetection(bool, IProgress<IMessage>) + +

+ +

Enables or disables collision detection. When enabling, prepares the +collidable items; when disabling, resets collision flags. Progress is +reported to the injected messageProgress.

+
+
+ +
+
public void EnableCollisionDetection(bool value, IProgress<IMessage> messageProgress = null)
+
+ +

Parameters

+
+
value bool
+

Whether collision detection should be enabled.

+
+
messageProgress IProgress<IMessage>
+

Sink-agnostic message host for progress reporting.

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

@@ -1576,6 +2088,48 @@ Clear the state from previous session (if existed).

+ + +

+ FixedPace(double, double) + +

+ +

Creates a fixed machining motion resolution with the specified linear +(mm) and rotary (deg) resolutions.

+
+
+ +
+
public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, double rotaryResolution_deg)
+
+ +

Parameters

+
+
linearResolution_mm double
+

Linear resolution in millimeters.

+
+
rotaryResolution_deg double
+

Rotary resolution in degrees.

+
+
+ +

Returns

+
+
FixedMachiningMotionResolution
+
+
+ + + + + + + + + + +

@@ -1648,6 +2202,39 @@ Clear the state from previous session (if existed).

+ + +

+ GetMachiningEquipment() + +

+ + +
+ +
+
public MachiningEquipment GetMachiningEquipment()
+
+ + +

Returns

+
+
MachiningEquipment
+

MachiningEquipment

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

@@ -1688,19 +2275,22 @@ Clear the state from previous session (if existed).

-

Get MachiningEquipment.

+

Source-compatible delegate for callers written against the pre-rename +name — the interface's default member is not reachable through a +concrete-typed reference, so it is restated here.

-
public MachiningEquipment GetMillingEquipment()
+
[Obsolete("Renamed to GetMachiningEquipment.")]
+public MachiningEquipment GetMillingEquipment()

Returns

MachiningEquipment
-

MachiningEquipment

+

The loaded project's equipment, or null when none is loaded.

@@ -1812,6 +2402,79 @@ Clear the state from previous session (if existed).

+ + +

+ PlayBrandNcFile(string, string) + +

+ +

Plays a famous-brand NC code file from the specified path with pace +control (no kind dispatch — always the brand runner).

+
+
+ +
+
public void PlayBrandNcFile(string baseDirectory, string relFilePath)
+
+ +

Parameters

+
+
baseDirectory string
+

Base directory for resolving relative paths

+
+
relFilePath string
+

Relative path to the NC file

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

+ PlayClFile(string, string) + +

+ +

Plays an NX-CL (CLSF) file from the specified path.

+
+
+ +
+
public void PlayClFile(string baseDirectory, string relFilePath)
+
+ +

Parameters

+
+
baseDirectory string
+

Base directory for resolving relative paths.

+
+
relFilePath string
+

Relative path to the CLSF file.

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

@@ -1886,26 +2549,32 @@ Clear the state from previous session (if existed).

-

- PlayNcFile(string, string) +

+ PlayNcFile(string, string, NcKind)

-

Plays an NC file from the specified path with pace control.

+

Plays an NC program file from the specified path, the runner picked by +kind (Auto = by file +extension: known CL/CSV extensions map to those runners, anything else +plays as brand NC).

-
public void PlayNcFile(string baseDirectory, string relFilePath)
+
public void PlayNcFile(string baseDirectory, string relFilePath, NcKind kind = NcKind.Auto)

Parameters

baseDirectory string
-

Base directory for resolving relative paths

+

Base directory for resolving relative paths.

relFilePath string
-

Relative path to the NC file

+

Relative path to the NC program file.

+
+
kind NcKind
+

Which runner plays the file; Auto detects by extension.

@@ -1934,7 +2603,7 @@ Clear the state from previous session (if existed).

NcRunnerSessionState is reset so the per-layer SyntaxPiece dataflow — including Vars.Volatile, modal carries, and the init seed — is dropped. The next - RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) call re-initialises + RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) call re-initialises everything from scratch. Without the second step, calling PowerReset while a project is loaded would leave volatile commons alive across the supposed power @@ -1961,8 +2630,8 @@ cycle (they live in the SyntaxPiece JSON dataflow rather than in any -

- ProcAct(IAct, IGetSentence, CancellationToken?) +

+ ProcAct(IAct, ISentenceCarrier, CancellationToken?)

@@ -1971,7 +2640,7 @@ cycle (they live in the SyntaxPiece JSON dataflow rather than in any
-
public IEnumerable<object> ProcAct(IAct act, IGetSentence sourceCommand = null, CancellationToken? cancellationToken = null)
+
public IEnumerable<object> ProcAct(IAct act, ISentenceCarrier sourceCommand = null, CancellationToken? cancellationToken = null)

Parameters

@@ -1979,7 +2648,7 @@ cycle (they live in the SyntaxPiece JSON dataflow rather than in any
act IAct

The act to process.

-
sourceCommand IGetSentence
+
sourceCommand ISentenceCarrier

The source command that triggered the act.

cancellationToken CancellationToken?
@@ -2006,8 +2675,8 @@ cycle (they live in the SyntaxPiece JSON dataflow rather than in any -

- ReTrainMillingPara(SampleFlag, double, string, CancellationToken) +

+ ReTrainMillingPara(SampleFlag, double, string, CancellationToken, IProgress<IMessage>)

@@ -2016,7 +2685,7 @@ cycle (they live in the SyntaxPiece JSON dataflow rather than in any
-
public void ReTrainMillingPara(SampleFlag sampleFlags, double outlierRatio, string dstRelFile, CancellationToken cancellationToken)
+
public void ReTrainMillingPara(SampleFlag sampleFlags, double outlierRatio, string dstRelFile, CancellationToken cancellationToken, IProgress<IMessage> messageProgress = null)

Parameters

@@ -2029,6 +2698,45 @@ cycle (they live in the SyntaxPiece JSON dataflow rather than in any
cancellationToken CancellationToken
+
messageProgress IProgress<IMessage>
+
+ + + + + + + + + + + + + + + +

+ ReadNcRunnerSuit(string) + +

+ +

Reads an NcRunnerSuit from relFile (project +relative) and makes it the active suit — switching the active parser (NC or +CSV) — then re-binds every host hookup (see Hi.MachiningProcs.LocalProjectService.RewireForActiveSuit()). +Refused while an NC program is playing: the runner's per-session layers are +mid-enumeration and cannot be safely reset (an IProgress<T> +error is reported instead).

+
+
+ +
+
public void ReadNcRunnerSuit(string relFile)
+
+ +

Parameters

+
+
relFile string
+
@@ -2105,6 +2813,53 @@ Idempotent.

+ + +

+ RegisterStepVariable(string, string, string, string, Func<MachiningStep, object>) + +

+ +

Registers a step variable so downstream components (strip charts, +CSV exports, scripting) can read it from MachiningStep. +Idempotent on key.

+
+
+ +
+
public void RegisterStepVariable(string key, string name, string unit, string formatString, Func<MachiningStep, object> variableFunc = null)
+
+ +

Parameters

+
+
key string
+

Unique key.

+
+
name string
+

Human-readable name; may equal key.

+
+
unit string
+

Physical unit name (PhysicsUnit); nullable.

+
+
formatString string
+

Display format string; nullable.

+
+
variableFunc Func<MachiningStep, object>
+

Optional value extractor; nullable when the value comes from the step's flex dictionary.

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

@@ -2134,19 +2889,28 @@ Idempotent.

-

- ResetRuntime() +

+ ResetRuntime(IProgress<IMessage>)

-

Reset the runtime states including: runtime geometry, collision flags, machine tool position, CL strips, message buffer and etc..

+

Reset the runtime states including: meshed geometry, collision flags, machine tool position, CL strips, message buffer and etc.. +MachiningResolution_mm is deliberately left untouched so an +explicit setting survives resets; it is seeded from +InitResolution only when a +project is loaded/assigned.

-
public void ResetRuntime()
+
public void ResetRuntime(IProgress<IMessage> messageProgress = null)
+

Parameters

+
+
messageProgress IProgress<IMessage>
+
+
@@ -2159,6 +2923,91 @@ Idempotent.

+ + +

+ RunBrandNcFile(string, string) + +

+ +

Runs a famous-brand NC code file from the specified path (no kind +dispatch — always the brand runner).

+
+
+ +
+
public IEnumerable<Action> RunBrandNcFile(string baseDirectory, string relFilePath)
+
+ +

Parameters

+
+
baseDirectory string
+

Base directory for resolving relative paths. If the value is null, BaseDirectory substitutes the value.

+
+
relFilePath string
+

Relative path to the NC file.

+
+
+ +

Returns

+
+
IEnumerable<Action>
+

An enumerable of actions to be executed.

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

+ RunClFile(string, string) + +

+ +

Runs an NX-CL (CLSF) file from the specified path.

+
+
+ +
+
public IEnumerable<Action> RunClFile(string baseDirectory, string relFilePath)
+
+ +

Parameters

+
+
baseDirectory string
+

Base directory for resolving relative paths.

+
+
relFilePath string
+

Relative path to the CLSF file.

+
+
+ +

Returns

+
+
IEnumerable<Action>
+

An enumerable of actions to be executed.

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

@@ -2245,26 +3094,32 @@ Idempotent.

-

- RunNcFile(string, string) +

+ RunNcFile(string, string, NcKind)

-

Runs an NC file from the specified path.

+

Runs an NC program file from the specified path, the runner picked by +kind (Auto = by file +extension: known CL/CSV extensions map to those runners, anything else +runs as brand NC).

-
public IEnumerable<Action> RunNcFile(string baseDirectory, string relFilePath)
+
public IEnumerable<Action> RunNcFile(string baseDirectory, string relFilePath, NcKind kind = NcKind.Auto)

Parameters

baseDirectory string
-

Base directory for resolving relative paths. If the value is null, BaseDirectory substitutes the value.

+

Base directory for resolving relative paths.

relFilePath string
-

Relative path to the NC file.

+

Relative path to the NC program file.

+
+
kind NcKind
+

Which runner runs the file; Auto detects by extension.

@@ -2372,10 +3227,47 @@ Idempotent.

+ + +

+ SetMachiningResolution_mm(double, IProgress<IMessage>) + +

+ +

Sets the machining resolution (mm). Progress is reported to the injected +messageProgress.

+
+
+ +
+
public void SetMachiningResolution_mm(double value, IProgress<IMessage> messageProgress = null)
+
+ +

Parameters

+
+
value double
+

The machining resolution in millimeters.

+
+
messageProgress IProgress<IMessage>
+

Sink-agnostic message host for progress reporting.

+
+
+ + + + + + + + + + + + -

- TrainMillingPara(SampleFlag, bool, double, string, CancellationToken, ICuttingPara) +

+ TrainMillingPara(SampleFlag, bool, double, string, CancellationToken, ICuttingPara, IProgress<IMessage>)

@@ -2384,7 +3276,7 @@ Idempotent.

-
public void TrainMillingPara(SampleFlag sampleFlags, bool enableFzOnlyDuringDrilling, double outlierRatio, string dstRelFile, CancellationToken cancellationToken, ICuttingPara paraTemplate)
+
public void TrainMillingPara(SampleFlag sampleFlags, bool enableFzOnlyDuringDrilling, double outlierRatio, string dstRelFile, CancellationToken cancellationToken, ICuttingPara paraTemplate, IProgress<IMessage> messageProgress = null)

Parameters

@@ -2401,6 +3293,8 @@ Idempotent.

paraTemplate ICuttingPara
+
messageProgress IProgress<IMessage>
+
@@ -2498,10 +3392,43 @@ If the changing is raised outer from THIS service, this updating function should + + +

+ WriteNcRunnerSuit(string) + +

+ +

Writes the active NcRunnerSuit to relFile +(project relative). Pure file IO — does not update any in-memory pointer.

+
+
+ +
+
public void WriteNcRunnerSuit(string relFile)
+
+ +

Parameters

+
+
relFile string
+
+
+ + + + + + + + + + + + -

- WriteShotFile(TimeSpan, string) +

+ WriteShotFile(TimeSpan, string, IProgress<IMessage>)

@@ -2510,7 +3437,7 @@ If the changing is raised outer from THIS service, this updating function should
-
public void WriteShotFile(TimeSpan samplingPeriod, string relFileTemplate = "Output/[NcName].shot.csv")
+
public void WriteShotFile(TimeSpan samplingPeriod, string relFileTemplate = "Output/[NcName].shot.csv", IProgress<IMessage> messageProgress = null)

Parameters

@@ -2520,6 +3447,9 @@ If the changing is raised outer from THIS service, this updating function should
relFileTemplate string

Template for the output file path, can include [NcName] placeholder

+
+
messageProgress IProgress<IMessage>
+

Optional caller-supplied progress sink for start/finish messages.

@@ -2536,8 +3466,8 @@ If the changing is raised outer from THIS service, this updating function should -

- WriteStepFile(string) +

+ WriteStepFile(string, IProgress<IMessage>)

@@ -2546,13 +3476,16 @@ If the changing is raised outer from THIS service, this updating function should
-
public void WriteStepFile(string relFileTemplate = "Output/[NcName].step.csv")
+
public void WriteStepFile(string relFileTemplate = "Output/[NcName].step.csv", IProgress<IMessage> messageProgress = null)

Parameters

relFileTemplate string

Template for the output file path, can include [NcName] placeholder

+
+
messageProgress IProgress<IMessage>
+

Optional caller-supplied progress sink for start/finish messages.

@@ -2667,6 +3600,72 @@ The previous step is null if no previous step exists.

+

+ OnShellMessageAdded + +

+ +

App-lifetime bridge for ShellProgress appends. Because ShellProgress +is session-scoped (recreated at BeginSession(), null outside a session), a consumer +that wants every session's shell messages subscribes here once instead of chasing the swapping +instance — BeginSession() re-wires the bridge to the new sink each session, the same +way OnSourcedActEntry is bridged. Carries the append index and the message.

+
+
+ +
+
public event Action<int, IMessage> OnShellMessageAdded
+
+ + + + + + +

Event Type

+
+
Action<int, IMessage>
+
+
+ + + + + + + + +

+ OnShellMessageCleared + +

+ +

App-lifetime bridge for ShellProgress clears (see OnShellMessageAdded).

+
+
+ +
+
public event Action OnShellMessageCleared
+
+ + + + + + +

Event Type

+
+
Action
+
+
+ + + + + + + +

OnSourcedActEntry diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.LocalProjectServiceController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.LocalProjectServiceController.html new file mode 100644 index 00000000..e2ee57c5 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.LocalProjectServiceController.html @@ -0,0 +1,897 @@ + + + + + Class LocalProjectServiceController | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class LocalProjectServiceController +

+ +
+
Namespace
Hi.MachiningProcs
+
Assembly
HiNc.dll
+
+ +

HTTP controller exposing the project-level (session-independent) operations of +Hi.MachiningProcs.LocalProjectServiceController.LocalProjectService — the lean API-user surface, parallel to +SessionShellController (which mirrors the session-scoped +SessionShell). A controller mirrors exactly one body; project-level +settings belong here, not bolted onto the session controller.

+
+
+ +
+
[ApiController]
+[Route("api/[controller]/[action]")]
+[ProducesResponseType(typeof(ApiActionResult), 409)]
+public class LocalProjectServiceController : ControllerBase
+
+ + + + +
+
Inheritance
+
+ + +
LocalProjectServiceController
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + +

Remarks

+

This controller also demonstrates the per-request message-return pattern: each +mutating action injects a fresh MessageCollector into the have-both +project-level function (one taking IProgress<IMessage> messageProgress) and +returns the collected IMessage items in its HTTP response. A REST / AI +caller therefore sees the progress / success / error notifications inline in the +response, rather than only out-of-band via the SignalR broadcast. The shared +ApiActionResult envelope is also used by the session-scoped surface: +RequireActiveSessionAttribute returns it (with HTTP 409) to answer a +“no active session” call, rather than throwing a null-reference 500.

+
+ + +

Constructors +

+ + + + +

+ LocalProjectServiceController(LocalProjectService) + +

+ +

Initializes a new instance. Hi.MachiningProcs.LocalProjectServiceController.LocalProjectService is a DI singleton.

+
+
+ +
+
public LocalProjectServiceController(LocalProjectService projectService)
+
+ +

Parameters

+
+
projectService LocalProjectService
+
+
+ + + + + + + + + + + + +

Methods +

+ + + + +

+ EnableCollisionDetection(bool) + +

+ +

Enables or disables collision detection and returns the messages reported during the +call (e.g. the “preparing collision items” progress / done notifications).

+
+
+ +
+
[HttpPost]
+public ApiActionResult EnableCollisionDetection(bool value)
+
+ +

Parameters

+
+
value bool
+

Whether collision detection should be enabled.

+
+
+ +

Returns

+
+
ApiActionResult
+
+
+ + + + + + + + + + + + + +

+ IsCollisionDetectionEnabled() + +

+ +

Gets whether collision detection is currently enabled (project-level read; no session needed).

+
+
+ +
+
[HttpGet]
+public bool IsCollisionDetectionEnabled()
+
+ + +

Returns

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

+ SetMachiningResolution_mm(double) + +

+ +

Sets the machining resolution (mm) and returns the messages reported during the call.

+
+
+ +
+
[HttpPost]
+public ApiActionResult SetMachiningResolution_mm(double value)
+
+ +

Parameters

+
+
value double
+

The machining resolution in millimeters.

+
+
+ +

Returns

+
+
ApiActionResult
+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MachiningActRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MachiningActRunner.html index 9e587851..f71a8f1a 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MachiningActRunner.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MachiningActRunner.html @@ -186,8 +186,8 @@ Class MachiningActRunner -

- MachiningActRunner(SessionProgress, Action<IEnumerable<MillingStepLuggage>>, Func<MachiningToolHouse>, Func<MachiningEquipment>, Func<WorkpieceService>, Action) +

+ MachiningActRunner(Action<Exception>, Action<IEnumerable<MillingStepLuggage>>, Func<MachiningToolHouse>, Func<MachiningEquipment>, Func<WorkpieceService>, Action)

@@ -196,13 +196,16 @@ Class MachiningActRunner
-
public MachiningActRunner(SessionProgress sessionProgress, Action<IEnumerable<MillingStepLuggage>> stepStorageWriter, Func<MachiningToolHouse> machiningToolHouseGetter, Func<MachiningEquipment> machiningEquipmentGetter, Func<WorkpieceService> workpieceServiceGetter, Action resetMillingStepLuggageDbAction)
+
public MachiningActRunner(Action<Exception> reportException, Action<IEnumerable<MillingStepLuggage>> stepStorageWriter, Func<MachiningToolHouse> machiningToolHouseGetter, Func<MachiningEquipment> machiningEquipmentGetter, Func<WorkpieceService> workpieceServiceGetter, Action resetMillingStepLuggageDbAction)

Parameters

-
sessionProgress SessionProgress
-

The milling message host.

+
reportException Action<Exception>
+

Error sink for the runner's background +infrastructure tasks (bulk writer flush, attachment-memory loose runner) +which run outside any single call. Request-scoped progress is passed by +method argument, not held here.

stepStorageWriter Action<IEnumerable<MillingStepLuggage>>

The action to write milling step luggages to storage.

@@ -562,19 +565,24 @@ This is for internal use only.

- + -

- SessionProgress +

+ ShellThreadStepIndex

-

Gets or sets the milling message host.

+

The motion-step index currently managed on the shell session main thread — the index the +next ClStripPos will receive, read straight from +StripPosesCount (the strip is the single source of truth). Decoupled +from the parallel-physics StepTaskBundle.StepIndex, which tracks a different +(emit-thread) progress and may diverge. Use this to anchor a StepDiagnostic +to its motion step.

-
public SessionProgress SessionProgress { get; set; }
+
public int ShellThreadStepIndex { get; }
@@ -583,7 +591,7 @@ This is for internal use only.

Property Value

-
SessionProgress
+
int
@@ -750,8 +758,8 @@ This property is provided as a member value getter and should not be modified. -

- ExpandToActMcStep(IAct) +

+ ExpandToActMcStep(IAct, StepDiagnosticProgress)

@@ -760,13 +768,16 @@ This property is provided as a member value getter and should not be modified.
-
public IEnumerable<IAct> ExpandToActMcStep(IAct act)
+
public IEnumerable<IAct> ExpandToActMcStep(IAct act, StepDiagnosticProgress stepDiagnosticProgress)

Parameters

act IAct

The act to expand.

+
+
stepDiagnosticProgress StepDiagnosticProgress
+

Progress sink for cutter-location strip / per-step updates.

@@ -822,8 +833,8 @@ This property is provided as a member value getter and should not be modified. -

- ProcAct(IAct, MachiningSession, IMachiningService, IGetSentence, CancellationToken) +

+ ProcAct(IAct, MachiningSession, IMachiningService, ISentenceCarrier, CancellationToken, StepDiagnosticProgress)

@@ -832,7 +843,7 @@ This property is provided as a member value getter and should not be modified.
-
public IEnumerable<object> ProcAct(IAct act, MachiningSession machiningSession, IMachiningService host, IGetSentence sourceCommand, CancellationToken cancellationToken)
+
public IEnumerable<object> ProcAct(IAct act, MachiningSession machiningSession, IMachiningService host, ISentenceCarrier sourceCommand, CancellationToken cancellationToken, StepDiagnosticProgress stepDiagnosticProgress)

Parameters

@@ -846,11 +857,14 @@ This property is provided as a member value getter and should not be modified.host IMachiningService

The milling step host.

-
sourceCommand IGetSentence
+
sourceCommand ISentenceCarrier

The source command.

cancellationToken CancellationToken

The cancellation token.

+
+
stepDiagnosticProgress StepDiagnosticProgress
+

Progress sink for cutter-location strip / per-step updates.

@@ -873,8 +887,8 @@ This property is provided as a member value getter and should not be modified. -

- ResetMillingStepLuggageDb() +

+ ResetMillingStepLuggageDb(StepDiagnosticProgress, IProgress<IMessage>)

@@ -883,9 +897,18 @@ This property is provided as a member value getter and should not be modified.
-
public void ResetMillingStepLuggageDb()
+
public void ResetMillingStepLuggageDb(StepDiagnosticProgress stepDiagnosticProgress, IProgress<IMessage> messageHost)
+

Parameters

+
+
stepDiagnosticProgress StepDiagnosticProgress
+

The step-aligned IMessage-channel sink.

+
+
messageHost IProgress<IMessage>
+

Sink-agnostic IMessage host; injected by the caller, may be null outside a session.

+
+
@@ -900,8 +923,8 @@ This property is provided as a member value getter and should not be modified. -

- ResetStateAndClStrip() +

+ ResetStateAndClStrip(StepDiagnosticProgress, IProgress<IMessage>)

@@ -910,9 +933,18 @@ This property is provided as a member value getter and should not be modified.
-
public void ResetStateAndClStrip()
+
public void ResetStateAndClStrip(StepDiagnosticProgress stepDiagnosticProgress, IProgress<IMessage> messageHost)
+

Parameters

+
+
stepDiagnosticProgress StepDiagnosticProgress
+

The step-aligned IMessage-channel sink.

+
+
messageHost IProgress<IMessage>
+

Sink-agnostic IMessage host; injected by the caller, may be null outside a session.

+
+
@@ -1008,10 +1040,108 @@ Internal Use Only.

+ + +

+ WarnIfCurrentToolCutterGeometryUnreasonable(MachiningSession, StepDiagnosticProgress, int?) + +

+ +

Emit one-shot session ConfigurationErrors naming the root cause when the +currently equipped tool's MillingCutter has an unreasonable +upper-beam / shank geometry (see +GetUpperBeamGeometryIssues()) — e.g. an +ExtendedCylinder beam whose FullLength sits below the flute height. +Before this check, such a setting surfaced only as a per-step +NullReferenceException cascade inside the thermal physics, with nothing +naming the beam. Additionally emits a Cutter-Shank–ThermalModelUnavailable +ConfigurationWarning when the shank thermal model cannot be built for a +reason no geometry issue names (e.g. no beam configured at all) — this is the +once-per-tool announcement of the silent per-step fallback in +MillingTemperatureUtil.GetStepTemperature, which is deliberately quiet at +the fallback site to avoid per-step message flooding. Gated by +EnablePhysics; deduped per tool reference +via WarnedCutterGeometryTools, mirroring +WarnIfCurrentToolFluteMaterialMissing(MachiningSession, StepDiagnosticProgress, int?) (same two emission points: +each IActTooling and BeginSession).

+
+
+ +
+
public void WarnIfCurrentToolCutterGeometryUnreasonable(MachiningSession machiningSession, StepDiagnosticProgress stepDiagnosticProgress, int? toolId = null)
+
+ +

Parameters

+
+
machiningSession MachiningSession
+
+
stepDiagnosticProgress StepDiagnosticProgress
+
+
toolId int?
+
+
+ + + + + + + + + + + + + + +

+ WarnIfCurrentToolFluteCountZero(MachiningSession, StepDiagnosticProgress, int?) + +

+ +

Emit a one-shot session warning if the currently equipped +Hi.MachiningProcs.MachiningActRunner.MachiningEquipment.MachiningTool is a MillingCutter +whose flute count resolves to zero (a null or empty +Fluting). A zero flute count silently +poisons the physics chain with nothing naming the tool: feed-per-tooth +divides by zero, the force side fills Vec3d.NaN for every rotation +division and the thermal side returns null. Gated by +EnablePhysics; deduped per tool reference via +WarnedFluteCountZeroTools, mirroring +WarnIfCurrentToolFluteMaterialMissing(MachiningSession, StepDiagnosticProgress, int?) (same two emission points: +each IActTooling and BeginSession).

+
+
+ +
+
public void WarnIfCurrentToolFluteCountZero(MachiningSession machiningSession, StepDiagnosticProgress stepDiagnosticProgress, int? toolId = null)
+
+ +

Parameters

+
+
machiningSession MachiningSession
+
+
stepDiagnosticProgress StepDiagnosticProgress
+
+
toolId int?
+
+
+ + + + + + + + + + + + -

- WarnIfCurrentToolFluteMaterialMissing(MachiningSession, int?) +

+ WarnIfCurrentToolFluteMaterialMissing(MachiningSession, StepDiagnosticProgress, int?)

@@ -1030,13 +1160,15 @@ and reference equality is the right unit of dedup anyway.

-
public void WarnIfCurrentToolFluteMaterialMissing(MachiningSession machiningSession, int? toolId = null)
+
public void WarnIfCurrentToolFluteMaterialMissing(MachiningSession machiningSession, StepDiagnosticProgress stepDiagnosticProgress, int? toolId = null)

Parameters

machiningSession MachiningSession
+
stepDiagnosticProgress StepDiagnosticProgress
+
toolId int?
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MachiningActRunnerConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MachiningActRunnerConfig.html index 081841b2..119190a2 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MachiningActRunnerConfig.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MachiningActRunnerConfig.html @@ -214,8 +214,8 @@ Provides settings for physics simulation, evaluation, and temperature control. -

- MachiningActRunnerConfig(XElement, string, IProgress<object>) +

+ MachiningActRunnerConfig(XElement, string, IProgress<IMessage>)

@@ -224,7 +224,7 @@ Provides settings for physics simulation, evaluation, and temperature control.
-
public MachiningActRunnerConfig(XElement src, string baseDirectory, IProgress<object> progress)
+
public MachiningActRunnerConfig(XElement src, string baseDirectory, IProgress<IMessage> progress)

Parameters

@@ -235,7 +235,7 @@ Provides settings for physics simulation, evaluation, and temperature control.baseDirectory string

The base directory for resolving relative paths.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

@@ -320,6 +320,48 @@ Note: This feature is pending testing.

+ + +

+ EnableNativeMillingPhysics + +

+ +

Gets or sets whether the per-step physics runs on the native (core.dll) +kernels. Default is true, and in shipping builds the native kernel is +the only physics implementation: setting this to false requires the +managed reference implementation (the non-shipping HiMech.PhysicsRef +assembly, registered at startup by dev/test hosts) and throws without +it. Both implementations produce the same results. Runtime-only (not +persisted to project XML), in the EnableSoftNcRunner +progressive-switch convention. Delegates to the kernel-level switch on +EnableNativeMillingPhysics, +which is process-global like +RotationDivisionNum.

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

Property Value

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

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MachiningProject.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MachiningProject.html index ec1ab289..f1fe88f0 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MachiningProject.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MachiningProject.html @@ -221,8 +221,8 @@ Class MachiningProject -

- MachiningProject(XElement, string, IProgress<object>) +

+ MachiningProject(XElement, string, IProgress<IMessage>)

@@ -231,7 +231,7 @@ Class MachiningProject
-
public MachiningProject(XElement src, string baseDirectory, IProgress<object> progress)
+
public MachiningProject(XElement src, string baseDirectory, IProgress<IMessage> progress)

Parameters

@@ -242,7 +242,7 @@ Class MachiningProject
baseDirectory string

Base directory for resolving relative paths

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for XML deserialization.

@@ -326,6 +326,77 @@ Class MachiningProject + + +

+ ClsfRunnerSuit + +

+ +

A third runner suit dedicated to the NX-CL (CLSF) pipeline +(NxClRunner), held alongside the +NC NcRunnerSuit and the CsvRunnerSuit. +Backs LocalProjectService.ClRunner.

+
+
+ +
+
public NcRunnerSuit ClsfRunnerSuit { get; set; }
+
+ + + + + +

Property Value

+
+
NcRunnerSuit
+
+
+ + + + + + + + + + +

+ CsvRunnerSuit + +

+ +

A second runner suit dedicated to the CSV pipeline (the flagship +GeneralCsvRunner), held alongside the +NC NcRunnerSuit. Backs LocalProjectService.CsvRunner; +the suit owns the CSV column config (replacing the former flat +CsvRunnerConfig project member).

+
+
+ +
+
public NcRunnerSuit CsvRunnerSuit { get; set; }
+
+ + + + + +

Property Value

+
+
NcRunnerSuit
+
+
+ + + + + + + +

@@ -517,6 +588,45 @@ Class MachiningProject + + +

+ NcRunnerSuit + +

+ +

The active runner suit — the per-machine SoftNcRunner +(plus its optional side-file path) bundled with the per-workpiece +PerCaseNcDependencyList its proxies +resolve against. The suit is the proxies' +INcDependencyListHost; swap the whole +suit (e.g. via LocalProjectService.ReadNcRunnerSuit) to switch the +active parser within a session. The project XML serializes the suit's two +members flat for back-compat.

+
+
+ +
+
public NcRunnerSuit NcRunnerSuit { get; set; }
+
+ + + + + +

Property Value

+
+
NcRunnerSuit
+
+
+ + + + + + + +

@@ -549,73 +659,6 @@ Class MachiningProject - - -

- SoftNcRunner - -

- -

Gets or sets the configurable NC runner. When set, replaces the legacy HardNcRunner.

-
-
- -
-
public SoftNcRunner SoftNcRunner { get; set; }
-
- - - - - -

Property Value

-
-
SoftNcRunner
-
-
- - - - - - - - - - -

- SoftNcRunnerFile - -

- -

Gets or sets the project-relative file path of the SoftNcRunner -XML. When non-null, MakeXmlSource(string, string, bool) writes the runner to this -side file and embeds a file reference in the project XML; when null the -runner is inlined. Mirrors MachiningChainFile.

-
-
- -
-
public string SoftNcRunnerFile { get; set; }
-
- - - - - -

Property Value

-
-
string
-
-
- - - - - - - -

@@ -742,6 +785,37 @@ runner is inlined. Mirrors + +

+ GetMachiningEquipment() + +

+ +
+
+ +
+
public MachiningEquipment GetMachiningEquipment()
+
+ + +

Returns

+
+
MachiningEquipment
+
+
+ + + + + + + + + + +

@@ -782,18 +856,22 @@ runner is inlined. Mirrors

+

Source-compatible delegate for callers written against the pre-rename +name.

+
-
public MachiningEquipment GetMillingEquipment()
+
[Obsolete("Renamed to GetMachiningEquipment.")]
+public MachiningEquipment GetMillingEquipment()

Returns

MachiningEquipment
-
+

The project's equipment.

+
@@ -808,8 +886,8 @@ runner is inlined. Mirrors -

- LoadFile(string, IProgress<object>) +

+ LoadFile(string, IProgress<IMessage>)

@@ -818,7 +896,7 @@ runner is inlined. Mirrors
-
public static MachiningProject LoadFile(string projectFilePath, IProgress<object> progress)
+
public static MachiningProject LoadFile(string projectFilePath, IProgress<IMessage> progress)

Parameters

@@ -826,7 +904,7 @@ runner is inlined. Mirrors
string

Path to the project file to load

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for XML deserialization.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MachiningSession.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MachiningSession.html index 4e04a693..d4d533fc 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MachiningSession.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MachiningSession.html @@ -183,6 +183,42 @@ and managing session state. Implements Constructors + + + + + +

+ MachiningSession(IMachiningService) + +

+ +

Creates a machining session bound to its hosting IMachiningService.

+
+
+ +
+
public MachiningSession(IMachiningService host)
+
+ +

Parameters

+
+
host IMachiningService
+
+
+ + + + + + + + + + + +

Properties

@@ -226,7 +262,7 @@ and managing session state. Implements

File index counter, auto-incremented per RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) +

File index counter, auto-incremented per RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) call within this session.

Legacy use only. Read and incremented by @@ -264,6 +300,40 @@ legacy runners retire. + + +

+ Host + +

+ +

The project-level service hosting this session — injected so the session +can reach project-level resources (act runner, NC runners, player, +sinks, base directory, …) it needs to run NC program lines.

+
+
+ +
+
public IMachiningService Host { get; }
+
+ + + + + +

Property Value

+
+
IMachiningService
+
+
+ + + + + + + +

@@ -296,6 +366,114 @@ legacy runners retire. + + +

+ IsRunningNcLines + +

+ +

True while an NC program file is actively being played through the runner (the +paced PlayNcFile(string, string, NcKind) loop). A runner-suit +switch must not run +while this is true: the runner's RunNcLines iterator is +mid-enumeration and holds this session's SyntaxPieceLayers, so +resetting NcRunnerSessionState underneath it would corrupt the +in-flight walk. The switch entry point checks this and refuses otherwise.

+
+
+ +
+
public bool IsRunningNcLines { get; }
+
+ + + + + +

Property Value

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

+ IsSteppingSentence + +

+ +

True while the player is stepping sentence-by-sentence (pauses at each +source-command boundary). Session-run state.

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

Property Value

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

+ NcConversions + +

+ +

Writeback conversions retained from the latest +ConvertClToNcFiles(string, string, IProgress<IMessage>) run (one per written NC file, in +written order): the destination SyntaxPiece streams +plus the src↔dst Hi.NcParsers.NcWriteback.NcPieceMaps. This is the hook point +for GUI cross-navigation (click a source line ↔ jump to its +converted lines). Cleared at the start of each conversion run.

+
+
+ +
+
public List<NcConversion> NcConversions { get; }
+
+ + + + + +

Property Value

+
+
List<NcConversion>
+
+
+ + + + + + + +

@@ -328,6 +506,44 @@ legacy runners retire. + + +

+ NcOptimizations + +

+ +

Writeback conversions retained from the latest +OptimizeNcFiles(string, string, ICuttingPara, IProgress<IMessage>, CancellationToken, Func<int, MillingStepLuggage>, Action) run (one per written optimized NC file, +in written order): the destination SyntaxPiece streams +plus the src↔dst Hi.NcParsers.NcWriteback.NcPieceMaps, for GUI cross-navigation. +Deliberately separate from NcConversions so a conversion +run and an optimization run do not clear each other's results. +Cleared at the start of each optimization run.

+
+
+ +
+
public List<NcConversion> NcOptimizations { get; }
+
+ + + + + +

Property Value

+
+
List<NcConversion>
+
+
+ + + + + + + +

@@ -335,7 +551,7 @@ legacy runners retire.

-

Per-session NC pipeline state shared across RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) +

Per-session NC pipeline state shared across RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) calls. Holds lazy-initialized NcDiagnosticProgress and the per-layer LazyLinkedList<T> chain used for cross-file modal continuity.

@@ -497,6 +713,40 @@ Key: relative output file path. Disposed automatically when the session ends.

+ +

+ ShellProgress + +

+ +

Session-level routine / lifecycle message sink on the IMessage +channel (cache reset, file progress, session start/done). Owned here so it is +truly session-scoped — created with the session, released at EndSession.

+
+
+ +
+
public ShellProgress ShellProgress { get; }
+
+ + + + + +

Property Value

+
+
ShellProgress
+
+
+ + + + + + + +

@@ -563,6 +813,78 @@ Takes effect during internal optimization process.

+ + +

+ WarnedCutterGeometryTools + +

+ +

Tools already surfaced via an unreasonable cutter-geometry +ConfigurationError (see +WarnIfCurrentToolCutterGeometryUnreasonable(MachiningSession, StepDiagnosticProgress, int?)). +Same keying and emission-point rationale as +WarnedFluteMaterialMissingTools.

+
+
+ +
+
public HashSet<IMachiningTool> WarnedCutterGeometryTools { get; }
+
+ + + + + +

Property Value

+
+
HashSet<IMachiningTool>
+
+
+ + + + + + + + + + +

+ WarnedFluteCountZeroTools + +

+ +

Tools already surfaced via a zero-flute-count +ConfigurationWarning (see +WarnIfCurrentToolFluteCountZero(MachiningSession, StepDiagnosticProgress, int?)). +Same keying and emission-point rationale as +WarnedFluteMaterialMissingTools.

+
+
+ +
+
public HashSet<IMachiningTool> WarnedFluteCountZeroTools { get; }
+
+ + + + + +

Property Value

+
+
HashSet<IMachiningTool>
+
+
+ + + + + + + +

@@ -572,7 +894,7 @@ Takes effect during internal optimization process.

Tools already surfaced via “FluteMaterial not set” warning. Keyed by IMachiningTool reference so the dedup is stable -across the two emission points: ProcAct(IAct, MachiningSession, IMachiningService, IGetSentence, CancellationToken) at each +across the two emission points: ProcAct(IAct, MachiningSession, IMachiningService, ISentenceCarrier, CancellationToken, StepDiagnosticProgress) at each IActTooling, and BeginSession for the tool that may already be equipped before the session begins (which has no tool ID to dedup with). Reference equality is more precise than tool ID — the same tool object equipped @@ -632,6 +954,78 @@ twice should warn once, regardless of how it was reached.

+ + +

+ ConvertClToNcFiles(string, string, IProgress<IMessage>) + +

+ +

Converts the CLSF play of this session into Fanuc NC files — +writeback synthesis mode, two stages +(Hi.NcParsers.NcWriteback.NcSynthesisConverter over +Hi.NcParsers.NcWriteback.FanucNcSentenceComposer): +walks the final SyntaxPieceLayers +layer, groups pieces per source file, converts each group into a +destination piece stream with the src↔dst map (stage one; retained in +NcConversions), and serializes the destination stream +to text (stage two, ToLines(IEnumerable<SyntaxPiece>)). The +synthesis re-serializes the brand-neutral sections into Fanuc +vocabulary (MSYS tilt → G68.2, RTCP → G43.4, motions → +G00/G01/G02/G03 with rotary words). Requires a prior play +(e.g. PlayClFile(string, string)) on an XYZABC machine chain — a +pure-CL milling device leaves no machine-solved sections to +serialize.

+

+Conversion diagnostics go to the manipulation home +(NcManipulationDiagnosticProgress, +cleared at run start) — not to the play-time +NcDiagnosticProgress. GUI consumers +observe that home directly (webservice: NC Manipulation message tab); +messageProgress carries only the lifecycle +messages. +

+
+
+ +
+
public IReadOnlyList<string> ConvertClToNcFiles(string baseDirectory, string relNcFileTemplate = "Output/[NcName].nc", IProgress<IMessage> messageProgress = null)
+
+ +

Parameters

+
+
baseDirectory string
+

Project root; null falls back to BaseDirectory.

+
+
relNcFileTemplate string
+

Output path template; [NcName] +is replaced by the source file name, [NcFile] by its +slash-flattened relative path.

+
+
messageProgress IProgress<IMessage>
+

Optional message sink for lifecycle +reporting; session callers inject the shell sink, out-of-session +callers pass their own (or null).

+
+
+ +

Returns

+
+
IReadOnlyList<string>
+

Written NC file paths, relative to baseDirectory.

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

@@ -686,6 +1080,330 @@ twice should warn once, regardless of how it was reached.

+ + +

+ GetToolPhysicsPack(int) + +

+ +

Gets the frozen physics pack for a tool id — building it on first access — or +null when the id is not in the tool house. The para-dependent members are keyed +to the current workpiece cutting para. Safe to call from parallel step tasks: +the pack is immutable and published atomically, and a concurrent rebuild +computes identical content.

+
+
+ +
+
public MillingToolPhysicsPack GetToolPhysicsPack(int toolId)
+
+ +

Parameters

+
+
toolId int
+

The tool-house id of the tool.

+
+
+ +

Returns

+
+
MillingToolPhysicsPack
+

The frozen pack, or null for an unknown tool id.

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

+ InvalidateToolPhysicsPacks() + +

+ +

Drops every cached physics pack so the next access rebuilds from the live +objects. Called by the paths that know the tool/cutter/para state may have +changed: every run-op start (RunNcLines(INcRunner, string, IEnumerable<string>, CancellationToken), so edits made between +plays always take effect) and the tool-change act. An editor that must take +effect in the middle of a running play calls this explicitly — otherwise a +mid-play edit lands on the next play, which is also the only mode with a +deterministic outcome.

+
+
+ +
+
public void InvalidateToolPhysicsPacks()
+
+ + + + + + + + + + + + + + + +

+ OptimizeNcFiles(string, string, ICuttingPara, IProgress<IMessage>, CancellationToken, Func<int, MillingStepLuggage>, Action) + +

+ +

Optimizes the NC program played in this session (SoftNc pipeline) and +writes the optimized NC files: classifies the final +SyntaxPieceLayers layer, solves the +per-step feed adjustments from milling physics, patches the F words +onto the verbatim source text and writes one output file per source NC +file by relNcFileTemplate. Conversions are retained +in NcOptimizations; piece-anchored diagnostics go to the +manipulation home +(NcManipulationDiagnosticProgress, +cleared at run start). +Requires a prior play and a logged-in +OptNcNoLimit license.

+
+
+ +
+
public List<string> OptimizeNcFiles(string baseDirectory, string relNcFileTemplate, ICuttingPara millingPara, IProgress<IMessage> messageProgress, CancellationToken cancellationToken, Func<int, MillingStepLuggage> luggageGetter = null, Action clearLuggageCache = null)
+
+ +

Parameters

+
+
baseDirectory string
+

Project root; null falls back to BaseDirectory.

+
+
relNcFileTemplate string
+

Output path template; [NcName] +is replaced by the source file name, [NcFile] by its +slash-flattened relative path.

+
+
millingPara ICuttingPara
+

The cutting parameters; null disables physics-computable optimization.

+
+
messageProgress IProgress<IMessage>
+

Optional message sink for lifecycle / progress reporting.

+
+
cancellationToken CancellationToken
+

Cancellation token to cancel the operation.

+
+
luggageGetter Func<int, MillingStepLuggage>
+

Optional thread-safe map from step index to +MillingStepLuggage; defaults to +MillingStepLuggageReader.

+
+
clearLuggageCache Action
+

Optional end-of-run cache clear hook; defaults to the luggage reader's +cache clear.

+
+
+ +

Returns

+
+
List<string>
+

Written NC file paths, relative to baseDirectory.

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

+ PlayBrandNcFile(string, string) + +

+ +

Plays a famous-brand NC code file with pace control (no kind +dispatch — always ActiveNcRunner).

+
+
+ +
+
public void PlayBrandNcFile(string baseDirectory, string relFilePath)
+
+ +

Parameters

+
+
baseDirectory string
+
+
relFilePath string
+
+
+ + + + + + + + + + + + + + +

+ PlayClFile(string, string) + +

+ +

Plays an NX-CL (CLSF) file with pace control.

+
+
+ +
+
public void PlayClFile(string baseDirectory, string relFilePath)
+
+ +

Parameters

+
+
baseDirectory string
+
+
relFilePath string
+
+
+ + + + + + + + + + + + + + +

+ PlayCsvFile(string, string) + +

+ +

Plays a CSV file with pace control.

+
+
+ +
+
public void PlayCsvFile(string baseDirectory, string relFilePath)
+
+ +

Parameters

+
+
baseDirectory string
+
+
relFilePath string
+
+
+ + + + + + + + + + + + + + +

+ PlayNc(string, string) + +

+ +

Plays NC text with pace control.

+
+
+ +
+
public void PlayNc(string ncText, string fileNameAlternative = "--")
+
+ +

Parameters

+
+
ncText string
+
+
fileNameAlternative string
+
+
+ + + + + + + + + + + + + + +

+ PlayNcFile(string, string, NcKind) + +

+ +

Plays an NC program file with pace control, the runner picked by +kind (Auto = by file +extension, see DetectByPath(string)).

+
+
+ +
+
public void PlayNcFile(string baseDirectory, string relFilePath, NcKind kind = NcKind.Auto)
+
+ +

Parameters

+
+
baseDirectory string
+
+
relFilePath string
+
+
kind NcKind
+
+
+ + + + + + + + + + + +

@@ -713,6 +1431,125 @@ twice should warn once, regardless of how it was reached.

+ + +

+ RunBrandNcFile(string, string) + +

+ +

Runs a famous-brand NC code file (no pacing, no kind dispatch — +always ActiveNcRunner); returns the +player actions.

+
+
+ +
+
public IEnumerable<Action> RunBrandNcFile(string baseDirectory, string relFilePath)
+
+ +

Parameters

+
+
baseDirectory string
+
+
relFilePath string
+
+
+ +

Returns

+
+
IEnumerable<Action>
+
+
+ + + + + + + + + + + + + +

+ RunClFile(string, string) + +

+ +

Runs an NX-CL (CLSF) file (no pacing); returns the player actions.

+
+
+ +
+
public IEnumerable<Action> RunClFile(string baseDirectory, string relFilePath)
+
+ +

Parameters

+
+
baseDirectory string
+
+
relFilePath string
+
+
+ +

Returns

+
+
IEnumerable<Action>
+
+
+ + + + + + + + + + + + + +

+ RunCsvFile(string, string) + +

+ +

Runs a CSV file (no pacing); returns the player actions.

+
+
+ +
+
public IEnumerable<Action> RunCsvFile(string baseDirectory, string relFilePath)
+
+ +

Parameters

+
+
baseDirectory string
+
+
relFilePath string
+
+
+ +

Returns

+
+
IEnumerable<Action>
+
+
+ + + + + + + + + + +

@@ -779,6 +1616,166 @@ twice should warn once, regardless of how it was reached.

+ + +

+ RunNc(string, string) + +

+ +

Runs NC text (no pacing); returns the player actions.

+
+
+ +
+
public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative = "--")
+
+ +

Parameters

+
+
ncText string
+
+
fileNameAlternative string
+
+
+ +

Returns

+
+
IEnumerable<Action>
+
+
+ + + + + + + + + + + + + +

+ RunNcFile(string, string, NcKind) + +

+ +

Runs an NC program file (no pacing), the runner picked by +kind (Auto = by file +extension, see DetectByPath(string)); returns the +player actions.

+
+
+ +
+
public IEnumerable<Action> RunNcFile(string baseDirectory, string relFilePath, NcKind kind = NcKind.Auto)
+
+ +

Parameters

+
+
baseDirectory string
+
+
relFilePath string
+
+
kind NcKind
+
+
+ +

Returns

+
+
IEnumerable<Action>
+
+
+ + + + + + + + + + + + + +

+ RunNcFileRan() + +

+ +

Internal use only. Invokes NcFileRan.

+
+
+ +
+
public void RunNcFileRan()
+
+ + + + + + + + + + + + + + + +

+ RunNcLines(INcRunner, string, IEnumerable<string>, CancellationToken) + +

+ +

Runs the NC program lines through ncRunner, producing +the player actions. Session-scoped run loop; reaches project-level resources +via Host.

+
+
+ +
+
public IEnumerable<Action> RunNcLines(INcRunner ncRunner, string relNcFilePath, IEnumerable<string> lines, CancellationToken cancellationToken)
+
+ +

Parameters

+
+
ncRunner INcRunner
+

The NC runner that parses and runs the lines.

+
+
relNcFilePath string
+

Name/path associated with the program.

+
+
lines IEnumerable<string>
+

The NC/CSV lines to run.

+
+
cancellationToken CancellationToken
+

Cancellation token.

+
+
+ +

Returns

+
+
IEnumerable<Action>
+

The sequence of player actions.

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

@@ -850,7 +1847,12 @@ twice should warn once, regardless of how it was reached.

-

Updates the NC optimization option map if needed. +

Records the current NcOptOption at stepIndex +when it differs from the most recently recorded one, so the map stays a +sparse list of change points — which is what its readers expect: they +resolve a step's option by GetFloor (see +UpdateNcOptOption(Action<NcOptOption>) and the +optimization procs), so an unchanged stretch needs no entries at all. Internal use only.

@@ -950,6 +1952,38 @@ Internal use only.

+

+ NcFileRan + +

+ +

Event triggered after an NC/CSV file finishes running (session-scoped). +Bridged to the app-lifetime LocalProjectService.OnNcFileRan in BeginSession.

+
+
+ +
+
public event Action NcFileRan
+
+ + + + + + +

Event Type

+
+
Action
+
+
+ + + + + + + +

OnCurrentLineEnd diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionMessagePack.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MessageDto.html similarity index 63% rename from App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionMessagePack.html rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MessageDto.html index 2e7c9c52..f4c559e8 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionMessagePack.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.MessageDto.html @@ -2,11 +2,11 @@ - Class SessionMessagePack | HiAPI-C# 2025 + Class MessageDto | HiAPI-C# 2025 - + - + @@ -84,25 +84,25 @@

-
+
-

-Class SessionMessagePack +

+Class MessageDto

Namespace
Hi.MachiningProcs
-
Assembly
HiMech.dll
+
Assembly
HiNc.dll
-

Represents a package containing a machining message and its associated context.

+

One reported IMessage, flattened for JSON transport.

-
public class SessionMessagePack
+
public record MessageDto : IEquatable<MessageDto>
@@ -112,10 +112,16 @@ Class SessionMessagePack
Inheritance
-
SessionMessagePack
+
MessageDto
+
+
Implements
+
+ +
+
@@ -178,28 +184,34 @@ Class SessionMessagePack

- + -

- SessionMessagePack(SessionProgress, SessionMessage) +

+ MessageDto(string, string, string, string)

-

Initializes a new instance of the SessionMessagePack class.

+

One reported IMessage, flattened for JSON transport.

-
public SessionMessagePack(SessionProgress host, SessionMessage msg)
+
public MessageDto(string Severity, string Category, string Id, string Notification)

Parameters

-
host SessionProgress
-

The session message host.

+
Severity string
+

The importance level (Message / Success / Progress / Warning / Error).

-
msg SessionMessage
-

The machining message.

+
Category string
+

The classification (System / Unsupported / Validation / Configuration).

+
+
Id string
+

The structured id used for filtering / suppression; may be null.

+
+
Notification string
+

The end-user friendly text.

@@ -218,83 +230,19 @@ Class SessionMessagePack - + -

- Host +

+ Category

-

Gets the host that contains this message pack.

+

The classification (System / Unsupported / Validation / Configuration).

-
public SessionProgress Host { get; }
-
- - - - - -

Property Value

-
-
SessionProgress
-
-
- - - - - - - - - - -

- Index - -

- -

Gets the index of the message in the collection.

-
-
- -
-
public int Index { get; }
-
- - - - - -

Property Value

-
-
int
-
-
- - - - - - - - - - -

- Message - -

- -

Gets the message text.

-
-
- -
-
public string Message { get; }
+
public string Category { get; init; }
@@ -314,19 +262,19 @@ Class SessionMessagePack - + -

- SessionMessage +

+ Id

-

Gets the machining message contained in this pack.

+

The structured id used for filtering / suppression; may be null.

-
public SessionMessage SessionMessage { get; }
+
public string Id { get; init; }
@@ -335,7 +283,7 @@ Class SessionMessagePack

Property Value

-
SessionMessage
+
string
@@ -346,19 +294,19 @@ Class SessionMessagePack - + -

- SourceCommand +

+ Notification

-

Gets the source command that generated this message.

+

The end-user friendly text.

-
public IIndexedFileLine SourceCommand { get; }
+
public string Notification { get; init; }
@@ -367,7 +315,7 @@ Class SessionMessagePack

Property Value

-
IIndexedFileLine
+
string
@@ -378,19 +326,19 @@ Class SessionMessagePack - + -

- Tags +

+ Severity

-

Gets the tags associated with the message.

+

The importance level (Message / Success / Progress / Warning / Error).

-
public HashSet<string> Tags { get; }
+
public string Severity { get; init; }
@@ -399,7 +347,7 @@ Class SessionMessagePack

Property Value

-
HashSet<string>
+
string
@@ -410,6 +358,49 @@ Class SessionMessagePack +

Methods +

+ + + + +

+ From(IMessage) + +

+ +

Flattens one IMessage into a transport DTO.

+
+
+ +
+
public static MessageDto From(IMessage message)
+
+ +

Parameters

+
+
message IMessage
+

The message to flatten.

+
+
+ +

Returns

+
+
MessageDto
+

The flattened DTO.

+
+
+ + + + + + + + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.NcKind.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.NcKind.html new file mode 100644 index 00000000..bbaf2f40 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.NcKind.html @@ -0,0 +1,202 @@ + + + + + Enum NcKind | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + + +

+Enum NcKind +

+ +
+
Namespace
Hi.MachiningProcs
+
Assembly
HiMech.dll
+
+ +

Kind of an NC program file — selects which of the session's runners plays +it (ActiveNcRunner / +ClRunner / +CsvRunner).

+
+
+ +
+
public enum NcKind
+
+ + + + + + + + +
+
Extension Methods
+
+ + + + + + + + +
+ +

Fields +

+
+
Auto = 0
+ +

Detect from the file extension — see +DetectByPath(string).

+
+
BrandNc = 1
+ +

Famous-brand controller code (G-code dialects) — the catch-all default.

+
+
Cl = 2
+ +

NX-CL (CLSF) cutter-location file.

+
+
Csv = 3
+ +

CSV control table.

+
+
+ + +

Remarks

+

Vocabulary note: Nc is the umbrella term for any machine-readable +program the session can play (brand controller code, CL, CSV — matching +INcRunner / RunNcFile); +BrandNc is the narrow term for the famous-brand controller +dialects (Fanuc / Siemens / Heidenhain G-code families).

+
+ +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.NcKindUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.NcKindUtil.html new file mode 100644 index 00000000..1ca620d0 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.NcKindUtil.html @@ -0,0 +1,222 @@ + + + + + Class NcKindUtil | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class NcKindUtil +

+ +
+
Namespace
Hi.MachiningProcs
+
Assembly
HiMech.dll
+
+ +

NcKind helpers.

+
+
+ +
+
public static class NcKindUtil
+
+ + + + +
+
Inheritance
+
+ +
NcKindUtil
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ DetectByPath(string) + +

+ +

Detects an NC program file's NcKind from its extension. +CL (.cl / .cls / .clsf) and CSV (.csv) are +closed extension sets; everything else — the open world of brand +controller extensions (.nc, .ptp, .tap, .h, +…) — maps to BrandNc, so an exotic brand extension +can never be misrouted.

+
+
+ +
+
public static NcKind DetectByPath(string filePath)
+
+ +

Parameters

+
+
filePath string
+
+
+ +

Returns

+
+
NcKind
+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.NcRunnerSessionState.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.NcRunnerSessionState.html index aaee3a7a..0cdf8663 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.NcRunnerSessionState.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.NcRunnerSessionState.html @@ -98,7 +98,7 @@ Class NcRunnerSessionState

NC pipeline state held on a MachiningSession and shared across multiple -RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls within that session. The per-layer +RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) calls within that session. The per-layer SyntaxPieceLayers are extended via AppendSource(IEnumerable<T>) for each subsequent file so that Previous/Next connectivity (and thus ModalCarrySyntax deep-clone) crosses file boundaries.

@@ -185,6 +185,258 @@ for each subsequent file so that Previous/Next connect + + +

+ EffectiveNcDependencyList + +

+ +

Proxy-resolved dependency list — output of +GetEffectiveNcDependencyList(), computed once on +the first RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) call and reused for +every file and pipeline stage in the session so each +INcDependencyProxy resolves to one stable instance. +Set only by RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) (and cleared by +Reset()); readable for inspection.

+
+
+ +
+
public List<INcDependency> EffectiveNcDependencyList { get; }
+
+ + + + + +

Property Value

+
+
List<INcDependency>
+
+
+ + + + + + + + + + +

+ EffectiveNcInitializationList + +

+ +

Session-scoped initializer list used to seed the init +SyntaxPiece — gated like +EffectiveNcSyntaxList.

+
+
+ +
+
public List<INcInitializer> EffectiveNcInitializationList { get; }
+
+ + + + + +

Property Value

+
+
List<INcInitializer>
+
+
+ + + + + + + + + + +

+ EffectiveNcSemanticList + +

+ +

Session-scoped semantic list actually driven over the final syntax +layer — gated like EffectiveNcSyntaxList.

+
+
+ +
+
public List<INcSemantic> EffectiveNcSemanticList { get; }
+
+ + + + + +

Property Value

+
+
List<INcSemantic>
+
+
+ + + + + + + + + + +

+ EffectiveNcSyntaxList + +

+ +

Session-scoped syntax list actually driven by the layer pipeline — +stamped at session initialization by +ResolveEffectivePipeline(SoftNcRunner, NcRunnerSessionState, NcDiagnosticProgress). Same +reference as NcSyntaxList unless the +composition gate skipped external units for this session; the +runner's persisted list is never mutated.

+
+
+ +
+
public List<INcSyntax> EffectiveNcSyntaxList { get; }
+
+ + + + + +

Property Value

+
+
List<INcSyntax>
+
+
+ + + + + + + + + + +

+ EffectiveSegmenter + +

+ +

Session-scoped segmenter actually used to split NC text — the +runner's own Segmenter, or the built-in +fallback when the composition gate rejected an external one.

+
+
+ +
+
public ISegmenter EffectiveSegmenter { get; }
+
+ + + + + +

Property Value

+
+
ISegmenter
+
+
+ + + + + + + + + + +

+ FreezeExecutedPieces + +

+ +

Whether executed SyntaxPieces are frozen to their compact +UTF-8 form (Freeze()) once they leave the +executing window. Default true — a session retains every executed piece +for its whole lifetime, and the live JsonObject graph costs +~13× the frozen bytes (multi-million-line programs OOM a client +machine without this). Set false only for A/B measurement or when a +custom post-play consumer must mutate executed pieces in place.

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

Property Value

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

+ InitializedByNcRunner + +

+ +

The runner whose first RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) call built +the pipeline. The layer count and the cached +EffectiveNcDependencyList are sized/bound to THIS runner, +so a subsequent call from a DIFFERENT runner (e.g. a CSV play after a +brand-NC play in the same session) must be refused — it would index +past the layer list or silently run with the wrong dependency list. +Cleared by Reset().

+
+
+ +
+
public INcRunner InitializedByNcRunner { get; }
+
+ + + + + +

Property Value

+
+
INcRunner
+
+
+ + + + + + + +

@@ -217,39 +469,6 @@ for each subsequent file so that Previous/Next connect - - -

- NcDiagnosticProgress - -

- -

Session-shared diagnostic sink. Built lazily on the first -RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) call.

-
-
- -
-
public NcDiagnosticProgress NcDiagnosticProgress { get; set; }
-
- - - - - -

Property Value

-
-
NcDiagnosticProgress
-
-
- - - - - - - -

@@ -260,7 +479,7 @@ for each subsequent file so that Previous/Next connect

One LazyLinkedList<T> per pipeline layer. Index 0 is the source layer (init seed + sentence-derived pieces); indices 1..NcSyntaxList.Count are the post-NcSyntax layers. -Subsequent RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls extend each layer +Subsequent RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) calls extend each layer in place via AppendSource(IEnumerable<T>).

@@ -290,6 +509,44 @@ in place via + +

+ DeferFreeze(SyntaxPiece) + +

+ +

Hands an executed piece to the deferred-freeze window: it stays live +for the next Hi.MachiningProcs.NcRunnerSessionState.FreezeLagPieceCount piece boundaries, then +freezes. No-op when FreezeExecutedPieces is false or +piece is null. Called by +RunNcLines(INcRunner, string, IEnumerable<string>, CancellationToken) at each source-command +boundary — the point where the previous piece's syntax builds and +semantics have all completed.

+
+
+ +
+
public void DeferFreeze(SyntaxPiece piece)
+
+ +

Parameters

+
+
piece SyntaxPiece
+
+
+ + + + + + + + + + + +

@@ -317,6 +574,37 @@ in place via + +

+ FlushDeferredFreezes() + +

+ +

Freezes everything still in the deferred-freeze window. Called at the +end-of-play action (after the act runner's WaitAll) so a +finished play retains only frozen pieces; when +FreezeExecutedPieces is false the window is just +dropped.

+
+
+ +
+
public void FlushDeferredFreezes()
+
+ + + + + + + + + + + + +

@@ -324,8 +612,8 @@ in place via

Drops the per-layer pipeline state and the cached diagnostic sink so -the next RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) call re-builds +

Drops the per-layer pipeline state so +the next RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) call re-builds from scratch. Use this for a controller power reset (where in-flight SyntaxPiece JSON dataflow — including Vars.Volatile, modal carries, and the init seed — must vanish) without disposing the @@ -333,7 +621,7 @@ owning MachiningS

Idempotent and reusable: after Reset() the object is in the same lazy-uninitialised state as a freshly constructed instance, -so the first subsequent RunControlLines hits the +so the first subsequent RunNcLines hits the !IsInitialized branch and re-creates everything.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.ProjectFileBusyException.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.ProjectFileBusyException.html new file mode 100644 index 00000000..54034ae0 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.ProjectFileBusyException.html @@ -0,0 +1,265 @@ + + + + + Class ProjectFileBusyException | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class ProjectFileBusyException +

+ +
+
Namespace
Hi.MachiningProcs
+
Assembly
HiNc.dll
+
+ +

Thrown when a project-file operation (New / Load / Save / SaveAs / Reload) is +requested while another one is already in progress. The newcomer is cancelled +rather than queued; controllers surface this as HTTP 409 Conflict.

+
+
+ +
+
public sealed class ProjectFileBusyException : Exception, ISerializable
+
+ + + + +
+
Inheritance
+
+ + +
ProjectFileBusyException
+
+
+ +
+
Implements
+
+ +
+
+ + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ ProjectFileBusyException() + +

+ +

Initializes a new instance with the default busy message.

+
+
+ +
+
public ProjectFileBusyException()
+
+ + + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RequireActiveSessionAttribute.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RequireActiveSessionAttribute.html new file mode 100644 index 00000000..883f5e43 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RequireActiveSessionAttribute.html @@ -0,0 +1,388 @@ + + + + + Class RequireActiveSessionAttribute | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class RequireActiveSessionAttribute +

+ +
+
Namespace
Hi.MachiningProcs
+
Assembly
HiNc.dll
+
+ +

Action filter for the session-scoped web-API surface: before a guarded action runs, +verifies a machining session is active (SessionShell is +non-null). When none is active it short-circuits with HTTP 409 and an +NoActiveSession() envelope, so a REST / AI caller gets a helpful +“call BeginSession() first” notice instead of a null-reference 500. Apply at the controller +level; exempt the session lifecycle entry points (BeginSession / EndSession) with +AllowNoActiveSessionAttribute.

+
+
+ +
+
[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = false)]
+public sealed class RequireActiveSessionAttribute : Attribute, IActionFilter, IFilterMetadata
+
+ + + + +
+
Inheritance
+
+ + +
RequireActiveSessionAttribute
+
+
+ +
+
Implements
+
+ + +
+
+ + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Methods +

+ + + + +

+ OnActionExecuted(ActionExecutedContext) + +

+ +

Called after the action executes, before the action result.

+
+
+ +
+
public void OnActionExecuted(ActionExecutedContext context)
+
+ +

Parameters

+
+
context ActionExecutedContext
+

The ActionExecutedContext.

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

+ OnActionExecuting(ActionExecutingContext) + +

+ +

Called before the action executes, after model binding is complete.

+
+
+ +
+
public void OnActionExecuting(ActionExecutingContext context)
+
+ +

Parameters

+
+
context ActionExecutingContext
+

The ActionExecutingContext.

+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RequireLoadedProjectAttribute.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RequireLoadedProjectAttribute.html new file mode 100644 index 00000000..5914cd9e --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.RequireLoadedProjectAttribute.html @@ -0,0 +1,389 @@ + + + + + Class RequireLoadedProjectAttribute | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class RequireLoadedProjectAttribute +

+ +
+
Namespace
Hi.MachiningProcs
+
Assembly
HiNc.dll
+
+ +

Action filter for the project-level web-API surface: before a guarded action runs, +verifies a project is loaded (MachiningProject is +non-null). When none is loaded it short-circuits with HTTP 409 and an +NoProjectLoaded() envelope, so a REST / AI caller gets a helpful +“create or load a project first” notice instead of a null-reference 500 (the project-level +members — MachiningActRunner.Config, workpiece, runners — are null until a project is +open). Apply at the controller level; exempt the endpoints that create or load a project +with AllowNoLoadedProjectAttribute.

+
+
+ +
+
[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = false)]
+public sealed class RequireLoadedProjectAttribute : Attribute, IActionFilter, IFilterMetadata
+
+ + + + +
+
Inheritance
+
+ + +
RequireLoadedProjectAttribute
+
+
+ +
+
Implements
+
+ + +
+
+ + +
+
Inherited Members
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Methods +

+ + + + +

+ OnActionExecuted(ActionExecutedContext) + +

+ +

Called after the action executes, before the action result.

+
+
+ +
+
public void OnActionExecuted(ActionExecutedContext context)
+
+ +

Parameters

+
+
context ActionExecutedContext
+

The ActionExecutedContext.

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

+ OnActionExecuting(ActionExecutingContext) + +

+ +

Called before the action executes, after model binding is complete.

+
+
+ +
+
public void OnActionExecuting(ActionExecutingContext context)
+
+ +

Parameters

+
+
context ActionExecutingContext
+

The ActionExecutingContext.

+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionMessage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionMessage.html deleted file mode 100644 index 056d5819..00000000 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionMessage.html +++ /dev/null @@ -1,684 +0,0 @@ - - - - - Class SessionMessage | HiAPI-C# 2025 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
-
-
Table of Contents
- -
-
- -
-
-
- -
-
- - - -
- -
- - - -

-Class SessionMessage -

- -
-
Namespace
Hi.MachiningProcs
-
Assembly
HiMech.dll
-
- -

Represents a message in the machining process that can contain various types of data -such as source commands, machining steps, exceptions, and tagged messages.

-
-
- -
-
public class SessionMessage
-
- - - - -
-
Inheritance
-
- -
SessionMessage
-
-
- - - -
-
Inherited Members
-
- - - - - - -
- -
-
Extension Methods
-
- - - - - - - -
- - - - - -

Constructors -

- - - - -

- SessionMessage(int, object) - -

- -

Initializes a new instance of the SessionMessage class.

-
-
- -
-
public SessionMessage(int index, object src)
-
- -

Parameters

-
-
index int
-

The index of the message.

-
-
src object
-

The source data.

-
-
- - - - - - - - - - - - -

Properties -

- - - - -

- ClStripPos - -

- -

Gets or sets the cutter location strip position. -gets null if the Data is not ClStripPos.

-
-
- -
-
public ClStripPos ClStripPos { get; set; }
-
- - - - - -

Property Value

-
-
ClStripPos
-
-
- - - - - - - - - - -

- Data - -

- -

Gets or sets the data contained in the message.

-
-
- -
-
public object Data { get; set; }
-
- - - - - -

Property Value

-
-
object
-
-
- - - - - - - - - - -

- DirectInstantSourceCommand - -

- -

Gets or sets the direct source command from the data. -gets null if the Data is not IIndexedFileLine.

-
-
- -
-
public IIndexedFileLine DirectInstantSourceCommand { get; set; }
-
- - - - - -

Property Value

-
-
IIndexedFileLine
-
-
- - - - - - - - - - -

- Exception - -

- -

Gets or sets the exception. -gets null if the Data is not Exception.

-
-
- -
-
public Exception Exception { get; set; }
-
- - - - - -

Property Value

-
-
Exception
-
-
- - - - - - - - - - -

- Index - -

- -

Gets or sets the index of the message. -The UI name is 'Serial.'.

-
-
- -
-
[Present("Message Index", "M.I.", PhysicsUnit.None, "G")]
-public int Index { get; set; }
-
- - - - - -

Property Value

-
-
int
-
-
- - - - - - - - - - -

- InstantSourceCommand - -

- -

Gets the source command, either directly or from the associated milling step. -gets null if both DirectInstantSourceCommand and the SourceCommand -from ClStripPos's State are null.

-
-
- -
-
public IIndexedFileLine InstantSourceCommand { get; }
-
- - - - - -

Property Value

-
-
IIndexedFileLine
-
-
- - - - - - - - - - -

- MachiningStep - -

- -

Gets the milling step from the cutter location strip position. -gets null if ClStripPos is null or its State is not a MachiningStep.

-
-
- -
-
public MachiningStep MachiningStep { get; }
-
- - - - - -

Property Value

-
-
MachiningStep
-
-
- - - - - - - - - - -

- Message - -

- -

Gets the message text from either the multi-tag message or exception. -gets null if both MultiTagMessage and Exception are null, -or if MultiTagMessage.Message is null.

-
-
- -
-
[Present("Message", "Msg", PhysicsUnit.None, "G")]
-public string Message { get; }
-
- - - - - -

Property Value

-
-
string
-
-
- - - - - - - - - - -

- MessageOrNcText - -

- -

Gets the message text or NC code text. -gets null if all sources (InstantSourceCommand, MultiTagMessage, -Exception, and Data) are null or cannot provide text.

-
-
- -
-
[Present("Message/NC", "Msg/NC", PhysicsUnit.None, "G")]
-public string MessageOrNcText { get; }
-
- - - - - -

Property Value

-
-
string
-
-
- - - - - - - - - - -

- MessageRoleText - -

- -

Gets the message type text for UI display.

-
-
- -
-
[Present("Role", "Role", PhysicsUnit.None, "G")]
-public string MessageRoleText { get; }
-
- - - - - -

Property Value

-
-
string
-
-
- - - - - - - - - - -

- MultiTagMessage - -

- -

Gets or sets the multi-tag message. -gets null if the Data is not MultiTagMessage.

-
-
- -
-
public MultiTagMessage MultiTagMessage { get; set; }
-
- - - - - -

Property Value

-
-
MultiTagMessage
-
-
- - - - - - - - - - -

- Tags - -

- -

Gets the tags associated with the message.

-
-
- -
-
public HashSet<string> Tags { get; }
-
- - - - - -

Property Value

-
-
HashSet<string>
-
-
- - - - -

Remarks

-

Different from MultiTagMessage.Tags, -the Tags here includes the infomation of the Data.

-
- - - - -

Methods -

- - - - -

- ToString() - -

- -

Returns a string representation of the message data.

-
-
- -
-
public override string ToString()
-
- - -

Returns

-
-
string
-

A string representation of the message data.

-
-
- - - - - - - - - - - - -
- -
-
- - -
- -
- -
-
- -
- - - - diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionProgress.html deleted file mode 100644 index 1dd48a73..00000000 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionProgress.html +++ /dev/null @@ -1,636 +0,0 @@ - - - - - Class SessionProgress | HiAPI-C# 2025 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
-
-
Table of Contents
- -
-
- -
-
-
- -
-
- - - -
- -
- - - -

-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<object>
-
- - - - -
-
Inheritance
-
- -
SessionProgress
-
-
- -
-
Implements
-
- -
-
- - -
-
Inherited Members
-
- - - - - - - -
- -
-
Extension Methods
-
- - - - - - - - - - - - - - -
- - - - - -

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<SessionMessage> MessageCollection { get; }
-
- - - - - -

Property Value

-
-
SynList<SessionMessage>
-
-
- - - - - - - - - - -

- 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<SessionMessage> 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<SessionMessage>
-

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<SessionMessagePack> CollectionItemAdded
-
- - - - - - -

Event Type

-
-
Action<SessionMessagePack>
-
-
- - - - - - - - -

- CollectionItemChanged - -

- -

Event raised when a collection item is changed.

-
-
- -
-
public event Action CollectionItemChanged
-
- - - - - - -

Event Type

-
-
Action
-
-
- - - - - - - - -
- -
-
- - -
- -
- -
-
- -
- - - - diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShell.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShell.html index 41b1a1e4..4b4277b8 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShell.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShell.html @@ -183,6 +183,43 @@ concrete target of Fields +

+ + + +

+ DefaultScriptOptions + +

+ +

The default Roslyn ScriptOptions for session scripts — +references the SessionShell-domain assemblies and imports. Used as the +initial value of the project-level ScriptOptions.

+
+
+ +
+
public static readonly ScriptOptions DefaultScriptOptions
+
+ + + + +

Field Value

+
+
ScriptOptions
+
+
+ + + + + + + + +

Properties

@@ -393,7 +430,12 @@ public bool EnableCollisionDetection { get; set; } -

Gets or sets whether to enable individual step adjustment logging.

+

Gets or sets whether to enable individual step adjustment logging. +The setter drives both optimization pipelines: the legacy HardNc +Hi.NcOpt.NcOptProc.EnableIndividualStepAdjustmentLog and the +SoftNc Hi.NcOpt.StepFeedSolver.EnableStepAdjustmentLog statics are +assigned together; the getter reads the legacy static (the pair only +diverges when a static is assigned directly, bypassing this proxy).

@@ -518,6 +560,43 @@ public bool EnableMzLeverWeightingOnTraining { get; set; } + + +

+ EnableNativeMillingPhysics + +

+ +

Gets or sets whether the physics runs on the native (core.dll) kernels. +Default is true, and in shipping builds the native kernel is the only +physics implementation — setting this to false throws unless the +non-shipping managed reference assembly is registered (dev/test hosts +only).

+
+
+ +
+
[JsAce(DocContentHtml = "Run the physics on the native kernels (the only implementation in shipping builds).")]
+public bool EnableNativeMillingPhysics { get; set; }
+
+ + + + + +

Property Value

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

@@ -662,13 +741,16 @@ Don't apply this option.

-

Workaround flag to use SoftNcRunner instead of HardNcRunner. +

Switches between SoftNcRunner and the legacy +HardNcRunner. Default true; set false to +fall back to the legacy runner (e.g. for NC optimization, which still +reads NcLines). Will be removed when HardNcRunner is fully replaced.

-
[JsAce(DocContentHtml = "Enable SoftNcRunner instead of legacy HardNcRunner.")]
+    
[JsAce(DocContentHtml = "Enable SoftNcRunner (default) instead of legacy HardNcRunner.")]
 public bool EnableSoftNcRunner { get; set; }
@@ -1081,6 +1163,42 @@ public double MachiningResolution_mm { get; set; } + + +

+ MappingAnchorDateTime + +

+ +

Project-scoped anchor that converts an absolute-time mapping window / +sensor stream into a relative timecode. Delegates to +MappingAnchorDateTime; auto-set from +the first controller instant on PlayCsvFile(string), or set here.

+
+
+ +
+
[JsAce]
+public DateTime? MappingAnchorDateTime { get; set; }
+
+ + + + + +

Property Value

+
+
DateTime?
+
+
+ + + + + + + +

@@ -1088,8 +1206,16 @@ public double MachiningResolution_mm { get; set; }

-

Gets or sets the number of divisions per cycle for milling force calculation. -This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used.

+

Gets or sets the number of angular divisions per spindle revolution for +milling force calculation. The default (36) is intended for normal +simulation — a finer division does not improve force playback and only +slows it down. Only TrainMillingPara(SampleFlag, string, double, ICuttingPara) benefits from a finer +division (e.g. 180): set it in the training script before the simulation +run the training consumes. The value is process-wide (backed by +RotationDivisionNum): +it is not saved into the project and survives ResetRuntime() +and project switches, so set it back (or restart the instance) after +training to keep normal simulation fast.

@@ -2003,7 +2129,7 @@ public double OptYieldingUtilizationFactor { get; set; }

Property Value

-
ScriptOptions
+
ScriptOptions
@@ -2014,21 +2140,22 @@ public double OptYieldingUtilizationFactor { get; set; } - + -

- SessionMessageHost +

+ ShellProgress

-

Obsolete alias for SessionProgress (session-scoped progress and messages).

+

Session-level routine / lifecycle message sink on the IMessage channel +(cache reset, file progress, session start/done). Owned by MachiningSession +(truly session-scoped); exposed here for scripts and the session facade.

[JsAce]
-[Obsolete("Use SessionProgress instead.")]
-public SessionProgress SessionMessageHost { get; }
+public ShellProgress ShellProgress { get; }
@@ -2037,40 +2164,7 @@ public SessionProgress SessionMessageHost { get; }

Property Value

-
SessionProgress
-
-
- - - - - - - - - - -

- SessionProgress - -

- -

Gets the session message host for displaying messages.

-
-
- -
-
[JsAce]
-public SessionProgress SessionProgress { get; }
-
- - - - - -

Property Value

-
-
SessionProgress
+
ShellProgress
@@ -2114,6 +2208,40 @@ public int StepCount { get; } + + +

+ StepDiagnosticProgress + +

+ +

Step-anchored message sink on the IMessage channel +(see StepDiagnosticProgress).

+
+
+ +
+
[JsAce]
+public StepDiagnosticProgress StepDiagnosticProgress { get; }
+
+ + + + + +

Property Value

+
+
StepDiagnosticProgress
+
+
+ + + + + + + +

@@ -2524,6 +2652,45 @@ public void ClearTimeMappingData() + + +

+ ConvertClToNcFiles(string) + +

+ +

Converts the CLSF play of the current session into Fanuc NC files +(writeback synthesis): the MSYS frame becomes a G68.2 tilted +working plane, tool posture becomes G43.4 RTCP with rotary +words, motions become G00/G01/G02/G03. Play the CL file on an +XYZABC machine chain first, then convert.

+
+
+ +
+
[JsAce(Snippet = "ConvertClToNcFiles(\"Output/[NcName].nc\")", DocContentHtml = "Convert the played CLSF into Fanuc NC files by substitute template keyword \"[NcName]\"")]
+public void ConvertClToNcFiles(string relNcFileTemplate = "Output/[NcName].nc")
+
+ +

Parameters

+
+
relNcFileTemplate string
+

Output path template; [NcName] +is replaced by the source file name.

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

@@ -2687,6 +2854,222 @@ public void ErrorMessage(string message) + + +

+ ExportMeshedGeomToObj(string, double) + +

+ +

Exports the current meshed geometry to a Wavefront OBJ file with per-vertex RGB.

+
+
+ +
+
[JsAce("ExportMeshedGeomToObj($1\"dstFile\",$2resolution_mm)")]
+public void ExportMeshedGeomToObj(string relFile, double resolution_mm = 0)
+
+ +

Parameters

+
+
relFile string
+

Relative path to the output OBJ file

+
+
resolution_mm double
+

Resolution in millimeters (0 for default)

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

+ ExportMeshedGeomToPly(string, double) + +

+ +

Exports the current meshed geometry to a binary PLY file with per-vertex RGB.

+
+
+ +
+
[JsAce("ExportMeshedGeomToPly($1\"dstFile\",$2resolution_mm)")]
+public void ExportMeshedGeomToPly(string relFile, double resolution_mm = 0)
+
+ +

Parameters

+
+
relFile string
+

Relative path to the output PLY file

+
+
resolution_mm double
+

Resolution in millimeters (0 for default)

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

+ ExportMeshedGeomToStl(string, double) + +

+ +

Exports the current meshed geometry to an STL file.

+
+
+ +
+
[JsAce("ExportMeshedGeomToStl($1\"dstFile\",$2resolution_mm)")]
+public void ExportMeshedGeomToStl(string relFile, double resolution_mm = 0)
+
+ +

Parameters

+
+
relFile string
+

Relative path to the output STL file

+
+
resolution_mm double
+

Resolution in millimeters (0 for default)

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

+ ExportRuntimeGeomToObj(string, double) + +

+ +

Legacy script alias of ExportMeshedGeomToObj(string, double); kept so old player scripts keep working.

+
+
+ +
+
[Obsolete("Legacy alias; use ExportMeshedGeomToObj instead.")]
+public void ExportRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
+ +

Parameters

+
+
relFile string
+
+
resolution_mm double
+
+
+ + + + + + + + + + + + + + +

+ ExportRuntimeGeomToPly(string, double) + +

+ +

Legacy script alias of ExportMeshedGeomToPly(string, double); kept so old player scripts keep working.

+
+
+ +
+
[Obsolete("Legacy alias; use ExportMeshedGeomToPly instead.")]
+public void ExportRuntimeGeomToPly(string relFile, double resolution_mm = 0)
+
+ +

Parameters

+
+
relFile string
+
+
resolution_mm double
+
+
+ + + + + + + + + + + + + + +

+ ExportRuntimeGeomToStl(string, double) + +

+ +

Legacy script alias of ExportMeshedGeomToStl(string, double); kept so old player scripts keep working.

+
+
+ +
+
[Obsolete("Legacy alias; use ExportMeshedGeomToStl instead.")]
+public void ExportRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
+ +

Parameters

+
+
relFile string
+
+
resolution_mm double
+
+
+ + + + + + + + + + + +

@@ -2810,20 +3193,21 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId) - + -

- GetUniformContourTrayShiftAngle_deg(int) +

+ GetUniformFlutingShiftAngle_deg(int)

-

Gets the shift angle in degrees for the uniform contour tray of the specified tool.

+

Gets the shift angle in degrees for the uniform fluting of the specified tool, +that is, for a cutter whose flutes all share one baseline flute contour.

-
[JsAce("GetUniformContourTrayShiftAngle_deg($1toolId)")]
-public double GetUniformContourTrayShiftAngle_deg(int toolId)
+
[JsAce("GetUniformFlutingShiftAngle_deg($1toolId)")]
+public double GetUniformFlutingShiftAngle_deg(int toolId)

Parameters

@@ -2931,8 +3315,8 @@ public void LoadCuttingParaByFile(string relFile) -

- Map(string, FileTimeSection, CycleSamplingMode?) +

+ Map(string, IFileTimeSection, CycleSamplingMode?)

@@ -2941,7 +3325,7 @@ public void LoadCuttingParaByFile(string relFile)
-
public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShotUtil.CycleSamplingMode? cycleSamplingMode = CycleSamplingMode.SpindleCycle)
+
public Task Map(string key, IFileTimeSection fileTimeSection = null, StepTimeShotUtil.CycleSamplingMode? cycleSamplingMode = CycleSamplingMode.SpindleCycle)

Parameters

@@ -2949,7 +3333,7 @@ public void LoadCuttingParaByFile(string relFile)
key string

Identifier key for the selection

-
fileTimeSection FileTimeSection
+
fileTimeSection IFileTimeSection

File time section, or null to use the one associated with the key

cycleSamplingMode StepTimeShotUtil.CycleSamplingMode?
@@ -3044,6 +3428,32 @@ public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSam +

Remarks

+

cycleSamplingMode sets how much sensor data each step is paired +with. The window is anchored at the step's end time and runs forward for one cycle +period, so a step is always regressed against samples its neighbours +produced. While the cut is steady that costs nothing: a neighbour cutting the same +arc at the same chip load produces, at a given rotation angle, the force this step +would have produced, so the borrowed rows are extra samples rather than extra +error. The pairing turns into a systematic bias only where the cutter-workpiece +engagement changes across the window — cutter entry, pass exit, corners, depth +changes. Restricting training to the steady part of the cut is therefore the +largest single accuracy lever, and once the transient is out the window choice +stops mattering: on the D8 2-flute Al6061-T6 case the two modes differ by 2.2 +percentage points over the whole path (Fc error at feed-per-tooth 0.2: +−9.3 % for SpindleCycle versus −7.1 % for +FluteCycle) but by 0.06 over the steady part alone, +where both reach −3.3 % / −3.2 % at R 98.5 %. Keep the default and its larger +sample count; on a single-flute cutter the two modes coincide anyway.

+

+Gaps in the data (an acquisition dropout, or rows carved out to keep the +steady section only) are handled: a step whose window contains no measured +row is excluded from the mapping, and one Map-ShotGap--StepsSkipped +warning carries the count. A window-edge row is only interpolated when its +bracketing rows span at most two spindle revolutions — farther rows sit +across a gap and no edge row is fabricated from them. +

+
@@ -3158,7 +3568,14 @@ public Dictionary<Func<MillingPhysicsBrief, double>, double> OptCall -

Optimizes NC files and saves results using the specified file template.

+

Optimizes NC files and saves results using the specified file template. +Routing rule: when EnableSoftNcRunner +is on and the session holds played SoftNc +SyntaxPieceLayers (non-empty), the +SoftNc pipeline (OptimizeNcFiles(string, string, ICuttingPara, IProgress<IMessage>, CancellationToken, Func<int, MillingStepLuggage>, Action) / +Hi.NcOpt.SoftNcOptProc) is used; otherwise the legacy HardNc +OptimizeToFiles(ICuttingPara, MachiningSession, LinkedList<HardNcLine>, HardNcEnv, MachiningToolHouse, ClStrip, string, IProgress<IMessage>, CancellationToken, string) path runs unchanged. Both paths +first clear every cutter's MillingCutterOptLimit cache.

@@ -3247,8 +3664,8 @@ public void Pause() -

- PlayAct(IAct, IGetSentence, CancellationToken?) +

+ PlayAct(IAct, ISentenceCarrier, CancellationToken?)

@@ -3258,7 +3675,7 @@ public void Pause()
[JsAce]
-public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationToken? cancellationToken = null)
+public void PlayAct(IAct act, ISentenceCarrier sourceCommand = null, CancellationToken? cancellationToken = null)

Parameters

@@ -3266,7 +3683,7 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok
act IAct

The act to play.

-
sourceCommand IGetSentence
+
sourceCommand ISentenceCarrier

The source command.

cancellationToken CancellationToken?
@@ -3285,6 +3702,75 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok + + +

+ PlayBrandNcFile(string) + +

+ +

Plays a famous-brand NC code file with the specified relative path +(no kind dispatch — always the brand runner).

+
+
+ +
+
[JsAce("PlayBrandNcFile($1\"ncFile\");")]
+public void PlayBrandNcFile(string relNcFilePath)
+
+ +

Parameters

+
+
relNcFilePath string
+

Relative path to the NC file

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

+ PlayClFile(string) + +

+ +

Plays an NX-CL (CLSF) file with the specified relative path.

+
+
+ +
+
[JsAce("PlayClFile($1\"clFile\");")]
+public void PlayClFile(string relFilePath)
+
+ +

Parameters

+
+
relFilePath string
+

Relative path to the CLSF file

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

@@ -3407,24 +3893,30 @@ public void PlayNc(string ncText, string fileNameAlternative = "--") -

- PlayNcFile(string) +

+ PlayNcFile(string, NcKind)

-

Plays an NC file with the specified relative path.

+

Plays an NC program file with the specified relative path, the runner +picked by kind (Auto = by file extension: +.cl/.cls/.clsf play as CL, .csv as CSV, +anything else as brand NC — so existing scripts keep their behavior).

[JsAce("PlayNcFile($1\"ncFile\");")]
-public void PlayNcFile(string relNcFilePath)
+public void PlayNcFile(string relNcFilePath, NcKind kind = NcKind.Auto)

Parameters

relNcFilePath string
-

Relative path to the NC file

+

Relative path to the NC program file

+
+
kind NcKind
+

Which runner plays the file; Auto detects by extension.

@@ -3640,20 +4132,20 @@ public void ReadCsvByTimeInterpolation(string csvFile) - + -

- ReadRuntimeGeom(string) +

+ ReadMeshedGeom(string)

-

Reads runtime geometry from a file.

+

Reads meshed geometry from a file.

-
[JsAce("ReadRuntimeGeom($1\"srcFile\")")]
-public void ReadRuntimeGeom(string relFile)
+
[JsAce("ReadMeshedGeom($1\"srcFile\")")]
+public void ReadMeshedGeom(string relFile)

Parameters

@@ -3674,6 +4166,39 @@ public void ReadRuntimeGeom(string relFile) + + +

+ ReadRuntimeGeom(string) + +

+ +

Legacy script alias of ReadMeshedGeom(string); kept so old player scripts keep working.

+
+
+ +
+
[Obsolete("Legacy alias; use ReadMeshedGeom instead.")]
+public void ReadRuntimeGeom(string relFile)
+
+ +

Parameters

+
+
relFile string
+
+
+ + + + + + + + + + + +

@@ -3874,6 +4399,48 @@ public void ResetRuntime() + + +

+ RunBrandNcFile(string) + +

+ +

Runs a famous-brand NC code file with the specified relative path +(no kind dispatch — always the brand runner). +Not for end user with no programing skill.

+
+
+ +
+
[JsAce("RunBrandNcFile($1\"ncFile\");")]
+public IEnumerable<Action> RunBrandNcFile(string relNcFilePath)
+
+ +

Parameters

+
+
relNcFilePath string
+

Relative path to the NC file

+
+
+ +

Returns

+
+
IEnumerable<Action>
+

Enumerable sequence of actions to be executed

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

@@ -3920,25 +4487,31 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative -

- RunNcFile(string) +

+ RunNcFile(string, NcKind)

-

Runs an NC file with the specified relative path. +

Runs an NC program file with the specified relative path, the runner +picked by kind (Auto = by file extension: +.cl/.cls/.clsf run as CL, .csv as CSV, +anything else as brand NC — so existing scripts keep their behavior). Not for end user with no programing skill.

[JsAce("RunNcFile($1\"ncFile\");")]
-public IEnumerable<Action> RunNcFile(string relNcFilePath)
+public IEnumerable<Action> RunNcFile(string relNcFilePath, NcKind kind = NcKind.Auto)

Parameters

relNcFilePath string
-

Relative path to the NC file

+

Relative path to the NC program file

+
+
kind NcKind
+

Which runner runs the file; Auto detects by extension.

@@ -3999,20 +4572,20 @@ public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale) + -

- ScanRuntimeGeomInfDefect() +

+ ScanMeshedGeomInfDefect()

-

Scans the runtime geometry for defects. After scanning, the scanned defects will render in the workpiece.

+

Scans the meshed geometry for defects. After scanning, the scanned defects will render in the workpiece.

[JsAce]
-public bool? ScanRuntimeGeomInfDefect()
+public bool? ScanMeshedGeomInfDefect()
@@ -4033,6 +4606,39 @@ public bool? ScanRuntimeGeomInfDefect() + + +

+ ScanRuntimeGeomInfDefect() + +

+ +

Legacy script alias of ScanMeshedGeomInfDefect(); kept so old player scripts keep working.

+
+
+ +
+
[Obsolete("Legacy alias; use ScanMeshedGeomInfDefect instead.")]
+public bool? ScanRuntimeGeomInfDefect()
+
+ + +

Returns

+
+
bool?
+
+
+ + + + + + + + + + +

@@ -4196,20 +4802,21 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height) - + -

- SetUniformContourTrayShiftAngle_deg(int, double) +

+ SetUniformFlutingShiftAngle_deg(int, double)

-

Sets the shift angle in degrees for the uniform contour tray of the specified tool.

+

Sets the shift angle in degrees for the uniform fluting of the specified tool, +that is, for a cutter whose flutes all share one baseline flute contour.

-
[JsAce("SetUniformContourTrayShiftAngle_deg($1toolId,$2angle_deg)")]
-public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+
[JsAce("SetUniformFlutingShiftAngle_deg($1toolId,$2angle_deg)")]
+public void SetUniformFlutingShiftAngle_deg(int toolId, double angle_deg)

Parameters

@@ -4388,20 +4995,20 @@ public void WarningMessage(string message) - + -

- WriteRuntimeGeom(string) +

+ WriteMeshedGeom(string)

-

Writes the current runtime geometry to a file.

+

Writes the current meshed geometry to a file.

-
[JsAce("WriteRuntimeGeom($1\"dstFile\")")]
-public void WriteRuntimeGeom(string relFile)
+
[JsAce("WriteMeshedGeom($1\"dstFile\")")]
+public void WriteMeshedGeom(string relFile)

Parameters

@@ -4422,104 +5029,26 @@ public void WriteRuntimeGeom(string relFile) - + -

- WriteRuntimeGeomToObj(string, double) +

+ WriteRuntimeGeom(string)

-

Writes the current runtime geometry to a Wavefront OBJ file with per-vertex RGB.

+

Legacy script alias of WriteMeshedGeom(string); kept so old player scripts keep working.

-
[JsAce("WriteRuntimeGeomToObj($1\"dstFile\",$2resolution_mm)")]
-public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0)
+
[Obsolete("Legacy alias; use WriteMeshedGeom instead.")]
+public void WriteRuntimeGeom(string relFile)

Parameters

relFile string
-

Relative path to the output OBJ file

-
-
resolution_mm double
-

Resolution in millimeters (0 for default)

-
-
- - - - - - - - - - - - - - -

- WriteRuntimeGeomToPly(string, double) - -

- -

Writes the current runtime geometry to a binary PLY file with per-vertex RGB.

-
-
- -
-
[JsAce("WriteRuntimeGeomToPly($1\"dstFile\",$2resolution_mm)")]
-public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0)
-
- -

Parameters

-
-
relFile string
-

Relative path to the output PLY file

-
-
resolution_mm double
-

Resolution in millimeters (0 for default)

-
-
- - - - - - - - - - - - - - -

- WriteRuntimeGeomToStl(string, double) - -

- -

Writes the current runtime geometry to an STL file.

-
-
- -
-
[JsAce("WriteRuntimeGeomToStl($1\"dstFile\",$2resolution_mm)")]
-public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
-
- -

Parameters

-
-
relFile string
-

Relative path to the output STL file

-
-
resolution_mm double
-

Resolution in millimeters (0 for default)

-
+
@@ -4576,7 +5105,7 @@ public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0) -

Writes time-series data to shot files with the specified resolution period.

+

Writes time-series (shot) data to files at the given sampling period.

@@ -4591,7 +5120,7 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c

Template for output file path, can include [NcName] placeholder

resolutionPeroid_ms double
-

Resolution period in milliseconds

+

Sampling period in milliseconds

@@ -4602,6 +5131,21 @@ public void WriteShotFiles(string relFileTemplate = "Output/[NcName].shot.c +

Remarks

+

Each row is interpolated from the per-division force waveform, so the +information carried per spindle revolution is +min(MillingCycleDivisionNum, 60000 / (rpm * resolutionPeroid_ms)). +When the written file is fed back into +TrainMillingPara(SampleFlag, string, double, ICuttingPara), +this period — not MillingCycleDivisionNum and not the +machining resolution — sets the accuracy ceiling: sampling coarser than the +division period throws away waveform detail that a finer angular grid +cannot recover. Choose it at or below +60000 / (rpm * MillingCycleDivisionNum) ms, and when the result is +compared against a physical measurement, match the real DAQ rate so both +sides carry the same information density. Fine periods produce large +files (a 6-cut program: 13 MB at 1 ms, 128 MB at 0.1 ms).

+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html index 0e5f8d3d..c72cc712 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.SessionShellController.html @@ -105,6 +105,7 @@ Each action delegates to the underlying
[ApiController]
 [Route("api/[controller]/[action]")]
+[ProducesResponseType(typeof(ApiActionResult), 409)]
 public class SessionShellController : ControllerBase
@@ -2289,40 +2290,7 @@ public double OptYieldingUtilizationFactor { get; set; }

Property Value

-
ScriptOptions
-
-
- - - - - - - - - - -

- SessionMessageHost - -

- - -
- -
-
[JsAce]
-public SessionProgress SessionMessageHost { get; }
-
- - - - - -

Property Value

-
-
SessionProgress
+
ScriptOptions
@@ -2617,7 +2585,9 @@ public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBe -

BeginSession()

+

BeginSession(). Callable without an active session (it is how +a session is started) but still requires a loaded project; routes straight to +Hi.MachiningProcs.SessionShellController.LocalProjectService so it does not touch the null session-scoped facade.

@@ -2667,6 +2637,49 @@ public void ClearTimeMappingData() + + +

+ ConvertClToNcFiles(string) + +

+ +

Converts the CLSF play of the current session into Fanuc NC files +(writeback synthesis — MSYS tilt becomes G68.2, tool posture +becomes G43.4 RTCP with rotary words).

+
+
+ +
+
[JsAce(Snippet = "ConvertClToNcFiles(\"Output/[NcName].nc\")", DocContentHtml = "Convert the played CLSF into Fanuc NC files by substitute template keyword \"[NcName]\"")]
+[HttpPost]
+public IReadOnlyList<string> ConvertClToNcFiles(string relNcFileTemplate = "Output/[NcName].nc")
+
+ +

Parameters

+
+
relNcFileTemplate string
+

Output path template; [NcName] +is replaced by the source file name.

+
+
+ +

Returns

+
+
IReadOnlyList<string>
+
+
+ + + + + + + + + + +

@@ -2814,7 +2827,8 @@ public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd,

-

EndSession()

+

EndSession(). Callable without an active session (a no-op when +none is active); routes straight to Hi.MachiningProcs.SessionShellController.LocalProjectService.

@@ -2870,6 +2884,80 @@ public void ErrorMessage(string message) + + +

+ ExportMeshedGeomToStl(string, double) + +

+ +

Exports the current meshed geometry to an STL file.

+
+
+ +
+
[JsAce("ExportMeshedGeomToStl($1\"dstFile\",$2resolution_mm)")]
+[HttpPost]
+public void ExportMeshedGeomToStl(string relFile, double resolution_mm = 0)
+
+ +

Parameters

+
+
relFile string
+

Relative path to the output STL file

+
+
resolution_mm double
+

Resolution in millimeters (0 for default)

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

+ ExportRuntimeGeomToStl(string, double) + +

+ +

Legacy script alias of ExportMeshedGeomToStl(string, double); kept so old player scripts keep working.

+
+
+ +
+
[Obsolete("Legacy alias; use ExportMeshedGeomToStl instead.")]
+[HttpPost]
+public void ExportRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+
+ +

Parameters

+
+
relFile string
+
+
resolution_mm double
+
+
+ + + + + + + + + + + +

@@ -2996,21 +3084,22 @@ public double GetStickMachiningToolObservationHeight_mm(int toolId) - + -

- GetUniformContourTrayShiftAngle_deg(int) +

+ GetUniformFlutingShiftAngle_deg(int)

-

Gets the shift angle in degrees for the uniform contour tray of the specified tool.

+

Gets the shift angle in degrees for the uniform fluting of the specified tool, +that is, for a cutter whose flutes all share one baseline flute contour.

-
[JsAce("GetUniformContourTrayShiftAngle_deg($1toolId)")]
+    
[JsAce("GetUniformFlutingShiftAngle_deg($1toolId)")]
 [HttpGet]
-public double GetUniformContourTrayShiftAngle_deg(int toolId)
+public double GetUniformFlutingShiftAngle_deg(int toolId)

Parameters

@@ -3085,8 +3174,8 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li -

- Map(string, FileTimeSection, CycleSamplingMode?) +

+ Map(string, IFileTimeSection, CycleSamplingMode?)

@@ -3096,7 +3185,7 @@ public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.Li
[HttpPost]
-public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShotUtil.CycleSamplingMode? cycleSamplingMode = CycleSamplingMode.SpindleCycle)
+public Task Map(string key, IFileTimeSection fileTimeSection = null, StepTimeShotUtil.CycleSamplingMode? cycleSamplingMode = null)

Parameters

@@ -3104,7 +3193,7 @@ public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShot
key string

Identifier key for the selection

-
fileTimeSection FileTimeSection
+
fileTimeSection IFileTimeSection

File time section, or null to use the one associated with the key

cycleSamplingMode StepTimeShotUtil.CycleSamplingMode?
@@ -3259,26 +3348,26 @@ public void Pause() -

- PlayAct(IAct, IGetSentence, CancellationToken?) +

+ PlayAct(IAct, ISentenceCarrier, CancellationToken?)

-

PlayAct(IAct, IGetSentence, CancellationToken?)

+
[JsAce]
 [NonAction]
-public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationToken? cancellationToken = null)
+public void PlayAct(IAct act, ISentenceCarrier sourceCommand = null, CancellationToken? cancellationToken = null)

Parameters

act IAct
-
sourceCommand IGetSentence
+
sourceCommand ISentenceCarrier
cancellationToken CancellationToken?
@@ -3295,6 +3384,77 @@ public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationTok + + +

+ PlayBrandNcFile(string) + +

+ +

Plays a famous-brand NC code file with the specified relative path +(no kind dispatch — always the brand runner).

+
+
+ +
+
[JsAce("PlayBrandNcFile($1\"ncFile\");")]
+[HttpPost]
+public void PlayBrandNcFile(string relNcFilePath)
+
+ +

Parameters

+
+
relNcFilePath string
+

Relative path to the NC file

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

+ PlayClFile(string) + +

+ +

Plays an NX-CL (CLSF) file with the specified relative path.

+
+
+ +
+
[JsAce("PlayClFile($1\"clFile\");")]
+[HttpPost]
+public void PlayClFile(string relFilePath)
+
+ +

Parameters

+
+
relFilePath string
+

Relative path to the CLSF file

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

@@ -3414,25 +3574,31 @@ public void PlayNc(string ncText, string fileNameAlternative = "--") -

- PlayNcFile(string) +

+ PlayNcFile(string, NcKind)

-

Plays an NC file with the specified relative path.

+

Plays an NC program file with the specified relative path, the runner +picked by kind (Auto = by file extension: +.cl/.cls/.clsf play as CL, .csv as CSV, +anything else as brand NC).

[JsAce("PlayNcFile($1\"ncFile\");")]
 [HttpPost]
-public void PlayNcFile(string relNcFilePath)
+public void PlayNcFile(string relNcFilePath, NcKind kind = NcKind.Auto)

Parameters

relNcFilePath string
-

Relative path to the NC file

+

Relative path to the NC program file

+
+
kind NcKind
+

Which runner plays the file; Auto detects by extension.

@@ -3586,21 +3752,21 @@ public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double - + -

- ReadRuntimeGeom(string) +

+ ReadMeshedGeom(string)

-

Reads runtime geometry from a file.

+

Reads meshed geometry from a file.

-
[JsAce("ReadRuntimeGeom($1\"srcFile\")")]
+    
[JsAce("ReadMeshedGeom($1\"srcFile\")")]
 [HttpPost]
-public void ReadRuntimeGeom(string relFile)
+public void ReadMeshedGeom(string relFile)

Parameters

@@ -3621,6 +3787,40 @@ public void ReadRuntimeGeom(string relFile) + + +

+ ReadRuntimeGeom(string) + +

+ +

Legacy script alias of ReadMeshedGeom(string); kept so old player scripts keep working.

+
+
+ +
+
[Obsolete("Legacy alias; use ReadMeshedGeom instead.")]
+[HttpPost]
+public void ReadRuntimeGeom(string relFile)
+
+ +

Parameters

+
+
relFile string
+
+
+ + + + + + + + + + + +

@@ -3755,6 +3955,48 @@ public void ResetRuntime() + + +

+ RunBrandNcFile(string) + +

+ +

Runs a famous-brand NC code file with the specified relative path +(no kind dispatch — always the brand runner).

+
+
+ +
+
[JsAce("RunBrandNcFile($1\"ncFile\");")]
+[NonAction]
+public IEnumerable<Action> RunBrandNcFile(string relNcFilePath)
+
+ +

Parameters

+
+
relNcFilePath string
+

Relative path to the NC file

+
+
+ +

Returns

+
+
IEnumerable<Action>
+

Enumerable sequence of actions to be executed

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

@@ -3801,25 +4043,29 @@ public IEnumerable<Action> RunNc(string ncText, string fileNameAlternative -

- RunNcFile(string) +

+ RunNcFile(string, NcKind)

-

Runs an NC file with the specified relative path.

+

Runs an NC program file with the specified relative path, the runner +picked by kind (Auto = by file extension).

[JsAce("RunNcFile($1\"ncFile\");")]
 [NonAction]
-public IEnumerable<Action> RunNcFile(string relNcFilePath)
+public IEnumerable<Action> RunNcFile(string relNcFilePath, NcKind kind = NcKind.Auto)

Parameters

relNcFilePath string
-

Relative path to the NC file

+

Relative path to the NC program file

+
+
kind NcKind
+

Which runner runs the file; Auto detects by extension.

@@ -3971,21 +4217,22 @@ public void SetStickMachiningToolObservationHeight_mm(int toolId, double height) - + -

- SetUniformContourTrayShiftAngle_deg(int, double) +

+ SetUniformFlutingShiftAngle_deg(int, double)

-

Sets the shift angle in degrees for the uniform contour tray of the specified tool.

+

Sets the shift angle in degrees for the uniform fluting of the specified tool, +that is, for a cutter whose flutes all share one baseline flute contour.

-
[JsAce("SetUniformContourTrayShiftAngle_deg($1toolId,$2angle_deg)")]
+    
[JsAce("SetUniformFlutingShiftAngle_deg($1toolId,$2angle_deg)")]
 [HttpPost]
-public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg)
+public void SetUniformFlutingShiftAngle_deg(int toolId, double angle_deg)

Parameters

@@ -4165,21 +4412,21 @@ public void WarningMessage(string message) - + -

- WriteRuntimeGeom(string) +

+ WriteMeshedGeom(string)

-

Writes the current runtime geometry to a file.

+

Writes the current meshed geometry to a file.

-
[JsAce("WriteRuntimeGeom($1\"dstFile\")")]
+    
[JsAce("WriteMeshedGeom($1\"dstFile\")")]
 [HttpPost]
-public void WriteRuntimeGeom(string relFile)
+public void WriteMeshedGeom(string relFile)

Parameters

@@ -4200,31 +4447,27 @@ public void WriteRuntimeGeom(string relFile) - + -

- WriteRuntimeGeomToStl(string, double) +

+ WriteRuntimeGeom(string)

-

Writes the current runtime geometry to an STL file.

+

Legacy script alias of WriteMeshedGeom(string); kept so old player scripts keep working.

-
[JsAce("WriteRuntimeGeomToStl($1\"dstFile\",$2resolution_mm)")]
+    
[Obsolete("Legacy alias; use WriteMeshedGeom instead.")]
 [HttpPost]
-public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0)
+public void WriteRuntimeGeom(string relFile)

Parameters

relFile string
-

Relative path to the output STL file

-
-
resolution_mm double
-

Resolution in millimeters (0 for default)

-
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.ShellProgress.html similarity index 58% rename from App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunner.html rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.ShellProgress.html index fd05ac6a..86d5ba7c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.CsvRunner.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.ShellProgress.html @@ -2,11 +2,11 @@ - Class CsvRunner | HiAPI-C# 2025 + Class ShellProgress | HiAPI-C# 2025 - + - + @@ -84,25 +84,37 @@
-
+
-

-Class CsvRunner +

+Class ShellProgress

-
Namespace
Hi.Numerical.FilePlayers
-
Assembly
HiNc.dll
+
Namespace
Hi.MachiningProcs
+
Assembly
HiMech.dll
-

Provides functionality for running and processing csv lines.

+

Append-only, thread-safe sink for session-level routine / lifecycle messages on the +IMessage channel — one of the partitioned message homes.

+

+This is partitioned by message kind, orthogonal to the other sinks: plain +SimpleMessage notices that belong to the session as a whole (cache reset, file +load / save progress, session start/done) live here; messages tied to a particular machining +step live in StepDiagnosticProgress; NC-pipeline diagnostics live in +NcDiagnosticProgress. +

+

+Append-only: session-routine messages are emitted sequentially, so report order already is +execution order — there is no per-step anchor and no stable-index bookkeeping. +

-
public class CsvRunner : IControlRunner
+
public class ShellProgress : IProgress<IMessage>
@@ -112,14 +124,14 @@ Class CsvRunner
Inheritance
-
CsvRunner
+
ShellProgress
Implements
- +
@@ -162,6 +174,9 @@ Class CsvRunner + @@ -180,60 +195,23 @@ Class CsvRunner -

Constructors -

- - - - -

- CsvRunner(LocalProjectService) - -

- -

Initializes a new instance.

-
-
- -
-
public CsvRunner(LocalProjectService localProjectService)
-
- -

Parameters

-
-
localProjectService LocalProjectService
-

The local project service.

-
-
- - - - - - - - - - - -

Properties

- + -

- Config +

+ Messages

-

Configuration for CSV Runner.

+

All reported messages, in append (report) order. Thread-safe for concurrent appends.

-
public CsvRunnerConfig Config { get; set; }
+
public SynList<IMessage> Messages { get; }
@@ -242,7 +220,7 @@ Class CsvRunner

Property Value

-
CsvRunnerConfig
+
SynList<IMessage>
@@ -257,22 +235,19 @@ Class CsvRunner - + -

- Reset() +

+ Clear()

-

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.

+

Removes all messages (e.g. on session reset).

-
public void Reset()
+
public void Clear()
@@ -287,46 +262,66 @@ Class CsvRunner - + -

- RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) +

+ Report(IMessage)

-

Runs raw Control lines and yields source sentence and Act pairs.

+

Reports a progress update.

-
public IEnumerable<SourcedActEntry> RunControlLines(string relFilePath, IEnumerable<string> lines, MachiningSession machiningSession, SessionProgress sessionMessageHost, CancellationToken cancellationToken)
+
public void Report(IMessage value)

Parameters

-
relFilePath string
-

The relative path of the control file

-
-
lines IEnumerable<string>
-

The enumerable collection of command (control code) lines

-
-
machiningSession MachiningSession
-

Session-scoped state shared across multiple -RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls (e.g. lazy-initialized pipeline state, -file-index counter).

-
-
sessionMessageHost SessionProgress
-
-
cancellationToken CancellationToken
-

Cancellation token to cancel the operation

+
value IMessage
+

The value of the updated progress.

-

Returns

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

Events +

+ + + +

+ Cleared + +

+ +

Raised after Clear() empties the collection.

+
+
+ +
+
public event Action Cleared
+
+ + + + + + +

Event Type

-
IEnumerable<SourcedActEntry>
-

Enumerable of source sentence and Act pairs

-
+
Action
+
@@ -336,6 +331,35 @@ file-index counter).

+

+ MessageAdded + +

+ +

Raised after a message has been appended. Carries the index it landed at in +Messages and the appended message, so a consumer can place it and +reach nearby items by indexing into Messages.

+
+
+ +
+
public event Action<int, IMessage> MessageAdded
+
+ + + + + + +

Event Type

+
+
Action<int, IMessage>
+
+
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.StepDiagnostic.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.StepDiagnostic.html new file mode 100644 index 00000000..a0e0d025 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.StepDiagnostic.html @@ -0,0 +1,632 @@ + + + + + Class StepDiagnostic | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class StepDiagnostic +

+ +
+
Namespace
Hi.MachiningProcs
+
Assembly
HiMech.dll
+
+ +

An IMessage produced while constructing a MachiningStep, +anchored to the step's execution-order StepIndex and (when available) its NC-source +SentenceCarrier.

+

+Decorator over an inner Message — the five IMessage members delegate +to it — so a plain SimpleMessage emitted during step processing can be upgraded to a +step-anchored diagnostic without the producer needing to know the step context. +

+
+
+ +
+
public class StepDiagnostic : IMessage, IMotionStepIndex
+
+ + + + +
+
Inheritance
+
+ +
StepDiagnostic
+
+
+ +
+
Implements
+
+ + +
+
+ + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ StepDiagnostic(int, ISentenceCarrier, IMessage) + +

+ +

Initializes a new instance of the StepDiagnostic class.

+
+
+ +
+
public StepDiagnostic(int stepIndex, ISentenceCarrier sentenceCarrier, IMessage message)
+
+ +

Parameters

+
+
stepIndex int
+

Execution-order index of the step.

+
+
sentenceCarrier ISentenceCarrier
+

NC-source carrier for the step; may be null.

+
+
message IMessage
+

The wrapped inner message.

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

Properties +

+ + + + +

+ Message + +

+ +

The wrapped message supplying severity / category / id / notification / detail.

+
+
+ +
+
public IMessage Message { get; }
+
+ + + + + +

Property Value

+
+
IMessage
+
+
+ + + + + + + + + + +

+ SentenceCarrier + +

+ +

NC-source carrier for the step; null when the source is not an ISentenceCarrier +(e.g. the legacy hard / CSV runners, which the soft runner is expected to supersede).

+
+
+ +
+
public ISentenceCarrier SentenceCarrier { get; }
+
+ + + + + +

Property Value

+
+
ISentenceCarrier
+
+
+ + + + + + + + + + +

+ StepIndex + +

+ +

Execution-order index of the step this diagnostic belongs to.

+
+
+ +
+
public int StepIndex { get; }
+
+ + + + + +

Property Value

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

Methods +

+ + + + +

+ GetArgs() + +

+ +

Gets the values interpolated into GetFormat(); null when +GetFormat() is null, possibly empty for a hole-less template. +Default interface method so external implementers are unaffected.

+
+
+ +
+
public object[] GetArgs()
+
+ + +

Returns

+
+
object[]
+

The interpolation arguments, or null when untemplated.

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

+ GetCategory() + +

+ +

Gets the classification — see Category.

+
+
+ +
+
public Category GetCategory()
+
+ + +

Returns

+
+
Category
+

The category of this message.

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

+ GetDetail() + +

+ +

Gets the optional detail payload or exception; null when not applicable.

+
+
+ +
+
public object GetDetail()
+
+ + +

Returns

+
+
object
+

The detail object, or null.

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

+ GetFormat() + +

+ +

Gets the composite-format template behind GetNotification() — a +{0}-style .NET format string — when this message was produced from an +interpolated template; null when the notification has no structured template. +Together with GetArgs() this lets a consumer re-render the message +in another language without losing the interpolated live values, while +GetNotification() stays the invariant English rendering. +Default interface method so external implementers are unaffected.

+
+
+ +
+
public string GetFormat()
+
+ + +

Returns

+
+
string
+

The composite format string, or null when untemplated.

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

+ GetId() + +

+ +

Gets the structured id used for filtering / suppression; may be null.

+
+
+ +
+
public string GetId()
+
+ + +

Returns

+
+
string
+

The message id, or null when not applicable.

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

+ GetNotification() + +

+ +

Gets the end-user friendly notification text.

+
+
+ +
+
public string GetNotification()
+
+ + +

Returns

+
+
string
+

The notification text.

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

+ GetSeverity() + +

+ +

Gets the importance level — see Severity.

+
+
+ +
+
public Severity GetSeverity()
+
+ + +

Returns

+
+
Severity
+

The severity of this message.

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

+ ToString() + +

+ +

Returns a string that represents the current object.

+
+
+ +
+
public override string ToString()
+
+ + +

Returns

+
+
string
+

A string that represents the current object.

+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvSoftRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.StepDiagnosticAnchorUtil.html similarity index 57% rename from App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvSoftRunner.html rename to App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.StepDiagnosticAnchorUtil.html index c354a709..9f83d099 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvSoftRunner.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.StepDiagnosticAnchorUtil.html @@ -2,11 +2,11 @@ - Class CsvSoftRunner | HiAPI-C# 2025 + Class StepDiagnosticAnchorUtil | HiAPI-C# 2025 - + - + @@ -84,39 +84,29 @@
-
+
-

-Class CsvSoftRunner +

+Class StepDiagnosticAnchorUtil

-
Namespace
Hi.Numerical.CsvParsers
+
Namespace
Hi.MachiningProcs
Assembly
HiMech.dll
-

Factory for a SoftNcRunner wired to replay CSV files -(deprecates the legacy CsvRunner). The returned runner has a -single-syntax pipeline: CsvSegmenter → -CsvRowSyntaxCsvRowSemantic.

-

-Default NcDependencyList: -

-MachiningServiceDependency is intentionally not included by -default; clients that build custom syntaxes around CsvSoftRunner -can append it themselves. - +

Bridges a step-anchored IProgress<T> sink (e.g. +StepDiagnosticProgress) back to the generic IProgress<T> surface, so +out-of-step-pipeline producers can keep using the id-first MessageUtil shorthands +(ValidationError, ConfigurationWarning, …) and still land a +StepDiagnostic on the sink.

-
public static class CsvSoftRunner
+
public static class StepDiagnosticAnchorUtil
@@ -126,7 +116,7 @@ can append it themselves.
Inheritance
-
CsvSoftRunner
+
StepDiagnosticAnchorUtil
@@ -167,35 +157,41 @@ can append it themselves. - + -

- Create(CsvRunnerConfig) +

+ AnchoredToStep(IProgress<StepDiagnostic>, int, ISentenceCarrier)

-

Builds a fresh SoftNcRunner pre-configured to consume CSV -input. Call once per machining session so the runner's per-session -state starts clean (mirrors the legacy CsvRunner's reset on -project change).

+

Wraps sink in an IProgress<T> that upgrades every +reported message to a StepDiagnostic anchored to stepIndex / +carrier (an already-anchored StepDiagnostic passes through +unchanged). Returns null when sink is null, so the +null-safe MessageUtil shorthands remain a no-op.

-
public static SoftNcRunner Create(CsvRunnerConfig config = null)
+
public static IProgress<IMessage> AnchoredToStep(this IProgress<StepDiagnostic> sink, int stepIndex, ISentenceCarrier carrier = null)

Parameters

-
config CsvRunnerConfig
-

Optional CSV column-tag configuration; a default -CsvRunnerConfig is created when null.

+
sink IProgress<StepDiagnostic>
+

The step-anchored destination; null yields a null adapter.

+
+
stepIndex int
+

Motion-step index to anchor plain messages to (typically ShellThreadStepIndex).

+
+
carrier ISentenceCarrier
+

Optional NC-source carrier for the step; may be null.

Returns

-
SoftNcRunner
+
IProgress<IMessage>
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.StepDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.StepDiagnosticProgress.html new file mode 100644 index 00000000..1e6e75de --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.StepDiagnosticProgress.html @@ -0,0 +1,396 @@ + + + + + Class StepDiagnosticProgress | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class StepDiagnosticProgress +

+ +
+
Namespace
Hi.MachiningProcs
+
Assembly
HiMech.dll
+
+ +

Append-only, thread-safe sink for step-anchored diagnostics on the IMessage +channel.

+

+This sink stores only StepDiagnostic: every message is anchored to a motion step. +Per-step batches arrive via FlushTo(IProgress<StepDiagnostic>); out-of-pipeline emits +(e.g. stroke-limit / tooling diagnostics) anchor themselves with +AnchoredToStep(IProgress<StepDiagnostic>, int, ISentenceCarrier) before reporting. Data that already has +another owner is not duplicated here — NC diagnostics live in NcDiagnosticProgress, +plain session-level notices live in ShellProgress, cutter positions live in the +CL strip. +

+

+Because every StepDiagnostic carries its own StepIndex +anchor, ordering is recovered downstream by sorting on that anchor. Producers therefore only ever +Report(StepDiagnostic) (append) — even from parallel step-processing tasks — and never insert at a +computed position. +

+
+
+ +
+
public class StepDiagnosticProgress : IProgress<StepDiagnostic>
+
+ + + + +
+
Inheritance
+
+ +
StepDiagnosticProgress
+
+
+ +
+
Implements
+
+ +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ Messages + +

+ +

All reported diagnostics, in append (report) order. The collection is thread-safe for +concurrent appends from parallel step-processing tasks.

+
+
+ +
+
public SynList<StepDiagnostic> Messages { get; }
+
+ + + + + +

Property Value

+
+
SynList<StepDiagnostic>
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ Clear() + +

+ +

Removes all messages (e.g. on session reset).

+
+
+ +
+
public void Clear()
+
+ + + + + + + + + + + + + + + +

+ Report(StepDiagnostic) + +

+ +

Reports a progress update.

+
+
+ +
+
public void Report(StepDiagnostic value)
+
+ +

Parameters

+
+
value StepDiagnostic
+

The value of the updated progress.

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

Events +

+ + + +

+ Cleared + +

+ +

Raised after Clear() empties the collection.

+
+
+ +
+
public event Action Cleared
+
+ + + + + + +

Event Type

+
+
Action
+
+
+ + + + + + + + +

+ MessageAdded + +

+ +

Raised after a diagnostic has been appended. Carries the index it landed at in +Messages and the appended diagnostic, so a consumer can place it and +reach nearby items by indexing into Messages. The index is captured +atomically with the append, so it stays correct under concurrent step-task reports.

+
+
+ +
+
public event Action<int, StepDiagnostic> MessageAdded
+
+ + + + + + +

Event Type

+
+
Action<int, StepDiagnostic>
+
+
+ + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.StepScopedProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.StepScopedProgress.html new file mode 100644 index 00000000..abcc4f3c --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.StepScopedProgress.html @@ -0,0 +1,445 @@ + + + + + Class StepScopedProgress | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class StepScopedProgress +

+ +
+
Namespace
Hi.MachiningProcs
+
Assembly
HiMech.dll
+
+ +

A per-step IProgress<T> of IMessage that accumulates the +messages emitted while one step is built, upgrading any plain message to a +StepDiagnostic anchored to this step's StepIndex / +SentenceCarrier. An already step-anchored StepDiagnostic is kept +unchanged. (NC diagnostics are not seen here — they live in their own +NcDiagnosticProgress, not on this channel.)

+

+It does not forward to a downstream sink as messages arrive; instead it collects them into +MessageList and is drained once via FlushTo(IProgress<StepDiagnostic>) at the step's +sequential post-physics stage. Because that stage runs strictly in step order, the +per-step batches land in execution order with no position-scanning insert. +

+

+No locking: a single step's construction is a data-dependency chain (substraction → physics → +post-physics), so only one task writes MessageList at a time; parallelism across +steps writes to different scopes. Each parallel step task therefore holds its own +instance — never a shared mutable "current step" on StepDiagnosticProgress, which would +race. +

+
+
+ +
+
public class StepScopedProgress : IProgress<IMessage>, IProgressMessage, IMessage, IMotionStepIndex
+
+ + + + +
+
Inheritance
+
+ +
StepScopedProgress
+
+
+ +
+
Implements
+
+ + + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ StepScopedProgress(int, ISentenceCarrier) + +

+ +

Initializes a new instance of the StepScopedProgress class.

+
+
+ +
+
public StepScopedProgress(int stepIndex, ISentenceCarrier sentenceCarrier)
+
+ +

Parameters

+
+
stepIndex int
+

Execution-order index of the step.

+
+
sentenceCarrier ISentenceCarrier
+

NC-source carrier for the step; may be null.

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

Properties +

+ + + + +

+ MessageList + +

+ +

Messages accumulated for this step, in emission order — already upgraded to +StepDiagnostic by Report(IMessage). Written by the step's pipelined +(one-at-a-time) construction tasks, then drained once via FlushTo(IProgress<StepDiagnostic>).

+
+
+ +
+
public List<StepDiagnostic> MessageList { get; }
+
+ + + + + +

Property Value

+
+
List<StepDiagnostic>
+
+
+ + + + + + + + + + +

+ SentenceCarrier + +

+ +

NC-source carrier for the step; may be null.

+
+
+ +
+
public ISentenceCarrier SentenceCarrier { get; }
+
+ + + + + +

Property Value

+
+
ISentenceCarrier
+
+
+ + + + + + + + + + +

+ StepIndex + +

+ +

Execution-order index of the step this scope anchors to.

+
+
+ +
+
public int StepIndex { get; }
+
+ + + + + +

Property Value

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

Methods +

+ + + + +

+ FlushTo(IProgress<StepDiagnostic>) + +

+ +

Drains the accumulated MessageList into sink in order. Call +once, at the step's sequential post-physics stage, so the session sink receives whole +per-step batches already in execution order.

+
+
+ +
+
public void FlushTo(IProgress<StepDiagnostic> sink)
+
+ +

Parameters

+
+
sink IProgress<StepDiagnostic>
+

The downstream sink (typically the session StepDiagnosticProgress); no-op if null.

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

+ Report(IMessage) + +

+ +

Reports a progress update.

+
+
+ +
+
public void Report(IMessage value)
+
+ +

Parameters

+
+
value IMessage
+

The value of the updated progress.

+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html index 606e7bf7..bb630ff8 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.html @@ -94,10 +94,45 @@

Classes

+
+
AllowNoActiveSessionAttribute
+

Marks a session-scoped controller action as callable without an active session, exempting it +from RequireActiveSessionAttribute. Use on the session lifecycle entry points +(BeginSession / EndSession), which by definition run when no session exists yet.

+
+
+
+
AllowNoLoadedProjectAttribute
+

Marks a project-level controller action as callable without a loaded project, exempting it +from RequireLoadedProjectAttribute. Use on the endpoints that create or load a +project (which by definition run when no project is open yet).

+
+
+
+
ApiActionResult
+

The shared outcome envelope for a web-API action: whether it succeeded and the messages +it reported, in order. Returned by the project-level surface +(LocalProjectServiceController) and, on the no-active-session boundary, by +the session-scoped surface (SessionShellController via +RequireActiveSessionAttribute). A REST / AI caller therefore reads the +progress / success / error notifications inline in the HTTP response instead of +only out-of-band via the SignalR sinks, and can branch on Success without +parsing severities.

+
+
LocalProjectService

Root(Local) project service. Apply absolute file path.

+
+
+
+
LocalProjectServiceController
+

HTTP controller exposing the project-level (session-independent) operations of +Hi.MachiningProcs.LocalProjectServiceController.LocalProjectService — the lean API-user surface, parallel to +SessionShellController (which mirrors the session-scoped +SessionShell). A controller mirrors exactly one body; project-level +settings belong here, not bolted onto the session controller.

@@ -130,11 +165,6 @@ such as sweeping, subtraction, force calculation, and physics simulation.

MachiningProject

Represents a milling project that manages the execution, simulation, and analysis of NC programs.

-
-
-
-
MachiningProjectDisplayee
-

Represents a displayable wrapper for a machining project.

@@ -143,20 +173,37 @@ such as sweeping, subtraction, force calculation, and physics simulation.

Provides functionality for controlling the machining process, handling optimization options, and managing session state. Implements IDisposable to clean up SessionWriters on session end.

+ +
+
+
MessageDto
+

One reported IMessage, flattened for JSON transport.

MillingUtil

Provides utility methods for milling calculations and operations.

+
+
+
+
NcKindUtil
+

NcKind helpers.

NcRunnerSessionState

NC pipeline state held on a MachiningSession and shared across multiple -RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls within that session. The per-layer +RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) calls within that session. The per-layer SyntaxPieceLayers are extended via AppendSource(IEnumerable<T>) for each subsequent file so that Previous/Next connectivity (and thus ModalCarrySyntax deep-clone) crosses file boundaries.

+
+
+
+
ProjectFileBusyException
+

Thrown when a project-file operation (New / Load / Save / SaveAs / Reload) is +requested while another one is already in progress. The newcomer is cancelled +rather than queued; controllers surface this as HTTP 409 Conflict.

@@ -166,19 +213,26 @@ Apply relative file path from -
SessionMessage
-

Represents a message in the machining process that can contain various types of data -such as source commands, machining steps, exceptions, and tagged messages.

+
RequireActiveSessionAttribute
+

Action filter for the session-scoped web-API surface: before a guarded action runs, +verifies a machining session is active (SessionShell is +non-null). When none is active it short-circuits with HTTP 409 and an +NoActiveSession() envelope, so a REST / AI caller gets a helpful +“call BeginSession() first” notice instead of a null-reference 500. Apply at the controller +level; exempt the session lifecycle entry points (BeginSession / EndSession) with +AllowNoActiveSessionAttribute.

-
SessionMessagePack
-

Represents a package containing a machining message and its associated context.

-
-
-
-
SessionProgress
-

Represents a host for managing milling messages with thread-safe operations and stable index tracking.

+
RequireLoadedProjectAttribute
+

Action filter for the project-level web-API surface: before a guarded action runs, +verifies a project is loaded (MachiningProject is +non-null). When none is loaded it short-circuits with HTTP 409 and an +NoProjectLoaded() envelope, so a REST / AI caller gets a helpful +“create or load a project first” notice instead of a null-reference 500 (the project-level +members — MachiningActRunner.Config, workpiece, runners — are null until a project is +open). Apply at the controller level; exempt the endpoints that create or load a project +with AllowNoLoadedProjectAttribute.

@@ -198,11 +252,93 @@ Each action delegates to the underlying
SetupController

Controller for setup operations of machining projects.

+
+
+
+
ShellProgress
+

Append-only, thread-safe sink for session-level routine / lifecycle messages on the +IMessage channel — one of the partitioned message homes.

+

+This is partitioned by message kind, orthogonal to the other sinks: plain +SimpleMessage notices that belong to the session as a whole (cache reset, file +load / save progress, session start/done) live here; messages tied to a particular machining +step live in StepDiagnosticProgress; NC-pipeline diagnostics live in +NcDiagnosticProgress. +

+

+Append-only: session-routine messages are emitted sequentially, so report order already is +execution order — there is no per-step anchor and no stable-index bookkeeping. +

SpindleSpeedCache

Represents cached spindle speed information.

+
+
+
+
StepDiagnostic
+

An IMessage produced while constructing a MachiningStep, +anchored to the step's execution-order StepIndex and (when available) its NC-source +SentenceCarrier.

+

+Decorator over an inner Message — the five IMessage members delegate +to it — so a plain SimpleMessage emitted during step processing can be upgraded to a +step-anchored diagnostic without the producer needing to know the step context. +

+
+
+
+
StepDiagnosticAnchorUtil
+

Bridges a step-anchored IProgress<T> sink (e.g. +StepDiagnosticProgress) back to the generic IProgress<T> surface, so +out-of-step-pipeline producers can keep using the id-first MessageUtil shorthands +(ValidationError, ConfigurationWarning, …) and still land a +StepDiagnostic on the sink.

+
+
+
+
StepDiagnosticProgress
+

Append-only, thread-safe sink for step-anchored diagnostics on the IMessage +channel.

+

+This sink stores only StepDiagnostic: every message is anchored to a motion step. +Per-step batches arrive via FlushTo(IProgress<StepDiagnostic>); out-of-pipeline emits +(e.g. stroke-limit / tooling diagnostics) anchor themselves with +AnchoredToStep(IProgress<StepDiagnostic>, int, ISentenceCarrier) before reporting. Data that already has +another owner is not duplicated here — NC diagnostics live in NcDiagnosticProgress, +plain session-level notices live in ShellProgress, cutter positions live in the +CL strip. +

+

+Because every StepDiagnostic carries its own StepIndex +anchor, ordering is recovered downstream by sorting on that anchor. Producers therefore only ever +Report(StepDiagnostic) (append) — even from parallel step-processing tasks — and never insert at a +computed position. +

+
+
+
+
StepScopedProgress
+

A per-step IProgress<T> of IMessage that accumulates the +messages emitted while one step is built, upgrading any plain message to a +StepDiagnostic anchored to this step's StepIndex / +SentenceCarrier. An already step-anchored StepDiagnostic is kept +unchanged. (NC diagnostics are not seen here — they live in their own +NcDiagnosticProgress, not on this channel.)

+

+It does not forward to a downstream sink as messages arrive; instead it collects them into +MessageList and is drained once via FlushTo(IProgress<StepDiagnostic>) at the step's +sequential post-physics stage. Because that stage runs strictly in step order, the +per-step batches land in execution order with no position-scanning insert. +

+

+No locking: a single step's construction is a data-dependency chain (substraction → physics → +post-physics), so only one task writes MessageList at a time; parallelism across +steps writes to different scopes. Each parallel step task therefore holds its own +instance — never a shared mutable "current step" on StepDiagnosticProgress, which would +race. +

@@ -222,13 +358,16 @@ Interfaces Enums

-
RenderingFlag
-

Flags that control which elements are rendered in the visualization.

+
NcKind
+

Kind of an NC program file — selects which of the session's runners plays +it (ActiveNcRunner / +ClRunner / +CsvRunner).

-
SessionProgress.FilterFlag
-

Filtering flags for querying messages.

+
RenderingFlag
+

Flags that control which elements are rendered in the visualization.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html index 81917ebc..83f55fae 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMachiningService.html @@ -114,6 +114,9 @@ Interface IMachiningService
Inherited Members
+ @@ -153,6 +156,102 @@ Interface IMachiningService

+ + +

+ ActiveNcRunner + +

+ +

Gets the active NC control runner.

+
+
+ +
+
INcRunner ActiveNcRunner { get; }
+
+ + + + + +

Property Value

+
+
INcRunner
+
+
+ + + + + + + + + + +

+ BaseDirectory + +

+ +

Gets the project base directory (relative-path root).

+
+
+ +
+
string BaseDirectory { get; }
+
+ + + + + +

Property Value

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

+ ClRunner + +

+ +

Gets the NX-CL (CLSF) control runner.

+
+
+ +
+
INcRunner ClRunner { get; }
+
+ + + + + +

Property Value

+
+
INcRunner
+
+
+ + + + + + + +

@@ -185,6 +284,38 @@ Interface IMachiningService + + +

+ CsvRunner + +

+ +

Gets the CSV runner.

+
+
+ +
+
INcRunner CsvRunner { get; }
+
+ + + + + +

Property Value

+
+
INcRunner
+
+
+ + + + + + + +

@@ -217,6 +348,102 @@ Interface IMachiningService + + +

+ EnablePauseOnFailure + +

+ +

Gets whether playback pauses on a failure.

+
+
+ +
+
bool EnablePauseOnFailure { get; }
+
+ + + + + +

Property Value

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

+ IsCollisionDetectionEnabled + +

+ +

Gets whether collision detection is currently enabled.

+
+
+ +
+
bool IsCollisionDetectionEnabled { get; }
+
+ + + + + +

Property Value

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

+ MachiningActRunner + +

+ +

Gets the act runner that expands and processes acts.

+
+
+ +
+
MachiningActRunner MachiningActRunner { get; }
+
+ + + + + +

Property Value

+
+
MachiningActRunner
+
+
+ + + + + + + +

@@ -345,6 +572,141 @@ Interface IMachiningService + + +

+ NcDiagnosticProgress + +

+ +

Gets the NC-pipeline diagnostic sink on the IMessage channel.

+
+
+ +
+
NcDiagnosticProgress NcDiagnosticProgress { get; }
+
+ + + + + +

Property Value

+
+
NcDiagnosticProgress
+
+
+ + + + + + + + + + +

+ NcManipulationDiagnosticProgress + +

+ +

Gets the NC-manipulation diagnostic sink — the second diagnostic home, +for operations that rework an already-played NC/CL program (writeback +conversion, NC optimization) as opposed to the play-time pipeline +diagnostics in NcDiagnosticProgress. Keeping the two +scenarios in separate homes lets a play reset clear run diagnostics +without discarding manipulation results, and vice versa; each +manipulation run clears this home at its start so it always holds the +latest run.

+
+
+ +
+
NcDiagnosticProgress NcManipulationDiagnosticProgress { get; }
+
+ + + + + +

Property Value

+
+
NcDiagnosticProgress
+
+
+ + + + + + + + + + +

+ PacePlayer + +

+ +

Gets the pace player controlling execution pace.

+
+
+ +
+
PacePlayer PacePlayer { get; }
+
+ + + + + +

Property Value

+
+
PacePlayer
+
+
+ + + + + + + + + + +

+ StepDiagnosticProgress + +

+ +

Gets the step-aligned IMessage-channel sink.

+
+
+ +
+
StepDiagnosticProgress StepDiagnosticProgress { get; }
+
+ + + + + +

Property Value

+
+
StepDiagnosticProgress
+
+
+ + + + + + + +

@@ -381,6 +743,65 @@ Interface IMachiningService

+ + +

+ BeginNcRunner() + +

+ +

Initialises the meshed geometry for an NC run (idempotent).

+
+
+ +
+
void BeginNcRunner()
+
+ + + + + + + + + + + + + + + +

+ CheckStrokeLimitOnStep() + +

+ +

Checks the stroke limit at the current step; true if within limits.

+
+
+ +
+
bool CheckStrokeLimitOnStep()
+
+ + +

Returns

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

@@ -413,6 +834,60 @@ Interface IMachiningService + + +

+ RefreshDrawing() + +

+ +

Refreshes the visual display.

+
+
+ +
+
void RefreshDrawing()
+
+ + + + + + + + + + + + + + + +

+ UpdateIdealMillingToolOffsetTableByToolHouse() + +

+ +

Refreshes the ideal milling-tool offset table from the tool house.

+
+
+ +
+
void UpdateIdealMillingToolOffsetTableByToolHouse()
+
+ + + + + + + + + + + + +
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMotionStepIndex.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMotionStepIndex.html new file mode 100644 index 00000000..4a96fe06 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.IMotionStepIndex.html @@ -0,0 +1,215 @@ + + + + + Interface IMotionStepIndex | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Interface IMotionStepIndex +

+ +
+
Namespace
Hi.MachiningSteps
+
Assembly
HiMech.dll
+
+ +

Abstraction for an object that carries a StepIndex — the 0-based +ordinal of a machining motion step in execution order. Used as a cross-object +alignment key so a step (MachiningStep), its cutter-location +position (ClStripPos), and the messages anchored to it +(StepDiagnostic, StepScopedProgress) can be matched by the same +ordinal without depending on a concrete type.

+

+Distinct from ISentenceIndexed: that ordinal counts +NC source blocks, whereas this one counts produced motion steps — +a single source block (e.g. a canned cycle) can fan out into several steps. +

+
+
+ +
+
public interface IMotionStepIndex
+
+ + + + + + + + +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ StepIndex + +

+ +

0-based ordinal of the motion step in execution order.

+
+
+ +
+
int StepIndex { get; }
+
+ + + + + +

Property Value

+
+
int
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachineMotionStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachineMotionStep.html index 28427d9f..ecc7393a 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachineMotionStep.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachineMotionStep.html @@ -286,39 +286,6 @@ Note that the spindle information is only for milling behavior.

- - -

- AccumulatedTime - -

- -

The work time at the end of the step. -The value is StepBeginTime + StepDuration.

-
-
- -
-
public TimeSpan AccumulatedTime { get; set; }
-
- - - - - -

Property Value

-
-
TimeSpan
-
-
- - - - - - - -

@@ -383,6 +350,38 @@ The value is + +

+ BeginTimecode + +

+ +

The work time at the begin of the step.

+
+
+ +
+
public TimeSpan BeginTimecode { get; }
+
+ + + + + +

Property Value

+
+
TimeSpan
+
+
+ + + + + + + +

@@ -583,7 +582,7 @@ The value is

Gets or sets the coolant delivery mode active for this step. -Read by BuildCuttingTemperatureAndWear(SeqPhysicsBrief, MachineMotionStep, MachineMotionStep, double, SpindleCapability, IMachiningTool, Workpiece, int, Substraction, LayerMillingEngagement, MillingPhysicsBrief, CoolantHeatCondition, CoolantMode, bool) +Read by BuildCuttingTemperatureAndWear(SeqPhysicsBrief, MachineMotionStep, MachineMotionStep, double, SpindleCapability, IMachiningTool, Workpiece, int, Substraction, LayerMillingEngagement, MillingPhysicsBrief, CoolantHeatCondition, CoolantMode, bool, MillingToolPhysicsPack, Action<string>) to pick the effective convection coefficient on the temperature FEM.

@@ -737,6 +736,39 @@ to pick the effective convection coefficient on the temperature FEM.

+ + +

+ EndTimecode + +

+ +

The work time at the end of the step. +The value is BeginTimecode + StepDuration.

+
+
+ +
+
public TimeSpan EndTimecode { get; set; }
+
+ + + + + +

Property Value

+
+
TimeSpan
+
+
+ + + + + + + +

@@ -1313,38 +1345,6 @@ to pick the effective convection coefficient on the temperature FEM.

- - -

- StepBeginTime - -

- -

The work time at the begin of the step.

-
-
- -
-
public TimeSpan StepBeginTime { get; }
-
- - - - - -

Property Value

-
-
TimeSpan
-
-
- - - - - - - -

@@ -1558,8 +1558,8 @@ to pick the effective convection coefficient on the temperature FEM.

-

- GetProgramSideCuspHeight_mm(IMachiningTool) +

+ GetProgramSideCuspHeight_mm(IMachiningTool, MillingToolPhysicsPack)

@@ -1568,13 +1568,17 @@ to pick the effective convection coefficient on the temperature FEM.

-
public double GetProgramSideCuspHeight_mm(IMachiningTool millingTool)
+
public double GetProgramSideCuspHeight_mm(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack = null)

Parameters

millingTool IMachiningTool

The milling tool.

+
+
physicsPack MillingToolPhysicsPack
+

The frozen per-session physics pack of +millingTool; null computes the diameter on use.

@@ -1597,8 +1601,8 @@ to pick the effective convection coefficient on the temperature FEM.

-

- GetSideCuspList_mm(IMachiningTool) +

+ GetSideCuspList_mm(IMachiningTool, MillingToolPhysicsPack)

@@ -1607,13 +1611,17 @@ to pick the effective convection coefficient on the temperature FEM.

-
public List<double> GetSideCuspList_mm(IMachiningTool millingTool)
+
public List<double> GetSideCuspList_mm(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack = null)

Parameters

millingTool IMachiningTool

The milling tool.

+
+
physicsPack MillingToolPhysicsPack
+

The frozen per-session physics pack of +millingTool; null computes the diameter on use.

@@ -1636,8 +1644,8 @@ to pick the effective convection coefficient on the temperature FEM.

-

- GetSideCuspPhaseInterval_rad(IMachiningTool) +

+ GetSideCuspPhaseInterval_rad(IMachiningTool, MillingToolPhysicsPack)

@@ -1646,13 +1654,17 @@ to pick the effective convection coefficient on the temperature FEM.

-
public double GetSideCuspPhaseInterval_rad(IMachiningTool millingTool)
+
public double GetSideCuspPhaseInterval_rad(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack = null)

Parameters

millingTool IMachiningTool

The milling tool.

+
+
physicsPack MillingToolPhysicsPack
+

The frozen per-session physics pack of +millingTool; null computes the diameter on use.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html index 26514421..2db9bd1f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.MachiningStep.html @@ -103,7 +103,7 @@ The duration-based step property is based on the duration from previous-step to
-
public class MachiningStep : IGetIndexedFileLine, IFlexDictionaryHost<object>, IGetFeedrate, IGetSpindleSpeed, IGetRgbWithPriority
+
public class MachiningStep : IGetIndexedFileLine, IFlexDictionaryHost<object>, IGetFeedrate, IGetSpindleSpeed, IGetRgbWithPriority, ISentenceCarrier, IGetSentence, ISentenceIndexed, IMotionStepIndex
@@ -125,6 +125,10 @@ The duration-based step property is based on the duration from previous-step to + + + + @@ -200,8 +204,8 @@ The duration-based step property is based on the duration from previous-step to -

- MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[]) +

+ MachiningStep(IMachiningService, int, ISentenceCarrier, MachineMotionStep, MillingInstance, CollidedKeyPair[])

@@ -210,7 +214,7 @@ The duration-based step property is based on the duration from previous-step to
-
public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)
+
public MachiningStep(IMachiningService host, int stepIndex, ISentenceCarrier sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs)

Parameters

@@ -221,7 +225,7 @@ The duration-based step property is based on the duration from previous-step to
stepIndex int

The index of the step.

-
sourceCommand IGetSentence
+
sourceCommand ISentenceCarrier

The source command.

machineMotionStep MachineMotionStep
@@ -393,14 +397,16 @@ public double AccumulatedSpindleEnergyConsumption_kWh { get; } -

Ideal accumulated worked time by simulation. -Ideal Program duration.

+

Legacy alias for EndTimecode. The value is a +TimeSpan timecode (position from run start), so the +canonical member carries the Timecode suffix and owns the +[Present] / [JsAce] surface; this stays only as a +source-compatible delegate.

-
[Present("Time", null, PhysicsUnit.None, "G")]
-[JsAce(ClassExt = "MachiningStep")]
+    
[Obsolete("Renamed to EndTimecode.")]
 public TimeSpan AccumulatedTime { get; }
@@ -421,6 +427,44 @@ public TimeSpan AccumulatedTime { get; } + + +

+ ActualDateTime + +

+ +

Absolute controller timestamp (wall-clock DateTime) of the +step, preserved alongside ActualTimecode so the calendar +date survives. Resolved to a timecode against the project mapping anchor +(TimeMapping.MappingAnchorDateTime). null when the source row had +no actual time. View onto ActualTime.

+
+
+ +
+
[Present("Actual DateTime", "Act.DT", PhysicsUnit.None, "G")]
+[JsAce(ClassExt = "MachiningStep")]
+public DateTime? ActualDateTime { get; }
+
+ + + + + +

Property Value

+
+
DateTime?
+
+
+ + + + + + + +

@@ -428,15 +472,52 @@ public TimeSpan AccumulatedTime { get; }

+

Wall-clock stamp of the step end (the controller-recorded timeline), or +null when the scene has no measured time source (pure NC simulation). +Dense on CSV plays: original controller stamps plus machine-timeline +extrapolation marked by IsInterpolated.

+
+
+ +
+
public StepActualTime ActualTime { get; set; }
+
+ + + + + +

Property Value

+
+
StepActualTime
+
+
+ + + + + + + + + + +

+ ActualTimecode + +

+

Actual accumulated worked time. -Actual Program time.

+End Actual Timecode. +Actual Program time. +View onto ActualTime.

[Present("Actual Time", "Act.Time", PhysicsUnit.None, "G")]
 [JsAce(ClassExt = "MachiningStep")]
-public TimeSpan? ActualTime { get; set; }
+public TimeSpan? ActualTimecode { get; }
@@ -1774,6 +1855,41 @@ public Vec3d DeltaTipDeflectionOnToolRunningCoordinate_um { get; } + + +

+ EndTimecode + +

+ +

Ideal accumulated worked time by simulation. +Ideal Program duration.

+
+
+ +
+
[Present("Time", null, PhysicsUnit.None, "G")]
+[JsAce(ClassExt = "MachiningStep")]
+public TimeSpan EndTimecode { get; }
+
+ + + + + +

Property Value

+
+
TimeSpan
+
+
+ + + + + + + +

@@ -2111,6 +2227,42 @@ public double? InstantCraterWear_um { get; } + + +

+ IsActualTimeInterpolated + +

+ +

Whether the wall-clock stamp was extrapolated rather than read directly +from a controller row. View onto ActualTime; null when the +step has no wall-clock stamp at all.

+
+
+ +
+
[Present("Actual Interpolated", "Act.Int", PhysicsUnit.None, "G")]
+[JsAce(ClassExt = "MachiningStep")]
+public bool? IsActualTimeInterpolated { get; }
+
+ + + + + +

Property Value

+
+
bool?
+
+
+ + + + + + + +

@@ -2997,6 +3149,42 @@ public double? ReliefFaceCollidingVelocity_mmds { get; } + + +

+ SentenceIndex + +

+ +

Execution-order ordinal of the NC source block this step came from, +delegated from SourceCommand. This is the source block's +position — distinct from this step's own StepIndex, since one +block can expand into several steps. Returns -1 (the “not in pipeline” +sentinel) when there is no source carrier.

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

Property Value

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

@@ -3037,12 +3225,14 @@ public List<double> SideCuspList_um { get; }

-

Gets or sets the source command.

+

Gets or sets the source command — the NC-source carrier that produced this +step, exposing both the Sentence (via GetSentence()) +and the execution-order SentenceIndex.

-
public IGetSentence SourceCommand { get; set; }
+
public ISentenceCarrier SourceCommand { get; set; }
@@ -3051,7 +3241,7 @@ public List<double> SideCuspList_um { get; }

Property Value

-
IGetSentence
+
ISentenceCarrier
@@ -3915,6 +4105,38 @@ public double? GetMcValue(int index) + + +

+ GetSentence() + +

+ +

Returns the source Sentence carried by this object.

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

Returns

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

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.StepActualTime.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.StepActualTime.html new file mode 100644 index 00000000..493f6e7c --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.StepActualTime.html @@ -0,0 +1,313 @@ + + + + + Class StepActualTime | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class StepActualTime +

+ +
+
Namespace
Hi.MachiningSteps
+
Assembly
HiMech.dll
+
+ +

Wall-clock stamp of a machining step end — the controller-recorded timeline, +as opposed to the simulated machine timeline +(EndTimecode). Grouped into one optional +sub-object so scenes that never map measured data (pure NC simulation, +collision check, optimization) carry a single null reference per step. +A CSV play stamps only the first step built after each row/idle boundary +with the controller instant; the steps in between receive values +extrapolated from the latest stamp along the machine timeline and are +marked IsInterpolated.

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

Properties +

+ + + + +

+ Instant + +

+ +

Absolute controller instant of the step end; null when the source row +carried only a relative timecode.

+
+
+ +
+
public DateTime? Instant { get; set; }
+
+ + + + + +

Property Value

+
+
DateTime?
+
+
+ + + + + + + + + + +

+ IsInterpolated + +

+ +

False when the values came directly from a controller row (an original +stamp — a genuine timeline anchor); true when they were extrapolated +from the latest stamp along the machine timeline.

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

Property Value

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

+ Timecode + +

+ +

Run-relative wall-clock timecode of the step end, resolved against the +project mapping anchor (TimeMapping.MappingAnchorDateTime).

+
+
+ +
+
public TimeSpan Timecode { get; set; }
+
+ + + + + +

Property Value

+
+
TimeSpan
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.StepPresentCatalog.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.StepPresentCatalog.html new file mode 100644 index 00000000..39eff051 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.StepPresentCatalog.html @@ -0,0 +1,219 @@ + + + + + Class StepPresentCatalog | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class StepPresentCatalog +

+ +
+
Namespace
Hi.MachiningSteps
+
Assembly
HiMech.dll
+
+ +

Internal Use Only. +Expands the PresentAttribute-annotated properties of +MachiningStep into the stable presentation-key dictionary +(vector properties fan out to .X/.Y/.Z, the cutter +location to .X/.Y/.Z/.I/.J/.K).

+
+
+ +
+
public static class StepPresentCatalog
+
+ + + + +
+
Inheritance
+
+ +
StepPresentCatalog
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ BuildNativeAccessDictionary() + +

+ +

Internal Use Only. +Builds the key-to-access dictionary for the native (machine-independent) +MachiningStep presentation properties.

+
+
+ +
+
public static Dictionary<string, PropertyAccess<MachiningStep>> BuildNativeAccessDictionary()
+
+ + +

Returns

+
+
Dictionary<string, PropertyAccess<MachiningStep>>
+

The dictionary mapping stable presentation keys to their property access.

+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html index cbbef3bf..447c66ad 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MachiningSteps.html @@ -129,6 +129,28 @@ The duration-based step property is based on the duration from previous-step to
PropertyAccess<TData>

Provides access to properties of a milling step with presentation information.

+
+
+
+
StepActualTime
+

Wall-clock stamp of a machining step end — the controller-recorded timeline, +as opposed to the simulated machine timeline +(EndTimecode). Grouped into one optional +sub-object so scenes that never map measured data (pure NC simulation, +collision check, optimization) carry a single null reference per step. +A CSV play stamps only the first step built after each row/idle boundary +with the controller instant; the steps in between receive values +extrapolated from the latest stamp along the machine timeline and are +marked IsInterpolated.

+
+
+
+
StepPresentCatalog
+

Internal Use Only. +Expands the PresentAttribute-annotated properties of +MachiningStep into the stable presentation-key dictionary +(vector properties fan out to .X/.Y/.Z, the cutter +location to .X/.Y/.Z/.I/.J/.K).

@@ -142,6 +164,21 @@ Interfaces
IMachiningService

Represents a host interface for milling steps that provides access to milling equipment and related resources.

+
+
+
+
IMotionStepIndex
+

Abstraction for an object that carries a StepIndex — the 0-based +ordinal of a machining motion step in execution order. Used as a cross-object +alignment key so a step (MachiningStep), its cutter-location +position (ClStripPos), and the messages anchored to it +(StepDiagnostic, StepScopedProgress) can be matched by the same +ordinal without depending on a concrete type.

+

+Distinct from ISentenceIndexed: that ordinal counts +NC source blocks, whereas this one counts produced motion steps — +a single source block (e.g. a canned cycle) can fan out into several steps. +

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.CsvNcStep.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.CsvNcStep.html index 72e899be..069500ed 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.CsvNcStep.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.CsvNcStep.html @@ -232,19 +232,54 @@ Class CsvNcStep

- + -

- ActualTime +

+ ActualDateTime

-

Gets or sets the time value for this step.

+

Optional absolute controller instant captured at parse time; null +when the row was relative. Resolved to ActualTimecode against +the project mapping anchor (timecode-first when both are present).

-
public TimeSpan ActualTime { get; set; }
+
public DateTime? ActualDateTime { get; set; }
+
+ + + + + +

Property Value

+
+
DateTime?
+
+
+ + + + + + + + + + +

+ ActualTimecode + +

+ +

Gets or sets the relative timecode for this step (position from run start). +Authoritative for interpolation / arithmetic.

+
+
+ +
+
public TimeSpan ActualTimecode { get; set; }
@@ -399,8 +434,8 @@ Class CsvNcStep -

- MapSingleByCsvFile(ClStrip, string, string, IProgress<object>) +

+ MapSingleByCsvFile(ClStrip, string, string, IProgress<IMessage>, Func<DateTime, TimeSpan>)

@@ -412,7 +447,7 @@ Builds a collection of CsvNcStep instances from a CSV file.

-
public static void MapSingleByCsvFile(ClStrip clStrip, string baseDirectory, string relFile, IProgress<object> messageHost)
+
public static void MapSingleByCsvFile(ClStrip clStrip, string baseDirectory, string relFile, IProgress<IMessage> messageProgress, Func<DateTime, TimeSpan> toTimecode = null)

Parameters

@@ -426,8 +461,15 @@ Builds a collection of CsvNcStep instances from a CSV file.

relFile string

The relative file path to the CSV file.

-
messageHost IProgress<object>
+
messageProgress IProgress<IMessage>

The message host for logging.

+
+
toTimecode Func<DateTime, TimeSpan>
+

Converter from an absolute controller instant to +a run-relative timecode (the project mapping anchor's converter). Used +when the actual-time cell is a DateTime rather than a bare +timecode; timecode-first when both are parseable. Null falls back to the +legacy timecode / sim-time parse.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.IAccelerationShot.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.IAccelerationShot.html index 6d1c13df..f80c47e3 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.IAccelerationShot.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.IAccelerationShot.html @@ -103,7 +103,7 @@ Extends the ITimeShot interface to include acceleration data in multiple units.<
-
public interface IAccelerationShot : ITimeShot, ITimeGetter
+
public interface IAccelerationShot : ITimeShot, ITimecoded
@@ -122,7 +122,7 @@ Extends the ITimeShot interface to include acceleration data in multiple units.< ITimeShot.GetScaled(double)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.IForceShot.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.IForceShot.html index 727291bb..e6a053be 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.IForceShot.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.IForceShot.html @@ -103,7 +103,7 @@ Extends the ITimeShot interface to include force vector data.

-
public interface IForceShot : ITimeShot, ITimeGetter
+
public interface IForceShot : ITimeShot, ITimecoded
@@ -122,7 +122,7 @@ Extends the ITimeShot interface to include force vector data.

ITimeShot.GetScaled(double)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.IMomentShot.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.IMomentShot.html index fd5ff85f..b3f048cb 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.IMomentShot.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.IMomentShot.html @@ -103,7 +103,7 @@ Extends the ITimeShot interface to include moment vector data.

-
public interface IMomentShot : ITimeShot, ITimeGetter
+
public interface IMomentShot : ITimeShot, ITimecoded
@@ -122,7 +122,7 @@ Extends the ITimeShot interface to include moment vector data.

ITimeShot.GetScaled(double)
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.ITimeShot.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.ITimeShot.html index a08d64a8..c65bf5fd 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.ITimeShot.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.ITimeShot.html @@ -103,7 +103,7 @@ This interface provides a foundation for time-series data with vector operations
-
public interface ITimeShot : ITimeGetter
+
public interface ITimeShot : ITimecoded
@@ -116,7 +116,7 @@ This interface provides a foundation for time-series data with vector operations
Inherited Members
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.MappingUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.MappingUtil.html index 4c1328a9..0e2470ba 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.MappingUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.MappingUtil.html @@ -155,13 +155,50 @@ logged controller data onto + ActualDateTimeTag + + + +

Absolute controller-instant column written alongside +ActualTimecodeTag (the MachiningStep.ActualDateTime +member) so the calendar date survives. Pinned to a literal so renaming +the member does not change the CSV header; optional companion column.

+
+
+ +
+
public const string ActualDateTimeTag = "ActualDateTime"
+
+ + + + +

Field Value

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

ActualTimeTag

-

Gets or sets the column title for actual time in the CSV. -The actual time basically obtained by the external data from controller.

+

Legacy single-column title for actual time in the CSV (a bare +TimeSpan timecode or an absolute +DateTime). The step-file writer now splits this into +the ActualTimecodeTag + ActualDateTimeTag +pair; this column is still read for pre-split files.

@@ -187,6 +224,72 @@ The actual time basically obtained by the external data from controller.

+

+ ActualTimecodeTag + +

+ +

Run-relative actual timecode column written by the step-file exporter +(the MachiningStep.ActualTimecode member). Pinned to a literal so +renaming the member does not change the CSV header; preferred over the +legacy single ActualTimeTag column when present.

+
+
+ +
+
public const string ActualTimecodeTag = "ActualTimecode"
+
+ + + + +

Field Value

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

+ CoolantTag + +

+ +

Coolant tag for CSV parsing. The cell holds the coolant mode name +(e.g. Flood / Mist / Off) or a boolean on/off flag.

+
+
+ +
+
public const string CoolantTag = "Coolant"
+
+ + + + +

Field Value

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

CutterLocationPrefix @@ -471,12 +574,49 @@ The actual time basically obtained by the external data from controller.

-

Alternative tag for ActualTimeTag if the value of ActualTime is null.

+

Fallback time column when ActualTimeTag is absent or +unparseable: the simulated end timecode. Pinned to a literal (decoupled +from the model member name) so renaming the member does not change the +CSV header; pre-rename files that used the old “AccumulatedTime” header +are still read via SimTimeTagLegacy / GetSimTimeCell(IReadOnlyDictionary<string, string>).

-
public const string SimTimeTag = "AccumulatedTime"
+
public const string SimTimeTag = "EndTimecode"
+
+ + + + +

Field Value

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

+ SimTimeTagLegacy + +

+ +

Legacy CSV header accepted as a fallback for SimTimeTag +(files written before the EndTimecode rename used the member name +AccumulatedTime).

+
+
+ +
+
public const string SimTimeTagLegacy = "AccumulatedTime"
@@ -683,6 +823,50 @@ The time generally obtained by the simulated data.

+

Methods +

+ + + + +

+ GetSimTimeCell(IReadOnlyDictionary<string, string>) + +

+ +

Returns the de-quoted simulated-time cell from row, +reading SimTimeTag first and falling back to the legacy +SimTimeTagLegacy header, or null when neither column +is present.

+
+
+ +
+
public static string GetSimTimeCell(IReadOnlyDictionary<string, string> row)
+
+ +

Parameters

+
+
row IReadOnlyDictionary<string, string>
+
+
+ +

Returns

+
+
string
+
+
+ + + + + + + + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.StepTimeShotUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.StepTimeShotUtil.html index e3f9ae80..692b4f26 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.StepTimeShotUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.StepTimeShotUtil.html @@ -155,8 +155,8 @@ Class StepTimeShotUtil -

- GetStepToShotsDictionaryByActualTime(ClStrip, CycleSamplingMode, string, GetTimeShotByFileDelegate, IDictionary<int, List<ITimeShot>>, IProgress<object>, CancellationToken?) +

+ GetStepToShotsDictionaryByActualTime(ClStrip, CycleSamplingMode, string, GetTimeShotByFileDelegate, IDictionary<int, List<ITimeShot>>, IProgress<IMessage>, CancellationToken?)

@@ -165,7 +165,7 @@ Class StepTimeShotUtil
-
public static void GetStepToShotsDictionaryByActualTime(ClStrip clStrip, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode, string timeShotRelFile, StepTimeShotUtil.GetTimeShotByFileDelegate getTimeShotByRelFileFunc, IDictionary<int, List<ITimeShot>> dstStepToShotsDictionary, IProgress<object> sessionMessageHost, CancellationToken? cancellationToken)
+
public static void GetStepToShotsDictionaryByActualTime(ClStrip clStrip, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode, string timeShotRelFile, StepTimeShotUtil.GetTimeShotByFileDelegate getTimeShotByRelFileFunc, IDictionary<int, List<ITimeShot>> dstStepToShotsDictionary, IProgress<IMessage> messageProgress, CancellationToken? cancellationToken)

Parameters

@@ -185,7 +185,7 @@ Class StepTimeShotUtil
dstStepToShotsDictionary IDictionary<int, List<ITimeShot>>

The destination dictionary to store the mapping.

-
sessionMessageHost IProgress<object>
+
messageProgress IProgress<IMessage>

The session message host for logging.

cancellationToken CancellationToken?
@@ -206,8 +206,8 @@ Class StepTimeShotUtil -

- GetTimeShotByFile(string, Action<int>, CancellationToken?) +

+ GetTimeShotByFile(string, Action<int>, CancellationToken?, Func<DateTime, TimeSpan>)

@@ -216,7 +216,7 @@ Class StepTimeShotUtil
-
public static List<ITimeShot> GetTimeShotByFile(string file, Action<int> lineReaded, CancellationToken? cancellationToken = null)
+
public static List<ITimeShot> GetTimeShotByFile(string file, Action<int> lineReaded, CancellationToken? cancellationToken = null, Func<DateTime, TimeSpan> toTimecode = null)

Parameters

@@ -229,6 +229,9 @@ Class StepTimeShotUtil
cancellationToken CancellationToken?

Optional cancellation token to cancel the reading operation.

+
+
toTimecode Func<DateTime, TimeSpan>
+

Converter from an absolute sample DateTime to its timecode TimeSpan (used for step timing).

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.TimeMapping.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.TimeMapping.html index 7c081b59..f7702260 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.TimeMapping.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mapping.TimeMapping.html @@ -346,7 +346,7 @@ which portion of a measurement file corresponds to a particular machining operat
-
public Dictionary<string, FileTimeSection> KeyToRelFileTimeSectionDictionary { get; set; }
+
public Dictionary<string, IFileTimeSection> KeyToRelFileTimeSectionDictionary { get; set; }
@@ -355,7 +355,43 @@ which portion of a measurement file corresponds to a particular machining operat

Property Value

-
Dictionary<string, FileTimeSection>
+
Dictionary<string, IFileTimeSection>
+
+
+ + + + + + + + + + +

+ MappingAnchorDateTime + +

+ +

Project-scoped anchor for converting an absolute-time +(FileDateTimeSection) window into a relative timecode. Set +it to the earliest controller instant (the broadest recorded stream +covers everything else) so every dateTime - anchor is non-negative. +null until set; absolute sections cannot be resolved while it is null.

+
+
+ +
+
public DateTime? MappingAnchorDateTime { get; set; }
+
+ + + + + +

Property Value

+
+
DateTime?
@@ -473,10 +509,100 @@ It matches the class name to maintain consistency between code and XML represent + + +

+ AddTimeDataByFile(string, string, double, double) + +

+ + +
+ +
+
public bool AddTimeDataByFile(string key, string relFile, double beginTime, double endTime)
+
+ +

Parameters

+
+
key string
+
+
relFile string
+
+
beginTime double
+
+
endTime double
+
+
+ +

Returns

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

+ AddTimeDataByFile(string, string, string, string) + +

+ +

Adds a key → file-time-section entry to +KeyToRelFileTimeSectionDictionary. Begin/end texts are parsed +timecode-first: seconds or HH:mm:ssFileTimecodeSection; +a date-bearing string → FileDateTimeSection. Returns false +when the key already exists.

+
+
+ +
+
public bool AddTimeDataByFile(string key, string relFile, string beginTimeText, string endTimeText)
+
+ +

Parameters

+
+
key string
+
+
relFile string
+
+
beginTimeText string
+
+
endTimeText string
+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + -

- CallTimeShotByRelFile(string, IProgress<object>, CancellationToken?) +

+ CallTimeShotByRelFile(string, IProgress<IMessage>, CancellationToken?)

@@ -485,7 +611,7 @@ It matches the class name to maintain consistency between code and XML represent
-
public List<ITimeShot> CallTimeShotByRelFile(string relFile, IProgress<object> messageHost, CancellationToken? cancellationToken = null)
+
public List<ITimeShot> CallTimeShotByRelFile(string relFile, IProgress<IMessage> messageProgress, CancellationToken? cancellationToken = null)

Parameters

@@ -493,7 +619,7 @@ It matches the class name to maintain consistency between code and XML represent
relFile string

The relative path to the file containing time shots.

-
messageHost IProgress<object>
+
messageProgress IProgress<IMessage>

The message host for logging progress.

cancellationToken CancellationToken?
@@ -515,7 +641,7 @@ If the file is already being loaded by another thread, waits for that operation -

Remarks

+

Remarks

This method is thread-safe and ensures each file is only read once, even with concurrent access. Any exceptions during file reading are captured and can be inspected through the task's exception property.

@@ -676,8 +802,8 @@ Any exceptions during file reading are captured and can be inspected through the -

- LoadTimeShotFiles(IProgress<object>, CancellationToken?) +

+ LoadTimeShotFiles(IProgress<IMessage>, CancellationToken?)

@@ -686,12 +812,12 @@ Any exceptions during file reading are captured and can be inspected through the
-
public void LoadTimeShotFiles(IProgress<object> messageHost, CancellationToken? cancellationToken = null)
+
public void LoadTimeShotFiles(IProgress<IMessage> messageProgress, CancellationToken? cancellationToken = null)

Parameters

-
messageHost IProgress<object>
+
messageProgress IProgress<IMessage>

The message host for logging progress.

cancellationToken CancellationToken?
@@ -766,8 +892,8 @@ Any exceptions during file reading are captured and can be inspected through the -

- Map(Range<int>, FileTimeSection, CycleSamplingMode, ClStrip, IProgress<object>, CancellationToken?) +

+ Map(Range<int>, IFileTimeSection, CycleSamplingMode, ClStrip, IProgress<IMessage>, CancellationToken?)

@@ -777,7 +903,7 @@ This method is thread-safe and can be called concurrently.

-
public void Map(Range<int> stepSection, FileTimeSection relFileTimeSection, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode, ClStrip clStrip, IProgress<object> messageHost, CancellationToken? cancellationToken = null)
+
public void Map(Range<int> stepSection, IFileTimeSection relFileTimeSection, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode, ClStrip clStrip, IProgress<IMessage> messageProgress, CancellationToken? cancellationToken = null)

Parameters

@@ -785,7 +911,7 @@ This method is thread-safe and can be called concurrently.

stepSection Range<int>

The range of step indices to process.

-
relFileTimeSection FileTimeSection
+
relFileTimeSection IFileTimeSection

The file time section containing file path and time range.

cycleSamplingMode StepTimeShotUtil.CycleSamplingMode
@@ -794,7 +920,7 @@ This method is thread-safe and can be called concurrently.

clStrip ClStrip

The cutter location strip to map.

-
messageHost IProgress<object>
+
messageProgress IProgress<IMessage>

The message host for logging progress.

cancellationToken CancellationToken?
@@ -815,8 +941,8 @@ This method is thread-safe and can be called concurrently.

-

- MapSeriesByActualTime(string, CycleSamplingMode, ClStrip, IProgress<object>, CancellationToken?) +

+ MapSeriesByActualTime(string, CycleSamplingMode, ClStrip, IProgress<IMessage>, CancellationToken?)

@@ -825,7 +951,7 @@ This method is thread-safe and can be called concurrently.

-
public void MapSeriesByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode, ClStrip clStrip, IProgress<object> messageHost, CancellationToken? cancellationToken = null)
+
public void MapSeriesByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode, ClStrip clStrip, IProgress<IMessage> messageProgress, CancellationToken? cancellationToken = null)

Parameters

@@ -839,7 +965,7 @@ This method is thread-safe and can be called concurrently.

clStrip ClStrip

The cutter location strip to map.

-
messageHost IProgress<object>
+
messageProgress IProgress<IMessage>

The session message host for logging.

cancellationToken CancellationToken?
@@ -892,6 +1018,51 @@ This method is thread-safe and can be called concurrently.

+ + +

+ ToTimecode(DateTime) + +

+ +

Converts an absolute controller instant to a run-relative timecode against +MappingAnchorDateTime. The anchor is seeded set-once +(date-only, so same-day data lines up with the controller's time-of-day) +the first time any conversion is requested, unless it was already loaded +from project XML or set explicitly. This is the single place the anchor +set-logic lives — every DateTime → timecode site calls here rather +than re-deriving instant - anchor.

+
+
+ +
+
public TimeSpan ToTimecode(DateTime instant)
+
+ +

Parameters

+
+
instant DateTime
+

The absolute controller instant to convert.

+
+
+ +

Returns

+
+
TimeSpan
+

The instant expressed as a timecode from the anchor.

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

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mappings.FileDateTimeSection.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mappings.FileDateTimeSection.html new file mode 100644 index 00000000..0641f43c --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mappings.FileDateTimeSection.html @@ -0,0 +1,594 @@ + + + + + Class FileDateTimeSection | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class FileDateTimeSection +

+ +
+
Namespace
Hi.Mappings
+
Assembly
HiGeom.dll
+
+ +

(B) Time window expressed in absolute DateTime only.

+
+
+ +
+
public sealed class FileDateTimeSection : IFileTimeSection, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
FileDateTimeSection
+
+
+ +
+
Implements
+
+ + +
+
+ + +
+
Inherited Members
+
+ + + + + +
+ +
+
Extension Methods
+
+ + + + + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ FileDateTimeSection() + +

+ +

Initializes an empty instance.

+
+
+ +
+
public FileDateTimeSection()
+
+ + + + + + + + + + + + + + + +

+ FileDateTimeSection(FileTimecodeDateTimeSection) + +

+ +

Projects a both-form (C) section onto its absolute form (independent copy).

+
+
+ +
+
public FileDateTimeSection(FileTimecodeDateTimeSection c)
+
+ +

Parameters

+
+
c FileTimecodeDateTimeSection
+
+
+ + + + + + + + + + + + + + +

+ FileDateTimeSection(string, DateTime, DateTime) + +

+ +

Initializes from a file and begin/end instants.

+
+
+ +
+
public FileDateTimeSection(string file, DateTime beginDateTime, DateTime endDateTime)
+
+ +

Parameters

+
+
file string
+
+
beginDateTime DateTime
+
+
endDateTime DateTime
+
+
+ + + + + + + + + + + + + + +

+ FileDateTimeSection(XElement) + +

+ +

Initializes from XML.

+
+
+ +
+
public FileDateTimeSection(XElement src)
+
+ +

Parameters

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

Properties +

+ + + + +

+ BeginDateTime + +

+ +

Window start as an absolute controller instant.

+
+
+ +
+
public DateTime BeginDateTime { get; set; }
+
+ + + + + +

Property Value

+
+
DateTime
+
+
+ + + + + + + + + + +

+ EndDateTime + +

+ +

Window end as an absolute controller instant.

+
+
+ +
+
public DateTime EndDateTime { get; set; }
+
+ + + + + +

Property Value

+
+
DateTime
+
+
+ + + + + + + + + + +

+ File + +

+ +

Relative path of the referenced (sensor) file.

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

Property Value

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

+ XName + +

+ +

XML element name for XFactory 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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type with the factory. Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + + +

+ ToString() + +

+ +

Returns a string that represents the current object.

+
+
+ +
+
public override string ToString()
+
+ + +

Returns

+
+
string
+

A string that represents the current object.

+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mappings.FileTimecodeDateTimeSection.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mappings.FileTimecodeDateTimeSection.html new file mode 100644 index 00000000..078ad1e3 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mappings.FileTimecodeDateTimeSection.html @@ -0,0 +1,633 @@ + + + + + Class FileTimecodeDateTimeSection | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class FileTimecodeDateTimeSection +

+ +
+
Namespace
Hi.Mappings
+
Assembly
HiGeom.dll
+
+ +

(C) Time window carrying both forms. The timecode form is authoritative for +mapping (timecode-first); the absolute form is retained for the anchor and +for projecting to a single-form section (new FileTimecodeSection(c) / +new FileDateTimeSection(c)) when the two forms do not agree.

+
+
+ +
+
public sealed class FileTimecodeDateTimeSection : IFileTimeSection, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
FileTimecodeDateTimeSection
+
+
+ +
+
Implements
+
+ + +
+
+ + +
+
Inherited Members
+
+ + + + + +
+ +
+
Extension Methods
+
+ + + + + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ FileTimecodeDateTimeSection() + +

+ +

Initializes an empty instance.

+
+
+ +
+
public FileTimecodeDateTimeSection()
+
+ + + + + + + + + + + + + + + +

+ FileTimecodeDateTimeSection(string, TimeSpan, TimeSpan, DateTime, DateTime) + +

+ +

Initializes from a file, a timecode range and an absolute range.

+
+
+ +
+
public FileTimecodeDateTimeSection(string file, TimeSpan beginTimecode, TimeSpan endTimecode, DateTime beginDateTime, DateTime endDateTime)
+
+ +

Parameters

+
+
file string
+
+
beginTimecode TimeSpan
+
+
endTimecode TimeSpan
+
+
beginDateTime DateTime
+
+
endDateTime DateTime
+
+
+ + + + + + + + + + + + + + +

+ FileTimecodeDateTimeSection(XElement) + +

+ +

Initializes from XML.

+
+
+ +
+
public FileTimecodeDateTimeSection(XElement src)
+
+ +

Parameters

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

Properties +

+ + + + +

+ BeginDateTime + +

+ +

Window start as an absolute controller instant.

+
+
+ +
+
public DateTime BeginDateTime { get; set; }
+
+ + + + + +

Property Value

+
+
DateTime
+
+
+ + + + + + + + + + +

+ BeginTimecode + +

+ +

Window start as a timecode (authoritative for mapping).

+
+
+ +
+
public TimeSpan BeginTimecode { get; set; }
+
+ + + + + +

Property Value

+
+
TimeSpan
+
+
+ + + + + + + + + + +

+ EndDateTime + +

+ +

Window end as an absolute controller instant.

+
+
+ +
+
public DateTime EndDateTime { get; set; }
+
+ + + + + +

Property Value

+
+
DateTime
+
+
+ + + + + + + + + + +

+ EndTimecode + +

+ +

Window end as a timecode (authoritative for mapping).

+
+
+ +
+
public TimeSpan EndTimecode { get; set; }
+
+ + + + + +

Property Value

+
+
TimeSpan
+
+
+ + + + + + + + + + +

+ File + +

+ +

Relative path of the referenced (sensor) file.

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

Property Value

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

+ XName + +

+ +

XML element name for XFactory 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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type with the factory. Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + + +

+ ToString() + +

+ +

Returns a string that represents the current object.

+
+
+ +
+
public override string ToString()
+
+ + +

Returns

+
+
string
+

A string that represents the current object.

+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mappings.FileTimeSection.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mappings.FileTimecodeSection.html similarity index 61% rename from App/wwwroot/HiAPI-docsite/api/Hi.Mappings.FileTimeSection.html rename to App/wwwroot/HiAPI-docsite/api/Hi.Mappings.FileTimecodeSection.html index 000271a5..14af962b 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mappings.FileTimeSection.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mappings.FileTimecodeSection.html @@ -2,11 +2,11 @@ - Class FileTimeSection | HiAPI-C# 2025 + Class FileTimecodeSection | HiAPI-C# 2025 - + - + @@ -84,12 +84,12 @@

-
+
-

-Class FileTimeSection +

+Class FileTimecodeSection

@@ -97,12 +97,12 @@ Class FileTimeSection
Assembly
HiGeom.dll
-

Represents a section of a file defined by a time range.

+

(A) Time window expressed in relative TimeSpan timecodes only.

-
public class FileTimeSection : IMakeXmlSource
+
public sealed class FileTimecodeSection : IFileTimeSection, IMakeXmlSource
@@ -112,13 +112,14 @@ Class FileTimeSection
Inheritance
-
FileTimeSection
+
FileTimecodeSection
Implements
+
@@ -139,9 +140,6 @@ Class FileTimeSection - @@ -190,19 +188,19 @@ Class FileTimeSection - + -

- FileTimeSection() +

+ FileTimecodeSection()

-

Initializes a new instance of the FileTimeSection class.

+

Initializes an empty instance.

-
public FileTimeSection()
+
public FileTimecodeSection()
@@ -217,29 +215,25 @@ Class FileTimeSection - + -

- FileTimeSection(string, Range<TimeSpan>) +

+ FileTimecodeSection(FileTimecodeDateTimeSection)

-

Initializes a new instance of the FileTimeSection class with a file and time range.

+

Projects a both-form (C) section onto its timecode form (independent copy).

-
public FileTimeSection(string file, Range<TimeSpan> range)
+
public FileTimecodeSection(FileTimecodeDateTimeSection c)

Parameters

-
file string
-

The file path.

-
-
range Range<TimeSpan>
-

The time range.

-
+
c FileTimecodeDateTimeSection
+
@@ -253,32 +247,27 @@ Class FileTimeSection - + -

- FileTimeSection(string, TimeSpan, TimeSpan) +

+ FileTimecodeSection(string, Range<TimeSpan>)

-

Initializes a new instance of the FileTimeSection class with a file and begin/end times.

+

Initializes from a file and a timecode range.

-
public FileTimeSection(string file, TimeSpan beginTime, TimeSpan endTime)
+
public FileTimecodeSection(string file, Range<TimeSpan> timeRange)

Parameters

file string
-

The file path.

-
-
beginTime TimeSpan
-

The begin time.

-
-
endTime TimeSpan
-

The end time.

-
+
+
timeRange Range<TimeSpan>
+
@@ -292,26 +281,61 @@ Class FileTimeSection - + -

- FileTimeSection(XElement) +

+ FileTimecodeSection(string, TimeSpan, TimeSpan)

-

Initializes a new instance of the FileTimeSection class from XML.

+

Initializes from a file and begin/end timecodes.

-
public FileTimeSection(XElement src)
+
public FileTimecodeSection(string file, TimeSpan beginTimecode, TimeSpan endTimecode)
+
+ +

Parameters

+
+
file string
+
+
beginTimecode TimeSpan
+
+
endTimecode TimeSpan
+
+
+ + + + + + + + + + + + + + +

+ FileTimecodeSection(XElement) + +

+ +

Initializes from XML; accepts new BeginTimecode and legacy BeginTime / BeginTime_s.

+
+
+ +
+
public FileTimecodeSection(XElement src)

Parameters

src XElement
-

The XML element containing the file time section data.

-
+
@@ -325,23 +349,58 @@ Class FileTimeSection +

Fields +

+ + + +

+ LegacyXName + +

+ +

Legacy element name; pre-rename projects wrote <FileTimeSection> for this form.

+
+
+ +
+
public const string LegacyXName = "FileTimeSection"
+
+ + + + +

Field Value

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

Properties

- + -

- BeginTime +

+ BeginTimecode

-

Gets or sets the begin time as a TimeSpan.

+

Window start as a timecode (position from run start).

-
public TimeSpan BeginTime { get; set; }
+
public TimeSpan BeginTimecode { get; set; }
@@ -361,83 +420,19 @@ Class FileTimeSection - + -

- BeginTime_s +

+ EndTimecode

-

Gets or sets the begin time in seconds.

+

Window end as a timecode (position from run start).

-
public double BeginTime_s { get; set; }
-
- - - - - -

Property Value

-
-
double
-
-
- - - - - - - - - - -

- Duration_s - -

- -

Gets the duration in seconds.

-
-
- -
-
public double Duration_s { get; }
-
- - - - - -

Property Value

-
-
double
-
-
- - - - - - - - - - -

- EndTime - -

- -

Gets or sets the end time as a TimeSpan.

-
-
- -
-
public TimeSpan EndTime { get; set; }
+
public TimeSpan EndTimecode { get; set; }
@@ -457,46 +452,14 @@ Class FileTimeSection - + -

- EndTime_s - -

- -

Gets or sets the end time in seconds.

-
-
- -
-
public double EndTime_s { get; set; }
-
- - - - - -

Property Value

-
-
double
-
-
- - - - - - - - - - -

+

File

-

Gets or sets the file path.

+

Relative path of the referenced (sensor) file.

@@ -521,46 +484,14 @@ Class FileTimeSection - + -

- PrimaryTimeOption - -

- -

Gets or sets the primary time option for XML serialization.

-
-
- -
-
public FileTimeSection.TimeOption PrimaryTimeOption { get; set; }
-
- - - - - -

Property Value

-
-
FileTimeSection.TimeOption
-
-
- - - - - - - - - - -

+

TimeRange

-

Gets or sets the time range.

+

The timecode range backing BeginTimecode / EndTimecode.

@@ -585,14 +516,14 @@ Class FileTimeSection - + -

+

XName

-

Name for XML IO.

+

XML element name for XFactory registration.

@@ -621,9 +552,9 @@ Class FileTimeSection - + -

+

MakeXmlSource(string, string, bool)

@@ -663,7 +594,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.

@@ -672,16 +603,14 @@ Since the folder can be moving with the configuration file.

- + -

+

Reg(XFactory)

-

Registers this type's deserializer with the given XFactory -(or Default when factory is -null). Idempotent.

+

Registers this type (and its legacy element name) with the factory. Idempotent.

@@ -706,9 +635,9 @@ Since the folder can be moving with the configuration file.

- + -

+

ToString()

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

+Interface IFileTimeSection +

+ +
+
Namespace
Hi.Mappings
+
Assembly
HiGeom.dll
+
+ +

A file plus the time window of it that maps onto a range of machining steps. +The window is expressed in whichever form the referenced sensor file uses — +a relative TimeSpan timecode, an absolute DateTime, +or both. Concrete forms: FileTimecodeSection (A), +FileDateTimeSection (B), FileTimecodeDateTimeSection (C).

+

+These are pure data carriers — turning an absolute DateTime form +into a relative timecode is done once at the mapping boundary against the +project-scoped mapping anchor, not by a method here. +

+
+
+ +
+
public interface IFileTimeSection : IMakeXmlSource
+
+ + + + + + + +
+
Inherited Members
+
+ +
+ +
+
Extension Methods
+
+ + + + + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ File + +

+ +

Relative path of the referenced (sensor) file.

+
+
+ +
+
string File { get; set; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mappings.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mappings.html index 3ff0e1a8..dcf3abb3 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mappings.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mappings.html @@ -95,16 +95,38 @@ Classes
-
FileTimeSection
-

Represents a section of a file defined by a time range.

+
FileDateTimeSection
+

(B) Time window expressed in absolute DateTime only.

-

-Enums +
+
FileTimecodeDateTimeSection
+

(C) Time window carrying both forms. The timecode form is authoritative for +mapping (timecode-first); the absolute form is retained for the anchor and +for projecting to a single-form section (new FileTimecodeSection(c) / +new FileDateTimeSection(c)) when the two forms do not agree.

+
+
+
+
FileTimecodeSection
+

(A) Time window expressed in relative TimeSpan timecodes only.

+
+
+

+Interfaces

-
FileTimeSection.TimeOption
-

Defines options for representing time values.

+
IFileTimeSection
+

A file plus the time window of it that maps onto a range of machining steps. +The window is expressed in whichever form the referenced sensor file uses — +a relative TimeSpan timecode, an absolute DateTime, +or both. Concrete forms: FileTimecodeSection (A), +FileDateTimeSection (B), FileTimecodeDateTimeSection (C).

+

+These are pure data carriers — turning an absolute DateTime form +into a relative timecode is done once at the mapping boundary against the +project-scoped mapping anchor, not by a method here. +

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.GeneralMechanism.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.GeneralMechanism.html index ed063549..4bf35a41 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.GeneralMechanism.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.GeneralMechanism.html @@ -240,8 +240,8 @@ Class GeneralMechanism -

- GeneralMechanism(XElement, string, IProgress<object>) +

+ GeneralMechanism(XElement, string, IProgress<IMessage>)

@@ -250,7 +250,7 @@ Class GeneralMechanism
-
public GeneralMechanism(XElement src, string baseDirectory, IProgress<object> progress)
+
public GeneralMechanism(XElement src, string baseDirectory, IProgress<IMessage> progress)

Parameters

@@ -261,7 +261,7 @@ Class GeneralMechanism
baseDirectory string

The base directory for resolving relative file paths.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.IGetAnchorToSolidDictionary.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.IGetAnchorToSolidDictionary.html index 38b30be5..963e4a03 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.IGetAnchorToSolidDictionary.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.IGetAnchorToSolidDictionary.html @@ -186,7 +186,7 @@ Interface IGetAnchorToSolidDictionary -

Warms NativeSmoothTopoStl for every solid returned by GetAnchorToSolidDictionary() (parallel).

+

Warms SmoothTopoStl3d for every solid returned by GetAnchorToSolidDictionary() (parallel).

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.Asmb.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.Asmb.html index 764a3fac..9d839e32 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.Asmb.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.Asmb.html @@ -536,8 +536,8 @@ Class Asmb -

- CallAsmb(XElement, string, Dictionary<Guid, Asmb>, Dictionary<Guid, Anchor>, Dictionary<Guid, Branch>, IProgress<object>) +

+ CallAsmb(XElement, string, Dictionary<Guid, Asmb>, Dictionary<Guid, Anchor>, Dictionary<Guid, Branch>, IProgress<IMessage>)

@@ -548,7 +548,7 @@ the members will be generated; otherwise, the existed members are applied.

-
public static Asmb CallAsmb(XElement asmbXml, string baseDirectory, Dictionary<Guid, Asmb> asmbs = null, Dictionary<Guid, Anchor> ancs = null, Dictionary<Guid, Branch> brns = null, IProgress<object> progress = null)
+
public static Asmb CallAsmb(XElement asmbXml, string baseDirectory, Dictionary<Guid, Asmb> asmbs = null, Dictionary<Guid, Anchor> ancs = null, Dictionary<Guid, Branch> brns = null, IProgress<IMessage> progress = null)

Parameters

@@ -568,7 +568,7 @@ the members will be generated; otherwise, the existed members are applied.

brns Dictionary<Guid, Branch>

existed branch map

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.DynamicFreeform.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.DynamicFreeform.html index b906bbce..244a9bbd 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.DynamicFreeform.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.DynamicFreeform.html @@ -621,8 +621,8 @@ Since the folder can be moving with the configuration file.

-

Convert StaticFreeform to presentation DTO (Data Transfer Object) for JSON serialization. -The returned object includes type metadata for web API presentation.

+

Convert to a static-freeform matrix snapshot DTO (Data Transfer Object) for JSON +serialization; presented with the StaticFreeform type marker.

@@ -634,7 +634,7 @@ The returned object includes type metadata for web API presentation.

Returns

object
-

DTO object with type and matrix properties

+

DTO dictionary with Type and Matrix keys

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.DynamicRotation.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.DynamicRotation.html index df6e6e9d..ba1428e3 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.DynamicRotation.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.DynamicRotation.html @@ -766,7 +766,7 @@ The returned object includes type metadata for web API presentation.

Returns

object
-

DTO object with type, axis, angleDeg, and pivot properties

+

DTO dictionary with Type, Axis, Angle_deg, and Pivot keys

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.DynamicTranslation.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.DynamicTranslation.html index 3082dab8..aa951086 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.DynamicTranslation.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.DynamicTranslation.html @@ -698,7 +698,7 @@ The returned object includes type metadata for web API presentation.

Returns

object
-

DTO object with type, axis, and step properties

+

DTO dictionary with Type, Axis, and Step keys

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.GeneralTransform.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.GeneralTransform.html index 4605e23b..173c95d5 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.GeneralTransform.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.GeneralTransform.html @@ -692,7 +692,7 @@ The returned object includes type metadata for web API presentation.

Returns

object
-

DTO object with type, scale, rotation, and translation properties

+

DTO dictionary with Type, Scale, Rotation, and Translation keys

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.NoTransform.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.NoTransform.html index e33451f6..03422223 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.NoTransform.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.NoTransform.html @@ -511,7 +511,7 @@ and chains Reg(factory) on dependents. Idempotent.

-

Convert to presentation DTO (Data Transfer Object) for JSON serialization. +

Convert NoTransform to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation.

@@ -524,7 +524,7 @@ The returned object includes type metadata for web API presentation.

Returns

object
-

DTO object with type and object properties

+

DTO dictionary with a Type key

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.StackTransformer.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.StackTransformer.html index be08e40f..2f6cbce3 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.StackTransformer.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.StackTransformer.html @@ -249,8 +249,8 @@ Class StackTransformer -

- StackTransformer(XElement, string, IProgress<object>) +

+ StackTransformer(XElement, string, IProgress<IMessage>)

@@ -259,7 +259,7 @@ Class StackTransformer
-
public StackTransformer(XElement src, string baseDirectory, IProgress<object> progress)
+
public StackTransformer(XElement src, string baseDirectory, IProgress<IMessage> progress)

Parameters

@@ -270,7 +270,7 @@ Class StackTransformer
baseDirectory string

The base directory for resolving relative paths.

-
progress IProgress<object>
+
progress IProgress<IMessage>

The progress reporter.

@@ -791,7 +791,7 @@ The returned object includes type metadata for web API presentation.

Returns

object
-

DTO object with type and stack properties

+

DTO dictionary with Type and Stack keys

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.StaticFreeform.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.StaticFreeform.html index bb142534..a2b0539d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.StaticFreeform.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.StaticFreeform.html @@ -661,7 +661,7 @@ The returned object includes type metadata for web API presentation.

Returns

object
-

DTO object with type and matrix properties

+

DTO dictionary with Type and Matrix keys

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.StaticRotation.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.StaticRotation.html index f7b338d0..30de40a7 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.StaticRotation.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.StaticRotation.html @@ -725,7 +725,7 @@ The returned object includes type metadata for web API presentation.

Returns

object
-

DTO object with type, axis, angleDeg, and pivot properties

+

DTO dictionary with Type, Axis, Angle_deg, and Pivot keys

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.StaticTranslation.html b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.StaticTranslation.html index 45f242bd..b83ebc63 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.StaticTranslation.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Mech.Topo.StaticTranslation.html @@ -659,7 +659,7 @@ The returned object includes type metadata for web API presentation.

Returns

object
-

DTO object with type and translation properties

+

DTO dictionary with Type and Trans keys

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.Cutters.AptProfile.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.Cutters.AptProfile.html index 6751e4b4..dcdd042d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.Cutters.AptProfile.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.Cutters.AptProfile.html @@ -269,8 +269,8 @@ This profile uses APT definitions to describe the cutter geometry.

-

- AptProfile(XElement, string, IProgress<object>) +

+ AptProfile(XElement, string, IProgress<IMessage>)

@@ -279,7 +279,7 @@ This profile uses APT definitions to describe the cutter geometry.

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

Parameters

@@ -290,7 +290,7 @@ This profile uses APT definitions to describe the cutter geometry.

baseDirectory string

The base directory for resolving relative paths.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.Cutters.CustomSpinningProfile.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.Cutters.CustomSpinningProfile.html index 497e5fdb..ec5c83f8 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.Cutters.CustomSpinningProfile.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.Cutters.CustomSpinningProfile.html @@ -237,8 +237,8 @@ This profile allows for custom geometry to be used as the cutter profile.

-

- CustomSpinningProfile(XElement, string, IProgress<object>, object[]) +

+ CustomSpinningProfile(XElement, string, IProgress<IMessage>, object[])

@@ -247,7 +247,7 @@ This profile allows for custom geometry to be used as the cutter profile.

-
public CustomSpinningProfile(XElement element, string baseDirectory, IProgress<object> progress, object[] res)
+
public CustomSpinningProfile(XElement element, string baseDirectory, IProgress<IMessage> progress, object[] res)

Parameters

@@ -258,7 +258,7 @@ This profile allows for custom geometry to be used as the cutter profile.

baseDirectory string

The base directory for resolving relative paths.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

res object[]
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.Cutters.MillingCutter.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.Cutters.MillingCutter.html index d9e074f5..b1f417b9 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.Cutters.MillingCutter.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.Cutters.MillingCutter.html @@ -266,8 +266,8 @@ Shank and Flute compose the full cutter.

-

- MillingCutter(XElement, string, string, IProgress<object>, object[]) +

+ MillingCutter(XElement, string, string, IProgress<IMessage>, object[])

@@ -276,7 +276,7 @@ Shank and Flute compose the full cutter.

-
public MillingCutter(XElement src, string baseDirectory, string relFile, IProgress<object> progress, object[] res)
+
public MillingCutter(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress, object[] res)

Parameters

@@ -290,7 +290,7 @@ Shank and Flute compose the full cutter.

relFile string

Relative file path

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

res object[]
@@ -611,7 +611,10 @@ The sequence starts from surface, i.e. from outer to inner.

-

Cutting Diameter for calculate cutting speed.

+

Cutting Diameter for calculate cutting speed. +Pure computation — deliberately uncached (see Hi.Milling.Cutters.MillingCutter.SideRakeAngle_rad); +per-step session paths read the value from +MillingToolPhysicsPack.

@@ -668,38 +671,6 @@ The sequence starts from surface, i.e. from outer to inner.

- - -

- FluteContourTray - -

- -

Gets or sets the flute contour tray that defines the flute geometry.

-
-
- -
-
public IContourTray FluteContourTray { get; set; }
-
- - - - - -

Property Value

-
-
IContourTray
-
-
- - - - - - - -

@@ -796,6 +767,41 @@ The sequence starts from surface, i.e. from outer to inner.

+ + +

+ Fluting + +

+ +

Gets or sets the cutter's fluting — the whole set of flute contours, +either one shared baseline repeated evenly around the cutter +(UniformFluting) or one contour defined per flute +(FreeFluting).

+
+
+ +
+
public IFluting Fluting { get; set; }
+
+ + + + + +

Property Value

+
+
IFluting
+
+
+ + + + + + + +

@@ -2278,7 +2284,10 @@ The volume is count from

Gets the minimum uncut chip thickness in millimeters for the specified cutting parameters. -The value is dependent on HoneRadius_um.

+The value is dependent on HoneRadius_um. +Pure computation — deliberately uncached (see GetStagnantAngle_rad(ICuttingPara)); +session paths read the value from +MillingToolPhysicsPack.

@@ -2553,6 +2562,48 @@ The value is dependent on + +

+ GetUpperBeamGeometryIssues() + +

+ +

Collects human-readable configuration issues on the upper-beam / shank +geometry — the settings that used to surface only as an opaque per-step +NullReferenceException cascade inside the thermal physics +(e.g. an ExtendedCylinder beam whose +FullLength is below the flute height, so the +shank solid inverts and Hi.Milling.Cutters.MillingCutter.GetShankThermalZrList() cannot build). +Returns (Id, Message) pairs following the structured-id convention of +the IMessage channel (e.g. Cutter-UpperBeam–BelowFluteHeight); +empty when no upper beam is configured (a legal state — physics runs without +a shank) or the beam is consistent. Shared by the physics runner (tool-change +ConfigurationError) and the web API (post-edit validation warnings).

+
+
+ +
+
public List<(string Id, string Message)> GetUpperBeamGeometryIssues()
+
+ + +

Returns

+
+
List<(string FilterTitle, string FileExtension)>
+
+
+ + + + + + + + + + +

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.Engagements.LayerMillingEngagement.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.Engagements.LayerMillingEngagement.html index 528cdbe3..eb5b59c3 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.Engagements.LayerMillingEngagement.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.Engagements.LayerMillingEngagement.html @@ -208,54 +208,6 @@ Class LayerMillingEngagement - - -

- LayerMillingEngagement(SortedList<double, double>, List<List<Vec3d>>, SeqPair<Mat4d>, double, double, bool) - -

- -

Initializes a new instance of the LayerMillingEngagement class with specified parameters.

-
-
- -
-
public LayerMillingEngagement(SortedList<double, double> zToDzList, List<List<Vec3d>> contoursOnToolRunningCoordinate, SeqPair<Mat4d> seqOnToolRunningCoordinate, double bottomRadius, double resolution, bool isSweeping)
-
- -

Parameters

-
-
zToDzList SortedList<double, double>
-

The Z to dZ list.

-
-
contoursOnToolRunningCoordinate List<List<Vec3d>>
-

The contours on tool running coordinate.

-
-
seqOnToolRunningCoordinate SeqPair<Mat4d>
-

The sequence on tool running coordinate.

-
-
bottomRadius double
-

The bottom radius.

-
-
resolution double
-

The resolution.

-
-
isSweeping bool
-

Indicates whether this is a sweeping engagement.

-
-
- - - - - - - - - - - -

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.ConstHelixSideContour.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.ConstHelixSideContour.html index 67590fdf..863ea316 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.ConstHelixSideContour.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.ConstHelixSideContour.html @@ -163,7 +163,7 @@ Class ConstHelixSideContour InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>)

ColorUtil.GetGloomyColor(object, double, double) diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FluteContour.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FluteContour.html index 0b057cb4..5c8742b1 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FluteContour.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FluteContour.html @@ -251,8 +251,8 @@ Class FluteContour -

- FluteContour(XElement, string, IProgress<object>, object[]) +

+ FluteContour(XElement, string, IProgress<IMessage>, object[])

@@ -261,7 +261,7 @@ Class FluteContour
-
public FluteContour(XElement src, string baseDirectory, IProgress<object> progress, object[] res)
+
public FluteContour(XElement src, string baseDirectory, IProgress<IMessage> progress, object[] res)

Parameters

@@ -272,7 +272,7 @@ Class FluteContour
baseDirectory string

The base directory for resolving relative paths

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

res object[]
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FluteContourUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FluteContourUtil.html index d35bdc93..41794ed4 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FluteContourUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FluteContourUtil.html @@ -155,8 +155,8 @@ Class FluteContourUtil -

- GetDrawing(ISideContour, out Drawing, out Drawing, out NativeTopoStld) +

+ GetDrawing(ISideContour, out Drawing, out Drawing, out NativeTopoStl3d)

@@ -165,7 +165,7 @@ Class FluteContourUtil
-
public static void GetDrawing(this ISideContour src, out Drawing faceDrawing, out Drawing lineDrawing, out NativeTopoStld topoStl)
+
public static void GetDrawing(this ISideContour src, out Drawing faceDrawing, out Drawing lineDrawing, out NativeTopoStl3d topoStl)

Parameters

@@ -179,7 +179,7 @@ Class FluteContourUtil
lineDrawing Drawing

Output parameter that receives the line drawing representation

-
topoStl NativeTopoStld
+
topoStl NativeTopoStl3d

Output parameter that receives the STL topology representation

@@ -191,7 +191,7 @@ Class FluteContourUtil -

Remarks

+

Remarks

This method creates three different visual representations of the contour:

  • A face drawing showing the surface
  • diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FreeContourTray.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FreeFluting.html similarity index 72% rename from App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FreeContourTray.html rename to App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FreeFluting.html index 5f7c68aa..cb3332c0 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FreeContourTray.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FreeFluting.html @@ -2,11 +2,11 @@ - Class FreeContourTray | HiAPI-C# 2025 + Class FreeFluting | HiAPI-C# 2025 - + - + @@ -84,12 +84,12 @@
-
+
-

-Class FreeContourTray +

+Class FreeFluting

@@ -97,12 +97,15 @@ Class FreeContourTray
Assembly
HiMech.dll
-

Represents a container for multiple flute contours with free arrangement.

+

A milling cutter's fluting in which every flute is defined individually — +each flute carries its own contour, so spacing, helix and rake need not +repeat. Use UniformFluting when one baseline contour repeated +evenly around the cutter is enough.

-
public class FreeContourTray : IContourTray, IMakeXmlSource, IExpandToBox3d, IUpdateByContent, IClearCache, IGetFluteNum
+
public class FreeFluting : IFluting, IMakeXmlSource, IExpandToBox3d, IUpdateByContent, IClearCache, IGetFluteNum
@@ -112,14 +115,14 @@ Class FreeContourTray
Inheritance
-
FreeContourTray
+
FreeFluting
Implements
- + @@ -183,12 +186,12 @@ Class FreeContourTray -

Remarks

+

Remarks

This class provides a flexible way to manage multiple flute contours:

  • Supports XML serialization for data persistence
  • Allows arbitrary arrangement of flute contours
  • -
  • Implements IContourTray for standard contour tray functionality
  • +
  • Implements IFluting for standard fluting functionality
@@ -197,19 +200,19 @@ Class FreeContourTray - + -

- FreeContourTray() +

+ FreeFluting()

-

Initializes a new instance of the FreeContourTray class

+

Initializes a new instance of the FreeFluting class

-
public FreeContourTray()
+
public FreeFluting()
@@ -224,30 +227,30 @@ Class FreeContourTray - + -

- FreeContourTray(XElement, string, IProgress<object>, object[]) +

+ FreeFluting(XElement, string, IProgress<IMessage>, object[])

-

Initializes a new instance of the FreeContourTray class from XML data

+

Initializes a new instance of the FreeFluting class from XML data

-
public FreeContourTray(XElement src, string baseDirectory, IProgress<object> progress, object[] res)
+
public FreeFluting(XElement src, string baseDirectory, IProgress<IMessage> progress, object[] res)

Parameters

src XElement
-

The source XML element containing the contour tray data

+

The source XML element containing the fluting data

baseDirectory string

The base directory for resolving relative paths

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

res object[]
@@ -270,14 +273,14 @@ Class FreeContourTray - + -

+

ContourList

-

Gets or sets the list of flute contours in this tray

+

Gets or sets the list of flute contours in this fluting

@@ -302,9 +305,9 @@ Class FreeContourTray - + -

+

XName

@@ -334,9 +337,9 @@ Class FreeContourTray - + -

+

XmlSourceFile

@@ -369,9 +372,9 @@ Class FreeContourTray - + -

+

ClearCache()

@@ -396,19 +399,19 @@ Class FreeContourTray - + -

+

Duplicate(IGetZrList)

-

Creates a duplicate of this contour tray

+

Creates a duplicate of this fluting

-
public IContourTray Duplicate(IGetZrList zrListHost)
+
public IFluting Duplicate(IGetZrList zrListHost)

Parameters

@@ -420,8 +423,8 @@ Class FreeContourTray

Returns

-
IContourTray
-

A new instance of FreeContourTray with the same properties

+
IFluting
+

A new instance of FreeFluting with the same properties

@@ -435,9 +438,9 @@ Class FreeContourTray - + -

+

ExpandToBox3d(Box3d)

@@ -469,14 +472,14 @@ This function is usually used to compute the bounding box of elements.

- + -

+

GetFluteContourList()

-

Gets the list of flute contours contained in this tray.

+

Gets the list of flute contours that make up this fluting.

@@ -502,14 +505,14 @@ This function is usually used to compute the bounding box of elements.

- + -

+

GetFluteNum()

-

Gets the number of flutes in the contour tray.

+

Gets the number of flutes.

@@ -534,9 +537,9 @@ This function is usually used to compute the bounding box of elements.

- + -

+

MakeXmlSource(string, string, bool)

@@ -576,7 +579,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.

@@ -585,9 +588,9 @@ Since the folder can be moving with the configuration file.

- + -

+

Reg(XFactory)

@@ -619,9 +622,9 @@ Since the folder can be moving with the configuration file.

- + -

+

UpdateByContent()

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FreeformBottomContour.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FreeformBottomContour.html new file mode 100644 index 00000000..1c96a06e --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FreeformBottomContour.html @@ -0,0 +1,749 @@ + + + + + Class FreeformBottomContour | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class FreeformBottomContour +

+ +
+
Namespace
Hi.Milling.FluteContours
+
Assembly
HiMech.dll
+
+ +

Represents a freeform bottom contour for milling tools, allowing arbitrary contour shapes.

+
+
+ +
+
public class FreeformBottomContour : IBottomContour, IWorkingContour, IExpandToBox3d, IMakeXmlSource, IUpdateByContent, IClearCache, IEquatable<FreeformBottomContour>
+
+ + + + +
+
Inheritance
+
+ +
FreeformBottomContour
+
+
+ +
+
Implements
+
+ + + + + + + +
+
+ + +
+
Inherited Members
+
+ + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + +

Remarks

+

This class provides a flexible way to define bottom contours with custom shapes:

+
    +
  • Implements IBottomContour for basic bottom contour functionality
  • +
  • Supports XML serialization for data persistence
  • +
  • Maintains a list of contour positions ordered by R-coordinate (radius)
  • +
+
+ + +

Constructors +

+ + + + +

+ FreeformBottomContour() + +

+ +

Initializes a new instance of the FreeformBottomContour class

+
+
+ +
+
public FreeformBottomContour()
+
+ + + + + + + + + + + + + + + +

+ FreeformBottomContour(XElement, string) + +

+ +

Initializes a new instance of the FreeformBottomContour class from XML data

+
+
+ +
+
public FreeformBottomContour(XElement src, string baseDirectory)
+
+ +

Parameters

+
+
src XElement
+

The source XML element containing the contour data

+
+
baseDirectory string
+

The base directory for resolving relative paths

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

Properties +

+ + + + +

+ KeyRange + +

+ +

Gets the R-value range (radial range) of the contour

+
+
+ +
+
public Range<double> KeyRange { get; }
+
+ + + + + +

Property Value

+
+
Range<double>
+
+
+ + + + +

Remarks

+

The range is calculated from the first and last points in the SpanContourPosList, +which are ordered by R-coordinate (radius)

+
+ + + + + + +

+ SpanContourPosList + +

+ +

Gets or sets the list of contour positions ordered by R-coordinate (radius)

+
+
+ +
+
public List<SpanContourPos4d> SpanContourPosList { get; set; }
+
+ + + + + +

Property Value

+
+
List<SpanContourPos4d>
+
+
+ + + + +

Remarks

+

Each position in the list represents a point on the contour with its associated +geometric and angular properties

+
+ + + + + + +

+ XName + +

+ +

Gets the XML name for serialization

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

Property Value

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

Methods +

+ + + + +

+ ClearCache() + +

+ +

Clears the cached key range value

+
+
+ +
+
public void ClearCache()
+
+ + + + + + + + + + + + + + + +

+ Duplicate(IGetZrList) + +

+ +

Creates a duplicate of this freeform bottom contour

+
+
+ +
+
public IWorkingContour Duplicate(IGetZrList zrListHost)
+
+ +

Parameters

+
+
zrListHost IGetZrList
+

The host containing Z-R list information

+
+
+ +

Returns

+
+
IWorkingContour
+

A new instance of FreeformBottomContour with the same properties

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

+ Equals(FreeformBottomContour) + +

+ +

Determines whether the specified FreeformBottomContour is equal to the current FreeformBottomContour

+
+
+ +
+
public bool Equals(FreeformBottomContour other)
+
+ +

Parameters

+
+
other FreeformBottomContour
+

The FreeformBottomContour to compare with the current FreeformBottomContour

+
+
+ +

Returns

+
+
bool
+

true if the specified FreeformBottomContour is equal to the current FreeformBottomContour; otherwise, false

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

+ Equals(object) + +

+ +

Determines whether the specified object is equal to the current object

+
+
+ +
+
public override bool Equals(object obj)
+
+ +

Parameters

+
+
obj object
+

The object to compare with the current object

+
+
+ +

Returns

+
+
bool
+

true if the specified object is equal to the current object; otherwise, false

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

+ ExpandToBox3d(Box3d) + +

+ +

Expands the given bounding box to include this contour

+
+
+ +
+
public void ExpandToBox3d(Box3d dst)
+
+ +

Parameters

+
+
dst Box3d
+

The bounding box to expand

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

+ GetHashCode() + +

+ +

Returns a hash code for this instance

+
+
+ +
+
public override int GetHashCode()
+
+ + +

Returns

+
+
int
+

A hash code value based on the contour positions

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

+ GetSpanContourPosList() + +

+ +

Gets the list of span contour positions that define the contour geometry

+
+
+ +
+
public List<SpanContourPos4d> GetSpanContourPosList()
+
+ + +

Returns

+
+
List<SpanContourPos4d>
+

The list of contour positions ordered by R-coordinate (radius)

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

+ 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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + + +

+ UpdateByContent() + +

+ +

Updates the contour's internal state based on its current content

+
+
+ +
+
public void UpdateByContent()
+
+ + + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FreeformSideContour.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FreeformSideContour.html index 01c21e2b..401064d2 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FreeformSideContour.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.FreeformSideContour.html @@ -163,7 +163,7 @@ Class FreeformSideContour InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>)
ColorUtil.GetGloomyColor(object, double, double) diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.IContourTray.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.IFluting.html similarity index 77% rename from App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.IContourTray.html rename to App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.IFluting.html index 81b22a90..3e042f03 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.IContourTray.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.IFluting.html @@ -2,11 +2,11 @@ - Interface IContourTray | HiAPI-C# 2025 + Interface IFluting | HiAPI-C# 2025 - + - + @@ -84,12 +84,12 @@
-
+
-

-Interface IContourTray +

+Interface IFluting

@@ -97,12 +97,18 @@ Interface IContourTray
Assembly
HiMech.dll
-

Interface for a container that holds multiple flute contours.

+

A milling cutter's fluting: the complete set of flute contours that do the +cutting. Either one shared baseline repeated evenly around the cutter +(UniformFluting) or one individually defined contour per flute +(FreeFluting) — every flute is definable on its own. +“Fluting” is the machining noun for a cutter's flute geometry and carries no +size of its own, so it describes the flute set of a 4 mm end mill exactly as +well as that of a large face mill.

-
public interface IContourTray : IMakeXmlSource, IExpandToBox3d, IUpdateByContent, IClearCache, IGetFluteNum
+
public interface IFluting : IMakeXmlSource, IExpandToBox3d, IUpdateByContent, IClearCache, IGetFluteNum
@@ -165,19 +171,19 @@ Interface IContourTray - + -

+

Duplicate(IGetZrList)

-

Creates a duplicate of this contour tray.

+

Creates a duplicate of this fluting.

-
IContourTray Duplicate(IGetZrList zrListHost)
+
IFluting Duplicate(IGetZrList zrListHost)

Parameters

@@ -189,8 +195,8 @@ Interface IContourTray

Returns

-
IContourTray
-

A new instance of IContourTray with the same properties.

+
IFluting
+

A new instance of IFluting with the same properties.

@@ -204,14 +210,14 @@ Interface IContourTray - + -

+

GetFluteContourList()

-

Gets the list of flute contours contained in this tray.

+

Gets the list of flute contours that make up this fluting.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.IGetFluteNum.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.IGetFluteNum.html index 55468e3c..9753bfed 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.IGetFluteNum.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.IGetFluteNum.html @@ -153,7 +153,7 @@ Interface IGetFluteNum -

Gets the number of flutes in the contour tray.

+

Gets the number of flutes.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.ISideContour.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.ISideContour.html index 291af78c..cd3d6b4d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.ISideContour.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.ISideContour.html @@ -147,7 +147,7 @@ Interface ISideContour InvokeUtil.SelfInvoke<TSrc, TDst>(TSrc, Func<TSrc, TDst>)
ColorUtil.GetGloomyColor(object, double, double) diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.UniformContourTray.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.UniformFluting.html similarity index 72% rename from App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.UniformContourTray.html rename to App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.UniformFluting.html index 482c6914..33d2a5f9 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.UniformContourTray.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.UniformFluting.html @@ -2,11 +2,11 @@ - Class UniformContourTray | HiAPI-C# 2025 + Class UniformFluting | HiAPI-C# 2025 - + - + @@ -84,12 +84,12 @@
-
+
-

-Class UniformContourTray +

+Class UniformFluting

@@ -97,12 +97,15 @@ Class UniformContourTray
Assembly
HiMech.dll
-

Represents a uniform contour tray for milling tool flutes.

+

A milling cutter's fluting built from one shared baseline contour repeated +evenly around the cutter: every flute has the same geometry, spaced at equal +angles. Use FreeFluting when the flutes need to be defined +individually.

-
public class UniformContourTray : IContourTray, IMakeXmlSource, IExpandToBox3d, IGetFluteNum, IUpdateByContent, IClearCache
+
public class UniformFluting : IFluting, IMakeXmlSource, IExpandToBox3d, IGetFluteNum, IUpdateByContent, IClearCache
@@ -112,14 +115,14 @@ Class UniformContourTray
Inheritance
-
UniformContourTray
+
UniformFluting
Implements
- + @@ -189,19 +192,19 @@ Class UniformContourTray - + -

- UniformContourTray() +

+ UniformFluting()

-

Initializes a new instance of the UniformContourTray class.

+

Initializes a new instance of the UniformFluting class.

-
public UniformContourTray()
+
public UniformFluting()
@@ -216,10 +219,10 @@ Class UniformContourTray - + -

- UniformContourTray(XElement, string, IProgress<object>, object[]) +

+ UniformFluting(XElement, string, IProgress<IMessage>, object[])

@@ -228,7 +231,7 @@ Class UniformContourTray
-
public UniformContourTray(XElement src, string baseDirectory, IProgress<object> progress, object[] res)
+
public UniformFluting(XElement src, string baseDirectory, IProgress<IMessage> progress, object[] res)

Parameters

@@ -239,7 +242,7 @@ Class UniformContourTray
baseDirectory string

Base directory path for resolving relative paths

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

res object[]
@@ -262,9 +265,9 @@ Class UniformContourTray - + -

+

BaselineContourShiftAngle_deg

@@ -294,9 +297,9 @@ Class UniformContourTray - + -

+

BaselineOneContour

@@ -326,14 +329,15 @@ Class UniformContourTray - + -

+

TrackNum

-

Gets or sets the number of tracks in the contour tray.

+

Gets or sets the number of flutes this fluting repeats the baseline +contour into.

@@ -358,9 +362,9 @@ Class UniformContourTray - + -

+

XName

@@ -394,9 +398,9 @@ Class UniformContourTray - + -

+

ClearCache()

@@ -421,19 +425,19 @@ Class UniformContourTray - + -

+

Duplicate(IGetZrList)

-

Creates a duplicate of this contour tray with the specified ZR list host.

+

Creates a duplicate of this fluting with the specified ZR list host.

-
public IContourTray Duplicate(IGetZrList zrListHost)
+
public IFluting Duplicate(IGetZrList zrListHost)

Parameters

@@ -445,8 +449,8 @@ Class UniformContourTray

Returns

-
IContourTray
-

A new contour tray instance

+
IFluting
+

A new fluting instance

@@ -460,9 +464,9 @@ Class UniformContourTray - + -

+

ExpandToBox3d(Box3d)

@@ -494,14 +498,14 @@ This function is usually used to compute the bounding box of elements.

- + -

+

GetFluteContourList()

-

Gets the list of flute contours contained in this tray.

+

Gets the list of flute contours that make up this fluting.

@@ -527,9 +531,9 @@ This function is usually used to compute the bounding box of elements.

- + -

+

GetFluteNum()

@@ -560,9 +564,9 @@ This function is usually used to compute the bounding box of elements.

- + -

+

MakeXmlSource(string, string, bool)

@@ -602,7 +606,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.

@@ -611,9 +615,9 @@ Since the folder can be moving with the configuration file.

- + -

+

Reg(XFactory)

@@ -645,9 +649,9 @@ Since the folder can be moving with the configuration file.

- + -

+

UpdateByContent()

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.html index 9434245f..23eb92ef 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.FluteContours.html @@ -110,8 +110,16 @@ Classes
-
FreeContourTray
-

Represents a container for multiple flute contours with free arrangement.

+
FreeFluting
+

A milling cutter's fluting in which every flute is defined individually — +each flute carries its own contour, so spacing, helix and rake need not +repeat. Use UniformFluting when one baseline contour repeated +evenly around the cutter is enough.

+
+
+
+
FreeformBottomContour
+

Represents a freeform bottom contour for milling tools, allowing arbitrary contour shapes.

@@ -141,8 +149,11 @@ This class wraps another working contour and applies an angular transformation t
-
UniformContourTray
-

Represents a uniform contour tray for milling tool flutes.

+
UniformFluting
+

A milling cutter's fluting built from one shared baseline contour repeated +evenly around the cutter: every flute has the same geometry, spaced at equal +angles. Use FreeFluting when the flutes need to be defined +individually.

@@ -154,13 +165,19 @@ Interfaces
-
IContourTray
-

Interface for a container that holds multiple flute contours.

+
IFluteNumSourceProperty
+

Interface that requiring a FluteNumSource property.

-
IFluteNumSourceProperty
-

Interface that requiring a FluteNumSource property.

+
IFluting
+

A milling cutter's fluting: the complete set of flute contours that do the +cutting. Either one shared baseline repeated evenly around the cutter +(UniformFluting) or one individually defined contour per flute +(FreeFluting) — every flute is definable on its own. +“Fluting” is the machining noun for a cutter's flute geometry and carries no +size of its own, so it describes the flute set of a 4 mm end mill exactly as +well as that of a large face mill.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.MillingTools.MillingTool.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.MillingTools.MillingTool.html index b2ae15c0..aa70b517 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.MillingTools.MillingTool.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.MillingTools.MillingTool.html @@ -244,8 +244,8 @@ Class MillingTool -

- MillingTool(XElement, string, string, IProgress<object>) +

+ MillingTool(XElement, string, string, IProgress<IMessage>)

@@ -254,7 +254,7 @@ Class MillingTool
-
public MillingTool(XElement src, string baseDirectory, string relFile, IProgress<object> progress)
+
public MillingTool(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress)

Parameters

@@ -268,7 +268,7 @@ Class MillingTool
relFile string

The relative file path.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

@@ -423,7 +423,10 @@ Class MillingTool

-

Gets or sets the parameter for exposed cutter bending in micrometers per Newton.

+

Gets the parameter for exposed cutter bending in micrometers per Newton. +Pure computation — deliberately uncached: a lazy cache on this shared object +races with the parallel per-step force build; per-step session paths read the +pair from MillingToolPhysicsPack instead.

@@ -487,7 +490,8 @@ Class MillingTool -

Gets or sets the parameter for exposed cutter Z-axis deflection in micrometers per Newton.

+

Gets the parameter for exposed cutter Z-axis deflection in micrometers per Newton. +Pure computation — see ExposedCutterBendingPara_umdN.

@@ -679,7 +683,9 @@ Class MillingTool -

Gets the tool observation point relative to the reference.

+

Gets the tool observation point relative to the reference. +Pure computation (an Asmb walk) — deliberately uncached; per-step +session paths read the value from MillingToolPhysicsPack.

@@ -840,7 +846,11 @@ Gets the tool observation reference point.

-

Height For NC Compensation table and step number computation.

+

Height For NC Compensation table and step number computation. +Pure computation (an Asmb walk) — deliberately uncached: a lazy +cache on this shared object races with concurrent readers; hot session paths +read the value from MillingToolPhysicsPack (per step) or a +run-scoped memo (CL parsing).

@@ -1236,7 +1246,7 @@ the anchor that generally connect to fixed part such as ground and triggering(mo -

Gets the number of flutes in the contour tray.

+

Gets the number of flutes.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.MillingTools.MillingToolPhysicsPack.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.MillingTools.MillingToolPhysicsPack.html new file mode 100644 index 00000000..b3216f25 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.MillingTools.MillingToolPhysicsPack.html @@ -0,0 +1,670 @@ + + + + + Class MillingToolPhysicsPack | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class MillingToolPhysicsPack +

+ +
+
Namespace
Hi.Milling.MillingTools
+
Assembly
HiMech.dll
+
+ +

The scalar physics derivations of one tool (and one cutting-parameter set), computed +once on a sequential boundary and frozen. The per-step force build, the sequential +physics, and the step/shot writers read these values thousands to millions of times +per play; the tool and cutter objects themselves expose them as deliberately +uncached pure computations, so hot session paths read this pack instead — +callers outside a session simply pass null and the pure computation runs on +use. Owned per session by MachiningSession, keyed by tool id. A pack is never +updated in place: the paths that change tool/cutter/para state invalidate the +session's packs explicitly (run-op start, tool change — see +MachiningSession.InvalidateToolPhysicsPacks), and IsStaleFor(IMachiningTool, ICuttingPara) +re-keys on object replacement.

+
+
+ +
+
public sealed record MillingToolPhysicsPack : IEquatable<MillingToolPhysicsPack>
+
+ + + + +
+
Inheritance
+
+ +
MillingToolPhysicsPack
+
+
+ +
+
Implements
+
+ +
+
+ + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ MillingToolPhysicsPack(IMachiningTool, ICuttingPara, double, double, double, double, double, double, double) + +

+ +

The scalar physics derivations of one tool (and one cutting-parameter set), computed +once on a sequential boundary and frozen. The per-step force build, the sequential +physics, and the step/shot writers read these values thousands to millions of times +per play; the tool and cutter objects themselves expose them as deliberately +uncached pure computations, so hot session paths read this pack instead — +callers outside a session simply pass null and the pure computation runs on +use. Owned per session by MachiningSession, keyed by tool id. A pack is never +updated in place: the paths that change tool/cutter/para state invalidate the +session's packs explicitly (run-op start, tool change — see +MachiningSession.InvalidateToolPhysicsPacks), and IsStaleFor(IMachiningTool, ICuttingPara) +re-keys on object replacement.

+
+
+ +
+
public MillingToolPhysicsPack(IMachiningTool Tool, ICuttingPara Para, double SpindleBuckleToToolTipLength, double ObservationHeightFromToolTip, double EffectiveCuttingDiameter_mm, double BendingPara_umdN, double ZDeflectionPara_umdN, double FakeRakeAngle_rad, double MinimumUncutChipThickness_mm)
+
+ +

Parameters

+
+
Tool IMachiningTool
+

The tool the pack was built from.

+
+
Para ICuttingPara
+

The cutting-parameter set the para-dependent members were built from (may be null).

+
+
SpindleBuckleToToolTipLength double
+

See SpindleBuckleToToolTipLength.

+
+
ObservationHeightFromToolTip double
+

See ObservationHeightFromToolTip; NaN when the tool is not a MillingTool.

+
+
EffectiveCuttingDiameter_mm double
+

See EffectiveCuttingDiameter_mm; NaN without a MillingCutter.

+
+
BendingPara_umdN double
+

See ExposedCutterBendingPara_umdN; NaN when the deflection geometry is degenerate (the pure getter throws there instead — the pack stays buildable so geometry-only paths keep working).

+
+
ZDeflectionPara_umdN double
+

The pair member of BendingPara_umdN — see ExposedCutterZDeflectionPara_umdN.

+
+
FakeRakeAngle_rad double
+

The simplified (side/bottom averaged) rake angle; NaN without a MillingCutter.

+
+
MinimumUncutChipThickness_mm double
+

See GetMinimumUncutChipThickness_mm(ICuttingPara) for Para.

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

Properties +

+ + + + +

+ BendingPara_umdN + +

+ +

See ExposedCutterBendingPara_umdN; NaN when the deflection geometry is degenerate (the pure getter throws there instead — the pack stays buildable so geometry-only paths keep working).

+
+
+ +
+
public double BendingPara_umdN { get; init; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ EffectiveCuttingDiameter_mm + +

+ + +
+ +
+
public double EffectiveCuttingDiameter_mm { get; init; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ FakeRakeAngle_rad + +

+ +

The simplified (side/bottom averaged) rake angle; NaN without a MillingCutter.

+
+
+ +
+
public double FakeRakeAngle_rad { get; init; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ MinimumUncutChipThickness_mm + +

+ + +
+ +
+
public double MinimumUncutChipThickness_mm { get; init; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ ObservationHeightFromToolTip + +

+ +

See ObservationHeightFromToolTip; NaN when the tool is not a MillingTool.

+
+
+ +
+
public double ObservationHeightFromToolTip { get; init; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ Para + +

+ +

The cutting-parameter set the para-dependent members were built from (may be null).

+
+
+ +
+
public ICuttingPara Para { get; init; }
+
+ + + + + +

Property Value

+
+
ICuttingPara
+
+
+ + + + + + + + + + +

+ SpindleBuckleToToolTipLength + +

+ + +
+ +
+
public double SpindleBuckleToToolTipLength { get; init; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ Tool + +

+ +

The tool the pack was built from.

+
+
+ +
+
public IMachiningTool Tool { get; init; }
+
+ + + + + +

Property Value

+
+
IMachiningTool
+
+
+ + + + + + + + + + +

+ ZDeflectionPara_umdN + +

+ +

The pair member of BendingPara_umdN — see ExposedCutterZDeflectionPara_umdN.

+
+
+ +
+
public double ZDeflectionPara_umdN { get; init; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ Build(IMachiningTool, ICuttingPara) + +

+ +

Builds a pack from the tool's (and cutter's) pure computations. Call on a +sequential boundary (session/play start, tool change) or ad hoc from a +no-session caller that wants the values bundled.

+
+
+ +
+
public static MillingToolPhysicsPack Build(IMachiningTool tool, ICuttingPara para)
+
+ +

Parameters

+
+
tool IMachiningTool
+

The tool to derive from; null yields null.

+
+
para ICuttingPara
+

The cutting-parameter set for the para-dependent members; may be null.

+
+
+ +

Returns

+
+
MillingToolPhysicsPack
+

The frozen pack, or null when tool is null.

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

+ IsStaleFor(IMachiningTool, ICuttingPara) + +

+ +

Whether this pack was built from different objects than the live ones — a +replaced tool under the same id, or a swapped cutting para. In-place edits are +not detected here; they are covered by the explicit invalidation points +(MachiningSession.InvalidateToolPhysicsPacks).

+
+
+ +
+
public bool IsStaleFor(IMachiningTool tool, ICuttingPara para)
+
+ +

Parameters

+
+
tool IMachiningTool
+

The live tool to compare against.

+
+
para ICuttingPara
+

The live cutting-parameter set to compare against.

+
+
+ +

Returns

+
+
bool
+

True when the pack must be rebuilt.

+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.MillingTools.html b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.MillingTools.html index 04918391..edeb453e 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Milling.MillingTools.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Milling.MillingTools.html @@ -102,6 +102,21 @@ Classes
MillingToolEditorDisplayee

Display host for a milling tool composed of a cutter and a holder.

+
+
+
+
MillingToolPhysicsPack
+

The scalar physics derivations of one tool (and one cutting-parameter set), computed +once on a sequential boundary and frozen. The per-step force build, the sequential +physics, and the step/shot writers read these values thousands to millions of times +per play; the tool and cutter objects themselves expose them as deliberately +uncached pure computations, so hot session paths read this pack instead — +callers outside a session simply pass null and the pure computation runs on +use. Owned per session by MachiningSession, keyed by tool id. A pack is never +updated in place: the paths that change tool/cutter/para state invalidate the +session's packs explicitly (run-op start, tool change — see +MachiningSession.InvalidateToolPhysicsPacks), and IsStaleFor(IMachiningTool, ICuttingPara) +re-keys on object replacement.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.Fittings.ICuttingPara.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.Fittings.ICuttingPara.html index 887ae8eb..d9491c0b 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.Fittings.ICuttingPara.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.Fittings.ICuttingPara.html @@ -274,9 +274,9 @@ The milling parameter is trainable.

-

Generate ICuttingParas. -The elements of each ICuttingPara are (1,0,0,0,..),(0,1,0,0,..),.… -For parameter training.

+

Generate the ICuttingPara set used by parameter training. +The list length equals ElementNum; entry i corresponds to +the element of index i (see SetElementByIndex).

@@ -288,7 +288,7 @@ For parameter training.

Returns

List<ICuttingPara>
-

unit parameters.

+

training parameters.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForce.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForce.html index 9cc5e526..b3a615c8 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForce.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForce.html @@ -181,8 +181,7 @@ Class MillingForce

Remarks

-

The data list such as CuttingForcesToToolOnToolRunningCoordinate in this class is in sequence of time. -If step-limited version is using, the milling force ctor is limited to call 2000 times.

+

The data list such as CuttingForcesToToolOnToolRunningCoordinate in this class is in sequence of time.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html index 071a4f3b..8d8b27e9 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceLuggage.html @@ -644,8 +644,8 @@ The forced item is workpiece.

-

- GetMomentsAboutAnchorOnToolRunningCoordinate_Nm(IMachiningTool) +

+ GetMomentsAboutAnchorOnToolRunningCoordinate_Nm(IMachiningTool, MillingToolPhysicsPack)

@@ -654,13 +654,17 @@ The forced item is workpiece.

-
public List<Vec3d> GetMomentsAboutAnchorOnToolRunningCoordinate_Nm(IMachiningTool millingTool)
+
public List<Vec3d> GetMomentsAboutAnchorOnToolRunningCoordinate_Nm(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack = null)

Parameters

millingTool IMachiningTool

The machining tool to calculate moments for.

+
+
physicsPack MillingToolPhysicsPack
+

The frozen per-session physics pack of millingTool; +null computes the observation height from the tool on use.

@@ -792,8 +796,8 @@ The forced item is workpiece.

-

- GetMomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm(IMachiningTool) +

+ GetMomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm(IMachiningTool, MillingToolPhysicsPack)

@@ -802,15 +806,60 @@ The forced item is workpiece.

-
public List<Vec3d> GetMomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm(IMachiningTool millingTool)
+
public List<Vec3d> GetMomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack = null)

Parameters

millingTool IMachiningTool
+

The machining tool to calculate moments for.

+
+
physicsPack MillingToolPhysicsPack
+

The frozen per-session physics pack of millingTool; +null computes the observation height from the tool on use.

+
+
+ +

Returns

+
+
List<Vec3d>
+ + + + + + + + + + + + +

+ GetMomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm(double) + +

+ +

Get Moments To Tool About Observation Point On Spindle Rotation Coordinate, +with the observation height supplied directly — for a caller that resolved the +height once and reads many luggage instances. Unit is Newton-meter.

+
+
+ +
+
public List<Vec3d> GetMomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm(double observationHeightFromToolTip)
+
+ +

Parameters

+
+
observationHeightFromToolTip double
+

The observation height from the tool tip in millimeters.

+
+
+

Returns

List<Vec3d>
@@ -874,8 +923,8 @@ The forced item is workpiece.

-

- GetTipDeflectionOnToolRunningCoordinateList_mm(IMachiningTool) +

+ GetTipDeflectionOnToolRunningCoordinateList_mm(IMachiningTool, MillingToolPhysicsPack)

@@ -884,13 +933,17 @@ The forced item is workpiece.

-
public List<Vec3d> GetTipDeflectionOnToolRunningCoordinateList_mm(IMachiningTool millingTool)
+
public List<Vec3d> GetTipDeflectionOnToolRunningCoordinateList_mm(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack = null)

Parameters

millingTool IMachiningTool

The milling tool for which to calculate deflections.

+
+
physicsPack MillingToolPhysicsPack
+

The frozen per-session physics pack of millingTool; +null computes the deflection parameters from the tool on use.

@@ -936,7 +989,9 @@ The forced item is workpiece.

Returns

double
-

The yielding stress ratio.

+

The yielding stress ratio, or NaN when it +cannot be evaluated — non-milling cutter, missing flute material, or no +beam section outside the tip zone. Never a fake-safe 0.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceUtil.html index ee068f9d..47668d02 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceUtil.html @@ -153,6 +153,46 @@ Class MillingForceUtil + + +

+ EnableNativeMillingPhysics + +

+ +

Whether the physics runs on the native (core.dll) kernels. Default is +true, and in shipping builds the native kernel is the only physics +implementation: setting this to false requires the managed reference +implementation (the non-shipping HiMech.PhysicsRef assembly, registered +at startup by dev/test hosts) and throws +InvalidOperationException without it — failing at +configuration time rather than on every step of a play. Both +implementations produce the same results. Process-global like +RotationDivisionNum.

+
+
+ +
+
public static bool EnableNativeMillingPhysics { get; set; }
+
+ + + + + +

Property Value

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

@@ -223,8 +263,8 @@ Class MillingForceUtil -

- GetMillingFoce(ICuttingPara, IMachiningTool, MachineMotionStep, LayerMillingEngagement, out MillingPhysicsBrief, out MillingForceLuggage, double, bool) +

+ GetMillingFoce(ICuttingPara, IMachiningTool, MachineMotionStep, LayerMillingEngagement, out MillingPhysicsBrief, out MillingForceLuggage, double, bool, MillingToolPhysicsPack)

@@ -233,7 +273,7 @@ Class MillingForceUtil
-
public static void GetMillingFoce(ICuttingPara millingPara, IMachiningTool millingTool, MachineMotionStep machineStep, LayerMillingEngagement engagement, out MillingPhysicsBrief brief, out MillingForceLuggage luggage, double trialClippingHeight_mm, bool enableCalculatingReliefColliding)
+
public static void GetMillingFoce(ICuttingPara millingPara, IMachiningTool millingTool, MachineMotionStep machineStep, LayerMillingEngagement engagement, out MillingPhysicsBrief brief, out MillingForceLuggage luggage, double trialClippingHeight_mm, bool enableCalculatingReliefColliding, MillingToolPhysicsPack physicsPack = null)

Parameters

@@ -261,6 +301,11 @@ Class MillingForceUtil
enableCalculatingReliefColliding bool

enable calculating effect of relief colliding

+
+
physicsPack MillingToolPhysicsPack
+

The frozen per-session physics pack of +millingTool and millingPara; null (or a +pack keyed to a different para) computes the gate values from the tool on use.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html index 34554504..99aa2f2a 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingPhysicsBrief.html @@ -1400,39 +1400,6 @@ The value is 2 * pi / - -

- YieldStressMinHeight_mm - -

- -

While computing cutter yielding, the small radial radius near the tool tip may cause singular computation. -a small arbitrary gap is set to avoid the singular behavior.

-
-
- -
-
public static double YieldStressMinHeight_mm { get; set; }
-
- - - - - -

Property Value

-
-
double
-
-
- - - - - - - -

@@ -1471,8 +1438,8 @@ a small arbitrary gap is set to avoid the singular behavior.

-

- BuildNonSeqExtension(IMachiningTool, WorkpieceMaterial, SpindleCapability, SpindleSpeedCache, MachineMotionStep, MillingForceLuggage) +

+ BuildNonSeqExtension(IMachiningTool, WorkpieceMaterial, SpindleCapability, SpindleSpeedCache, MachineMotionStep, MillingForceLuggage, MillingToolPhysicsPack)

@@ -1484,7 +1451,7 @@ In multi thread, call it before going to un-safe area.

-
public void BuildNonSeqExtension(IMachiningTool millingTool, WorkpieceMaterial workpieceMaterial, SpindleCapability spindleCapability, SpindleSpeedCache spindleSpeedCache, MachineMotionStep machineStep, MillingForceLuggage luggage)
+
public void BuildNonSeqExtension(IMachiningTool millingTool, WorkpieceMaterial workpieceMaterial, SpindleCapability spindleCapability, SpindleSpeedCache spindleSpeedCache, MachineMotionStep machineStep, MillingForceLuggage luggage, MillingToolPhysicsPack physicsPack = null)

Parameters

@@ -1501,6 +1468,8 @@ In multi thread, call it before going to un-safe area.

luggage MillingForceLuggage
+
physicsPack MillingToolPhysicsPack
+
@@ -1619,8 +1588,8 @@ In multi thread, call it before going to un-safe area.

-

- GetDeflectionTransformOnWorkpieceGeomCoordinate(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func<MillingForceLuggage>) +

+ GetDeflectionTransformOnWorkpieceGeomCoordinate(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func<MillingForceLuggage>, MillingToolPhysicsPack)

@@ -1629,7 +1598,7 @@ In multi thread, call it before going to un-safe area.

-
public Mat4d GetDeflectionTransformOnWorkpieceGeomCoordinate(IMachiningTool millingTool, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func<MillingForceLuggage> luggageFunc)
+
public Mat4d GetDeflectionTransformOnWorkpieceGeomCoordinate(IMachiningTool millingTool, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func<MillingForceLuggage> luggageFunc, MillingToolPhysicsPack physicsPack = null)

Parameters

@@ -1645,6 +1614,11 @@ In multi thread, call it before going to un-safe area.

luggageFunc Func<MillingForceLuggage>

Function to get the milling force luggage.

+
+
physicsPack MillingToolPhysicsPack
+

The frozen per-session physics pack of +millingTool; null computes the tool's scalar +derivations on use.

@@ -1782,8 +1756,8 @@ In multi thread, call it before going to un-safe area.

-

- GetMaxBottomEdgeDeflectionOnToolRunningCoordinate_mm(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func<MillingForceLuggage>) +

+ GetMaxBottomEdgeDeflectionOnToolRunningCoordinate_mm(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func<MillingForceLuggage>, MillingToolPhysicsPack)

@@ -1792,7 +1766,7 @@ In multi thread, call it before going to un-safe area.

-
public Vec3d GetMaxBottomEdgeDeflectionOnToolRunningCoordinate_mm(IMachiningTool millingTool, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func<MillingForceLuggage> luggageFunc)
+
public Vec3d GetMaxBottomEdgeDeflectionOnToolRunningCoordinate_mm(IMachiningTool millingTool, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func<MillingForceLuggage> luggageFunc, MillingToolPhysicsPack physicsPack = null)

Parameters

@@ -1808,6 +1782,11 @@ In multi thread, call it before going to un-safe area.

luggageFunc Func<MillingForceLuggage>

Function to get the milling force luggage.

+
+
physicsPack MillingToolPhysicsPack
+

The frozen per-session physics pack of +millingTool; null computes the tool's scalar +derivations on use.

@@ -1830,8 +1809,8 @@ In multi thread, call it before going to un-safe area.

-

- GetMaxDeflectionTransformOnToolRunningCoordinate(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func<MillingForceLuggage>) +

+ GetMaxDeflectionTransformOnToolRunningCoordinate(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func<MillingForceLuggage>, MillingToolPhysicsPack)

@@ -1840,7 +1819,7 @@ In multi thread, call it before going to un-safe area.

-
public Mat4d GetMaxDeflectionTransformOnToolRunningCoordinate(IMachiningTool millingTool_, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func<MillingForceLuggage> luggageFunc)
+
public Mat4d GetMaxDeflectionTransformOnToolRunningCoordinate(IMachiningTool millingTool_, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func<MillingForceLuggage> luggageFunc, MillingToolPhysicsPack physicsPack = null)

Parameters

@@ -1853,6 +1832,11 @@ In multi thread, call it before going to un-safe area.

luggageFunc Func<MillingForceLuggage>
+
physicsPack MillingToolPhysicsPack
+

The frozen per-session physics pack of +millingTool_; null computes the tool's scalar +derivations on use.

+

Returns

@@ -1873,8 +1857,8 @@ In multi thread, call it before going to un-safe area.

-

- GetMaxTipDeflectionOnToolRunningCoordinate_mm(IMachiningTool) +

+ GetMaxTipDeflectionOnToolRunningCoordinate_mm(IMachiningTool, MillingToolPhysicsPack)

@@ -1883,20 +1867,30 @@ In multi thread, call it before going to un-safe area.

-
public Vec3d GetMaxTipDeflectionOnToolRunningCoordinate_mm(IMachiningTool millingTool)
+
public Vec3d GetMaxTipDeflectionOnToolRunningCoordinate_mm(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack = null)

Parameters

millingTool IMachiningTool

The milling tool to get the deflection for.

+
+
physicsPack MillingToolPhysicsPack
+

The frozen per-session physics pack of +millingTool; null computes the tool's scalar +derivations on use.

Returns

Vec3d
-

The maximum deflection vector in millimeters.

+

The maximum deflection vector in millimeters, or null when it cannot be +computed: no tool, or no maximum tool force resolved yet — the force is +filled lazily by the force pass, so a brief handed back before (or +without) that pass carries none. Callers treat null as “no deflection +known” (e.g. StepFeedSolver.BuildCompensation falls back to +Zero, i.e. no compensation).

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html index dc35cd60..a83c1eb8 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html @@ -223,10 +223,10 @@ Class LocalProfileMillingPara

Parameters

shearPara Vec3d
-

shear milling parameter. (x,y,z)=(Ktc,Krc,Kac)

+

shear milling parameter. (x,y,z)=(Ksr,Kst,Ksa) — the Ks convention

ploughPara Vec3d
-

plough milling parameter. (x,y,z)=(Kte,Kre,Kae)

+

plough milling parameter. (x,y,z)=(Kpr,Kpt,Kpa) — the Kp convention

@@ -433,8 +433,7 @@ Class LocalProfileMillingPara -

Al6061T6. -Build by 20190213 PMC end-mill exp.

+

Milling parameters for Al6061T6 material.

@@ -466,8 +465,8 @@ Build by 20190213 PMC end-mill exp.

-

Milling parameters for Al6061T6 material (older version). -Determined by NCCU.

+

Milling parameters for Al6061T6 material (older calibration set, +superseded by Al6061T6).

@@ -499,8 +498,7 @@ Determined by NCCU.

-

Milling parameters for Al6061T6 material with 0.5mm radius. -Built by PMC on 2019-02-13.

+

Milling parameters for Al6061T6 material with 0.5mm radius.

@@ -948,9 +946,7 @@ Built by PMC on 2019-02-13.

-

Milling parameters for SS304 stainless steel. -Reference: “The effect of cutting force model coefficient variability on process planning in milling”, -Firat Eren, University of New Hampshire, Durham.

+

Milling parameters for SS304 stainless steel.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html index 5919852c..20f9f0e4 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html @@ -228,8 +228,8 @@ Interface IRakeFaceCuttingPara -

Gets or sets the anchor rake angle in radians. -Different rake angles may have different ploughing parameters but share the same shearing parameters.

+

Gets or sets the anchor rake angle in radians — the rake angle this +parameter set was calibrated at.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html index a1428ca3..f13b5b07 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html @@ -366,8 +366,8 @@ Class RakeFaceCuttingPara2d -

Gets or sets the anchor rake angle in radians. -Different rake angles may have different ploughing parameters but share the same shearing parameters.

+

Gets or sets the anchor rake angle in radians — the rake angle this +parameter set was calibrated at.

@@ -863,9 +863,9 @@ Unit: N/mm�.

-

Generate ICuttingParas. -The elements of each ICuttingPara are (1,0,0,0,..),(0,1,0,0,..),.… -For parameter training.

+

Generate the ICuttingPara set used by parameter training. +The list length equals ElementNum; entry i corresponds to +the element of index i (see SetElementByIndex).

@@ -877,7 +877,7 @@ For parameter training.

Returns

List<ICuttingPara>
-

unit parameters.

+

training parameters.

@@ -1066,7 +1066,8 @@ Since the folder can be moving with the configuration file.

Parameters

elementIndex int
-

The index of the element to set (0-5).

+

The index of the element to set (0-3; see +element_num).

v double

The value to set.

@@ -1082,12 +1083,10 @@ Since the folder can be moving with the configuration file.

Remarks

Index mapping: -0 - Kse (N/mm�) -1 - Ksc (N/mm�) -2 - Ksn (N/mm�) -3 - Kpe (N/mm) -4 - Kpc (N/mm) -5 - Kpn (N/mm)

+0 - Ksc (N/mm^2) +1 - Ksn (N/mm^2) +2 - Kpc (N/mm) +3 - Kpn (N/mm)

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html index ca6f09a0..85bbd2a0 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html @@ -431,8 +431,8 @@ Internal Use Only.

-

Gets or sets the anchor rake angle in radians. -Different rake angles may have different ploughing parameters but share the same shearing parameters.

+

Gets or sets the anchor rake angle in radians — the rake angle this +parameter set was calibrated at.

@@ -722,8 +722,8 @@ Always returns 1 as this class represents a single form.

-

Plough parameter remains constant on any rake angle. -The vector changed by the view of coordinate transformation.

+

Gets Kp expressed on the zero-rake-angle coordinate +(a NaN AnchorRakeAngle_rad is treated as zero).

@@ -1159,9 +1159,9 @@ Unit: N/mm�.

-

Generate ICuttingParas. -The elements of each ICuttingPara are (1,0,0,0,..),(0,1,0,0,..),.… -For parameter training.

+

Generate the ICuttingPara set used by parameter training. +The list length equals ElementNum; entry i corresponds to +the element of index i (see SetElementByIndex).

@@ -1173,7 +1173,7 @@ For parameter training.

Returns

List<ICuttingPara>
-

unit parameters.

+

training parameters.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html index 81c8beda..eb4f7e7a 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html @@ -859,9 +859,9 @@ Note that range of NAngle is 0~pi/2.

-

Generate ICuttingParas. -The elements of each ICuttingPara are (1,0,0,0,..),(0,1,0,0,..),.… -For parameter training.

+

Generate the ICuttingPara set used by parameter training. +The list length equals ElementNum; entry i corresponds to +the element of index i (see SetElementByIndex).

@@ -873,7 +873,7 @@ For parameter training.

Returns

List<ICuttingPara>
-

unit parameters.

+

training parameters.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.Training.MillingParaTrainResult.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.Training.MillingParaTrainResult.html new file mode 100644 index 00000000..15038563 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.Training.MillingParaTrainResult.html @@ -0,0 +1,600 @@ + + + + + Class MillingParaTrainResult | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class MillingParaTrainResult +

+ +
+
Namespace
Hi.MillingForces.Training
+
Assembly
HiNc.dll
+
+ +

Snapshot of the most recent milling-parameter training call +(LocalProjectService.TrainMillingPara / ReTrainMillingPara) — +the queryable training outcome that otherwise only lands in the output +.mp file's Note. Held by +LocalProjectService.LastMillingParaTrainResult (service lifetime, +last-wins) so callers such as the webservice can read it after a run +without touching the file system.

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

Properties +

+ + + + +

+ CorrelationR + +

+ +

Correlation coefficient R of the built parameter against the +filtered samples (0..1); null when unavailable.

+
+
+ +
+
public double? CorrelationR { get; set; }
+
+ + + + + +

Property Value

+
+
double?
+
+
+ + + + + + + + + + +

+ DstRelFile + +

+ +

Destination file the built parameter was saved to (relative to the +project base directory); null when not saved.

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

Property Value

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

+ FilteredSampleNum + +

+ +

Number of training samples that survived outlier filtering.

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

Property Value

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

+ Kind + +

+ +

Which call produced the snapshot: “Train” or “ReTrain”.

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

Property Value

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

+ Note + +

+ +

The built parameter's Note — the human-readable summary +also written into the .mp file.

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

Property Value

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

+ OutlierRatio + +

+ +

The outlier exclusion ratio the training used.

+
+
+ +
+
public double OutlierRatio { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ ParaName + +

+ +

The built parameter's Name (the destination file name).

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

Property Value

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

+ ParaTypeName + +

+ +

The built parameter's concrete type name (e.g. RakeFaceCuttingPara2d).

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

Property Value

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

+ ParaXml + +

+ +

The built parameter's full XML source — carries every trained +coefficient in the same form as the saved .mp file.

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

Property Value

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

+ SampleFlags + +

+ +

The SampleFlag combination the training used (enum text, e.g. “Mx, My, Mz”).

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

Property Value

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

+ Succeeded + +

+ +

False when the training aborted without a built parameter +(no mapped data / no samples); the run's messages explain why.

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

Property Value

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

+ TrainedAtUtc + +

+ +

UTC instant the training call completed.

+
+
+ +
+
public DateTime TrainedAtUtc { get; set; }
+
+ + + + + +

Property Value

+
+
DateTime
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.Training.MillingTraining.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.Training.MillingTraining.html index f48c3e26..63d6ae40 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.Training.MillingTraining.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.Training.MillingTraining.html @@ -154,6 +154,116 @@ Class MillingTraining +

+ DesignMatrixSvdRelativeTol + +

+ +

Relative singular-value cutoff (σ_i/σ_max on σ(M)) for the truncated +pseudo-inverse of the lead-para fit when +EnableDesignMatrixSolver is on. Replaces the legacy +absolute gap (1e-7) applied to σ(MᵀM) = σ(M)², whose effective cut +depends on the data scale.

+
+
+ +
+
public static double DesignMatrixSvdRelativeTol
+
+ + + + +

Field Value

+
+
double
+
+
+ + + + + + + + + + +

+ EnableCwePhasePairing + +

+ +

When enabled, GatherAndBuild(ICuttingPara, ConcurrentDictionary<int, List<ITimeShot>>, ClStrip, SampleFlag, bool, double, IProgress<IMessage>, CancellationToken, out double, out int) determines each step's +rotation phase by the CWE block-pairing detector +(Hi.MillingForces.Training.MillingPhasePairing) instead of the self-bootstrapped +averaged-basis lead parameter, and replaces the averaged-basis outlier +pre-filter by a residual-based pass. Applies to one-flute and +symmetric two-flute cutters in light radial side cuts (contact arc +smaller than the flute pitch); when its preconditions do not hold the +training falls back to the legacy lead path with a warning.

+
+
+ +
+
public static bool EnableCwePhasePairing
+
+ + + + +

Field Value

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

+ EnableDesignMatrixSolver + +

+ +

When enabled, the least-squares fits are solved directly on the N-by-p +design matrix M (thin QR, plus SVD of its R factor for the lead-para +truncated pseudo-inverse) instead of forming the normal-equation matrix +MᵀM first. Forming MᵀM squares the condition number +(κ(MᵀM) = κ(M)²), which halves the usable precision and blurs the rank +structure; the direct path keeps σ(M) intact at the same p-by-p solve +size. Experimental flag for the QR-vs-MᵀM solver comparison.

+
+
+ +
+
public static bool EnableDesignMatrixSolver
+
+ + + + +

Field Value

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

EnableMzLeverWeighting @@ -220,6 +330,89 @@ Don't apply this option.

+ +

+ MissingEngagementAbortRatio + +

+ +

Abort threshold on the fraction of touched, force-bearing steps whose +milling-step engagement could not be used during sample gathering — +either the luggage row was unreadable, or the row was present but the +engagement was never built (physics inactive at simulation time). At +or below the threshold the misses are reported as a summary warning +and training continues on the remaining steps; above it the training +aborts with a ConfigurationError instead of silently building a +model from a fraction of the play (one such degraded sweep cell once +produced outlier coefficients that were nearly read as a resolution +effect). Set to 1 to never abort.

+
+
+ +
+
public static double MissingEngagementAbortRatio
+
+ + + + +

Field Value

+
+
double
+
+
+ + + + + + + + + + +

+ ReTrainAnchorOutputScale + +

+ +

Weight scale of the virtual anchor samples that pull a +GatherAndGetUpdate(ConcurrentDictionary<int, List<ITimeShot>>, ClStrip, ICuttingPara, SampleFlag, double, IProgress<IMessage>, CancellationToken) (ReTrain) result back toward its seed +parameter. The anchors are generated at +scale * Σoutput / ElementNum per coefficient, so their curvature +grows as N² against the data's N — at large sample counts they dominate +and the result reproduces the seed.

+

+Set to 0 to make ReTrain purely data-driven: the seed then only +supplies the phase alignment and the outlier scoring, which turns +ReTrain into an external-lead identifiability instrument ("with a +known-good lead but no prior, what do the data actually say?"). The +default 0.1 keeps the historical seed-anchored ridge behaviour. +

+
+
+ +
+
public static double ReTrainAnchorOutputScale
+
+ + + + +

Field Value

+
+
double
+
+
+ + + + + + + + +

Properties

@@ -390,8 +583,8 @@ Don't apply this option.

-

- Convert(ICuttingPara, ICuttingPara, GeneralApt, double, double, IProgress<object>, CancellationToken) +

+ Convert(ICuttingPara, ICuttingPara, GeneralApt, double, double, IProgress<IMessage>, CancellationToken)

@@ -400,7 +593,7 @@ Don't apply this option.

-
public static ICuttingPara Convert(ICuttingPara src, ICuttingPara resultParaTemplate, GeneralApt apt, double helixAngle_rad, double radialRakeAngle_rad, IProgress<object> messageHost, CancellationToken cancellationToken)
+
public static ICuttingPara Convert(ICuttingPara src, ICuttingPara resultParaTemplate, GeneralApt apt, double helixAngle_rad, double radialRakeAngle_rad, IProgress<IMessage> messageProgress, CancellationToken cancellationToken)

Parameters

@@ -420,7 +613,7 @@ Don't apply this option.

radialRakeAngle_rad double

Radial rake angle in radians

-
messageHost IProgress<object>
+
messageProgress IProgress<IMessage>

Message host for logging

cancellationToken CancellationToken
@@ -447,8 +640,8 @@ Don't apply this option.

-

- Convert(LocalProfileMillingPara, double, double, IProgress<object>, CancellationToken) +

+ Convert(LocalProfileMillingPara, double, double, IProgress<IMessage>, CancellationToken)

@@ -457,7 +650,7 @@ Don't apply this option.

-
public static RakeFaceCuttingPara2d Convert(LocalProfileMillingPara src, double helixAngle_rad, double radialRakeAngle_rad, IProgress<object> messageHost, CancellationToken cancellationToken)
+
public static RakeFaceCuttingPara2d Convert(LocalProfileMillingPara src, double helixAngle_rad, double radialRakeAngle_rad, IProgress<IMessage> messageProgress, CancellationToken cancellationToken)

Parameters

@@ -471,7 +664,7 @@ Don't apply this option.

radialRakeAngle_rad double

Radial rake angle in radians

-
messageHost IProgress<object>
+
messageProgress IProgress<IMessage>

Message host for logging

cancellationToken CancellationToken
@@ -498,8 +691,8 @@ Don't apply this option.

-

- GatherAndGetUpdate(ConcurrentDictionary<int, List<ITimeShot>>, ClStrip, ICuttingPara, SampleFlag, double, IProgress<object>, CancellationToken) +

+ GatherAndGetUpdate(ConcurrentDictionary<int, List<ITimeShot>>, ClStrip, ICuttingPara, SampleFlag, double, IProgress<IMessage>, CancellationToken)

@@ -508,7 +701,7 @@ Don't apply this option.

-
public static ICuttingPara GatherAndGetUpdate(ConcurrentDictionary<int, List<ITimeShot>> stepToTimeShotListDictionary, ClStrip clStrip, ICuttingPara anchorPara, SampleFlag sampleFlags, double outlierRatio, IProgress<object> messageHost, CancellationToken cancellationToken)
+
public static ICuttingPara GatherAndGetUpdate(ConcurrentDictionary<int, List<ITimeShot>> stepToTimeShotListDictionary, ClStrip clStrip, ICuttingPara anchorPara, SampleFlag sampleFlags, double outlierRatio, IProgress<IMessage> messageProgress, CancellationToken cancellationToken)

Parameters

@@ -528,7 +721,7 @@ Don't apply this option.

outlierRatio double

Ratio of outliers to exclude

-
messageHost IProgress<object>
+
messageProgress IProgress<IMessage>

Message host for logging

cancellationToken CancellationToken
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.Training.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.Training.html index 7efcaf26..6f415264 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.Training.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.Training.html @@ -94,6 +94,17 @@

Classes

+
+
MillingParaTrainResult
+

Snapshot of the most recent milling-parameter training call +(LocalProjectService.TrainMillingPara / ReTrainMillingPara) — +the queryable training outcome that otherwise only lands in the output +.mp file's Note. Held by +LocalProjectService.LastMillingParaTrainResult (service lifetime, +last-wins) so callers such as the webservice can read it after a run +without touching the file system.

+
+
MillingTraining

Provides utilities for milling force training and parameter identification.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.html index c0b841a4..e22397d8 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.html @@ -94,11 +94,6 @@

Classes

-
-
FluteZData
-

Represents data for a flute at a specific Z position during milling operation

-
-
MillingForce

Milling force.

@@ -117,11 +112,6 @@ Classes
MillingForceUtil

Utility class for milling force calculations and related operations.

-
-
-
-
MillingForceUtil.AnglePack
-

Container class for angle-specific calculations during milling operation

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingProcs.MillingGuide.html b/App/wwwroot/HiAPI-docsite/api/Hi.MillingProcs.MillingGuide.html index 86a2f6fb..69c6cef2 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingProcs.MillingGuide.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.MillingProcs.MillingGuide.html @@ -213,8 +213,8 @@ Class MillingGuide -

- MillingGuide(XElement, string, IProgress<object>) +

+ MillingGuide(XElement, string, IProgress<IMessage>)

@@ -223,7 +223,7 @@ Class MillingGuide
-
public MillingGuide(XElement src, string baseDirectory, IProgress<object> progress)
+
public MillingGuide(XElement src, string baseDirectory, IProgress<IMessage> progress)

Parameters

@@ -234,7 +234,7 @@ Class MillingGuide
baseDirectory string

Base directory for resolving relative paths

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for XML deserialization.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Fixtures.Fixture.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Fixtures.Fixture.html index f77ca1d8..6da476cc 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Fixtures.Fixture.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Fixtures.Fixture.html @@ -237,8 +237,8 @@ Class Fixture -

- Fixture(XElement, string, string, IProgress<object>) +

+ Fixture(XElement, string, string, IProgress<IMessage>)

@@ -247,7 +247,7 @@ Class Fixture
-
public Fixture(XElement src, string baseDirectory, string relFile, IProgress<object> progress)
+
public Fixture(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress)

Parameters

@@ -261,7 +261,7 @@ Class Fixture
relFile string

The relative file path.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Holders.CylindroidHolder.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Holders.CylindroidHolder.html index 9aa44703..b04d13c6 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Holders.CylindroidHolder.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Holders.CylindroidHolder.html @@ -286,8 +286,8 @@ Class CylindroidHolder -

- CylindroidHolder(XElement, string, string, IProgress<object>) +

+ CylindroidHolder(XElement, string, string, IProgress<IMessage>)

@@ -296,7 +296,7 @@ Class CylindroidHolder
-
public CylindroidHolder(XElement src, string baseDirectory, string relFile, IProgress<object> progress)
+
public CylindroidHolder(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress)

Parameters

@@ -310,7 +310,7 @@ Class CylindroidHolder
relFile string

The relative file path.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Holders.FreeformHolder.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Holders.FreeformHolder.html index 16b96ec7..9da94e3c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Holders.FreeformHolder.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Holders.FreeformHolder.html @@ -286,8 +286,8 @@ Class FreeformHolder -

- FreeformHolder(XElement, string, string, IProgress<object>) +

+ FreeformHolder(XElement, string, string, IProgress<IMessage>)

@@ -296,7 +296,7 @@ Class FreeformHolder
-
public FreeformHolder(XElement src, string baseDirectory, string relFile, IProgress<object> progress)
+
public FreeformHolder(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress)

Parameters

@@ -310,7 +310,7 @@ Class FreeformHolder
relFile string

Relative file path

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Solids.Solid.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Solids.Solid.html index 4a400fb7..8f11ba6f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Solids.Solid.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Solids.Solid.html @@ -271,8 +271,8 @@ Provides thread-safe access to geometry data and caching mechanisms.

-

- Solid(XElement, string, IProgress<object>) +

+ Solid(XElement, string, IProgress<IMessage>)

@@ -281,7 +281,7 @@ Provides thread-safe access to geometry data and caching mechanisms.

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

Parameters

@@ -292,7 +292,7 @@ Provides thread-safe access to geometry data and caching mechanisms.

baseDirectory string

The base directory for resolving relative paths.

-
progress IProgress<object>
+
progress IProgress<IMessage>

The progress reporter.

@@ -412,39 +412,6 @@ Setting this property will clear the cached data.

- - -

- NativeSmoothTopoStl - -

- -

Gets the native smooth topology STL representation. -The data is created from the STL representation when first accessed.

-
-
- -
-
public NativeTopoStld NativeSmoothTopoStl { get; }
-
- - - - - -

Property Value

-
-
NativeTopoStld
-
-
- - - - - - - -

@@ -544,6 +511,78 @@ Setting this to false will clear the cached data.

+ + +

+ Rgb + +

+ +

Optional authored display color (RGB, each channel 0~1). Null means not +authored: display sites fall back to a color seeded from the hosting +anchor's persisted Guid, and Display(Bind) pushes no color +of its own. A collision (Collision) always +overrides the authored color with red. +Serialized as the optional Rgb attribute of the +<Solid> element; legacy readers ignore attributes, so the +addition is backward and forward compatible.

+
+
+ +
+
public Vec3d Rgb { get; set; }
+
+ + + + + +

Property Value

+
+
Vec3d
+
+
+ + + + + + + + + + +

+ SmoothTopoStl3d + +

+ +

Gets the native smooth topology STL representation. +The data is created from the STL representation when first accessed.

+
+
+ +
+
public NativeTopoStl3d SmoothTopoStl3d { get; }
+
+ + + + + +

Property Value

+
+
NativeTopoStl3d
+
+
+ + + + + + + +

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Topo.StlSourceTopoBrick.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Topo.StlSourceTopoBrick.html index c9c6342f..b74e8788 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Topo.StlSourceTopoBrick.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Topo.StlSourceTopoBrick.html @@ -306,6 +306,46 @@ Implements display, collision detection, and content update capabilities.

+ + +

+ StlSourceTopoBrick(Anchor, Solid) + +

+ +

Initializes a new instance of the StlSourceTopoBrick class +hosting an externally owned Solid. The brick does +NOT dispose an injected solid: the provider keeps its lifecycle, so one +solid instance can be shared by several hosts (e.g. two topology +entities displaying the same machine part).

+
+
+ +
+
public StlSourceTopoBrick(Anchor anchor, Solid solid)
+
+ +

Parameters

+
+
anchor Anchor
+

The anchor point for this brick.

+
+
solid Solid
+

The externally owned solid to host.

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

Properties

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.Workpiece.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.Workpiece.html index 1ac50543..711fccb2 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.Workpiece.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.Workpiece.html @@ -189,7 +189,7 @@ Class Workpiece

Remarks

Workpiece holds the persistent/serializable configuration. -Runtime geometry, caching, diff calculation, defect scanning, display and collision +Meshed geometry, caching, diff calculation, defect scanning, display and collision are managed by WorkpieceService.

@@ -227,8 +227,8 @@ are managed by -

- Workpiece(XElement, string, string, IProgress<object>) +

+ Workpiece(XElement, string, string, IProgress<IMessage>)

@@ -237,7 +237,7 @@ are managed by
-
public Workpiece(XElement src, string baseDirectory, string relFile, IProgress<object> progress)
+
public Workpiece(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress)

Parameters

@@ -251,7 +251,7 @@ are managed by
relFile string

Relative file path.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for diagnostic messages emitted during construction.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html index 1344f2a9..d43da26f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html @@ -6,7 +6,7 @@ - + @@ -97,7 +97,7 @@ Class WorkpieceEditorDisplayee
Assembly
HiMech.dll
-

Displayee for visualizing workpiece raw/ideal/runtime geometry and anchors.

+

Displayee for visualizing workpiece raw/ideal/meshed geometry and anchors.

@@ -205,7 +205,7 @@ Class WorkpieceEditorDisplayee

Parameters

progress IProgress<object>
-

Progress reporter for runtime geometry operations (e.g. defect warnings).

+

Progress reporter for meshed geometry operations (e.g. defect warnings).

@@ -359,7 +359,7 @@ Class WorkpieceEditorDisplayee -

Progress reporter for runtime geometry operations.

+

Progress reporter for meshed geometry operations.

@@ -416,19 +416,19 @@ Class WorkpieceEditorDisplayee - + -

- ShowRuntimeGeom +

+ ShowMeshedGeom

-

Gets or sets whether to show runtime geometry.

+

Gets or sets whether to show meshed geometry.

-
public bool ShowRuntimeGeom { get; set; }
+
public bool ShowMeshedGeom { get; set; }
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html index c7734a59..55e45b4c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html @@ -407,19 +407,19 @@ Class WorkpieceEditorDisplayeeConfig - + -

- ShowProgramZeroAnchor +

+ ShowMeshedGeom

-

Whether to show program zero anchor.

+

Whether to show meshed geometry.

-
public bool ShowProgramZeroAnchor { get; set; }
+
public bool ShowMeshedGeom { get; set; }
@@ -439,19 +439,19 @@ Class WorkpieceEditorDisplayeeConfig - + -

- ShowRuntimeGeom +

+ ShowProgramZeroAnchor

-

Whether to show runtime geometry.

+

Whether to show program zero anchor.

-
public bool ShowRuntimeGeom { get; set; }
+
public bool ShowProgramZeroAnchor { get; set; }
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.WorkpieceService.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.WorkpieceService.html index 621790ec..9746b920 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.WorkpieceService.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.WorkpieceService.html @@ -192,7 +192,7 @@ Class WorkpieceService

Remarks

-

WorkpieceService handles runtime geometry, caching, diff calculation, +

WorkpieceService handles meshed geometry, caching, diff calculation, defect scanning, display and collision — state that does not require configuration IO. Compare to Workpiece, which holds the persistent/serializable configuration.

@@ -204,8 +204,8 @@ Compare to -

- WorkpieceService(Func<Workpiece>) +

+ WorkpieceService(Func<Workpiece>, Func<string>)

@@ -214,13 +214,15 @@ Compare to
-
public WorkpieceService(Func<Workpiece> workpieceGetter)
+
public WorkpieceService(Func<Workpiece> workpieceGetter, Func<string> baseDirectoryGetter = null)

Parameters

workpieceGetter Func<Workpiece>
+
baseDirectoryGetter Func<string>
+
@@ -238,6 +240,39 @@ Compare to + +

+ BaseDirectoryGetter + +

+ +

Provides the base directory that relative file paths in this service resolve against +(injected by the owning project service); when null, paths are used as-is.

+
+
+ +
+
public Func<string> BaseDirectoryGetter { get; }
+
+ + + + + +

Property Value

+
+
Func<string>
+
+
+ + + + + + + +

@@ -366,6 +401,41 @@ Compare to + +

+ DetectionRadius_mm + +

+ +

Detection radius in millimeters last used by Diff(double, CancellationToken, IProgress<IMessage>). +It is set by that runtime call (e.g. from a session / mission command), not by display callers, +and saved on the service so consumers (e.g. the web UI) can bound DiffVisualRadius_mm +to it — the visual radius is meaningful only up to the detection radius.

+
+
+ +
+
public double DetectionRadius_mm { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + +

@@ -379,7 +449,7 @@ For Internal Use.

-
public ConcurrentBag<DiffAttachment> DiffAttachmentBag { get; set; }
+
public ConcurrentBag<DiffAttachment> DiffAttachmentBag { get; }
@@ -624,19 +694,19 @@ The derived solid from + -

- IsRuntimeGeomInit +

+ IsMeshedGeomInit

-

Indicates whether the runtime geometry is initialized.

+

Indicates whether the meshed geometry is initialized.

-
public bool IsRuntimeGeomInit { get; }
+
public bool IsMeshedGeomInit { get; }
@@ -731,7 +801,7 @@ The derived solid from

Drops runtime geometry and defect display caches so the next access rebuilds from the current Workpiece.

+

Drops the raw / ideal solid and defect display caches so the next access rebuilds from the current Workpiece.

@@ -834,8 +904,8 @@ The derived solid from -

- Diff(double, CancellationToken, IProgress<object>) +

+ Diff(double, CancellationToken, IProgress<IMessage>)

@@ -844,18 +914,18 @@ The derived solid from
-
public void Diff(double detectionRadius, CancellationToken token, IProgress<object> progress = null)
+
public void Diff(double detectionRadius, CancellationToken token, IProgress<IMessage> messageProgress = null)

Parameters

detectionRadius double
-

Detection radius.

+

Detection radius; also saved to DetectionRadius_mm.

token CancellationToken

Cancellation token.

-
progress IProgress<object>
+
messageProgress IProgress<IMessage>

Progress reporting interface.

@@ -1128,35 +1198,38 @@ This function is usually used to compute the bounding box of elements.

- + -

- GetRuntimeGeom(CancellationToken, IProgress<object>) +

+ GetOrBuildMeshedGeom(CancellationToken, IProgress<IMessage>)

-

Gets the runtime geometry.

+

Returns the current meshed geometry, lazily building it from the workpiece's +InitGeom (voxelize via NewWithDefectInfos(Stl, double, CancellationToken, IProgress<IMessage>), or load a +CubeTreeFile) when not yet present. The first build can be slow — hence the +cancellation token + progress sinks; once built, the tree is returned cheaply.

-
public CubeTree GetRuntimeGeom(CancellationToken token, IProgress<object> progress = null)
+
public CubeTree GetOrBuildMeshedGeom(CancellationToken token, IProgress<IMessage> messageProgress = null)

Parameters

token CancellationToken
-

Cancellation token.

+

Cancels an in-progress build (leaves the geometry unbuilt / null).

-
progress IProgress<object>
-

Progress reporting interface.

+
messageProgress IProgress<IMessage>
+

IMessage-channel sink (null = silent).

Returns

CubeTree
-

Cube tree representing the runtime geometry.

+

The meshed cube tree; null when there is no workpiece / InitGeom, or the build was cancelled.

@@ -1170,25 +1243,35 @@ This function is usually used to compute the bounding box of elements.

- + -

- ReadRuntimeGeom(string) +

+ ReadMeshedGeom(string, IProgress<IMessage>)

-

Reads the runtime geometry from a file.

+

Reads the meshed geometry from a file, relative to BaseDirectoryGetter.

-
public void ReadRuntimeGeom(string file)
+
public bool ReadMeshedGeom(string relFile, IProgress<IMessage> messageProgress = null)

Parameters

-
file string
-

Source file path.

+
relFile string
+

Source file path, relative to the injected base directory.

+
+
messageProgress IProgress<IMessage>
+

IMessage-channel sink injected by the caller (null = silent).

+
+
+ +

Returns

+
+
bool
+

True if the file existed and was read; false if it was not found.

@@ -1202,27 +1285,55 @@ This function is usually used to compute the bounding box of elements.

+ - - -

- ResetRuntimeGeom(ClStrip) +

+ ResetMeshedGeom()

-

Resets the runtime geometry.

+

Resets the meshed geometry.

-
public void ResetRuntimeGeom(ClStrip clStrip)
+
public void ResetMeshedGeom()
+
+ + + + + + + + + + + + + + + +

+ RetireAttachments(IReadOnlyCollection<CbtrPickable>) + +

+ +

Retires attachments OWNED BY A CALLER (e.g. ClStrip's ClStripPos) that are attached to the +current meshed tree. If a tree is current it detaches them under its write-gate render +barrier first; otherwise (tree already retired) it just frees them on the background chain. +Targeted — never touches the base attachment or diff attachments.

+
+
+ +
+
public void RetireAttachments(IReadOnlyCollection<CbtrPickable> attachments)

Parameters

-
clStrip ClStrip
-

Cutter location strip.

-
+
attachments IReadOnlyCollection<CbtrPickable>
+
@@ -1236,24 +1347,24 @@ This function is usually used to compute the bounding box of elements.

- + -

- ScanRuntimeGeomInfDefect(IProgress<object>, CancellationToken) +

+ ScanMeshedGeomInfDefect(IProgress<IMessage>, CancellationToken)

-

Scans the runtime geometry for inf defects.

+

Scans the meshed geometry for inf defects.

-
public bool? ScanRuntimeGeomInfDefect(IProgress<object> messageHost, CancellationToken cancellationToken)
+
public bool? ScanMeshedGeomInfDefect(IProgress<IMessage> messageProgress, CancellationToken cancellationToken)

Parameters

-
messageHost IProgress<object>
+
messageProgress IProgress<IMessage>
cancellationToken CancellationToken
@@ -1275,25 +1386,25 @@ This function is usually used to compute the bounding box of elements.

- + -

- SetRuntimeGeom(CubeTree) +

+ SetMeshedGeom(CubeTree)

-

Sets the runtime geometry instance and rebuilds its attachments.

+

Sets the meshed geometry instance and rebuilds its attachments.

-
public void SetRuntimeGeom(CubeTree runtimeGeom_)
+
public void SetMeshedGeom(CubeTree meshedGeom_)

Parameters

-
runtimeGeom_ CubeTree
-

The runtime cube tree geometry.

+
meshedGeom_ CubeTree
+

The meshed cube tree geometry.

@@ -1308,31 +1419,31 @@ This function is usually used to compute the bounding box of elements.

- + -

- WriteRuntimeGeom(string, CancellationToken, IProgress<object>) +

+ WriteMeshedGeom(string, CancellationToken, IProgress<IMessage>)

-

Writes the runtime geometry to a file.

+

Writes the meshed geometry to a file, relative to BaseDirectoryGetter.

-
public void WriteRuntimeGeom(string file, CancellationToken token, IProgress<object> progress = null)
+
public void WriteMeshedGeom(string relFile, CancellationToken token, IProgress<IMessage> messageProgress = null)

Parameters

-
file string
-

Target file path.

+
relFile string
+

Target file path, relative to the injected base directory.

token CancellationToken

Cancellation token.

-
progress IProgress<object>
-

Progress reporting interface.

+
messageProgress IProgress<IMessage>
+

IMessage-channel progress sink (null = silent).

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.html index 298a4935..1d0bbac9 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Workpieces.html @@ -101,7 +101,7 @@ Classes
WorkpieceEditorDisplayee
-

Displayee for visualizing workpiece raw/ideal/runtime geometry and anchors.

+

Displayee for visualizing workpiece raw/ideal/meshed geometry and anchors.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html index 8d7a9fa2..820d7683 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html @@ -317,8 +317,8 @@ For general/end-user use, apply -

- CodeXyzabcMachineTool(XElement, string, IProgress<object>) +

+ CodeXyzabcMachineTool(XElement, string, IProgress<IMessage>)

@@ -327,7 +327,7 @@ For general/end-user use, apply
-
public CodeXyzabcMachineTool(XElement src, string baseDirectory, IProgress<object> progress)
+
public CodeXyzabcMachineTool(XElement src, string baseDirectory, IProgress<IMessage> progress)

Parameters

@@ -338,7 +338,7 @@ For general/end-user use, apply
string

The base directory for resolving relative paths.

-
progress IProgress<object>
+
progress IProgress<IMessage>

The progress reporter.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html index d9417823..d69db590 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html @@ -224,8 +224,8 @@ Class CodeXyzabcMachineToolUri -

- CodeXyzabcMachineToolUri(XElement, string, IProgress<object>, object[]) +

+ CodeXyzabcMachineToolUri(XElement, string, IProgress<IMessage>, object[])

@@ -234,7 +234,7 @@ Class CodeXyzabcMachineToolUri
-
public CodeXyzabcMachineToolUri(XElement src, string baseDirectory, IProgress<object> progress, object[] res)
+
public CodeXyzabcMachineToolUri(XElement src, string baseDirectory, IProgress<IMessage> progress, object[] res)

Parameters

@@ -245,8 +245,8 @@ Class CodeXyzabcMachineToolUri
baseDirectory string

Base directory.

-
progress IProgress<object>
-

Progress reporter passed to LoadFromUri(string, IProgress<object>, object[]).

+
progress IProgress<IMessage>
+

Progress reporter passed to LoadFromUri(string, IProgress<IMessage>, object[]).

res object[]

Additional resources.

@@ -466,8 +466,8 @@ Class CodeXyzabcMachineToolUri -

- LoadFromUri(string, IProgress<object>, object[]) +

+ LoadFromUri(string, IProgress<IMessage>, object[])

@@ -476,7 +476,7 @@ Class CodeXyzabcMachineToolUri
-
public void LoadFromUri(string baseDirectory, IProgress<object> progress, object[] res)
+
public void LoadFromUri(string baseDirectory, IProgress<IMessage> progress, object[] res)

Parameters

@@ -484,7 +484,7 @@ Class CodeXyzabcMachineToolUri
baseDirectory string

Base directory.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for nested XML / factory loading.

res object[]
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html index b5ec8e7e..11dbe454 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html @@ -280,8 +280,8 @@ Class GeneralXyzabcMachineTool -

- GeneralXyzabcMachineTool(XElement, string, IProgress<object>) +

+ GeneralXyzabcMachineTool(XElement, string, IProgress<IMessage>)

@@ -290,7 +290,7 @@ Class GeneralXyzabcMachineTool
-
public GeneralXyzabcMachineTool(XElement src, string baseDirectory, IProgress<object> progress)
+
public GeneralXyzabcMachineTool(XElement src, string baseDirectory, IProgress<IMessage> progress)

Parameters

@@ -301,7 +301,7 @@ Class GeneralXyzabcMachineTool
baseDirectory string

Base directory.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Progress reporter for loading XyzabcChain and related children.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcOpt.NcOptProc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcOpt.NcOptProc.html deleted file mode 100644 index f1777e0c..00000000 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcOpt.NcOptProc.html +++ /dev/null @@ -1,630 +0,0 @@ - - - - - Class NcOptProc | HiAPI-C# 2025 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
-
-
Table of Contents
- -
-
- -
-
-
- -
-
- - - -
- -
- - - -

-Class NcOptProc -

- -
-
Namespace
Hi.NcOpt
-
Assembly
HiNc.dll
-
- -

Provides functionality for optimizing NC programs by modifying feed rates and tool paths.

-
-
- -
-
public class NcOptProc : IMakeXmlSource
-
- - - - -
-
Inheritance
-
- -
NcOptProc
-
-
- -
-
Implements
-
- -
-
- - -
-
Inherited Members
-
- - - - - - - -
- -
-
Extension Methods
-
- - - - - - - -
- - - - - -

Constructors -

- - - - -

- NcOptProc(SequentialBulkReader<MillingStepLuggage>) - -

- -

Ctor.

-
-
- -
-
public NcOptProc(SequentialBulkReader<MillingStepLuggage> millingStepLuggageReader)
-
- -

Parameters

-
-
millingStepLuggageReader SequentialBulkReader<MillingStepLuggage>
-
-
- - - - - - - - - - - - - - -

- NcOptProc(XElement, string, SequentialBulkReader<MillingStepLuggage>) - -

- -

Ctor.

-
-
- -
-
public NcOptProc(XElement src, string baseDirectory, SequentialBulkReader<MillingStepLuggage> millingStepLuggageReader)
-
- -

Parameters

-
-
src XElement
-

XML

-
-
baseDirectory string
-

Base directory path

-
-
millingStepLuggageReader SequentialBulkReader<MillingStepLuggage>
-

Milling step luggage reader

-
-
- - - - - - - - - - - - -

Properties -

- - - - -

- CoreNum - -

- -

Parallel computation thread num. -0 is special number to use all cores.

-
-
- -
-
public static int CoreNum { get; set; }
-
- - - - - -

Property Value

-
-
int
-
-
- - - - - - - - - - -

- EmbeddedLogMode - -

- -

Gets or sets the embedded log mode for NC optimization.

-
-
- -
-
public static NcOptimizationEmbeddedLogMode EmbeddedLogMode { get; set; }
-
- - - - - -

Property Value

-
-
NcOptimizationEmbeddedLogMode
-
-
- - - - - - - - - - -

- EnableIndividualStepAdjustmentLog - -

- -

Enable create log file for building individual NcOptProc.StepAdjustment process.

-
-
- -
-
public static bool EnableIndividualStepAdjustmentLog { get; set; }
-
- - - - - -

Property Value

-
-
bool
-
-
- - - - - - - - - - -

- XName - -

- -

Name for XML IO.

-
-
- -
-
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.

-
- - - - - - -

- Optimize(ICuttingPara, MachiningSession, LinkedList<HardNcLine>, HardNcEnv, List<MachiningStep>, MachiningToolHouse, IProgress<object>, CancellationToken, string, string) - -

- -

Optimizes NC lines based on cutting parameters and milling steps.

-
-
- -
-
public IEnumerable<(HardNcLine SrcNcLine, HardNcLine OptNcLine)> Optimize(ICuttingPara millingPara, MachiningSession machiningSession, LinkedList<HardNcLine> srcNcLines, HardNcEnv ncEnv, List<MachiningStep> machiningSteps, MachiningToolHouse millingToolHouse, IProgress<object> progress, CancellationToken cancellationToken, string baseDirectory, string relFileTemplate)
-
- -

Parameters

-
-
millingPara ICuttingPara
-

The cutting parameters for optimization.

-
-
machiningSession MachiningSession
-

The current machining session.

-
-
srcNcLines LinkedList<HardNcLine>
-

The source NC lines to optimize.

-
-
ncEnv HardNcEnv
-

The NC environment settings.

-
-
machiningSteps List<MachiningStep>
-

The list of milling steps.

-
-
millingToolHouse MachiningToolHouse
-

The machining tool house.

-
-
progress IProgress<object>
-

The message host for logging.

-
-
cancellationToken CancellationToken
-

Cancellation token to cancel the operation.

-
-
baseDirectory string
-

The base directory for file operations.

-
-
relFileTemplate string
-

The relative file template for output.

-
-
- -

Returns

-
-
IEnumerable<(HardNcLine SrcNcLine, HardNcLine OptNcLine)>
-

Enumerable of source and optimized NC line pairs.

-
-
- - - - - - - - - - - - - -

- OptimizeToFiles(ICuttingPara, MachiningSession, LinkedList<HardNcLine>, HardNcEnv, MachiningToolHouse, ClStrip, string, IProgress<object>, CancellationToken, string) - -

- -

Optimizes NC lines and writes the results to files.

-
-
- -
-
public void OptimizeToFiles(ICuttingPara millingPara, MachiningSession machiningSession, LinkedList<HardNcLine> ncLines, HardNcEnv ncEnv, MachiningToolHouse millingToolHouse, ClStrip clStrip, string baseDirectory, IProgress<object> progress, CancellationToken cancellationToken, string relFileTemplate = "Output/Opt-[NcName]")
-
- -

Parameters

-
-
millingPara ICuttingPara
-

The cutting parameters for optimization

-
-
machiningSession MachiningSession
-

The current machining session

-
-
ncLines LinkedList<HardNcLine>
-

The NC lines to optimize

-
-
ncEnv HardNcEnv
-

The NC environment settings

-
-
millingToolHouse MachiningToolHouse
-

The machining tool house

-
-
clStrip ClStrip
-

The cutter location strip

-
-
baseDirectory string
-

The base directory for output files

-
-
progress IProgress<object>
-

The message host for logging

-
-
cancellationToken CancellationToken
-

Cancellation token to cancel the operation

-
-
relFileTemplate string
-

The relative file template for output files

-
-
- - - - - - - - - - - - - - -

- Reg(XFactory) - -

- -

Registers this type's deserializer with the given XFactory -(or Default when factory is -null). Idempotent.

-
-
- -
-
public static void Reg(XFactory factory = null)
-
- -

Parameters

-
-
factory XFactory
-
-
- - - - - - - - - - - - - -
- -
-
- - -
- -
- -
-
- -
- - - - diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcOpt.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcOpt.html index fafa6b60..ad29bb6d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcOpt.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcOpt.html @@ -119,11 +119,6 @@ Provides implementation for feed-per-tooth optimization with fixed minimum and m
NcOptOption

Represents the optimization options for NC operations.

-
-
-
-
NcOptProc
-

Provides functionality for optimizing NC programs by modifying feed rates and tool paths.

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

+Class ControllerPresetWriter +

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

Writes the built-in brand controller presets out as standalone +SoftNcRunner resource files.

+

+A controller resource file is one serialized SoftNcRunner — the +whole pipeline (dependencies, segmenter, initializers, syntaxes, semantics) +that decides how a brand's NC code is interpreted. The shipped copies live +under Resource/Controller/ so the Object Management Load +browser starts populated; they are regenerable snapshots, not the source of +truth — the brand properties on SoftNcRunner are. +

+

+Writing needs no XFactory registration. Reading a file back +does: call Reg(XFactory) first, otherwise +XFactory.GenListSkippingUnloadable drops every unregistered pipeline +entry and hands back a silently hollow runner. +

+
+
+ +
+
public static class ControllerPresetWriter
+
+ + + + +
+
Inheritance
+
+ +
ControllerPresetWriter
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Fields +

+ + + +

+ FileExtension + +

+ +

Canonical extension of a serialized SoftNcRunner — named after +the controller it describes rather than the class that implements it. The +Controller tree's Object Management menu filters on it, so a file written +here is visible in its Load browser; the older .SoftNcRunner +extension stays loadable there for assets already saved under it.

+
+
+ +
+
public const string FileExtension = ".Controller"
+
+ + + + +

Field Value

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

+ ResourceCategoryFolder + +

+ +

Resource category folder the presets are shipped under, relative to the +resource root (i.e. Resource/Controller).

+
+
+ +
+
public const string ResourceCategoryFolder = "Controller"
+
+ + + + +

Field Value

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

Properties +

+ + + + +

+ BrandNames + +

+ +

Brand tokens CreateBrandPreset(string) understands, in the order +WriteAllBrandPresetFiles(string) writes them.

+
+
+ +
+
public static IReadOnlyList<string> BrandNames { get; }
+
+ + + + + +

Property Value

+
+
IReadOnlyList<string>
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ CreateBrandPreset(string) + +

+ +

Gets a fresh brand preset runner, or null when +brand is not one of BrandNames.

+
+
+ +
+
public static SoftNcRunner CreateBrandPreset(string brand)
+
+ +

Parameters

+
+
brand string
+

One of the CncBrandDependency brand tokens.

+
+
+ +

Returns

+
+
SoftNcRunner
+
+
+ + + + + + + +

Remarks

+

Each brand property builds a new instance per read, so the returned runner +is safe to mutate before writing.

+
+ + + + + + +

+ GetBrandPresetFileName(string) + +

+ +

Builds the file name a brand preset is shipped under, e.g. +Fanuc.default.Controller — the ResourceDefaultMarker +token declares the file system-owned, so the resource seeder may refresh +it on version updates. The runner carries no name of its own, so the +file name is the only identity a resource browser can show.

+
+
+ +
+
public static string GetBrandPresetFileName(string brand)
+
+ +

Parameters

+
+
brand string
+

One of the CncBrandDependency brand tokens.

+
+
+ +

Returns

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

+ WriteAllBrandPresetFiles(string) + +

+ +

Writes every brand preset in BrandNames into +targetDirectory and returns the written file paths.

+
+
+ +
+
public static IReadOnlyList<string> WriteAllBrandPresetFiles(string targetDirectory)
+
+ +

Parameters

+
+
targetDirectory string
+

Directory to write into, e.g. an absolute path ending in Resource/Controller.

+
+
+ +

Returns

+
+
IReadOnlyList<string>
+
+
+ + + + + + + + + + + + + +

+ WriteBrandPresetFile(string, string) + +

+ +

Writes one brand preset into targetDirectory and returns +the written file path. Missing directories are created.

+
+
+ +
+
public static string WriteBrandPresetFile(string brand, string targetDirectory)
+
+ +

Parameters

+
+
brand string
+

One of the CncBrandDependency brand tokens.

+
+
targetDirectory string
+

Directory to write into, e.g. an absolute path ending in Resource/Controller.

+
+
+ +

Returns

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

Exceptions

+
+
ArgumentException
+

brand is not a known brand.

+
+
ArgumentNullException
+

targetDirectory is null or blank.

+
+
+ + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + 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 788beb77..3e630d60 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.CncBrandDependency.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.CncBrandDependency.html @@ -98,7 +98,7 @@ Class CncBrandDependency

Explicit CNC controller brand identifier carried in -NcDependencyList. +PipelineNcDependencyList. Use ncDependencyList.OfType<CncBrandDependency>().FirstOrDefault() to retrieve the brand.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html index e0d4489f..0b9ec009 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html @@ -108,7 +108,7 @@ and derived convenience properties.
-
public abstract class ControllerParameterTableBase : IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, INcDependency, IMakeXmlSource
+
public abstract class ControllerParameterTableBase : IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, ISpindleControlConfig, IMCodeDeclarationConfig, IToolChangeTriggerConfig, INcDependency, IMakeXmlSource
@@ -129,6 +129,9 @@ and derived convenience properties. + + + @@ -300,6 +303,45 @@ and derived convenience properties. + + +

+ EffectiveMCodeDeclarations + +

+ +

The declaration view the consumers resolve against +(IMCodeDeclarationConfig and +TryGetMCodeEffects(string, out MCodeEffects)/TryResolveDirection(string, out SpindleDirection)). +Defaults to MCodeDeclarations verbatim; a brand subclass +overrides it to overlay declarations mandated by its own machine data +(e.g. the Siemens MD22560 tool-change M function) without writing them +into the stored dictionary — the stored declarations, XML, and clones +stay derivation-free and the overlay re-derives on every read.

+
+
+ +
+
protected virtual IReadOnlyDictionary<string, MCodeEffects> EffectiveMCodeDeclarations { get; }
+
+ + + + + +

Property Value

+
+
IReadOnlyDictionary<string, MCodeEffects>
+
+
+ + + + + + + +

@@ -364,6 +406,44 @@ and derived convenience properties. + + +

+ MCodeDeclarations + +

+ +

Declared machine M-codes and their effects — the single storage +behind both IMCodeDeclarationConfig and the narrower +ISpindleControlConfig face, so one code is never +half-recognized by two separate maps. Key = M-code as parsed +(e.g., “M13”), case-insensitive. Serialized as +<MCode> elements (spindle-direction-only entries keep +the legacy <SpindleMCode> element for older readers).

+
+
+ +
+
public Dictionary<string, MCodeEffects> MCodeDeclarations { get; set; }
+
+ + + + + +

Property Value

+
+
Dictionary<string, MCodeEffects>
+
+
+ + + + + + + +

@@ -429,6 +509,41 @@ Null if not defined for this controller brand.

+ + +

+ SpindleDirectionCodes + +

+ +

Spindle-direction view over MCodeDeclarations: +every declared code that carries a +SpindleDirection. +See ISpindleControlConfig.

+
+
+ +
+
public IReadOnlyDictionary<string, SpindleDirection> SpindleDirectionCodes { get; }
+
+ + + + + +

Property Value

+
+
IReadOnlyDictionary<string, SpindleDirection>
+
+
+ + + + + + + +

@@ -527,6 +642,44 @@ Null if not defined for this controller brand.

+ + +

+ ToolWordTriggersChange + +

+ +

When true, a T word performs the tool change by itself +(turret/lathe semantics — Siemens MD22550 +$MC_TOOL_CHANGE_MODE = 0). Default false: T only +pre-selects; the trigger M-code changes the tool. +See IToolChangeTriggerConfig. Virtual so a brand +subclass can defer to its own machine data when that carries the +same semantics (the Siemens table consults MD22550 when present).

+
+
+ +
+
public virtual bool ToolWordTriggersChange { get; set; }
+
+ + + + + +

Property Value

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

Methods

@@ -612,6 +765,238 @@ Use + +

+ ConfigureSpindleDirectionCode(string, SpindleDirection) + +

+ +

Adds or updates a custom spindle direction M-code.

+
+
+ +
+
public void ConfigureSpindleDirectionCode(string mCode, SpindleDirection direction)
+
+ +

Parameters

+
+
mCode string
+
+
direction SpindleDirection
+
+
+ + + + + + + + + + + + + + +

+ CopyParamsTo(ControllerParameterTableBase) + +

+ +

Deep-copies this table's SystemParams, AxisParams, +IntAxisParams, MCodeDeclarations, and +ToolWordTriggersChange into +target, replacing the target's dictionaries with +independent copies (outer and inner buckets; declaration entries cloned). +Subclasses expose a typed DeepClone that constructs the concrete table +and calls this. Used by the parameter-table proxies to clone their fixed +machine-config seed into a host that has no table yet.

+
+
+ +
+
protected void CopyParamsTo(ControllerParameterTableBase target)
+
+ +

Parameters

+
+
target ControllerParameterTableBase
+

The table to overwrite with deep copies of this table's parameters.

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

+ DeclareMCode(string, MCodeEffects) + +

+ +

Adds or replaces the declaration for an M-code. The effects are +copied on store, so the caller may reuse or further mutate its +instance without coupling declarations to each other.

+
+
+ +
+
public void DeclareMCode(string mCode, MCodeEffects effects)
+
+ +

Parameters

+
+
mCode string
+
+
effects MCodeEffects
+
+
+ + + + + + + + + + + + + + +

+ DescribeAxisParam(int) + +

+ +

Per-axis double counterpart of DescribeSystemParam(int). +Covers the role ids the base class consumes (reference position, +rapid rate, stroke limits); brand subclasses may override for their +own vocabulary or extra numbers.

+
+
+ +
+
public virtual string DescribeAxisParam(int paramId)
+
+ +

Parameters

+
+
paramId int
+

Brand-specific parameter/MD/MP number.

+
+
+ +

Returns

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

+ DescribeIntAxisParam(int) + +

+ +

Per-axis integer counterpart of DescribeSystemParam(int). +Covers the axis-type id the base class consumes.

+
+
+ +
+
public virtual string DescribeIntAxisParam(int paramId)
+
+ +

Parameters

+
+
paramId int
+

Brand-specific parameter/MD/MP number.

+
+
+ +

Returns

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

+ DescribeSystemParam(int) + +

+ +

Short usage label for a well-known system parameter id, or null when +the id has no modeled meaning (a raw pass-through row). Brand +subclasses extend this with their own well-known numbers; the native +parameter UI shows the label next to the raw id so an operator can +tell the modeled parameters from free extras.

+
+
+ +
+
public virtual string DescribeSystemParam(int paramId)
+
+ +

Parameters

+
+
paramId int
+

Brand-specific parameter/MD/MP number.

+
+
+ +

Returns

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

@@ -995,6 +1380,70 @@ Since the folder can be moving with the configuration file.

+ + +

+ RemoveMCodeDeclaration(string) + +

+ +

Removes the declaration for an M-code.

+
+
+ +
+
public void RemoveMCodeDeclaration(string mCode)
+
+ +

Parameters

+
+
mCode string
+
+
+ + + + + + + + + + + + + + +

+ RemoveSpindleDirectionCode(string) + +

+ +

Removes a custom spindle direction M-code.

+
+
+ +
+
public void RemoveSpindleDirectionCode(string mCode)
+
+ +

Parameters

+
+
mCode string
+
+
+ + + + + + + + + + + +

@@ -1201,6 +1650,94 @@ Unit is mm for linear axes, deg for rotary axes.

+ + +

+ TryGetMCodeEffects(string, out MCodeEffects) + +

+ +

Resolves a parsed flag to its declared effects. Returns false for +undeclared codes — ISO defaults are the consumers' concern, not +this config's. The returned instance is the live declaration: +treat it as read-only and reconfigure through +DeclareMCode(string, MCodeEffects) instead of mutating it.

+
+
+ +
+
public bool TryGetMCodeEffects(string mCode, out MCodeEffects effects)
+
+ +

Parameters

+
+
mCode string
+
+
effects MCodeEffects
+
+
+ +

Returns

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

+ TryResolveDirection(string, out SpindleDirection) + +

+ +

Resolves a parsed flag to a spindle direction. Returns true only for +configured custom codes whose declaration carries no other effect — +the caller consumes the whole flag for this one meaning, so a +composite declaration (e.g. spindle + coolant) must instead be +expanded by MCodeExpansionSyntax to keep +its other halves alive. ISO M03/M04/M05 defaults are the caller's +fallback, not this config's concern.

+
+
+ +
+
public bool TryResolveDirection(string mCode, out SpindleDirection direction)
+
+ +

Parameters

+
+
mCode string
+
+
direction SpindleDirection
+
+
+ +

Returns

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

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 index 93cd82b9..a338cf0d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucGotoIterationDependency.html @@ -104,7 +104,7 @@ the soft cap above which the upcoming runtime per-target hit counter (CountByTarget — not serialised, cleared at session start by the ISessionResettable sweep in -RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)).

+RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken)).

The dependency is syntax-managed: FanucGotoSyntax reads the limit, increments the counter, and decides whether to fire. There is diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html index e6ca9ce1..f5727a58 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html @@ -104,7 +104,7 @@ following real Fanuc parameter numbering.

-
public class FanucParameterTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, ICannedCycleConfig, IIsoCoordinateConfig, INcDependency, IMakeXmlSource, IVariableLookup
+
public class FanucParameterTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, ISpindleControlConfig, IMCodeDeclarationConfig, IToolChangeTriggerConfig, ICannedCycleConfig, IIsoCoordinateConfig, INcDependency, IMakeXmlSource, IVariableLookup
@@ -126,6 +126,9 @@ following real Fanuc parameter numbering.

+ + + @@ -162,6 +165,9 @@ following real Fanuc parameter numbering.

+ @@ -198,12 +204,45 @@ following real Fanuc parameter numbering.

+ + + + + + + + + + + @@ -1418,6 +1457,123 @@ Null if not defined for this controller brand.

+ + +

+ DeepClone() + +

+ +

Returns an independent deep copy of this table (all three parameter +dictionaries cloned). Used by FanucParameterTableProxy to +clone its fixed machine-config seed into a host that has no table yet.

+
+
+ +
+
public FanucParameterTable DeepClone()
+
+ + +

Returns

+
+
FanucParameterTable
+
+
+ + + + + + + + + + + + + +

+ DescribeAxisParam(int) + +

+ +

Per-axis double counterpart of DescribeSystemParam(int). +Covers the role ids the base class consumes (reference position, +rapid rate, stroke limits); brand subclasses may override for their +own vocabulary or extra numbers.

+
+
+ +
+
public override string DescribeAxisParam(int paramId)
+
+ +

Parameters

+
+
paramId int
+

Brand-specific parameter/MD/MP number.

+
+
+ +

Returns

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

+ DescribeSystemParam(int) + +

+ +

Short usage label for a well-known system parameter id, or null when +the id has no modeled meaning (a raw pass-through row). Brand +subclasses extend this with their own well-known numbers; the native +parameter UI shows the label next to the raw id so an operator can +tell the modeled parameters from free extras.

+
+
+ +
+
public override string DescribeSystemParam(int paramId)
+
+ +

Parameters

+
+
paramId int
+

Brand-specific parameter/MD/MP number.

+
+
+ +

Returns

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

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

+Class FanucParameterTableProxy +

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

Get-or-create INcDependencyProxy for FanucParameterTable +(the Fanuc / Mazak family parameter table): a placeholder in the shared +PipelineNcDependencyList that resolves the host project's own +parameter table. Unlike the pure per-case proxies, the Fanuc-family parameter +table mixes machine config (axis types / reference positions / rapid / stroke) +with per-case work-coordinate offsets (#5221+ / #7001+), so the +proxy carries a fixed machine-config Seed that is serialized into +the shared runner file. On wire, the host receives a deep clone of the seed only +when it has no FanucParameterTable yet; a loaded project's own full +table wins. The resolved host table holds everything (machine config + per-case +coordinates) and is fully serialized on the project.

+

+The proxy deliberately does not implement the machine-config interfaces +(IMachineAxisConfig etc.) — every machine-config consumer must go +through GetEffectiveNcDependencyList() so it sees the +resolved host table, never this placeholder. +

+
+
+ +
+
public sealed class FanucParameterTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
FanucParameterTableProxy
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ FanucParameterTableProxy(FanucParameterTable) + +

+ +

Creates a proxy carrying seed as its machine-config +seed, defaulting to Default3Axis.

+
+
+ +
+
public FanucParameterTableProxy(FanucParameterTable seed = null)
+
+ +

Parameters

+
+
seed FanucParameterTable
+

The machine-config seed cloned into a fresh host.

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

Properties +

+ + + + +

+ Seed + +

+ +

The fixed machine-config seed deep-cloned into a host that has no +FanucParameterTable yet. Carried on the shared runner and +serialized into the runner file — never the per-case instance, which lives +on the host (see GetNcDependency()).

+
+
+ +
+
public FanucParameterTable Seed { get; }
+
+ + + + + +

Property Value

+
+
FanucParameterTable
+
+
+ + + + + + + + + + +

+ XName + +

+ +

XML element name used to register this dependency with XFactory.

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

Property Value

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

Methods +

+ + + + +

+ GetNcDependency() + +

+ +

Takes the host's FanucParameterTable (created during +InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired.

+
+
+ +
+
public INcDependency GetNcDependency()
+
+ + +

Returns

+
+
INcDependency
+
+
+ + + + + + + + + + + + + +

+ InitNcDependencyHost(INcDependencyListHost) + +

+ +

Wires the host and materializes the host FanucParameterTable: +when the host list has none, a deep clone of Seed is installed +so machine config + per-case coordinates exist and are editable before any +run. GetNcDependency() is then a pure take. Idempotent — an +existing host table (a loaded project's) is left untouched.

+
+
+ +
+
public void InitNcDependencyHost(INcDependencyListHost host)
+
+ +

Parameters

+
+
host INcDependencyListHost
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Serializes only the machine-config Seed — the wired host and +the resolved host table are runtime-only and not persisted in the shared runner.

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

Parameters

+
+
baseDirectory string
+
+
relFile string
+
+
exhibitionOnly bool
+
+
+ +

Returns

+
+
XElement
+
+
+ + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Rehydrates the carried Seed from the nested +FanucParameterTable element, falling back to +Default3Axis when absent. Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + 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 e98248bc..b8458f31 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 @@ -112,7 +112,7 @@ no reference of its own and resolves the table from the per-call

Registered on a brand preset's RuntimeVariableLookups, not on -NcDependencyList — the wrapper owns no +PipelineNcDependencyList — 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.Dependencys.Fanuc.RetainedCommonVariableTableProxy.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTableProxy.html new file mode 100644 index 00000000..447ed3b4 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTableProxy.html @@ -0,0 +1,393 @@ + + + + + Class RetainedCommonVariableTableProxy | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class RetainedCommonVariableTableProxy +

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

Get-or-create INcDependencyProxy for RetainedCommonVariableTable: +a placeholder in the shared PipelineNcDependencyList that +resolves the host project's own per-case retained common variables +(#500–#999).

+
+
+ +
+
public sealed class RetainedCommonVariableTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
RetainedCommonVariableTableProxy
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ XName + +

+ +

XML element name used to register this dependency with XFactory.

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

Property Value

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

Methods +

+ + + + +

+ GetNcDependency() + +

+ +

Takes the host's RetainedCommonVariableTable (created during +InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired.

+
+
+ +
+
public INcDependency GetNcDependency()
+
+ + +

Returns

+
+
INcDependency
+
+
+ + + + + + + + + + + + + +

+ InitNcDependencyHost(INcDependencyListHost) + +

+ +

Wires the host and materializes the per-case RetainedCommonVariableTable: +when the host list has none, one is created and installed so it exists and +is editable before any run. GetNcDependency() is then a pure +take. Idempotent — an existing table is left untouched.

+
+
+ +
+
public void InitNcDependencyHost(INcDependencyListHost host)
+
+ +

Parameters

+
+
host INcDependencyListHost
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Runtime-only proxy — the wired host and the resolved table are not +persisted in the shared runner; serialization writes only the empty element.

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

Parameters

+
+
baseDirectory string
+
+
relFile string
+
+
exhibitionOnly bool
+
+
+ +

Returns

+
+
XElement
+
+
+ + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + 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 10a2124c..4088641f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Fanuc.html @@ -103,7 +103,7 @@ the soft cap above which the upcoming runtime per-target hit counter (CountByTarget — not serialised, cleared at session start by the ISessionResettable sweep in -RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken)).

+RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken)).

The dependency is syntax-managed: FanucGotoSyntax reads the limit, increments the counter, and decides whether to fire. There is @@ -138,6 +138,27 @@ the project XML.

Fanuc controller parameter table. Stores system parameters (single value) and axis parameters (per-axis value) following real Fanuc parameter numbering.

+
+ +
+
FanucParameterTableProxy
+

Get-or-create INcDependencyProxy for FanucParameterTable +(the Fanuc / Mazak family parameter table): a placeholder in the shared +PipelineNcDependencyList that resolves the host project's own +parameter table. Unlike the pure per-case proxies, the Fanuc-family parameter +table mixes machine config (axis types / reference positions / rapid / stroke) +with per-case work-coordinate offsets (#5221+ / #7001+), so the +proxy carries a fixed machine-config Seed that is serialized into +the shared runner file. On wire, the host receives a deep clone of the seed only +when it has no FanucParameterTable yet; a loaded project's own full +table wins. The resolved host table holds everything (machine config + per-case +coordinates) and is fully serialized on the project.

+

+The proxy deliberately does not implement the machine-config interfaces +(IMachineAxisConfig etc.) — every machine-config consumer must go +through GetEffectiveNcDependencyList() so it sees the +resolved host table, never this placeholder. +

@@ -171,7 +192,7 @@ no reference of its own and resolves the table from the per-call

Registered on a brand preset's RuntimeVariableLookups, not on -NcDependencyList — the wrapper owns no +PipelineNcDependencyList — 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. @@ -230,6 +251,14 @@ avoided because it conflicts with Custom Macro B's call-frame concept (G65/G66 p containing the local #1-#33); using RetainedCommonVariableTable reserves "macro" for the call-frame topic.

+ +
+
+
RetainedCommonVariableTableProxy
+

Get-or-create INcDependencyProxy for RetainedCommonVariableTable: +a placeholder in the shared PipelineNcDependencyList that +resolves the host project's own per-case retained common variables +(#500–#999).

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.FallbackConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.FallbackConfig.html index 3db46bd7..d1316ba0 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.FallbackConfig.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.FallbackConfig.html @@ -101,7 +101,7 @@ Class FallbackConfig for all optional configuration interfaces.

Should be placed as the last element in -NcDependencyList so that brand-specific +PipelineNcDependencyList so that brand-specific parameter tables (which appear earlier) take priority via OfType<T>().FirstOrDefault().

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.html new file mode 100644 index 00000000..16f5cf97 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.html @@ -0,0 +1,392 @@ + + + + + Class IsoCoordinateTableProxy | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class IsoCoordinateTableProxy +

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

Get-or-create INcDependencyProxy for IsoCoordinateTable: +a placeholder in the shared PipelineNcDependencyList that +resolves the host project's own per-case work coordinate offsets (G54–G59…).

+
+
+ +
+
public sealed class IsoCoordinateTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
IsoCoordinateTableProxy
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ XName + +

+ +

XML element name used to register this dependency with XFactory.

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

Property Value

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

Methods +

+ + + + +

+ GetNcDependency() + +

+ +

Takes the host's IsoCoordinateTable (created during +InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired.

+
+
+ +
+
public INcDependency GetNcDependency()
+
+ + +

Returns

+
+
INcDependency
+
+
+ + + + + + + + + + + + + +

+ InitNcDependencyHost(INcDependencyListHost) + +

+ +

Wires the host and materializes the per-case IsoCoordinateTable: +when the host list has none, one is created and installed so it exists and +is editable before any run. GetNcDependency() is then a pure +take. Idempotent — an existing table is left untouched.

+
+
+ +
+
public void InitNcDependencyHost(INcDependencyListHost host)
+
+ +

Parameters

+
+
host INcDependencyListHost
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Runtime-only proxy — the wired host and the resolved table are not +persisted in the shared runner; serialization writes only the empty element.

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

Parameters

+
+
baseDirectory string
+
+
relFile string
+
+
exhibitionOnly bool
+
+
+ +

Returns

+
+
XElement
+
+
+ + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.MachineAxisConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.MachineAxisConfig.html new file mode 100644 index 00000000..987a4828 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.MachineAxisConfig.html @@ -0,0 +1,570 @@ + + + + + Class MachineAxisConfig | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class MachineAxisConfig +

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

Brand-neutral IMachineAxisConfig backed by a plain axis→type +map, for pipelines that have no controller parameter table (e.g. the NX +CLSF runner). Typically populated from the machine chain via +ConfigureByMachiningChain(IMachiningChain); rotary axes default +to modular (IsModularRotary(string) inherited), +matching the cyclic shortest-path treatment of +McAbcCyclicPathSyntax.

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

Constructors +

+ + + + +

+ MachineAxisConfig() + +

+ +

Creates an empty config; axes are added via SetAxis(string, AxisType).

+
+
+ +
+
public MachineAxisConfig()
+
+ + + + + + + + + + + + + + + +

+ MachineAxisConfig(XElement) + +

+ +

Reconstructs a config from its XML element.

+
+
+ +
+
public MachineAxisConfig(XElement src)
+
+ +

Parameters

+
+
src XElement
+

XML element previously produced by MakeXmlSource(string, string, bool).

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

Properties +

+ + + + +

+ AxisNames + +

+ +

Gets the configured axis names in order.

+
+
+ +
+
public IEnumerable<string> AxisNames { get; }
+
+ + + + + +

Property Value

+
+
IEnumerable<string>
+
+
+ + + + + + + + + + +

+ XName + +

+ +

XML element name used to register this dependency with XFactory.

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

Property Value

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

Methods +

+ + + + +

+ Clear() + +

+ +

Removes every axis. Call before re-populating from a different +machine chain — axes left over from a previous chain (e.g. rotaries +after switching 5-axis → 3-axis) would otherwise send the modal +rotary lookbacks walking the whole stream for values that no block +carries.

+
+
+ +
+
public void Clear()
+
+ + + + + + + + + + + + + + + +

+ IsRotaryAxis(string) + +

+ +

Returns true if the axis is rotary or spindle, false if linear.

+
+
+ +
+
public bool IsRotaryAxis(string axisName)
+
+ +

Parameters

+
+
axisName string
+
+
+ +

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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + + +

+ RemoveAxis(string) + +

+ +

Removes an axis from the configuration.

+
+
+ +
+
public void RemoveAxis(string axisName)
+
+ +

Parameters

+
+
axisName string
+
+
+ + + + + + + + + + + + + + +

+ SetAxis(string, AxisType) + +

+ +

Adds or updates an axis with the specified type.

+
+
+ +
+
public void SetAxis(string axisName, AxisType type)
+
+ +

Parameters

+
+
axisName string
+
+
type AxisType
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html index ec28d289..292b0e46 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html @@ -524,6 +524,46 @@ Since the folder can be moving with the configuration file.

+ + +

+ UpdateIdealByToolHouse(MachiningToolHouse) + +

+ +

Refreshes the ideal (geometry) components from the tool house — ideal +height = the tool's spindle-buckle→tool-tip length, ideal radius = the +cutter profile's max radius — preserving accumulated wear, and drops +rows whose tool id no longer exists in the house. Offset number maps +1:1 to the tool id. Mirrors the HardNc +MillingToolOffsetTable.UpdateIdealMillingToolOffsetTableByToolHouse +semantics so H/D offsets follow the tool house when the project's +IsIdealOffsetDependentOnToolHouse is on.

+
+
+ +
+
public void UpdateIdealByToolHouse(MachiningToolHouse toolHouse)
+
+ +

Parameters

+
+
toolHouse MachiningToolHouse
+

Source tool house; no-op when null.

+
+
+ + + + + + + + + + + +
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.ToolOffsetTableProxy.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.ToolOffsetTableProxy.html new file mode 100644 index 00000000..981b3788 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.ToolOffsetTableProxy.html @@ -0,0 +1,393 @@ + + + + + Class ToolOffsetTableProxy | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class ToolOffsetTableProxy +

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

Get-or-create INcDependencyProxy for ToolOffsetTable: +a placeholder in the shared PipelineNcDependencyList that +resolves the host project's own per-case tool offsets. The shared runner file +holds only this proxy, never the offset data.

+
+
+ +
+
public sealed class ToolOffsetTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
ToolOffsetTableProxy
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ XName + +

+ +

XML element name used to register this dependency with XFactory.

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

Property Value

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

Methods +

+ + + + +

+ GetNcDependency() + +

+ +

Takes the host's ToolOffsetTable (created during +InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired.

+
+
+ +
+
public INcDependency GetNcDependency()
+
+ + +

Returns

+
+
INcDependency
+
+
+ + + + + + + + + + + + + +

+ InitNcDependencyHost(INcDependencyListHost) + +

+ +

Wires the host and materializes the per-case ToolOffsetTable: +when the host list has none, one is created and installed so it exists and +is editable before any run. GetNcDependency() is then a pure +take. Idempotent — an existing table is left untouched.

+
+
+ +
+
public void InitNcDependencyHost(INcDependencyListHost host)
+
+ +

Parameters

+
+
host INcDependencyListHost
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Runtime-only proxy — the wired host and the resolved table are not +persisted in the shared runner; serialization writes only the empty element.

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

Parameters

+
+
baseDirectory string
+
+
relFile string
+
+
exhibitionOnly bool
+
+
+ +

Returns

+
+
XElement
+
+
+ + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.ToolingMcConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.ToolingMcConfig.html index 5de675e9..b3a4474d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.ToolingMcConfig.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.ToolingMcConfig.html @@ -292,7 +292,10 @@ Each axis value: a position to move to, or

Default: XY stay, Z moves to 0, rotary axes move to 0.

+

Default: XY stay, Z moves to 0, rotary axes stay (no A/B/C entry — +GetToolingPosition(string) returns null → NaN in +ToolingMcAbc_deg → the axis does not +participate in the tool-change motion).

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html index cfb730d2..8fd7c42b 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Generic.html @@ -100,7 +100,7 @@ Classes for all optional configuration interfaces.

Should be placed as the last element in -NcDependencyList so that brand-specific +PipelineNcDependencyList so that brand-specific parameter tables (which appear earlier) take priority via OfType<T>().FirstOrDefault().

@@ -137,6 +137,24 @@ Brand-agnostic standalone implementation of +
IsoCoordinateTableProxy
+

Get-or-create INcDependencyProxy for IsoCoordinateTable: +a placeholder in the shared PipelineNcDependencyList that +resolves the host project's own per-case work coordinate offsets (G54–G59…).

+
+ +
+
MachineAxisConfig
+

Brand-neutral IMachineAxisConfig backed by a plain axis→type +map, for pipelines that have no controller parameter table (e.g. the NX +CLSF runner). Typically populated from the machine chain via +ConfigureByMachiningChain(IMachiningChain); rotary axes default +to modular (IsModularRotary(string) inherited), +matching the cyclic shortest-path treatment of +McAbcCyclicPathSyntax.

@@ -170,6 +188,14 @@ Matches Fanuc Memory C layout where H and D share the same row.

Suitable for Fanuc (H/D), Heidenhain (tool number), Mazak, Okuma, and other ISO-compatible controllers. Key = offset number (Fanuc H or D number).

+ +
+
+
ToolOffsetTableProxy
+

Get-or-create INcDependencyProxy for ToolOffsetTable: +a placeholder in the shared PipelineNcDependencyList that +resolves the host project's own per-case tool offsets. The shared runner file +holds only this proxy, never the offset data.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainGotoIterationDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainGotoIterationDependency.html new file mode 100644 index 00000000..58e7d3a3 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainGotoIterationDependency.html @@ -0,0 +1,554 @@ + + + + + Class HeidenhainGotoIterationDependency | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainGotoIterationDependency +

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

Watchdog for Heidenhain FN 9–12 GOTO LBL jumps — the +label-keyed sibling of the Siemens +SiemensGotoIterationDependency, with the same +“soft-cap + runtime counter + session-init ISessionResettable” +shape. Kept per-brand for diagnostic clarity and because klartext +targets are LBL numbers-or-names, matched in their canonical +form (“01”1 on a TNC, quotes stripped).

+

+The counter key is (FileName, Label) where FileName is +the source-level file path of the jump host (the relative form carried +on FilePath) and Label is the normalised +target. Klartext has no direction mnemonic — a backward jump is the +language's loop primitive, a forward jump can only fire once per +arrival — so all jumps to one label share one bucket and the cap stays +generous. +

+

+The consuming syntax +(HeidenhainGotoSyntax) +counts after the condition gate and before the label scan; above +MaxIterationsPerLabel the jump warns +HeidenhainGoto--IterationLimitExceeded and falls through. A +missing dependency disables the cap (Fanuc parity) — the brand preset +wires one by default. +

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

Constructors +

+ + + + +

+ HeidenhainGotoIterationDependency() + +

+ +

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

+
+
+ +
+
public HeidenhainGotoIterationDependency()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainGotoIterationDependency(XElement) + +

+ +

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

+
+
+ +
+
public HeidenhainGotoIterationDependency(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Root element named XName.

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

Fields +

+ + + +

+ DefaultMaxIterationsPerLabel + +

+ +

Default for MaxIterationsPerLabel — the Fanuc / +Siemens GOTO default: klartext counting loops are short (feed +scaling, retry sections), so the cap stays tight.

+
+
+ +
+
public const int DefaultMaxIterationsPerLabel = 1000
+
+ + + + +

Field Value

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

Properties +

+ + + + +

+ CountByLabel + +

+ +

Per-target hit counter keyed by (FileName, Label) with the +label in canonical form. Runtime-only; not serialised. Cleared by +OnSessionReset() on the session-init edge.

+
+
+ +
+
public Dictionary<(string FileName, string Label), int> CountByLabel { get; }
+
+ + + + + +

Property Value

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

+ MaxIterationsPerLabel + +

+ +

Soft cap on fired jumps for any single (FileName, Label) +pair. Above this the host block emits +HeidenhainGoto–IterationLimitExceeded and falls through.

+
+
+ +
+
public int MaxIterationsPerLabel { 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.

+
+ + + + + + +

+ OnSessionReset() + +

+ +

Clears CountByLabel; leaves MaxIterationsPerLabel untouched.

+
+
+ +
+
public void OnSessionReset()
+
+ + + + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html index 011fc2ea..bd67b248 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html @@ -107,7 +107,7 @@ MP400–MP499: Axis-specific parameters.
-
public class HeidenhainParameterTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, INcDependency, IMakeXmlSource
+
public class HeidenhainParameterTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, ISpindleControlConfig, IMCodeDeclarationConfig, IToolChangeTriggerConfig, INcDependency, IMakeXmlSource
@@ -129,6 +129,9 @@ MP400–MP499: Axis-specific parameters. + + + @@ -162,6 +165,9 @@ MP400–MP499: Axis-specific parameters. + @@ -198,12 +204,45 @@ MP400–MP499: Axis-specific parameters. + + + + + + + + + + + @@ -1034,6 +1073,123 @@ Null if not defined for this controller brand.

+ + +

+ DeepClone() + +

+ +

Returns an independent deep copy of this table (all three parameter +dictionaries cloned). Used by HeidenhainParameterTableProxy +to clone its fixed machine-config seed into a host that has no table yet.

+
+
+ +
+
public HeidenhainParameterTable DeepClone()
+
+ + +

Returns

+
+
HeidenhainParameterTable
+
+
+ + + + + + + + + + + + + +

+ DescribeAxisParam(int) + +

+ +

Per-axis double counterpart of DescribeSystemParam(int). +Covers the role ids the base class consumes (reference position, +rapid rate, stroke limits); brand subclasses may override for their +own vocabulary or extra numbers.

+
+
+ +
+
public override string DescribeAxisParam(int paramId)
+
+ +

Parameters

+
+
paramId int
+

Brand-specific parameter/MD/MP number.

+
+
+ +

Returns

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

+ DescribeSystemParam(int) + +

+ +

Short usage label for a well-known system parameter id, or null when +the id has no modeled meaning (a raw pass-through row). Brand +subclasses extend this with their own well-known numbers; the native +parameter UI shows the label next to the raw id so an operator can +tell the modeled parameters from free extras.

+
+
+ +
+
public override string DescribeSystemParam(int paramId)
+
+ +

Parameters

+
+
paramId int
+

Brand-specific parameter/MD/MP number.

+
+
+ +

Returns

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

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTableProxy.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTableProxy.html new file mode 100644 index 00000000..236c964c --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTableProxy.html @@ -0,0 +1,486 @@ + + + + + Class HeidenhainParameterTableProxy | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainParameterTableProxy +

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

Get-or-create INcDependencyProxy for +HeidenhainParameterTable: a placeholder in the shared +PipelineNcDependencyList that resolves the host +project's own machine parameter table. Like the Fanuc-family parameter +table, the Heidenhain MP table mixes machine config (axis types / +reference positions / rapid rates / tool axis direction) with per-project +edits, so the proxy carries a fixed machine-config Seed that +is serialized into the shared runner file. On wire, the host receives a +deep clone of the seed only when it has no +HeidenhainParameterTable yet; a loaded project's own full +table wins, so a same-brand re-flash re-binds to the project's parameters +instead of resetting them. The resolved host table is fully serialized on +the project.

+

+The proxy deliberately does not implement the machine-config +interfaces (IMachineAxisConfig etc.) — every machine-config +consumer must go through +GetEffectiveNcDependencyList() so it sees the +resolved host table, never this placeholder. +

+
+
+ +
+
public sealed class HeidenhainParameterTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainParameterTableProxy
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ HeidenhainParameterTableProxy(HeidenhainParameterTable) + +

+ +

Creates a proxy carrying seed as its machine-config +seed, defaulting to Default3Axis.

+
+
+ +
+
public HeidenhainParameterTableProxy(HeidenhainParameterTable seed = null)
+
+ +

Parameters

+
+
seed HeidenhainParameterTable
+

The machine-config seed cloned into a fresh host.

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

Properties +

+ + + + +

+ Seed + +

+ +

The fixed machine-config seed deep-cloned into a host that has no +HeidenhainParameterTable yet. Carried on the shared runner +and serialized into the runner file — never the per-case instance, which +lives on the host (see GetNcDependency()).

+
+
+ +
+
public HeidenhainParameterTable Seed { get; }
+
+ + + + + +

Property Value

+
+
HeidenhainParameterTable
+
+
+ + + + + + + + + + +

+ XName + +

+ +

XML element name used to register this dependency with XFactory.

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

Property Value

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

Methods +

+ + + + +

+ GetNcDependency() + +

+ +

Takes the host's HeidenhainParameterTable (created during +InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired.

+
+
+ +
+
public INcDependency GetNcDependency()
+
+ + +

Returns

+
+
INcDependency
+
+
+ + + + + + + + + + + + + +

+ InitNcDependencyHost(INcDependencyListHost) + +

+ +

Wires the host and materializes the host +HeidenhainParameterTable: when the host list has none, a +deep clone of Seed is installed so the machine parameters +exist and are editable before any run. GetNcDependency() is +then a pure take. Idempotent — an existing host table (a loaded +project's) is left untouched.

+
+
+ +
+
public void InitNcDependencyHost(INcDependencyListHost host)
+
+ +

Parameters

+
+
host INcDependencyListHost
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Serializes only the machine-config Seed — the wired host and +the resolved host table are runtime-only and not persisted in the shared runner.

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

Parameters

+
+
baseDirectory string
+
+
relFile string
+
+
exhibitionOnly bool
+
+
+ +

Returns

+
+
XElement
+
+
+ + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Rehydrates the carried Seed from the nested +HeidenhainParameterTable element, falling back to +Default3Axis when absent. Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainQParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainQParameterTable.html new file mode 100644 index 00000000..df9aca4a --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainQParameterTable.html @@ -0,0 +1,885 @@ + + + + + Class HeidenhainQParameterTable | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainQParameterTable +

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

Heidenhain Q-parameter table for the ranges that persist on a real TNC: +free parameters Q0-Q99 (survive power cycles) and the permanent +QR0-QR499 range (nonvolatile, backed up with the machine). Like +the Siemens sibling SiemensRParameterTable, this +table is not session-reset and is serialised into the project file.

+

+The other Q ranges deliberately live elsewhere: Q100-Q199 are +controller-written system parameters — Get(string) returns +null for them (read fail-soft, no fabricated values) and the +reading syntax refuses writes; Q200+ are volatile cycle/user +parameters carried block-to-block in Vars.Volatile (JSON +dataflow, cleared at program end) — Get(string) also returns +null so the evaluator's chain falls through to +HeidenhainVolatileQLookup. +

+

+Reads flow through Get(string) (registered +automatically because the table sits on the runner's effective +NcDependencyList); writes flow through +HeidenhainQParameterReadingSyntax, +which consumes literal Parsing.Assignments.Qn entries after +VariableEvaluatorSyntax has normalized +expression RHS to literals. +

+

+Vacant is represented by null: either the dictionary has no entry +for the key, or the entry maps to null — both read identically. A +vacant read failing loud (Variable--Vacant via the evaluator) surfaces +missing setup data instead of silently machining with 0. +

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

Constructors +

+ + + + +

+ HeidenhainQParameterTable() + +

+ +

Empty table.

+
+
+ +
+
public HeidenhainQParameterTable()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainQParameterTable(XElement) + +

+ +

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

+
+
+ +
+
public HeidenhainQParameterTable(XElement src)
+
+ +

Parameters

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

Fields +

+ + + +

+ PersistentMax + +

+ +

Inclusive upper bound of the persistent free range (Q99).

+
+
+ +
+
public const int PersistentMax = 99
+
+ + + + +

Field Value

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

+ PersistentMin + +

+ +

Inclusive lower bound of the persistent free range (Q0).

+
+
+ +
+
public const int PersistentMin = 0
+
+ + + + +

Field Value

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

+ QRMax + +

+ +

Inclusive upper bound of the permanent QR range (QR499).

+
+
+ +
+
public const int QRMax = 499
+
+ + + + +

Field Value

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

+ QRMin + +

+ +

Inclusive lower bound of the permanent QR range (QR0).

+
+
+ +
+
public const int QRMin = 0
+
+ + + + +

Field Value

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

+ SystemMax + +

+ +

Inclusive upper bound of the read-only system range (Q199).

+
+
+ +
+
public const int SystemMax = 199
+
+ + + + +

Field Value

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

+ SystemMin + +

+ +

Inclusive lower bound of the read-only system range (Q100).

+
+
+ +
+
public const int SystemMin = 100
+
+ + + + +

Field Value

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

Properties +

+ + + + +

+ QRVariables + +

+ +

Backing store of the permanent QR range. Key = QR number (e.g. 5 for +QR5); same vacant semantics as Variables. Keys are +constrained to QRMin..QRMax.

+
+
+ +
+
public Dictionary<int, double?> QRVariables { get; set; }
+
+ + + + + +

Property Value

+
+
Dictionary<int, double?>
+
+
+ + + + + + + + + + +

+ Variables + +

+ +

Backing store of the free persistent range. Key = Q number (e.g. 1 for +Q1). Value null = vacant; a missing key is also vacant. +Keys are constrained to PersistentMin..PersistentMax; +out-of-range writes are silently ignored.

+
+
+ +
+
public Dictionary<int, double?> Variables { get; set; }
+
+ + + + + +

Property Value

+
+
Dictionary<int, double?>
+
+
+ + + + + + + + + + +

+ XName + +

+ +

XML element name.

+
+
+ +
+
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 Qn keys in the persistent free range and QRn keys +(canonical uppercase from +HeidenhainExpressionParser; +lowercase from raw captures also resolves) to their stores. All other +keys — including the system range Q100-Q199 (read fail-soft by +design), the volatile range Q200+ (lives in +Vars.Volatile) and QL/QS — return null so +the evaluator's lookup chain falls through.

+
+ + + + + + +

+ GetQRVariable(int) + +

+ +

Reads a permanent QR parameter (QR0-QR499). Returns null +for vacant.

+
+
+ +
+
public double? GetQRVariable(int id)
+
+ +

Parameters

+
+
id int
+

Parameter number in QRMin..QRMax.

+
+
+ +

Returns

+
+
double?
+
+
+ + + + + + + + + + + + + +

+ GetVariable(int) + +

+ +

Reads a free Q parameter (Q0-Q99). Returns null for +vacant (either the entry is absent or stored as null).

+
+
+ +
+
public double? GetVariable(int id)
+
+ +

Parameters

+
+
id int
+

Parameter number in PersistentMin..PersistentMax.

+
+
+ +

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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + + +

+ SetQRVariable(int, double?) + +

+ +

Writes a permanent QR parameter. Pass null to set vacant. +Ignores ids outside QRMin..QRMax.

+
+
+ +
+
public void SetQRVariable(int id, double? value)
+
+ +

Parameters

+
+
id int
+

Parameter number.

+
+
value double?
+

New value, or null for vacant.

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

+ SetVariable(int, double?) + +

+ +

Writes a free Q parameter. Pass null to set vacant. Ignores ids +outside PersistentMin..PersistentMax.

+
+
+ +
+
public void SetVariable(int id, double? value)
+
+ +

Parameters

+
+
id int
+

Parameter number.

+
+
value double?
+

New value, or null for vacant.

+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainQParameterTableProxy.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainQParameterTableProxy.html new file mode 100644 index 00000000..9cff3a66 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainQParameterTableProxy.html @@ -0,0 +1,392 @@ + + + + + Class HeidenhainQParameterTableProxy | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainQParameterTableProxy +

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

Get-or-create INcDependencyProxy for HeidenhainQParameterTable: +a placeholder in the shared PipelineNcDependencyList that +resolves the host project's own per-case Q parameters (Q0–Q99 + QR0–QR499).

+
+
+ +
+
public sealed class HeidenhainQParameterTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainQParameterTableProxy
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ XName + +

+ +

XML element name used to register this dependency with XFactory.

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

Property Value

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

Methods +

+ + + + +

+ GetNcDependency() + +

+ +

Takes the host's HeidenhainQParameterTable (created during +InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired.

+
+
+ +
+
public INcDependency GetNcDependency()
+
+ + +

Returns

+
+
INcDependency
+
+
+ + + + + + + + + + + + + +

+ InitNcDependencyHost(INcDependencyListHost) + +

+ +

Wires the host and materializes the per-case HeidenhainQParameterTable: +when the host list has none, one is created and installed so it exists and +is editable before any run. GetNcDependency() is then a pure +take. Idempotent — an existing table is left untouched.

+
+
+ +
+
public void InitNcDependencyHost(INcDependencyListHost host)
+
+ +

Parameters

+
+
host INcDependencyListHost
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Runtime-only proxy — the wired host and the resolved table are not +persisted in the shared runner; serialization writes only the empty element.

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

Parameters

+
+
baseDirectory string
+
+
relFile string
+
+
exhibitionOnly bool
+
+
+ +

Returns

+
+
XElement
+
+
+ + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.html index 69803042..0234076d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Heidenhain.html @@ -94,6 +94,35 @@

Classes

+
+
HeidenhainGotoIterationDependency
+

Watchdog for Heidenhain FN 9–12 GOTO LBL jumps — the +label-keyed sibling of the Siemens +SiemensGotoIterationDependency, with the same +“soft-cap + runtime counter + session-init ISessionResettable” +shape. Kept per-brand for diagnostic clarity and because klartext +targets are LBL numbers-or-names, matched in their canonical +form (“01”1 on a TNC, quotes stripped).

+

+The counter key is (FileName, Label) where FileName is +the source-level file path of the jump host (the relative form carried +on FilePath) and Label is the normalised +target. Klartext has no direction mnemonic — a backward jump is the +language's loop primitive, a forward jump can only fire once per +arrival — so all jumps to one label share one bucket and the cap stays +generous. +

+

+The consuming syntax +(HeidenhainGotoSyntax) +counts after the condition gate and before the label scan; above +MaxIterationsPerLabel the jump warns +HeidenhainGoto--IterationLimitExceeded and falls through. A +missing dependency disables the cap (Fanuc parity) — the brand preset +wires one by default. +

+
+
HeidenhainParameterTable

Heidenhain TNC/iTNC machine parameter table. @@ -102,6 +131,71 @@ Stores machine parameters (MP numbers) as system and per-axis values.

MP100–MP199: General machine configuration. MP400–MP499: Axis-specific parameters.

+
+
+
+
HeidenhainParameterTableProxy
+

Get-or-create INcDependencyProxy for +HeidenhainParameterTable: a placeholder in the shared +PipelineNcDependencyList that resolves the host +project's own machine parameter table. Like the Fanuc-family parameter +table, the Heidenhain MP table mixes machine config (axis types / +reference positions / rapid rates / tool axis direction) with per-project +edits, so the proxy carries a fixed machine-config Seed that +is serialized into the shared runner file. On wire, the host receives a +deep clone of the seed only when it has no +HeidenhainParameterTable yet; a loaded project's own full +table wins, so a same-brand re-flash re-binds to the project's parameters +instead of resetting them. The resolved host table is fully serialized on +the project.

+

+The proxy deliberately does not implement the machine-config +interfaces (IMachineAxisConfig etc.) — every machine-config +consumer must go through +GetEffectiveNcDependencyList() so it sees the +resolved host table, never this placeholder. +

+
+
+
+
HeidenhainQParameterTable
+

Heidenhain Q-parameter table for the ranges that persist on a real TNC: +free parameters Q0-Q99 (survive power cycles) and the permanent +QR0-QR499 range (nonvolatile, backed up with the machine). Like +the Siemens sibling SiemensRParameterTable, this +table is not session-reset and is serialised into the project file.

+

+The other Q ranges deliberately live elsewhere: Q100-Q199 are +controller-written system parameters — Get(string) returns +null for them (read fail-soft, no fabricated values) and the +reading syntax refuses writes; Q200+ are volatile cycle/user +parameters carried block-to-block in Vars.Volatile (JSON +dataflow, cleared at program end) — Get(string) also returns +null so the evaluator's chain falls through to +HeidenhainVolatileQLookup. +

+

+Reads flow through Get(string) (registered +automatically because the table sits on the runner's effective +NcDependencyList); writes flow through +HeidenhainQParameterReadingSyntax, +which consumes literal Parsing.Assignments.Qn entries after +VariableEvaluatorSyntax has normalized +expression RHS to literals. +

+

+Vacant is represented by null: either the dictionary has no entry +for the key, or the entry maps to null — both read identically. A +vacant read failing loud (Variable--Vacant via the evaluator) surfaces +missing setup data instead of silently machining with 0. +

+
+
+
+
HeidenhainQParameterTableProxy
+

Get-or-create INcDependencyProxy for HeidenhainQParameterTable: +a placeholder in the shared PipelineNcDependencyList that +resolves the host project's own per-case Q parameters (Q0–Q99 + QR0–QR499).

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.HeidenhainDatumTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.HeidenhainDatumTable.html index a5837261..2b3de5e8 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.HeidenhainDatumTable.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.HeidenhainDatumTable.html @@ -261,6 +261,81 @@ compatibility mapping for ISO/DIN programs running on a Heidenhain. +

Fields +

+ + + +

+ PresetCoordinateIdPrefix + +

+ +

CoordinateId prefix for preset +rows (CYCL DEF 247), written by +LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax and +resolved back to DatumPresetTable by +GetCoordinateOffset(string) so the shared modal-lookback path +(IsoCoordinateOffsetSyntax) keeps the offset alive on the +blocks after the declaration.

+
+
+ +
+
public const string PresetCoordinateIdPrefix = "DATUM_PRESET_"
+
+ + + + +

Field Value

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

+ ShiftCoordinateIdPrefix + +

+ +

Shift-row id prefix (CYCL DEF 7 #N) used in the DatumShift +section's ShiftId; the shift is carried modally by +HeidenhainCoordinateOffsetSyntax itself (additive to the +preset), not by the ISO coordinate-offset path.

+
+
+ +
+
public const string ShiftCoordinateIdPrefix = "DATUM_SHIFT_"
+
+ + + + +

Field Value

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

Properties

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

+Class HeidenhainDatumTableProxy +

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

Get-or-create INcDependencyProxy for HeidenhainDatumTable: +a placeholder in the shared PipelineNcDependencyList that +resolves the host project's own per-case datum preset / datum shift tables.

+
+
+ +
+
public sealed class HeidenhainDatumTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainDatumTableProxy
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ XName + +

+ +

XML element name used to register this dependency with XFactory.

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

Property Value

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

Methods +

+ + + + +

+ GetNcDependency() + +

+ +

Takes the host's HeidenhainDatumTable (created during +InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired.

+
+
+ +
+
public INcDependency GetNcDependency()
+
+ + +

Returns

+
+
INcDependency
+
+
+ + + + + + + + + + + + + +

+ InitNcDependencyHost(INcDependencyListHost) + +

+ +

Wires the host and materializes the per-case HeidenhainDatumTable: +when the host list has none, one is created and installed so it exists and +is editable before any run. GetNcDependency() is then a pure +take. Idempotent — an existing table is left untouched.

+
+
+ +
+
public void InitNcDependencyHost(INcDependencyListHost host)
+
+ +

Parameters

+
+
host INcDependencyListHost
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Runtime-only proxy — the wired host and the resolved table are not +persisted in the shared runner; serialization writes only the empty element.

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

Parameters

+
+
baseDirectory string
+
+
relFile string
+
+
exhibitionOnly bool
+
+
+ +

Returns

+
+
XElement
+
+
+ + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IBlockSkipConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IBlockSkipConfig.html index e64f1a7c..9dbd94d9 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IBlockSkipConfig.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IBlockSkipConfig.html @@ -98,7 +98,7 @@ Interface IBlockSkipConfig

Runtime state of the controller's Block Delete / Block Skip switches. -Present in NcDependencyList exposes this to +Present in PipelineNcDependencyList exposes this to the runner so that blocks whose head carries / or /N (parsed by BlockSkipSyntax into BlockSkip) are skipped at semantic time.

@@ -109,7 +109,7 @@ toggled independently via panel switches or system parameters.

When this dependency is absent from -NcDependencyList, no block is skipped +PipelineNcDependencyList, no block is skipped (safest default: simulate the full machining). The syntax still consumes the / prefix so no UnparsedText--Remaining diagnostic is produced. diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IIndexingPositionConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IIndexingPositionConfig.html new file mode 100644 index 00000000..8594f4d6 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IIndexingPositionConfig.html @@ -0,0 +1,467 @@ + + + + + Interface IIndexingPositionConfig | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Interface IIndexingPositionConfig +

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

Indexing-axis position table: maps 1-based indexing position numbers to +axis coordinates for axes that only take up discrete stations (Hirth +couplings, indexing rotary tables, turret-style workholders). Consumed +by the coded-position coordinate functions (Siemens +CAC()/CIC()/CDC()/CACP()/CACN() — +unwrapped by SiemensAcIcSyntax, +resolved by McAbcSyntax / +IncrementalResolveSyntax via +CodedPositionUtil). +Implemented by SiemensMachineDataTable using the +Siemens machine data (MD30500 $MA_INDEX_AX_ASSIGN_POS_TAB per +axis; global tables MD10910/MD10930; equidistant MD30501–MD30503).

+

+Positions are expressed in the axis' native units (degrees for rotary, +mm for linear) in the coordinate frame the axis word itself is written +in — machine coordinates for rotary words, program coordinates for +linear words. Position numbering is 1-based: number 1 is the first +table entry (the Siemens machine-data help and alarm texts count this +way; the 0-based value range printed in some programming-manual +editions describes the machine-data array index, not the programmable +number). +

+
+
+ +
+
public interface IIndexingPositionConfig : INcDependency, IMakeXmlSource
+
+ + + + + + + +
+
Inherited Members
+
+ +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Fields +

+ + + +

+ PositionMatchTolerance + +

+ +

Tolerance, in axis units (degrees or mm), within which an axis +position is considered exactly on an indexing position by +TryFindIndexingAnchor(string, double, out int, out bool). Anchors come from previous +exact table writes, so the tolerance only needs to absorb float +round-trip drift — real indexing spacings are many orders of +magnitude larger.

+
+
+ +
+
public const double PositionMatchTolerance = 1E-06
+
+ + + + +

Field Value

+
+
double
+
+
+ + + + + + + + + +

Methods +

+ + + + +

+ GetIndexingPositionCount(string) + +

+ +

Number of programmable indexing positions: the table length for +table-assigned axes, the per-cycle position count for cyclic +equidistant axes, MaxValue for unbounded +(non-cyclic equidistant) axes, and 0 when the axis is not a usable +indexing axis.

+
+
+ +
+
int GetIndexingPositionCount(string axisName)
+
+ +

Parameters

+
+
axisName string
+

Axis name (e.g., “C”).

+
+
+ +

Returns

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

+ IsIndexingAxis(string) + +

+ +

True when the axis is configured as an indexing axis with a usable +position table (a non-empty table, or a valid equidistant +definition). An axis declared indexing but with an empty/invalid +table reports false — the coded-position words then stay +unrecognized (loud residue) instead of resolving against garbage.

+
+
+ +
+
bool IsIndexingAxis(string axisName)
+
+ +

Parameters

+
+
axisName string
+

Axis name (e.g., “C”).

+
+
+ +

Returns

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

+ IsIndexingCyclic(string) + +

+ +

True when position-number arithmetic wraps modulo +GetIndexingPositionCount(string) — an indexing axis that is +also a modular rotary axis +(IsModularRotary(string)). Advancing past +the last position continues at position 1.

+
+
+ +
+
bool IsIndexingCyclic(string axisName)
+
+ +

Parameters

+
+
axisName string
+

Axis name (e.g., “C”).

+
+
+ +

Returns

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

+ TryFindIndexingAnchor(string, double, out int, out bool) + +

+ +

Locates an axis position relative to the indexing table for +incremental (CIC) resolution: floorNumber +is the number of the nearest indexing position at or below +position (cyclically behind on cyclic axes; 0 +when the position lies below the whole table on a non-cyclic axis), +and exactlyOnPosition reports a match within +PositionMatchTolerance. False when the axis is not a +usable indexing axis.

+
+
+ +
+
bool TryFindIndexingAnchor(string axisName, double position, out int floorNumber, out bool exactlyOnPosition)
+
+ +

Parameters

+
+
axisName string
+

Axis name (e.g., “C”).

+
+
position double
+

Current axis coordinate (degrees or mm); rotary values may lie outside one revolution and are normalized by the implementation.

+
+
floorNumber int
+

Number of the nearest indexing position at or (cyclically) below the given position.

+
+
exactlyOnPosition bool
+

True when the position sits on an indexing position within PositionMatchTolerance.

+
+
+ +

Returns

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

+ TryGetIndexingPosition(string, int, out double) + +

+ +

Resolves a 1-based indexing position number to its axis coordinate. +False when the axis is not a usable indexing axis or the number is +outside [1, count].

+
+
+ +
+
bool TryGetIndexingPosition(string axisName, int positionNumber, out double position)
+
+ +

Parameters

+
+
axisName string
+

Axis name (e.g., “C”).

+
+
positionNumber int
+

1-based indexing position number.

+
+
position double
+

Resolved axis coordinate (degrees or mm).

+
+
+ +

Returns

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

+Interface IMCodeDeclarationConfig +

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

Machine-declared M-code map: what each machine-specific (OEM/PLC) M-code +does, as MCodeEffects — possibly several effects per code +(tool change, spindle direction, coolant) plus a note for behavior this +simulation does not model. Consumed by +MCodeExpansionSyntax, which expands declared +codes into the canonical ISO flags ahead of the regular consumers. +Machine-level (per-case parameter table) rather than brand vocabulary — +implemented by ControllerParameterTableBase, alongside the +narrower ISpindleControlConfig face over the same storage.

+
+
+ +
+
public interface IMCodeDeclarationConfig : INcDependency, IMakeXmlSource
+
+ + + + + + + +
+
Inherited Members
+
+ +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ MCodeDeclarations + +

+ +

Declared machine M-codes. Key = M-code as parsed (e.g. +“M13”), matched case-insensitively; value = the effects the +code performs. Enumerable for UI/serialization.

+
+
+ +
+
IReadOnlyDictionary<string, MCodeEffects> MCodeDeclarations { get; }
+
+ + + + + +

Property Value

+
+
IReadOnlyDictionary<string, MCodeEffects>
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ DeclareMCode(string, MCodeEffects) + +

+ +

Adds or replaces the declaration for an M-code. The effects are +copied on store, so the caller may reuse or further mutate its +instance without coupling declarations to each other.

+
+
+ +
+
void DeclareMCode(string mCode, MCodeEffects effects)
+
+ +

Parameters

+
+
mCode string
+
+
effects MCodeEffects
+
+
+ + + + + + + + + + + + + + +

+ RemoveMCodeDeclaration(string) + +

+ +

Removes the declaration for an M-code.

+
+
+ +
+
void RemoveMCodeDeclaration(string mCode)
+
+ +

Parameters

+
+
mCode string
+
+
+ + + + + + + + + + + + + + +

+ TryGetMCodeEffects(string, out MCodeEffects) + +

+ +

Resolves a parsed flag to its declared effects. Returns false for +undeclared codes — ISO defaults are the consumers' concern, not +this config's. The returned instance is the live declaration: +treat it as read-only and reconfigure through +DeclareMCode(string, MCodeEffects) instead of mutating it.

+
+
+ +
+
bool TryGetMCodeEffects(string mCode, out MCodeEffects effects)
+
+ +

Parameters

+
+
mCode string
+
+
effects MCodeEffects
+
+
+ +

Returns

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

+Interface INcDependencyListHost +

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

Hosts a per-case INcDependency list that +INcDependencyProxy placeholders in a shared +SoftNcRunner resolve their data against. Implemented by the +object owning both the shared runner and the varied setting data — +e.g. MachiningProject.

+
+
+ +
+
public interface INcDependencyListHost
+
+ + + + + + + + +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ PerCaseNcDependencyList + +

+ +

The case-specific dependencies (tool offsets, coordinate tables, +parameter tables, …) that proxies take from — never the runner's own +fixed list. A get-or-create proxy may also append the dependency it +makes here.

+
+
+ +
+
List<INcDependency> PerCaseNcDependencyList { get; }
+
+ + + + + +

Property Value

+
+
List<INcDependency>
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.INcDependencyProxy.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.INcDependencyProxy.html new file mode 100644 index 00000000..7f799183 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.INcDependencyProxy.html @@ -0,0 +1,273 @@ + + + + + Interface INcDependencyProxy | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Interface INcDependencyProxy +

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

An INcDependency placeholder that resolves the real +dependency lazily at pipeline-build time instead of carrying the data +itself. Lets a shared SoftNcRunner hold only the fixed +pipeline logic while the frequently-varied data lives on the owning +INcDependencyListHost (e.g. a MachiningProject).

+

+"Maker and taker": GetNcDependency() either constructs the +dependency on demand (maker) or fetches one from the host wired by +InitNcDependencyHost(INcDependencyListHost) (taker). A get-or-create proxy does +both — it takes the host's instance when present and otherwise makes one, +installing it into the host list so it persists and is editable per case. +

+

+A proxy may carry runtime-only state (the wired host, a memoized resolved +dependency). That state is host-wired per run and MUST NOT be written by +MakeXmlSource(string, string, bool) — same +runtime-only posture as ProjectFolderDependency. +

+
+
+ +
+
public interface INcDependencyProxy : INcDependency, IMakeXmlSource
+
+ + + + + + + +
+
Inherited Members
+
+ +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Methods +

+ + + + +

+ GetNcDependency() + +

+ +

Resolves the concrete dependency this proxy stands in for. Called by +GetEffectiveNcDependencyList() to build the list +passed to every Build / Resolve / Expand / +Initialize / GetSentences call. May return null when +no host is wired or it supplied no matching data — callers null-check +individual dependencies.

+
+
+ +
+
INcDependency GetNcDependency()
+
+ + +

Returns

+
+
INcDependency
+
+
+ + + + + + + + + + + + + +

+ InitNcDependencyHost(INcDependencyListHost) + +

+ +

Wires the host whose PerCaseNcDependencyList +this proxy takes from (or makes against). Called by the host / project +service before the pipeline runs — mirrors how +BaseDirectoryProvider +is wired from HiNc. Runtime-only; not persisted. A get-or-create proxy +may also materialize its data into the host list here, so the per-case +dependency exists and is editable before any run.

+
+
+ +
+
void InitNcDependencyHost(INcDependencyListHost host)
+
+ +

Parameters

+
+
host INcDependencyListHost
+

The owner of the per-case dependency data.

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

+Interface ISpindleControlConfig +

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

Machine-specific spindle control codes: maps custom spindle direction +M-codes to SpindleDirection — e.g., an ultrasonic spindle +started by M203 (CW) and stopped by M205 (STOP) instead of +ISO M03/M05. Consulted by +SpindleSpeedSyntax in addition to the +built-in ISO defaults (M03/M04/M05), which always stay in effect; +a configured code wins over its ISO meaning when both match. +Machine-level (per-case parameter table) rather than brand vocabulary — +implemented by ControllerParameterTableBase as a +spindle-direction face over its +MCodeDeclarations storage +(the multi-effect IMCodeDeclarationConfig map), so one +code is never half-recognized by two separate maps.

+
+
+ +
+
public interface ISpindleControlConfig : INcDependency, IMakeXmlSource
+
+ + + + + + + +
+
Inherited Members
+
+ +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ SpindleDirectionCodes + +

+ +

Configured custom spindle direction M-codes. Key = M-code as parsed +(e.g., “M203”), matched case-insensitively; value = resulting +direction. Enumerable for UI/serialization.

+
+
+ +
+
IReadOnlyDictionary<string, SpindleDirection> SpindleDirectionCodes { get; }
+
+ + + + + +

Property Value

+
+
IReadOnlyDictionary<string, SpindleDirection>
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ ConfigureSpindleDirectionCode(string, SpindleDirection) + +

+ +

Adds or updates a custom spindle direction M-code.

+
+
+ +
+
void ConfigureSpindleDirectionCode(string mCode, SpindleDirection direction)
+
+ +

Parameters

+
+
mCode string
+
+
direction SpindleDirection
+
+
+ + + + + + + + + + + + + + +

+ RemoveSpindleDirectionCode(string) + +

+ +

Removes a custom spindle direction M-code.

+
+
+ +
+
void RemoveSpindleDirectionCode(string mCode)
+
+ +

Parameters

+
+
mCode string
+
+
+ + + + + + + + + + + + + + +

+ TryResolveDirection(string, out SpindleDirection) + +

+ +

Resolves a parsed flag to a spindle direction. Returns true only for +configured custom codes whose declaration carries no other effect — +the caller consumes the whole flag for this one meaning, so a +composite declaration (e.g. spindle + coolant) must instead be +expanded by MCodeExpansionSyntax to keep +its other halves alive. ISO M03/M04/M05 defaults are the caller's +fallback, not this config's concern.

+
+
+ +
+
bool TryResolveDirection(string mCode, out SpindleDirection direction)
+
+ +

Parameters

+
+
mCode string
+
+
direction SpindleDirection
+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IStrokeLimitConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IStrokeLimitConfig.html index 32b03c86..c510949b 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IStrokeLimitConfig.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IStrokeLimitConfig.html @@ -159,8 +159,8 @@ Siemens MD36100/MD36110, Heidenhain MP420/MP430).

-

- CheckStrokeLimit(DVec3d, IProgress<object>) +

+ CheckStrokeLimit(DVec3d, IProgress<IMessage>)

@@ -169,7 +169,7 @@ Siemens MD36100/MD36110, Heidenhain MP420/MP430).

-
bool CheckStrokeLimit(DVec3d mcXyzabc, IProgress<object> errorReporter)
+
bool CheckStrokeLimit(DVec3d mcXyzabc, IProgress<IMessage> stripReporter = null)

Parameters

@@ -177,8 +177,8 @@ Siemens MD36100/MD36110, Heidenhain MP420/MP430).

mcXyzabc DVec3d

Machine coordinate. Point = XYZ (mm), Normal = ABC (rad).

-
errorReporter IProgress<object>
-

Receives error messages for each violated axis. Can be null.

+
stripReporter IProgress<IMessage>
+

Progress sink for cutter-location strip updates. Can be null.

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

+Interface IToolChangeTriggerConfig +

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

Machine-level tool-change trigger mode. Machining centers with a +magazine treat a bare T word as pre-selection only (the magazine +rotates, no feed axis moves) and change the tool on the trigger M-code; +lathes/turret machines index the turret — and thereby change the tool — +on the T word itself. Real controllers declare this per machine +(e.g. Siemens MD22550 $MC_TOOL_CHANGE_MODE, where 0 means the +T word performs the change). Consulted by +ToolChangeSyntax; machine-level (per-case +parameter table) rather than brand vocabulary — implemented by +ControllerParameterTableBase. Custom trigger M-codes are +the separate IMCodeDeclarationConfig concern +(IsToolChange).

+
+
+ +
+
public interface IToolChangeTriggerConfig : INcDependency, IMakeXmlSource
+
+ + + + + + + +
+
Inherited Members
+
+ +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ ToolWordTriggersChange + +

+ +

When true, a block carrying a T word performs the tool +change by itself (turret semantics); default false keeps the ISO +machining-center behavior where only the trigger M-code changes +the tool and T merely arms the selection.

+
+
+ +
+
bool ToolWordTriggersChange { get; set; }
+
+ + + + + +

Property Value

+
+
bool
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.html index c4498814..92e07d49 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.html @@ -317,6 +317,47 @@ Shared between + +

+ DescribeAddress(int) + +

+ +

Inverse of TryResolveBase(string) per single address: describes an +address inside the mapped ranges as its work-coordinate component +(“G54 X offset”, “G54.1P3 Z offset”), or null outside them (including +the unused tail of each 20-address stride).

+
+
+ +
+
public static string DescribeAddress(int addr)
+
+ +

Parameters

+
+
addr int
+

Parameter address (e.g. 5222).

+
+
+ +

Returns

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

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

+Class MCodeEffects +

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

What one machine-declared M-code does. Real-machine OEM M-codes are +frequently composite — e.g. an M13 that means “spindle CW + +flood coolant on” — so a declaration carries every effect the code +performs rather than a single meaning, and additionally an +UnmodeledNote for the parts this simulation does not +model. Declaring only the known parts and staying loud about the rest +keeps a composite code from being half-consumed silently. +Stored per machine in +MCodeDeclarations and +consumed by MCodeExpansionSyntax, which +expands the declared code into the canonical ISO flags the regular +consumers already understand.

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

Properties +

+ + + + +

+ CoolantMode + +

+ +

Coolant mode the code commands (expands to +M07/M08/M09): one of +Mist, Flood, +Off. null/empty when the code does +not touch coolant.

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

Property Value

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

+ IsEmpty + +

+ +

True when the declaration carries no effect and no note — such an +entry means “consume this code silently; it is irrelevant to +simulation”.

+
+
+ +
+
public bool IsEmpty { get; }
+
+ + + + + +

Property Value

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

+ IsSpindleDirectionOnly + +

+ +

True when SpindleDirection is the declaration's sole +content. The two consumption paths partition on this: only such +declarations resolve through +TryResolveDirection(string, out SpindleDirection) (whose +caller consumes the whole flag in place, preserving legacy +behavior), and MCodeExpansionSyntax +deliberately skips them and expands only composite declarations, +so no effect is swallowed and nothing is translated twice.

+
+
+ +
+
public bool IsSpindleDirectionOnly { get; }
+
+ + + + + +

Property Value

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

+ IsToolChange + +

+ +

The code performs a tool change (expands to M06) — the +machine-configurable trigger real controllers declare via e.g. +Siemens MD22560 $MC_TOOL_CHANGE_M_CODE.

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

Property Value

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

+ SpindleDirection + +

+ +

Spindle direction the code commands (expands to +M03/M04/M05), or null when the code +does not touch the spindle.

+
+
+ +
+
public SpindleDirection? SpindleDirection { get; set; }
+
+ + + + + +

Property Value

+
+
SpindleDirection?
+
+
+ + + + + + + + + + +

+ UnmodeledNote + +

+ +

Free-text description of what the code additionally does on the +real machine that this simulation does not model (e.g. “chip +conveyor forward”). When set, consuming the code emits one +informational diagnostic per occurrence instead of staying silent +— a declaration must not downgrade the visible +Parsing–Unconsumed warning into nothing.

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

Property Value

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

Methods +

+ + + + +

+ Clone() + +

+ +

Returns an independent copy of this declaration.

+
+
+ +
+
public MCodeEffects Clone()
+
+ + +

Returns

+
+
MCodeEffects
+
+
+ + + + + + + + + + + + + +

+ NormalizeCoolantMode(string) + +

+ +

Maps a raw coolant-mode string to the canonical +Coolant constant (case-insensitive), or null +when the value names no known mode.

+
+
+ +
+
public static string NormalizeCoolantMode(string value)
+
+ +

Parameters

+
+
value string
+
+
+ +

Returns

+
+
string
+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig.html index f31d4e44..f5ae557d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig.html @@ -160,9 +160,10 @@ radius, and corresponding wear values.

-

Gets the effective tool height offset (geometry - wear) in mm -for a specific tool and cutting edge. -Corresponds to Siemens $TC_DP3 (length 1, typically Z direction). +

Gets the effective tool height offset in mm for a specific tool +and cutting edge: $TC_DP3 (length 1, typically Z direction) plus +its additive wear $TC_DP12 — Sinumerik wear values are added, a +shortened tool carries negative wear. Returns 0 if the tool/edge is not configured.

@@ -247,9 +248,9 @@ Returns 0 if not configured.

-

Gets the effective tool radius offset (geometry - wear) in mm -for a specific tool and cutting edge. -Corresponds to Siemens $TC_DP6 (radius). +

Gets the effective tool radius offset in mm for a specific tool +and cutting edge: $TC_DP6 (radius) plus its additive wear +$TC_DP15. Returns 0 if the tool/edge is not configured.

@@ -284,6 +285,57 @@ Returns 0 if the tool/edge is not configured.

+ + +

+ TryGetToolHeightOffset_mm(int, int, out double) + +

+ +

Attempts to get the effective tool height offset in mm ($TC_DP3 +plus additive wear $TC_DP12) for a specific tool and cutting edge. +Returns false when the (tool, edge) pair has no configured +row, so the caller can fall back to another source (e.g. the +generic IToolOffsetConfig). This is the only reliable +miss signal — 0.0 is a legal configured offset, so the zero +returned by GetToolHeightOffset_mm(int, int) cannot distinguish +a vacant row from a configured zero.

+
+
+ +
+
bool TryGetToolHeightOffset_mm(int toolNumber, int edgeNumber, out double offset_mm)
+
+ +

Parameters

+
+
toolNumber int
+

Tool number (T).

+
+
edgeNumber int
+

Cutting edge number (D).

+
+
offset_mm double
+

The effective height offset; 0 on miss.

+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + +
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensFrameTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensFrameTable.html index 24cc41f5..ad29d633 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensFrameTable.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensFrameTable.html @@ -6,7 +6,7 @@ - + @@ -109,6 +109,12 @@ dependency from ISessionResettable: settable frames +are setting data on the control — a $P_UIFR write from the +program survives reset and power-off, so a replayed session must see +the values the previous run wrote. +

@@ -261,6 +267,46 @@ position, etc.). + + +

+ AxisOffsets + +

+ +

Per-axis translation components beyond X/Y/Z, keyed by G-code id then +uppercase axis letter (e.g. [“G54”][“C”] = 12.5). Real +Sinumerik frames carry a translation per machine axis including +rotaries ($P_UIFR[1,C,TR]); X/Y/Z stay in Frames +so existing consumers (GetCoordinateOffset(string)) are +unaffected. Absent entries read as 0 — matching Sinumerik where every +allocated frame axis defaults to zero. Rotary components are +recorded/read through the $P_UIFR bridge; the transform chain does +not consume them yet (frame work owns that).

+
+
+ +
+
public Dictionary<string, Dictionary<string, double>> AxisOffsets { get; set; }
+
+ + + + + +

Property Value

+
+
Dictionary<string, Dictionary<string, double>>
+
+
+ + + + + + + +

@@ -362,6 +408,53 @@ G500 is treated specially (always zero) and is not stored here.

+ + +

+ GetAxisOffset(string, string) + +

+ +

Reads one axis translation component of a frame +($P_UIFR[n,axis,TR] read side). X/Y/Z route into +Frames; any other axis letter reads +AxisOffsets with 0 as the allocated-but-unset default. +G500 is always 0. Returns null only when +coordId is not an allocated frame — the caller's +lookup chain then falls through (vacant).

+
+
+ +
+
public double? GetAxisOffset(string coordId, string axis)
+
+ +

Parameters

+
+
coordId string
+

Frame G-code id (e.g. G54, G505).

+
+
axis string
+

Uppercase axis letter (e.g. X, C).

+
+
+ +

Returns

+
+
double?
+
+
+ + + + + + + + + + +

@@ -486,6 +579,51 @@ Since the folder can be moving with the configuration file.

+ + +

+ SetAxisOffset(string, string, double) + +

+ +

Writes one axis translation component of a frame +($P_UIFR[n,axis,TR]=… write side). X/Y/Z replace the +component inside Frames (a fresh Vec3d is +installed — never in-place mutation, so aliased vectors stay +unaffected); other axis letters land in AxisOffsets. +G500 writes are ignored, mirroring +SetCoordinateOffset(string, Vec3d).

+
+
+ +
+
public void SetAxisOffset(string coordId, string axis, double value)
+
+ +

Parameters

+
+
coordId string
+

Frame G-code id.

+
+
axis string
+

Uppercase axis letter.

+
+
value double
+

New translation component value.

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

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensFrameTableProxy.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensFrameTableProxy.html new file mode 100644 index 00000000..0014ad68 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensFrameTableProxy.html @@ -0,0 +1,393 @@ + + + + + Class SiemensFrameTableProxy | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensFrameTableProxy +

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

Get-or-create INcDependencyProxy for SiemensFrameTable: +a placeholder in the shared PipelineNcDependencyList that +resolves the host project's own per-case settable work frames ($P_UIFR, +G54–G57…).

+
+
+ +
+
public sealed class SiemensFrameTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
SiemensFrameTableProxy
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ XName + +

+ +

XML element name used to register this dependency with XFactory.

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

Property Value

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

Methods +

+ + + + +

+ GetNcDependency() + +

+ +

Takes the host's SiemensFrameTable (created during +InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired.

+
+
+ +
+
public INcDependency GetNcDependency()
+
+ + +

Returns

+
+
INcDependency
+
+
+ + + + + + + + + + + + + +

+ InitNcDependencyHost(INcDependencyListHost) + +

+ +

Wires the host and materializes the per-case SiemensFrameTable: +when the host list has none, one is created and installed so it exists and +is editable before any run. GetNcDependency() is then a pure +take. Idempotent — an existing table is left untouched.

+
+
+ +
+
public void InitNcDependencyHost(INcDependencyListHost host)
+
+ +

Parameters

+
+
host INcDependencyListHost
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Runtime-only proxy — the wired host and the resolved table are not +persisted in the shared runner; serialization writes only the empty element.

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

Parameters

+
+
baseDirectory string
+
+
relFile string
+
+
exhibitionOnly bool
+
+
+ +

Returns

+
+
XElement
+
+
+ + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensGotoIterationDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensGotoIterationDependency.html new file mode 100644 index 00000000..c55ad464 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensGotoIterationDependency.html @@ -0,0 +1,555 @@ + + + + + Class SiemensGotoIterationDependency | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensGotoIterationDependency +

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

Watchdog for Siemens GOTOF/GOTOB jumps — the +label-keyed sibling of the Fanuc +FanucGotoIterationDependency, with the same +“soft-cap + runtime counter + session-init ISessionResettable” +shape. Kept per-brand (rather than widening the Fanuc dep's int-keyed +bucket) for diagnostic clarity and because Siemens targets are named +labels, not N-numbers.

+

+The counter key is (FileName, Label) where FileName is +the source-level file path of the jump host (the relative form +carried on FilePath). Source-level keying +means multiple inline invocations of the same subprogram pool their +counts, while two files each jumping to their own LBL1 stay +isolated. Forward and backward jumps to the same label share one +bucket — only the backward direction can loop, but a shared bucket +keeps the accounting simple and the cap generous. +

+

+The consuming syntax +(SiemensGotoSyntax) counts +after the condition gate and before the label scan; above +MaxIterationsPerLabel the jump warns +SiemensGoto--IterationLimitExceeded and falls through. A +missing dependency disables the cap (Fanuc parity) — the brand preset +wires one by default. +

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

Constructors +

+ + + + +

+ SiemensGotoIterationDependency() + +

+ +

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

+
+
+ +
+
public SiemensGotoIterationDependency()
+
+ + + + + + + + + + + + + + + +

+ SiemensGotoIterationDependency(XElement) + +

+ +

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

+
+
+ +
+
public SiemensGotoIterationDependency(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Root element named XName.

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

Fields +

+ + + +

+ DefaultMaxIterationsPerLabel + +

+ +

Default for MaxIterationsPerLabel — matches the +Fanuc GOTO default: jumps are not the legitimate bulk-iteration +primitive (the loop constructs are), so the cap stays tight.

+
+
+ +
+
public const int DefaultMaxIterationsPerLabel = 1000
+
+ + + + +

Field Value

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

Properties +

+ + + + +

+ CountByLabel + +

+ +

Per-target hit counter keyed by (FileName, Label). +Runtime-only; not serialised. Cleared by OnSessionReset() +on the session-init edge.

+
+
+ +
+
public Dictionary<(string FileName, string Label), int> CountByLabel { get; }
+
+ + + + + +

Property Value

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

+ MaxIterationsPerLabel + +

+ +

Soft cap on fired jumps for any single (FileName, Label) +pair. Above this the host block emits +SiemensGoto–IterationLimitExceeded and falls through.

+
+
+ +
+
public int MaxIterationsPerLabel { 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.

+
+ + + + + + +

+ OnSessionReset() + +

+ +

Clears CountByLabel; leaves MaxIterationsPerLabel untouched.

+
+
+ +
+
public void OnSessionReset()
+
+ + + + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensLoopIterationDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensLoopIterationDependency.html new file mode 100644 index 00000000..4c3f4341 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensLoopIterationDependency.html @@ -0,0 +1,556 @@ + + + + + Class SiemensLoopIterationDependency | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensLoopIterationDependency +

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

Watchdog shared by all four Siemens loop constructs +(WHILE/ENDWHILE, FOR/ENDFOR, REPEAT/UNTIL, +LOOP/ENDLOOP) — construct-neutral by design, unlike the Fanuc +sibling (FanucWhileDoIterationDependency) which +only has WHILE to guard. Same “soft-cap + runtime counter + +session-init ISessionResettable” shape.

+

+Siemens loop constructs carry no LoopId, so the counter key is +(FileName, BeginLineNo) — the loop-entry line recorded in the +active frame identifies the construct uniquely within its file, and +the file path isolates identically-numbered lines across files (and +across inlined subprograms). +

+

+The consuming syntax +(SiemensLoopSyntax) counts at +the back-jump step (the loop terminator / falsy UNTIL), so a +loop whose condition is false from the outset consumes zero +iterations. Above MaxIterationsPerLoop the terminator +warns SiemensLoop--IterationLimitExceeded, pops the frame and +falls through. A missing dependency disables the cap for the +condition-bearing constructs (Fanuc parity) but hard-blocks the +ENDLOOP back-jump — LOOP has no exit condition, so an +uncapped back-jump would hang the pipeline deterministically. +

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

Constructors +

+ + + + +

+ SiemensLoopIterationDependency() + +

+ +

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

+
+
+ +
+
public SiemensLoopIterationDependency()
+
+ + + + + + + + + + + + + + + +

+ SiemensLoopIterationDependency(XElement) + +

+ +

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

+
+
+ +
+
public SiemensLoopIterationDependency(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Root element named XName.

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

Fields +

+ + + +

+ DefaultMaxIterationsPerLoop + +

+ +

Default for MaxIterationsPerLoop — matches the Fanuc +WHILE default: loops are the legitimate iteration primitive +(drill grids, calibration sweeps), so the cap is generous while +still catching runaways in a tractable time.

+
+
+ +
+
public const int DefaultMaxIterationsPerLoop = 10000
+
+ + + + +

Field Value

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

Properties +

+ + + + +

+ CountByLoop + +

+ +

Per-loop hit counter keyed by (FileName, BeginLineNo). +Runtime-only; not serialised. Cleared by OnSessionReset() +on the session-init edge.

+
+
+ +
+
public Dictionary<(string FileName, int BeginLineNo), int> CountByLoop { get; }
+
+ + + + + +

Property Value

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

+ MaxIterationsPerLoop + +

+ +

Soft cap on back-jumps for any single (FileName, BeginLineNo) +pair. Above this the terminator block emits +SiemensLoop–IterationLimitExceeded, pops the frame and +falls through.

+
+
+ +
+
public int MaxIterationsPerLoop { 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.

+
+ + + + + + +

+ OnSessionReset() + +

+ +

Clears CountByLoop; leaves MaxIterationsPerLoop untouched.

+
+
+ +
+
public void OnSessionReset()
+
+ + + + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html index 2be03229..3aa1610c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html @@ -6,7 +6,7 @@ - + @@ -104,11 +104,16 @@ MD10000–MD19999: General machine data. MD20000–MD29999: Axis-specific machine data. MD30000–MD39999: Axis-specific machine data (extended).

+

+Deliberately not ISessionResettable: machine data is +control configuration a part program cannot mutate, so there is no +session-scoped state to clear. +

-
public class SiemensMachineDataTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, INcDependency, IMakeXmlSource
+
public class SiemensMachineDataTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, ISpindleControlConfig, IMCodeDeclarationConfig, IToolChangeTriggerConfig, IIndexingPositionConfig, INcDependency, IMakeXmlSource
@@ -130,6 +135,10 @@ MD30000–MD39999: Axis-specific machine data (extended). + + + + @@ -199,12 +208,39 @@ MD30000–MD39999: Axis-specific machine data (extended). + + + + + + + + + @@ -358,6 +394,175 @@ MD30000–MD39999: Axis-specific machine data (extended). +

+ MdFixPointPos + +

+ +

MD30600: Fixed point position per axis — the G75 target +($MA_FIX_POINT_POS). Fixed point 1 only; the Siemens +per-axis array form (FP=2..4) is not modeled.

+
+
+ +
+
public const int MdFixPointPos = 30600
+
+ + + + +

Field Value

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

+ MdIndexAxAssignPosTab + +

+ +

MD30500: Indexing table assignment per axis +($MA_INDEX_AX_ASSIGN_POS_TAB) — 0 = not an indexing axis, +1 = positions in IndexAxPosTab1, 2 = positions in +IndexAxPosTab2, 3 = equidistant index intervals +(MdIndexAxNumerator / MdIndexAxDenominator +/ MdIndexAxOffset). See IIndexingPositionConfig.

+
+
+ +
+
public const int MdIndexAxAssignPosTab = 30500
+
+ + + + +

Field Value

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

+ MdIndexAxDenominator + +

+ +

MD30502: Equidistant indexing denominator per axis +($MA_INDEX_AX_DENOMINATOR) — on a modular rotary axis, the +number of indexing positions per revolution.

+
+
+ +
+
public const int MdIndexAxDenominator = 30502
+
+ + + + +

Field Value

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

+ MdIndexAxNumerator + +

+ +

MD30501: Equidistant indexing numerator per axis +($MA_INDEX_AX_NUMERATOR). Position spacing = +numerator / denominator for non-modular axes; ignored on modular +rotary axes, whose spacing is the 360° modulo range / +MdIndexAxDenominator.

+
+
+ +
+
public const int MdIndexAxNumerator = 30501
+
+ + + + +

Field Value

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

+ MdIndexAxOffset + +

+ +

MD30503: Absolute position of indexing position 1 per axis +($MA_INDEX_AX_OFFSET) for equidistant indexing.

+
+
+ +
+
public const int MdIndexAxOffset = 30503
+
+ + + + +

Field Value

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

MdMaxAxisVelocity @@ -512,6 +717,116 @@ MD30000–MD39999: Axis-specific machine data (extended). + +

+ MdToolChangeMCode + +

+ +

MD22560: Tool change M function +($MC_TOOL_CHANGE_M_CODE, default 6). When the row is present, +the named M code carries IsToolChange in +the effective declaration view (overlaid at read time — see +EffectiveMCodeDeclarations); when absent, only +explicit MCodeDeclarations +entries trigger a change.

+
+
+ +
+
public const int MdToolChangeMCode = 22560
+
+ + + + +

Field Value

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

+ MdToolChangeMode + +

+ +

MD22550: Tool change mode ($MC_TOOL_CHANGE_MODE) — +0 = the T word itself performs the change (turret/lathe), +1 = an M function performs it while T only preselects. When the row +is present it drives ToolWordTriggersChange; when +absent the brand-neutral flag stands alone.

+
+
+ +
+
public const int MdToolChangeMode = 22550
+
+ + + + +

Field Value

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

+ OemAuxiliaryNote + +

+ +

Note text for the OEM auxiliary M-codes the default preset declares +note-only (M12/M13/M22/M23/M330/M331) — machine-specific codes +recurring in real Siemens programs whose PLC behavior varies per +machine and is not simulated. A note-only declaration keeps each +occurrence visible as known-but-unmodeled +(DeclaredMCode–UnmodeledEffects) instead of the unknown-code +Parsing–Unconsumed warning; a machine table overrides the +declaration with the actual effects when they are known.

+
+
+ +
+
public const string OemAuxiliaryNote = "machine-specific auxiliary function (OEM/PLC); the exact behavior depends on the machine"
+
+ + + + +

Field Value

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

Properties

@@ -548,6 +863,72 @@ MD30000–MD39999: Axis-specific machine data (extended). + + +

+ AxisMd30500 + +

+ +

MD30500: Indexing table assignment per axis. See +MdIndexAxAssignPosTab.

+
+
+ +
+
public Dictionary<string, int> AxisMd30500 { get; set; }
+
+ + + + + +

Property Value

+
+
Dictionary<string, int>
+
+
+ + + + + + + + + + +

+ AxisMd30600 + +

+ +

MD30600: Fixed point position per axis (fixed point 1 — +the G75 target). See GetFixPointPosition(string).

+
+
+ +
+
public Dictionary<string, double> AxisMd30600 { get; set; }
+
+ + + + + +

Property Value

+
+
Dictionary<string, double>
+
+
+ + + + + + + +

@@ -677,6 +1058,46 @@ See IR + + +

+ EffectiveMCodeDeclarations + +

+ +

Overlays the MD22560 tool-change M function onto the declared +M-codes: the named code gains IsToolChange +(merged into a clone of its explicit declaration when one exists, so +a note or coolant half is kept and the stored instance is never +mutated). The overlay exists only in this read-time view — XML, +MCodeDeclarations, and +clones stay derivation-free and re-derive from the MD row. With no +MD22560 row (or one already declared as a tool change) the stored +dictionary is returned as-is, allocation-free.

+
+
+ +
+
protected override IReadOnlyDictionary<string, MCodeEffects> EffectiveMCodeDeclarations { get; }
+
+ + + + + +

Property Value

+
+
IReadOnlyDictionary<string, MCodeEffects>
+
+
+ + + + + + + +

@@ -709,6 +1130,78 @@ See IR + + +

+ IndexAxPosTab1 + +

+ +

Indexing position table 1 (MD10910 $MN_INDEX_AX_POS_TAB_1), +shared by every axis whose MdIndexAxAssignPosTab value +is 1. Entry order is position-number order: entry [0] is indexing +position 1. The used-length machine data (MD10900) is implied by +the list count. Values follow the Siemens constraints (strictly +ascending; within one revolution for modular rotary axes) — the +lookups do not validate them.

+
+
+ +
+
public List<double> IndexAxPosTab1 { get; set; }
+
+ + + + + +

Property Value

+
+
List<double>
+
+
+ + + + + + + + + + +

+ IndexAxPosTab2 + +

+ +

Indexing position table 2 (MD10930 $MN_INDEX_AX_POS_TAB_2) — +see IndexAxPosTab1; used-length MD10920 implied by the +list count.

+
+
+ +
+
public List<double> IndexAxPosTab2 { get; set; }
+
+ + + + + +

Property Value

+
+
List<double>
+
+
+ + + + + + + +

@@ -904,6 +1397,44 @@ Null if not defined for this controller brand.

+ + +

+ ToolWordTriggersChange + +

+ +

The T-word trigger, bound to MD22550 ($MC_TOOL_CHANGE_MODE) +when that row is present: 0 = the T word performs the change, any +other value = an M function does. An absent row falls back to the +brand-neutral flag. The setter writes whichever storage is active, +so an MD-configured table keeps the machine data authoritative +(and visible in the native parameter view) while a table without +the row behaves exactly like the other brands.

+
+
+ +
+
public override bool ToolWordTriggersChange { get; set; }
+
+ + + + + +

Property Value

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

@@ -940,6 +1471,331 @@ Null if not defined for this controller brand.

+ + +

+ DeepClone() + +

+ +

Returns an independent deep copy of this table: the three parameter +dictionaries, M-code declarations, and T-word trigger (via +CopyParamsTo(ControllerParameterTableBase)) plus this +class's indexing position tables +(IndexAxPosTab1/IndexAxPosTab2). Used by +SiemensMachineDataTableProxy to clone its fixed +machine-config seed into a host that has no table yet.

+
+
+ +
+
public SiemensMachineDataTable DeepClone()
+
+ + +

Returns

+
+
SiemensMachineDataTable
+
+
+ + + + + + + + + + + + + +

+ DescribeAxisParam(int) + +

+ +

Per-axis double counterpart of DescribeSystemParam(int). +Covers the role ids the base class consumes (reference position, +rapid rate, stroke limits); brand subclasses may override for their +own vocabulary or extra numbers.

+
+
+ +
+
public override string DescribeAxisParam(int paramId)
+
+ +

Parameters

+
+
paramId int
+

Brand-specific parameter/MD/MP number.

+
+
+ +

Returns

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

+ DescribeIntAxisParam(int) + +

+ +

Per-axis integer counterpart of DescribeSystemParam(int). +Covers the axis-type id the base class consumes.

+
+
+ +
+
public override string DescribeIntAxisParam(int paramId)
+
+ +

Parameters

+
+
paramId int
+

Brand-specific parameter/MD/MP number.

+
+
+ +

Returns

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

+ DescribeSystemParam(int) + +

+ +

Short usage label for a well-known system parameter id, or null when +the id has no modeled meaning (a raw pass-through row). Brand +subclasses extend this with their own well-known numbers; the native +parameter UI shows the label next to the raw id so an operator can +tell the modeled parameters from free extras.

+
+
+ +
+
public override string DescribeSystemParam(int paramId)
+
+ +

Parameters

+
+
paramId int
+

Brand-specific parameter/MD/MP number.

+
+
+ +

Returns

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

+ GetFixPointPosition(string) + +

+ +

Fixed-point-1 position (MD30600) for the axis, or null when the +axis has no configured fixed point — the G75 consumer then falls +back to the reference position (GetHomePosition(string)).

+
+
+ +
+
public double? GetFixPointPosition(string axisName)
+
+ +

Parameters

+
+
axisName string
+
+
+ +

Returns

+
+
double?
+
+
+ + + + + + + + + + + + + +

+ GetIndexingPositionCount(string) + +

+ +

Number of programmable indexing positions: the table length for +table-assigned axes, the per-cycle position count for cyclic +equidistant axes, MaxValue for unbounded +(non-cyclic equidistant) axes, and 0 when the axis is not a usable +indexing axis.

+
+
+ +
+
public int GetIndexingPositionCount(string axisName)
+
+ +

Parameters

+
+
axisName string
+

Axis name (e.g., “C”).

+
+
+ +

Returns

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

+ IsIndexingAxis(string) + +

+ +

True when the axis is configured as an indexing axis with a usable +position table (a non-empty table, or a valid equidistant +definition). An axis declared indexing but with an empty/invalid +table reports false — the coded-position words then stay +unrecognized (loud residue) instead of resolving against garbage.

+
+
+ +
+
public bool IsIndexingAxis(string axisName)
+
+ +

Parameters

+
+
axisName string
+

Axis name (e.g., “C”).

+
+
+ +

Returns

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

+ IsIndexingCyclic(string) + +

+ +

True when position-number arithmetic wraps modulo +GetIndexingPositionCount(string) — an indexing axis that is +also a modular rotary axis +(IsModularRotary(string)). Advancing past +the last position continues at position 1.

+
+
+ +
+
public bool IsIndexingCyclic(string axisName)
+
+ +

Parameters

+
+
axisName string
+

Axis name (e.g., “C”).

+
+
+ +

Returns

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

@@ -1025,6 +1881,106 @@ Since the folder can be moving with the configuration file.

+ + +

+ TryFindIndexingAnchor(string, double, out int, out bool) + +

+ +

Locates an axis position relative to the indexing table for +incremental (CIC) resolution: floorNumber +is the number of the nearest indexing position at or below +position (cyclically behind on cyclic axes; 0 +when the position lies below the whole table on a non-cyclic axis), +and exactlyOnPosition reports a match within +PositionMatchTolerance. False when the axis is not a +usable indexing axis.

+
+
+ +
+
public bool TryFindIndexingAnchor(string axisName, double position, out int floorNumber, out bool exactlyOnPosition)
+
+ +

Parameters

+
+
axisName string
+

Axis name (e.g., “C”).

+
+
position double
+

Current axis coordinate (degrees or mm); rotary values may lie outside one revolution and are normalized by the implementation.

+
+
floorNumber int
+

Number of the nearest indexing position at or (cyclically) below the given position.

+
+
exactlyOnPosition bool
+

True when the position sits on an indexing position within PositionMatchTolerance.

+
+
+ +

Returns

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

+ TryGetIndexingPosition(string, int, out double) + +

+ +

Resolves a 1-based indexing position number to its axis coordinate. +False when the axis is not a usable indexing axis or the number is +outside [1, count].

+
+
+ +
+
public bool TryGetIndexingPosition(string axisName, int positionNumber, out double position)
+
+ +

Parameters

+
+
axisName string
+

Axis name (e.g., “C”).

+
+
positionNumber int
+

1-based indexing position number.

+
+
position double
+

Resolved axis coordinate (degrees or mm).

+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTableProxy.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTableProxy.html new file mode 100644 index 00000000..a9c02fa7 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTableProxy.html @@ -0,0 +1,486 @@ + + + + + Class SiemensMachineDataTableProxy | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensMachineDataTableProxy +

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

Get-or-create INcDependencyProxy for +SiemensMachineDataTable: a placeholder in the shared +PipelineNcDependencyList that resolves the host +project's own machine data table. Like the Fanuc-family parameter table, +the Siemens machine data mixes machine config (axis types / reference +positions / velocities / indexing tables) with per-project edits, so the +proxy carries a fixed machine-config Seed that is serialized +into the shared runner file. On wire, the host receives a deep clone of the +seed only when it has no SiemensMachineDataTable yet; a +loaded project's own full table wins, so a same-brand re-flash re-binds to +the project's machine data instead of resetting it. The resolved host +table is fully serialized on the project.

+

+The proxy deliberately does not implement the machine-config +interfaces (IMachineAxisConfig, +IIndexingPositionConfig, etc.) — every machine-config +consumer must go through +GetEffectiveNcDependencyList() so it sees the +resolved host table, never this placeholder. +

+
+
+ +
+
public sealed class SiemensMachineDataTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
SiemensMachineDataTableProxy
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ SiemensMachineDataTableProxy(SiemensMachineDataTable) + +

+ +

Creates a proxy carrying seed as its machine-config +seed, defaulting to Default3Axis.

+
+
+ +
+
public SiemensMachineDataTableProxy(SiemensMachineDataTable seed = null)
+
+ +

Parameters

+
+
seed SiemensMachineDataTable
+

The machine-config seed cloned into a fresh host.

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

Properties +

+ + + + +

+ Seed + +

+ +

The fixed machine-config seed deep-cloned into a host that has no +SiemensMachineDataTable yet. Carried on the shared runner +and serialized into the runner file — never the per-case instance, which +lives on the host (see GetNcDependency()).

+
+
+ +
+
public SiemensMachineDataTable Seed { get; }
+
+ + + + + +

Property Value

+
+
SiemensMachineDataTable
+
+
+ + + + + + + + + + +

+ XName + +

+ +

XML element name used to register this dependency with XFactory.

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

Property Value

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

Methods +

+ + + + +

+ GetNcDependency() + +

+ +

Takes the host's SiemensMachineDataTable (created during +InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired.

+
+
+ +
+
public INcDependency GetNcDependency()
+
+ + +

Returns

+
+
INcDependency
+
+
+ + + + + + + + + + + + + +

+ InitNcDependencyHost(INcDependencyListHost) + +

+ +

Wires the host and materializes the host +SiemensMachineDataTable: when the host list has none, a +deep clone of Seed is installed so the machine data exists +and is editable before any run. GetNcDependency() is then a +pure take. Idempotent — an existing host table (a loaded project's) is +left untouched.

+
+
+ +
+
public void InitNcDependencyHost(INcDependencyListHost host)
+
+ +

Parameters

+
+
host INcDependencyListHost
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Serializes only the machine-config Seed — the wired host and +the resolved host table are runtime-only and not persisted in the shared runner.

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

Parameters

+
+
baseDirectory string
+
+
relFile string
+
+
exhibitionOnly bool
+
+
+ +

Returns

+
+
XElement
+
+
+ + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Rehydrates the carried Seed from the nested +SiemensMachineDataTable element, falling back to +Default3Axis when absent. Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensRParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensRParameterTable.html new file mode 100644 index 00000000..bce85bf0 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensRParameterTable.html @@ -0,0 +1,642 @@ + + + + + Class SiemensRParameterTable | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensRParameterTable +

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

Sinumerik R-parameter table (R0-R999). R parameters are the +Siemens arithmetic-variable surface (R63=100.5, C=R61, +R26=(558.5+14)/2); on real hardware they live in retentive memory +(sized by MD28050) and survive program end and power cycles, so — like +the Fanuc sibling RetainedCommonVariableTable — this +table is not session-reset and is serialised into the project file.

+

+Reads flow through Get(string) (registered +automatically because the table sits on the runner's effective +NcDependencyList); writes flow through +SiemensRParameterReadingSyntax, +which consumes literal Parsing.Assignments.Rn entries after +VariableEvaluatorSyntax has normalized +expression RHS to literals. +

+

+Vacant is represented by null: either the dictionary has no entry +for the key, or the entry maps to null — both read identically. +Real Sinumerik default-initialises every allocated R to 0, but a vacant +read failing loud (Variable--Vacant via the evaluator) surfaces missing +setup data instead of silently machining with 0. +

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

Constructors +

+ + + + +

+ SiemensRParameterTable() + +

+ +

Empty table.

+
+
+ +
+
public SiemensRParameterTable()
+
+ + + + + + + + + + + + + + + +

+ SiemensRParameterTable(XElement) + +

+ +

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

+
+
+ +
+
public SiemensRParameterTable(XElement src)
+
+ +

Parameters

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

Fields +

+ + + +

+ RParameterMax + +

+ +

Inclusive upper bound of the R-parameter range (R999). Real +machines size this by MD28050 MM_NUM_R_PARAM (often 100); 999 covers +the extended ranges seen in the corpus (R400+) without machine data.

+
+
+ +
+
public const int RParameterMax = 999
+
+ + + + +

Field Value

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

+ RParameterMin + +

+ +

Inclusive lower bound of the R-parameter range (R0).

+
+
+ +
+
public const int RParameterMin = 0
+
+ + + + +

Field Value

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

Properties +

+ + + + +

+ Variables + +

+ +

Backing store. Key = R-parameter number (e.g. 63 for R63). +Value null = vacant; a missing key is also vacant. Keys are +constrained to RParameterMin..RParameterMax; +out-of-range writes are silently ignored.

+
+
+ +
+
public Dictionary<int, double?> Variables { get; set; }
+
+ + + + + +

Property Value

+
+
Dictionary<int, double?>
+
+
+ + + + + + + + + + +

+ XName + +

+ +

XML element name.

+
+
+ +
+
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 Rn keys (canonical form produced by +SiemensExpressionParser; a +lowercase rn from a raw capture also resolves) to +GetVariable(int); other keys return null so the +evaluator's lookup chain falls through.

+
+ + + + + + +

+ GetVariable(int) + +

+ +

Reads an R parameter. Returns null for vacant (either the +entry is absent or stored as null).

+
+
+ +
+
public double? GetVariable(int id)
+
+ +

Parameters

+
+
id int
+

Parameter number in RParameterMin..RParameterMax.

+
+
+ +

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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + + +

+ SetVariable(int, double?) + +

+ +

Writes an R parameter. Pass null to set vacant. Ignores ids +outside RParameterMin..RParameterMax.

+
+
+ +
+
public void SetVariable(int id, double? value)
+
+ +

Parameters

+
+
id int
+

Parameter number.

+
+
value double?
+

New value, or null for vacant.

+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensRParameterTableProxy.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensRParameterTableProxy.html new file mode 100644 index 00000000..9d320069 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensRParameterTableProxy.html @@ -0,0 +1,392 @@ + + + + + Class SiemensRParameterTableProxy | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensRParameterTableProxy +

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

Get-or-create INcDependencyProxy for SiemensRParameterTable: +a placeholder in the shared PipelineNcDependencyList that +resolves the host project's own per-case R parameters (R0–R999).

+
+
+ +
+
public sealed class SiemensRParameterTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
SiemensRParameterTableProxy
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ XName + +

+ +

XML element name used to register this dependency with XFactory.

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

Property Value

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

Methods +

+ + + + +

+ GetNcDependency() + +

+ +

Takes the host's SiemensRParameterTable (created during +InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired.

+
+
+ +
+
public INcDependency GetNcDependency()
+
+ + +

Returns

+
+
INcDependency
+
+
+ + + + + + + + + + + + + +

+ InitNcDependencyHost(INcDependencyListHost) + +

+ +

Wires the host and materializes the per-case SiemensRParameterTable: +when the host list has none, one is created and installed so it exists and +is editable before any run. GetNcDependency() is then a pure +take. Idempotent — an existing table is left untouched.

+
+
+ +
+
public void InitNcDependencyHost(INcDependencyListHost host)
+
+ +

Parameters

+
+
host INcDependencyListHost
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Runtime-only proxy — the wired host and the resolved table are not +persisted in the shared runner; serialization writes only the empty element.

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

Parameters

+
+
baseDirectory string
+
+
relFile string
+
+
exhibitionOnly bool
+
+
+ +

Returns

+
+
XElement
+
+
+ + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensToolEdgeOffset.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensToolEdgeOffset.html new file mode 100644 index 00000000..294593bc --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensToolEdgeOffset.html @@ -0,0 +1,588 @@ + + + + + Class SiemensToolEdgeOffset | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensToolEdgeOffset +

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

One Siemens cutting-edge offset row ($TC_DP fields for a (T, D) pair): +geometry lengths L1/L2/L3 ($TC_DP3/4/5), radius ($TC_DP6) and the +corresponding wear values ($TC_DP12/13/14/15) as typed properties (all +mm), plus VerbatimDpFields for every other $TC_DP index — +same split as SiemensMachineDataTable's well-known-MD +properties over a generic parameter bag. A typed property means the +simulation consumes the field; a bag entry means the value is stored +and round-tripped but not interpreted.

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

Properties +

+ + + + +

+ Length1_mm + +

+ +

$TC_DP3 — geometry length 1 (typically Z), mm.

+
+
+ +
+
public double Length1_mm { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ Length2_mm + +

+ +

$TC_DP4 — geometry length 2 (typically X), mm.

+
+
+ +
+
public double Length2_mm { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ Length3_mm + +

+ +

$TC_DP5 — geometry length 3 (typically Y), mm.

+
+
+ +
+
public double Length3_mm { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ Radius_mm + +

+ +

$TC_DP6 — geometry radius, mm.

+
+
+ +
+
public double Radius_mm { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ VerbatimDpFields + +

+ +

$TC_DP fields the simulation does not consume, keyed by DP index +(e.g. 1 = tool type, 2 = tip position, 7–11 = extended geometry, +16–20 = extended wear, 21–23 = base/adapter dimensions, 24 = +clearance angle). Carried for round-trip fidelity so a full +controller dump survives import → save → reload; never interpreted. +The consumed indices (see IsConsumedDpIndex(int)) live in +the typed properties and must not appear here — write through +SetDpField(int, double) to keep that invariant.

+
+
+ +
+
public Dictionary<int, double> VerbatimDpFields { get; set; }
+
+ + + + + +

Property Value

+
+
Dictionary<int, double>
+
+
+ + + + + + + + + + +

+ WearLength1_mm + +

+ +

$TC_DP12 — wear length 1, mm.

+
+
+ +
+
public double WearLength1_mm { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ WearLength2_mm + +

+ +

$TC_DP13 — wear length 2, mm.

+
+
+ +
+
public double WearLength2_mm { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ WearLength3_mm + +

+ +

$TC_DP14 — wear length 3, mm.

+
+
+ +
+
public double WearLength3_mm { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ WearRadius_mm + +

+ +

$TC_DP15 — wear radius, mm.

+
+
+ +
+
public double WearRadius_mm { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + +

Methods +

+ + + + +

+ IsConsumedDpIndex(int) + +

+ +

Whether the given $TC_DP index is consumed by the simulation and +therefore stored as a typed property (3/4/5/6 geometry, +12/13/14/15 wear) rather than in VerbatimDpFields.

+
+
+ +
+
public static bool IsConsumedDpIndex(int dpIndex)
+
+ +

Parameters

+
+
dpIndex int
+
+
+ +

Returns

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

+ SetDpField(int, double) + +

+ +

Writes one $TC_DP field by DP index: consumed indices route to the +typed properties, every other index lands verbatim in +VerbatimDpFields — an importer can hand over a full +controller dump without knowing which indices the simulation +consumes.

+
+
+ +
+
public void SetDpField(int dpIndex, double value)
+
+ +

Parameters

+
+
dpIndex int
+
+
value double
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensToolOffsetTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensToolOffsetTable.html new file mode 100644 index 00000000..7b815213 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensToolOffsetTable.html @@ -0,0 +1,708 @@ + + + + + Class SiemensToolOffsetTable | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensToolOffsetTable +

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

Per-case Siemens tool offset table — the first concrete +ISiemensToolOffsetConfig ($TC_DP model): one +SiemensToolEdgeOffset row per (tool number T, cutting +edge D), each carrying the three length components + radius with their +wear counterparts, plus a verbatim bag for the remaining $TC_DP +indices (round-tripped, not consumed — see +VerbatimDpFields). Effective +values are geometry + wear — +Sinumerik wear ($TC_DP12..15) is additive; a worn-down tool carries a +negative wear value. Unconfigured (T, D) pairs return 0 per the +interface contract.

+

+Also carries the ToolNames map ($TC_TP2 analog, +case-insensitive) so Siemens string tool calls (T="D8R1") +can resolve to the int-keyed act chain — consumed by +ToolChangeSemantic. +

+

+Per-case editable data — reaches the pipeline through +SiemensToolOffsetTableProxy on the host's +PerCaseNcDependencyList, never as a +concrete instance baked into the shared runner. Deliberately separate +from SiemensMachineDataTable (MD-prefixed machine-fixed +OEM data) — same split rationale as SiemensFrameTable. +

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

Constructors +

+ + + + +

+ SiemensToolOffsetTable() + +

+ +

Initializes an empty table.

+
+
+ +
+
public SiemensToolOffsetTable()
+
+ + + + + + + + + + + + + + + +

+ SiemensToolOffsetTable(XElement) + +

+ +

Initializes a new instance by deserializing from src.

+
+
+ +
+
public SiemensToolOffsetTable(XElement src)
+
+ +

Parameters

+
+
src XElement
+

XML element produced by MakeXmlSource(string, string, bool).

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

Properties +

+ + + + +

+ Edges + +

+ +

Offset rows keyed by (tool number T, cutting edge D).

+
+
+ +
+
public Dictionary<(int Tool, int Edge), SiemensToolEdgeOffset> Edges { get; set; }
+
+ + + + + +

Property Value

+
+
Dictionary<(int Tool, int Edge), SiemensToolEdgeOffset>
+
+
+ + + + + + + + + + +

+ ToolNames + +

+ +

Tool name → tool number map ($TC_TP2 analog) used to resolve Siemens +string tool calls (T=“name”). Case-insensitive.

+
+
+ +
+
public Dictionary<string, int> ToolNames { get; set; }
+
+ + + + + +

Property Value

+
+
Dictionary<string, int>
+
+
+ + + + + + + + + + +

+ XName + +

+ +

XML element name for serialization.

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

Property Value

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

Methods +

+ + + + +

+ FindToolNumberByName(string) + +

+ +

Resolves a Siemens string tool name (T=“name”) to its tool +number via ToolNames; null when unmapped.

+
+
+ +
+
public int? FindToolNumberByName(string toolName)
+
+ +

Parameters

+
+
toolName string
+
+
+ +

Returns

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

+ GetToolHeightOffset_mm(int, int) + +

+ +

Gets the effective tool height offset in mm for a specific tool +and cutting edge: $TC_DP3 (length 1, typically Z direction) plus +its additive wear $TC_DP12 — Sinumerik wear values are added, a +shortened tool carries negative wear. +Returns 0 if the tool/edge is not configured.

+
+
+ +
+
public double GetToolHeightOffset_mm(int toolNumber, int edgeNumber)
+
+ +

Parameters

+
+
toolNumber int
+

Tool number (T).

+
+
edgeNumber int
+

Cutting edge number (D).

+
+
+ +

Returns

+
+
double
+
+
+ + + + + + + + + + + + + +

+ GetToolLengthOffset_mm(int, int, int) + +

+ +

Gets an additional length offset for the specified direction. +directionIndex: 0 = L1 ($TC_DP3, Z), 1 = L2 ($TC_DP4, X), 2 = L3 ($TC_DP5, Y). +Returns 0 if not configured.

+
+
+ +
+
public double GetToolLengthOffset_mm(int toolNumber, int edgeNumber, int directionIndex)
+
+ +

Parameters

+
+
toolNumber int
+
+
edgeNumber int
+
+
directionIndex int
+
+
+ +

Returns

+
+
double
+
+
+ + + + + + + + + + + + + +

+ GetToolRadiusOffset_mm(int, int) + +

+ +

Gets the effective tool radius offset in mm for a specific tool +and cutting edge: $TC_DP6 (radius) plus its additive wear +$TC_DP15. +Returns 0 if the tool/edge is not configured.

+
+
+ +
+
public double GetToolRadiusOffset_mm(int toolNumber, int edgeNumber)
+
+ +

Parameters

+
+
toolNumber int
+

Tool number (T).

+
+
edgeNumber int
+

Cutting edge number (D).

+
+
+ +

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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + + +

+ TryGetToolHeightOffset_mm(int, int, out double) + +

+ +

Attempts to get the effective tool height offset in mm ($TC_DP3 +plus additive wear $TC_DP12) for a specific tool and cutting edge. +Returns false when the (tool, edge) pair has no configured +row, so the caller can fall back to another source (e.g. the +generic IToolOffsetConfig). This is the only reliable +miss signal — 0.0 is a legal configured offset, so the zero +returned by GetToolHeightOffset_mm(int, int) cannot distinguish +a vacant row from a configured zero.

+
+
+ +
+
public bool TryGetToolHeightOffset_mm(int toolNumber, int edgeNumber, out double offset_mm)
+
+ +

Parameters

+
+
toolNumber int
+

Tool number (T).

+
+
edgeNumber int
+

Cutting edge number (D).

+
+
offset_mm double
+

The effective height offset; 0 on miss.

+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensToolOffsetTableProxy.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensToolOffsetTableProxy.html new file mode 100644 index 00000000..342a5647 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.SiemensToolOffsetTableProxy.html @@ -0,0 +1,394 @@ + + + + + Class SiemensToolOffsetTableProxy | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensToolOffsetTableProxy +

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

Get-or-create INcDependencyProxy for +SiemensToolOffsetTable: a placeholder in the shared +PipelineNcDependencyList that resolves the +host project's own per-case Siemens ($TC_DP) tool offset table.

+
+
+ +
+
public sealed class SiemensToolOffsetTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
SiemensToolOffsetTableProxy
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ XName + +

+ +

XML element name used to register this dependency with XFactory.

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

Property Value

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

Methods +

+ + + + +

+ GetNcDependency() + +

+ +

Takes the host's SiemensToolOffsetTable (created during +InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired.

+
+
+ +
+
public INcDependency GetNcDependency()
+
+ + +

Returns

+
+
INcDependency
+
+
+ + + + + + + + + + + + + +

+ InitNcDependencyHost(INcDependencyListHost) + +

+ +

Wires the host and materializes the per-case +SiemensToolOffsetTable: when the host list has none, one +is created and installed so it exists and is editable before any run. +GetNcDependency() is then a pure take. Idempotent — an +existing table is left untouched.

+
+
+ +
+
public void InitNcDependencyHost(INcDependencyListHost host)
+
+ +

Parameters

+
+
host INcDependencyListHost
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Runtime-only proxy — the wired host and the resolved table are not +persisted in the shared runner; serialization writes only the empty element.

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

Parameters

+
+
baseDirectory string
+
+
relFile string
+
+
exhibitionOnly bool
+
+
+ +

Returns

+
+
XElement
+
+
+ + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.html index 6e5f0d7c..003d6b86 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Siemens.html @@ -108,6 +108,79 @@ dependency from ISessionResettable: settable frames +are setting data on the control — a $P_UIFR write from the +program survives reset and power-off, so a replayed session must see +the values the previous run wrote. +

+ + +
+
SiemensFrameTableProxy
+

Get-or-create INcDependencyProxy for SiemensFrameTable: +a placeholder in the shared PipelineNcDependencyList that +resolves the host project's own per-case settable work frames ($P_UIFR, +G54–G57…).

+
+
+
+
SiemensGotoIterationDependency
+

Watchdog for Siemens GOTOF/GOTOB jumps — the +label-keyed sibling of the Fanuc +FanucGotoIterationDependency, with the same +“soft-cap + runtime counter + session-init ISessionResettable” +shape. Kept per-brand (rather than widening the Fanuc dep's int-keyed +bucket) for diagnostic clarity and because Siemens targets are named +labels, not N-numbers.

+

+The counter key is (FileName, Label) where FileName is +the source-level file path of the jump host (the relative form +carried on FilePath). Source-level keying +means multiple inline invocations of the same subprogram pool their +counts, while two files each jumping to their own LBL1 stay +isolated. Forward and backward jumps to the same label share one +bucket — only the backward direction can loop, but a shared bucket +keeps the accounting simple and the cap generous. +

+

+The consuming syntax +(SiemensGotoSyntax) counts +after the condition gate and before the label scan; above +MaxIterationsPerLabel the jump warns +SiemensGoto--IterationLimitExceeded and falls through. A +missing dependency disables the cap (Fanuc parity) — the brand preset +wires one by default. +

+
+
+
+
SiemensLoopIterationDependency
+

Watchdog shared by all four Siemens loop constructs +(WHILE/ENDWHILE, FOR/ENDFOR, REPEAT/UNTIL, +LOOP/ENDLOOP) — construct-neutral by design, unlike the Fanuc +sibling (FanucWhileDoIterationDependency) which +only has WHILE to guard. Same “soft-cap + runtime counter + +session-init ISessionResettable” shape.

+

+Siemens loop constructs carry no LoopId, so the counter key is +(FileName, BeginLineNo) — the loop-entry line recorded in the +active frame identifies the construct uniquely within its file, and +the file path isolates identically-numbered lines across files (and +across inlined subprograms). +

+

+The consuming syntax +(SiemensLoopSyntax) counts at +the back-jump step (the loop terminator / falsy UNTIL), so a +loop whose condition is false from the outset consumes zero +iterations. Above MaxIterationsPerLoop the terminator +warns SiemensLoop--IterationLimitExceeded, pops the frame and +falls through. A missing dependency disables the cap for the +condition-bearing constructs (Fanuc parity) but hard-blocks the +ENDLOOP back-jump — LOOP has no exit condition, so an +uncapped back-jump would hang the pipeline deterministically. +

@@ -119,6 +192,117 @@ MD10000–MD19999: General machine data. MD20000–MD29999: Axis-specific machine data. MD30000–MD39999: Axis-specific machine data (extended).

+

+Deliberately not ISessionResettable: machine data is +control configuration a part program cannot mutate, so there is no +session-scoped state to clear. +

+ +
+
+
SiemensMachineDataTableProxy
+

Get-or-create INcDependencyProxy for +SiemensMachineDataTable: a placeholder in the shared +PipelineNcDependencyList that resolves the host +project's own machine data table. Like the Fanuc-family parameter table, +the Siemens machine data mixes machine config (axis types / reference +positions / velocities / indexing tables) with per-project edits, so the +proxy carries a fixed machine-config Seed that is serialized +into the shared runner file. On wire, the host receives a deep clone of the +seed only when it has no SiemensMachineDataTable yet; a +loaded project's own full table wins, so a same-brand re-flash re-binds to +the project's machine data instead of resetting it. The resolved host +table is fully serialized on the project.

+

+The proxy deliberately does not implement the machine-config +interfaces (IMachineAxisConfig, +IIndexingPositionConfig, etc.) — every machine-config +consumer must go through +GetEffectiveNcDependencyList() so it sees the +resolved host table, never this placeholder. +

+
+
+
+
SiemensRParameterTable
+

Sinumerik R-parameter table (R0-R999). R parameters are the +Siemens arithmetic-variable surface (R63=100.5, C=R61, +R26=(558.5+14)/2); on real hardware they live in retentive memory +(sized by MD28050) and survive program end and power cycles, so — like +the Fanuc sibling RetainedCommonVariableTable — this +table is not session-reset and is serialised into the project file.

+

+Reads flow through Get(string) (registered +automatically because the table sits on the runner's effective +NcDependencyList); writes flow through +SiemensRParameterReadingSyntax, +which consumes literal Parsing.Assignments.Rn entries after +VariableEvaluatorSyntax has normalized +expression RHS to literals. +

+

+Vacant is represented by null: either the dictionary has no entry +for the key, or the entry maps to null — both read identically. +Real Sinumerik default-initialises every allocated R to 0, but a vacant +read failing loud (Variable--Vacant via the evaluator) surfaces missing +setup data instead of silently machining with 0. +

+
+
+
+
SiemensRParameterTableProxy
+

Get-or-create INcDependencyProxy for SiemensRParameterTable: +a placeholder in the shared PipelineNcDependencyList that +resolves the host project's own per-case R parameters (R0–R999).

+
+
+
+
SiemensToolEdgeOffset
+

One Siemens cutting-edge offset row ($TC_DP fields for a (T, D) pair): +geometry lengths L1/L2/L3 ($TC_DP3/4/5), radius ($TC_DP6) and the +corresponding wear values ($TC_DP12/13/14/15) as typed properties (all +mm), plus VerbatimDpFields for every other $TC_DP index — +same split as SiemensMachineDataTable's well-known-MD +properties over a generic parameter bag. A typed property means the +simulation consumes the field; a bag entry means the value is stored +and round-tripped but not interpreted.

+
+
+
+
SiemensToolOffsetTable
+

Per-case Siemens tool offset table — the first concrete +ISiemensToolOffsetConfig ($TC_DP model): one +SiemensToolEdgeOffset row per (tool number T, cutting +edge D), each carrying the three length components + radius with their +wear counterparts, plus a verbatim bag for the remaining $TC_DP +indices (round-tripped, not consumed — see +VerbatimDpFields). Effective +values are geometry + wear — +Sinumerik wear ($TC_DP12..15) is additive; a worn-down tool carries a +negative wear value. Unconfigured (T, D) pairs return 0 per the +interface contract.

+

+Also carries the ToolNames map ($TC_TP2 analog, +case-insensitive) so Siemens string tool calls (T="D8R1") +can resolve to the int-keyed act chain — consumed by +ToolChangeSemantic. +

+

+Per-case editable data — reaches the pipeline through +SiemensToolOffsetTableProxy on the host's +PerCaseNcDependencyList, never as a +concrete instance baked into the shared runner. Deliberately separate +from SiemensMachineDataTable (MD-prefixed machine-fixed +OEM data) — same split rationale as SiemensFrameTable. +

+
+
+
+
SiemensToolOffsetTableProxy
+

Get-or-create INcDependencyProxy for +SiemensToolOffsetTable: a placeholder in the shared +PipelineNcDependencyList that resolves the +host project's own per-case Siemens ($TC_DP) tool offset table.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html index f012d47e..1cc4f204 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html @@ -110,7 +110,7 @@ whereas Fanuc #4002 stores in mm.
-
public class SyntecParameterTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, ICannedCycleConfig, IIsoCoordinateConfig, INcDependency, IMakeXmlSource
+
public class SyntecParameterTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, ISpindleControlConfig, IMCodeDeclarationConfig, IToolChangeTriggerConfig, ICannedCycleConfig, IIsoCoordinateConfig, INcDependency, IMakeXmlSource
@@ -132,6 +132,9 @@ whereas Fanuc #4002 stores in mm. + + + @@ -167,6 +170,9 @@ whereas Fanuc #4002 stores in mm. + @@ -203,12 +209,45 @@ whereas Fanuc #4002 stores in mm. + + + + + + + + + + + @@ -1309,6 +1348,123 @@ Null if not defined for this controller brand.

+ + +

+ DeepClone() + +

+ +

Returns an independent deep copy of this table (all three parameter +dictionaries cloned). Used by SyntecParameterTableProxy to +clone its fixed machine-config seed into a host that has no table yet.

+
+
+ +
+
public SyntecParameterTable DeepClone()
+
+ + +

Returns

+
+
SyntecParameterTable
+
+
+ + + + + + + + + + + + + +

+ DescribeAxisParam(int) + +

+ +

Per-axis double counterpart of DescribeSystemParam(int). +Covers the role ids the base class consumes (reference position, +rapid rate, stroke limits); brand subclasses may override for their +own vocabulary or extra numbers.

+
+
+ +
+
public override string DescribeAxisParam(int paramId)
+
+ +

Parameters

+
+
paramId int
+

Brand-specific parameter/MD/MP number.

+
+
+ +

Returns

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

+ DescribeSystemParam(int) + +

+ +

Short usage label for a well-known system parameter id, or null when +the id has no modeled meaning (a raw pass-through row). Brand +subclasses extend this with their own well-known numbers; the native +parameter UI shows the label next to the raw id so an operator can +tell the modeled parameters from free extras.

+
+
+ +
+
public override string DescribeSystemParam(int paramId)
+
+ +

Parameters

+
+
paramId int
+

Brand-specific parameter/MD/MP number.

+
+
+ +

Returns

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

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Syntec.SyntecParameterTableProxy.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Syntec.SyntecParameterTableProxy.html new file mode 100644 index 00000000..61275fd4 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Syntec.SyntecParameterTableProxy.html @@ -0,0 +1,474 @@ + + + + + Class SyntecParameterTableProxy | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SyntecParameterTableProxy +

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

Get-or-create INcDependencyProxy for SyntecParameterTable: +the Syntec sibling of FanucParameterTableProxy. Like Fanuc, +the Syntec parameter table mixes machine config with per-case work-coordinate +offsets, so the proxy carries a fixed machine-config Seed +serialized into the shared runner file. On wire, the host receives a deep clone +of the seed only when it has no SyntecParameterTable yet; a loaded +project's own full table wins. The proxy does not implement the machine-config +interfaces — consumers go through +GetEffectiveNcDependencyList().

+
+
+ +
+
public sealed class SyntecParameterTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
SyntecParameterTableProxy
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ SyntecParameterTableProxy(SyntecParameterTable) + +

+ +

Creates a proxy carrying seed as its machine-config +seed, defaulting to Default3Axis.

+
+
+ +
+
public SyntecParameterTableProxy(SyntecParameterTable seed = null)
+
+ +

Parameters

+
+
seed SyntecParameterTable
+

The machine-config seed cloned into a fresh host.

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

Properties +

+ + + + +

+ Seed + +

+ +

The fixed machine-config seed deep-cloned into a host that has no +SyntecParameterTable yet. Carried on the shared runner and +serialized into the runner file — never the per-case instance, which lives +on the host (see GetNcDependency()).

+
+
+ +
+
public SyntecParameterTable Seed { get; }
+
+ + + + + +

Property Value

+
+
SyntecParameterTable
+
+
+ + + + + + + + + + +

+ XName + +

+ +

XML element name used to register this dependency with XFactory.

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

Property Value

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

Methods +

+ + + + +

+ GetNcDependency() + +

+ +

Takes the host's SyntecParameterTable (created during +InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired.

+
+
+ +
+
public INcDependency GetNcDependency()
+
+ + +

Returns

+
+
INcDependency
+
+
+ + + + + + + + + + + + + +

+ InitNcDependencyHost(INcDependencyListHost) + +

+ +

Wires the host and materializes the host SyntecParameterTable: +when the host list has none, a deep clone of Seed is installed +so machine config + per-case coordinates exist and are editable before any +run. GetNcDependency() is then a pure take. Idempotent — an +existing host table (a loaded project's) is left untouched.

+
+
+ +
+
public void InitNcDependencyHost(INcDependencyListHost host)
+
+ +

Parameters

+
+
host INcDependencyListHost
+
+
+ + + + + + + + + + + + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Serializes only the machine-config Seed — the wired host and +the resolved host table are runtime-only and not persisted in the shared runner.

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

Parameters

+
+
baseDirectory string
+
+
relFile string
+
+
exhibitionOnly bool
+
+
+ +

Returns

+
+
XElement
+
+
+ + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Rehydrates the carried Seed from the nested +SyntecParameterTable element, falling back to +Default3Axis when absent. Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Syntec.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Syntec.html index debc69a8..f850ed1d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Syntec.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.Syntec.html @@ -105,6 +105,19 @@ but some parameters differ in unit or interpretation. For example, Pr4002 (peck retraction) is stored in microns whereas Fanuc #4002 stores in mm.

+ + +
+
SyntecParameterTableProxy
+

Get-or-create INcDependencyProxy for SyntecParameterTable: +the Syntec sibling of FanucParameterTableProxy. Like Fanuc, +the Syntec parameter table mixes machine config with per-case work-coordinate +offsets, so the proxy carries a fixed machine-config Seed +serialized into the shared runner file. On wire, the host receives a deep clone +of the seed only when it has no SyntecParameterTable yet; a loaded +project's own full table wins. The proxy does not implement the machine-config +interfaces — consumers go through +GetEffectiveNcDependencyList().

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html index bd4c9a35..1c5eb3a9 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html @@ -100,14 +100,14 @@ Class FileIndexCounterDependency

Per-session monotonically-increasing file index allocator. Holds the counter as a private field; Allocate() returns the next unused value and increments. OnSessionReset() rewinds to 0 — -the owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) invokes it via +the owning RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) invokes it via the ISessionResettable sweep on the same edge that initializes a fresh NcRunnerSessionState, so a controller power-reset clears both the syntax-piece pipeline and this counter in lock-step.

Two consumers share one allocator: -

Rewinds the counter to 0. Called by -RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) via the +RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) via the ISessionResettable sweep on the same edge that initializes a fresh session pipeline so a single brand-preset runner can be reused across sessions without leaking file diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.MappingAnchorDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.MappingAnchorDependency.html new file mode 100644 index 00000000..59ecdaeb --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.MappingAnchorDependency.html @@ -0,0 +1,445 @@ + + + + + Class MappingAnchorDependency | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class MappingAnchorDependency +

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

Narrow NC-pipeline dependency that lets a CSV semantic convert an absolute +controller instant to a run-relative timecode against the project mapping +anchor, without reaching the whole IMachiningService +surface (cf. MachiningServiceDependency). The host wires +ToTimecodeProvider to TimeMapping.ToTimecode, whose +set-once ??= seeds (lazily builds) the anchor on first use.

+

+Runtime-only: the provider is wired per host and not persisted; serialization +writes only the empty element so the dependency survives an XML round-trip. +

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

Constructors +

+ + + + +

+ MappingAnchorDependency() + +

+ +

Initializes a new instance with no provider; the host wires one before queries.

+
+
+ +
+
public MappingAnchorDependency()
+
+ + + + + + + + + + + + + +

Properties +

+ + + + +

+ ToTimecodeProvider + +

+ +

Runtime provider for the anchor converter (TimeMapping.ToTimecode). +Null provider means the host is not wired; consumers must null-check and +fall back to the legacy time-of-day.

+
+
+ +
+
public Func<DateTime, TimeSpan> ToTimecodeProvider { get; set; }
+
+ + + + + +

Property Value

+
+
Func<DateTime, TimeSpan>
+
+
+ + + + + + + + + + +

+ 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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + + +

+ ToTimecode(DateTime) + +

+ +

Converts instant to a run-relative timecode via the +wired anchor, or null when no provider is wired.

+
+
+ +
+
public TimeSpan? ToTimecode(DateTime instant)
+
+ +

Parameters

+
+
instant DateTime
+
+
+ +

Returns

+
+
TimeSpan?
+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html index fc943815..b1a3ddb9 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html @@ -98,7 +98,7 @@ Class NcKinematicsDependency

Provides IMachineKinematics as an INcDependency -for SoftNcRunner.NcDependencyList.

+for SoftNcRunner.PipelineNcDependencyList.

The actual kinematics instance is resolved at runtime via KinematicsProvider. This supports scenarios where @@ -263,6 +263,43 @@ Consumed by + +

+ KinematicsOrNull + +

+ +

Non-throwing probe: the live kinematics instance, or null when +the provider is unwired or resolves to null (e.g. the machining chain +is a ClMillingDevice, so no XyzabcSolver exists). Lets a +syntax/semantic that supports both CL and MC chains branch on +availability instead of catching InvalidOperationException +from the IMachineKinematics members.

+
+
+ +
+
public IMachineKinematics KinematicsOrNull { get; }
+
+ + + + + +

Property Value

+
+
IMachineKinematics
+
+
+ + + + + + + +

@@ -296,6 +333,81 @@ Null provider or null return means kinematics is not yet available.

+ + +

+ ProgramZeroToPnOrNull + +

+ +

The program-zero → Pn transform resolved via +ProgramZeroToPnProvider, or null when +unwired/unavailable; consumers fall back to identity (workpiece frame +≡ Pn frame).

+
+
+ +
+
public Mat4d ProgramZeroToPnOrNull { get; }
+
+ + + + + +

Property Value

+
+
Mat4d
+
+
+ + + + + + + + + + +

+ ProgramZeroToPnProvider + +

+ +

Runtime provider for the rigid transform from program-zero (workpiece) +coordinates to the kinematic Pn frame, for pipelines whose source +positions live in the workpiece frame (the NX CLSF pipeline). NC +G-code pipelines leave it unwired — their program→MC mapping is +carried per block by work-offset transform sections instead. The host +wires it from the equipment topology +(MachiningEquipmentUtil.GetProgramToPnMat4d); the provider is +resolved per call so a re-aligned workpiece is picked up without +rewiring.

+
+
+ +
+
public Func<Mat4d> ProgramZeroToPnProvider { get; set; }
+
+ + + + + +

Property Value

+
+
Func<Mat4d>
+
+
+ + + + + + + +

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

+Class NcLineSourceDependency +

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

In-memory line source for NC “files” with no disk backing — inline +NC-code plays whose FilePath is a +command-title pseudo-path (e.g. “NC Code”). Control-flow +re-segmentation (WHILE reverse jump, backward GOTO, M99 P{seq} +caller re-entry — every LabelScanUtil +scan) re-reads the host file by path; an inline play's pseudo-path never +exists on disk, so without this source those jumps fall through (loops +that do not loop) or error with a *FileNotFound diagnostic. +RunNc(string, string) registers the play's +raw lines under its pseudo-path before running; +LabelScanUtil consults this source first +and only falls back to disk.

+

+Entries persist for the runner's lifetime, the latest registration of a +path winning — deliberately NOT ISessionResettable: the +session-reset sweep runs inside the first +RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) of a fresh session, which would +wipe the registration made moments earlier for that very play. A +registered pseudo-path shadows an identically-named disk file during +re-segmentation, so inline command titles should not mirror real +project-relative NC paths. +

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

Constructors +

+ + + + +

+ NcLineSourceDependency() + +

+ +

Initializes a new instance with no registered sources.

+
+
+ +
+
public NcLineSourceDependency()
+
+ + + + + + + + + + + + + +

Properties +

+ + + + +

+ XName + +

+ +

XML element name used to register this dependency with XFactory.

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

Property Value

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

Methods +

+ + + + +

+ Contains(string) + +

+ +

Whether path has a registered line source.

+
+
+ +
+
public bool Contains(string path)
+
+ +

Parameters

+
+
path string
+
+
+ +

Returns

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

+ MakeXmlSource(string, string, bool) + +

+ +

Runtime-only dependency — registrations are per-play and not +meaningful to persist; serialization writes only the empty element so +the dependency survives an XML round-trip with the map implicitly +empty.

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

Parameters

+
+
baseDirectory string
+
+
relFile string
+
+
exhibitionOnly bool
+
+
+ +

Returns

+
+
XElement
+
+
+ + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + + +

+ Register(string, string[]) + +

+ +

Registers (or overwrites) the line content served for +path. No-op on a null/empty path or null lines.

+
+
+ +
+
public void Register(string path, string[] lines)
+
+ +

Parameters

+
+
path string
+
+
lines string[]
+
+
+ + + + + + + + + + + + + + +

+ TryGetLines(string, out string[]) + +

+ +

Gets the registered line content for path; +returns whether a registration exists.

+
+
+ +
+
public bool TryGetLines(string path, out string[] lines)
+
+ +

Parameters

+
+
path string
+
+
lines string[]
+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html index 120019b5..4de90cfc 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html @@ -104,10 +104,10 @@ subprogram file and re-using the host runner's segmenter so the inlined blocks are split with the same rules).

The actual segmenter is resolved at runtime via -Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) +Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) wires the provider to its own Segmenter at the start of each session run, so this dependency can sit in -NcDependencyList without participating in XML +PipelineNcDependencyList without participating in XML serialization (see MakeXmlSource(string, string, bool)).

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

+Class SentenceIndexCounterDependency +

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

Per-session monotonically-increasing SentenceIndex +allocator. Holds the counter as a private field; Allocate() +returns the next unused value and increments. OnSessionReset() +rewinds to 0 — the owning RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) +invokes it via the ISessionResettable sweep on the same +edge that initializes a fresh NcRunnerSessionState, +so a controller power-reset clears both the syntax-piece pipeline and +this counter in lock-step.

+

+This dependency exists to fix the sentence-index double-booking bug: +before it, the host file's lazy enumerator numbered pieces from +layers[0].Count captured at file-append time while subprogram / +macro / control-flow re-segmentation numbered from +layers[0].Last.Value.SentenceIndex + 1 — two independent +sequences that overlap as soon as a call is inlined mid-stream +(host blocks after M98 and the inlined body shared the same +indices). With this counter, GetSyntaxPieces(ISegmenter, List<INcDependency>, IEnumerable<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) +allocates one value per piece at materialization time, which the lazy +pipeline pulls in execution order — indices are session-globally +unique and strictly increasing along the executed stream, at the cost +of no longer being contiguous per file (eager label scans discard +their pre-label prefix, leaving gaps). +

+

+Values are never negative, preserving the -1 "not in pipeline" +sentinel used by SentenceIndex and +SentenceIndex. +When this dependency is absent from the pipeline list, +GetSyntaxPieces(ISegmenter, List<INcDependency>, IEnumerable<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) falls back to the +caller-supplied begin-index numbering — the legacy colliding behavior. +Only code-built runners can hit that fallback: XML rehydration back-fills +a missing instance (the SoftNcRunner XML constructor's +system-wired back-fill), because saves that predate this dependency +never self-heal by round-tripping — re-saving stamps a new +ApiVersion on the same incomplete list. +

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

Constructors +

+ + + + +

+ SentenceIndexCounterDependency() + +

+ +

Initializes a new instance with the counter at 0.

+
+
+ +
+
public SentenceIndexCounterDependency()
+
+ + + + + + + + + + + + + +

Properties +

+ + + + +

+ XName + +

+ +

XML element name used to register this dependency with XFactory.

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

Property Value

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

Methods +

+ + + + +

+ Allocate() + +

+ +

Returns the next unused sentence index and post-increments the +counter. First call after construction or OnSessionReset() +returns 0.

+
+
+ +
+
public int Allocate()
+
+ + +

Returns

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

+ MakeXmlSource(string, string, bool) + +

+ +

Runtime-only dependency — the live counter value is per-session +and not meaningful to persist; serialization writes only the +empty element so the dependency survives an XML round-trip with +the counter implicitly reset to 0.

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

Parameters

+
+
baseDirectory string
+
+
relFile string
+
+
exhibitionOnly bool
+
+
+ +

Returns

+
+
XElement
+
+
+ + + + + + + + + + + + + +

+ OnSessionReset() + +

+ +

Rewinds the counter to 0. Called by +RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) via the +ISessionResettable sweep on the same edge that +initializes a fresh session pipeline so a single brand-preset +runner can be reused across sessions without leaking sentence +indices from the previous session.

+
+
+ +
+
public void OnSessionReset()
+
+ + + + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html index 34c1e055..1b1fc8e2 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html @@ -106,7 +106,7 @@ file's blocks back into layers[0] immediately after the M98 host node so the entire syntax pipeline naturally re-processes them.

The actual layer list is resolved at runtime via -Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) +Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) wires the provider to the active session's SyntaxPieceLayers at the start of each call. Index 0 is the source layer (init seed + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ToolHouseDependency.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ToolHouseDependency.html new file mode 100644 index 00000000..a897b1c2 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.ToolHouseDependency.html @@ -0,0 +1,458 @@ + + + + + Class ToolHouseDependency | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class ToolHouseDependency +

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

Exposes the project's MachiningToolHouse to NC pipeline +components — the narrow counterpart of +MachiningServiceDependency for syntaxes / semantics that +only look up or register tools (e.g. the CLSF pipeline's +TLDATA-driven tool creation).

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

Constructors +

+ + + + +

+ ToolHouseDependency() + +

+ +

Initializes a new instance with no ToolHouseProvider; the host wires one before queries.

+
+
+ +
+
public ToolHouseDependency()
+
+ + + + + + + + + + + + + + + +

+ ToolHouseDependency(Func<MachiningToolHouse>) + +

+ +

Initializes a new instance with the given ToolHouseProvider.

+
+
+ +
+
public ToolHouseDependency(Func<MachiningToolHouse> provider)
+
+ +

Parameters

+
+
provider Func<MachiningToolHouse>
+

Delegate that resolves the live tool house at lookup time.

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

Properties +

+ + + + +

+ ToolHouse + +

+ +

The live tool house, or null when ToolHouseProvider is unset or returns null.

+
+
+ +
+
public MachiningToolHouse ToolHouse { get; }
+
+ + + + + +

Property Value

+
+
MachiningToolHouse
+
+
+ + + + + + + + + + +

+ ToolHouseProvider + +

+ +

Runtime provider for the tool house. Null provider or null return +means the host is not wired; consumers must null-check.

+
+
+ +
+
public Func<MachiningToolHouse> ToolHouseProvider { get; set; }
+
+ + + + + +

Property Value

+
+
Func<MachiningToolHouse>
+
+
+ + + + + + + + + + +

+ XName + +

+ +

XML element name used to register this dependency with XFactory.

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

Property Value

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

Methods +

+ + + + +

+ MakeXmlSource(string, string, bool) + +

+ +

Runtime-only dependency — the provider is wired per host and not +meaningful to persist; serialization writes only the empty element so +the dependency survives an XML round-trip.

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

Parameters

+
+
baseDirectory string
+
+
relFile string
+
+
exhibitionOnly bool
+
+
+ +

Returns

+
+
XElement
+
+
+ + + + + + + + + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html index 546d6cf3..744a40f9 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.SystemWired.html @@ -99,14 +99,14 @@ Classes

Per-session monotonically-increasing file index allocator. Holds the counter as a private field; Allocate() returns the next unused value and increments. OnSessionReset() rewinds to 0 — -the owning RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) invokes it via +the owning RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) invokes it via the ISessionResettable sweep on the same edge that initializes a fresh NcRunnerSessionState, so a controller power-reset clears both the syntax-piece pipeline and this counter in lock-step.

Two consumers share one allocator: -

+ +
+
MappingAnchorDependency
+

Narrow NC-pipeline dependency that lets a CSV semantic convert an absolute +controller instant to a run-relative timecode against the project mapping +anchor, without reaching the whole IMachiningService +surface (cf. MachiningServiceDependency). The host wires +ToTimecodeProvider to TimeMapping.ToTimecode, whose +set-once ??= seeds (lazily builds) the anchor on first use.

+

+Runtime-only: the provider is wired per host and not persisted; serialization +writes only the empty element so the dependency survives an XML round-trip. +

NcKinematicsDependency

Provides IMachineKinematics as an INcDependency -for SoftNcRunner.NcDependencyList.

+for SoftNcRunner.PipelineNcDependencyList.

The actual kinematics instance is resolved at runtime via KinematicsProvider. This supports scenarios where @@ -146,6 +160,32 @@ Consumed by McLinearMotionSemantic via dependencyList.OfType<IMachineKinematics>().

+
+
+
+
NcLineSourceDependency
+

In-memory line source for NC “files” with no disk backing — inline +NC-code plays whose FilePath is a +command-title pseudo-path (e.g. “NC Code”). Control-flow +re-segmentation (WHILE reverse jump, backward GOTO, M99 P{seq} +caller re-entry — every LabelScanUtil +scan) re-reads the host file by path; an inline play's pseudo-path never +exists on disk, so without this source those jumps fall through (loops +that do not loop) or error with a *FileNotFound diagnostic. +RunNc(string, string) registers the play's +raw lines under its pseudo-path before running; +LabelScanUtil consults this source first +and only falls back to disk.

+

+Entries persist for the runner's lifetime, the latest registration of a +path winning — deliberately NOT ISessionResettable: the +session-reset sweep runs inside the first +RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) of a fresh session, which would +wipe the registration made moments earlier for that very play. A +registered pseudo-path shadows an identically-named disk file during +re-segmentation, so inline command titles should not mirror real +project-relative NC paths. +

@@ -177,12 +217,52 @@ subprogram file and re-using the host runner's segmenter so the inlined blocks are split with the same rules).

The actual segmenter is resolved at runtime via -Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) +Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) wires the provider to its own Segmenter at the start of each session run, so this dependency can sit in -NcDependencyList without participating in XML +PipelineNcDependencyList without participating in XML serialization (see MakeXmlSource(string, string, bool)).

+ +
+
+
SentenceIndexCounterDependency
+

Per-session monotonically-increasing SentenceIndex +allocator. Holds the counter as a private field; Allocate() +returns the next unused value and increments. OnSessionReset() +rewinds to 0 — the owning RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) +invokes it via the ISessionResettable sweep on the same +edge that initializes a fresh NcRunnerSessionState, +so a controller power-reset clears both the syntax-piece pipeline and +this counter in lock-step.

+

+This dependency exists to fix the sentence-index double-booking bug: +before it, the host file's lazy enumerator numbered pieces from +layers[0].Count captured at file-append time while subprogram / +macro / control-flow re-segmentation numbered from +layers[0].Last.Value.SentenceIndex + 1 — two independent +sequences that overlap as soon as a call is inlined mid-stream +(host blocks after M98 and the inlined body shared the same +indices). With this counter, GetSyntaxPieces(ISegmenter, List<INcDependency>, IEnumerable<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) +allocates one value per piece at materialization time, which the lazy +pipeline pulls in execution order — indices are session-globally +unique and strictly increasing along the executed stream, at the cost +of no longer being contiguous per file (eager label scans discard +their pre-label prefix, leaving gaps). +

+

+Values are never negative, preserving the -1 "not in pipeline" +sentinel used by SentenceIndex and +SentenceIndex. +When this dependency is absent from the pipeline list, +GetSyntaxPieces(ISegmenter, List<INcDependency>, IEnumerable<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) falls back to the +caller-supplied begin-index numbering — the legacy colliding behavior. +Only code-built runners can hit that fallback: XML rehydration back-fills +a missing instance (the SoftNcRunner XML constructor's +system-wired back-fill), because saves that predate this dependency +never self-heal by round-tripping — re-saving stamps a new +ApiVersion on the same incomplete list. +

@@ -216,13 +296,22 @@ file's blocks back into layers[0] immediately after the M98 host node so the entire syntax pipeline naturally re-processes them.

The actual layer list is resolved at runtime via -Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) +Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) wires the provider to the active session's SyntaxPieceLayers at the start of each call. Index 0 is the source layer (init seed + sentence-derived pieces); indices 1..N are post-NcSyntax layers — same convention as NcRunnerSessionState.

+ +
+
+
ToolHouseDependency
+

Exposes the project's MachiningToolHouse to NC pipeline +components — the narrow counterpart of +MachiningServiceDependency for syntaxes / semantics that +only look up or register tools (e.g. the CLSF pipeline's +TLDATA-driven tool creation).

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.html index aa0b8c46..9a1e3c62 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Dependencys.html @@ -97,7 +97,7 @@ Classes
CncBrandDependency

Explicit CNC controller brand identifier carried in -NcDependencyList. +PipelineNcDependencyList. Use ncDependencyList.OfType<CncBrandDependency>().FirstOrDefault() to retrieve the brand.

@@ -131,6 +131,13 @@ Implements +
HeidenhainDatumTableProxy
+

Get-or-create INcDependencyProxy for HeidenhainDatumTable: +a placeholder in the shared PipelineNcDependencyList that +resolves the host project's own per-case datum preset / datum shift tables.

@@ -141,6 +148,22 @@ 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.

+ +
+
+
MCodeEffects
+

What one machine-declared M-code does. Real-machine OEM M-codes are +frequently composite — e.g. an M13 that means “spindle CW + +flood coolant on” — so a declaration carries every effect the code +performs rather than a single meaning, and additionally an +UnmodeledNote for the parts this simulation does not +model. Declaring only the known parts and staying loud about the rest +keeps a composite code from being half-consumed silently. +Stored per machine in +MCodeDeclarations and +consumed by MCodeExpansionSyntax, which +expands the declared code into the canonical ISO flags the regular +consumers already understand.

@@ -149,7 +172,7 @@ Interfaces
IBlockSkipConfig

Runtime state of the controller's Block Delete / Block Skip switches. -Present in NcDependencyList exposes this to +Present in PipelineNcDependencyList exposes this to the runner so that blocks whose head carries / or /N (parsed by BlockSkipSyntax into BlockSkip) are skipped at semantic time.

@@ -160,7 +183,7 @@ toggled independently via panel switches or system parameters.

When this dependency is absent from -NcDependencyList, no block is skipped +PipelineNcDependencyList, no block is skipped (safest default: simulate the full machining). The syntax still consumes the / prefix so no UnparsedText--Remaining diagnostic is produced. @@ -185,6 +208,32 @@ the default value in those cases.

IHomeMcConfig

G28 first reference position (home machine coordinate) per axis.

+
+
+
+
IIndexingPositionConfig
+

Indexing-axis position table: maps 1-based indexing position numbers to +axis coordinates for axes that only take up discrete stations (Hirth +couplings, indexing rotary tables, turret-style workholders). Consumed +by the coded-position coordinate functions (Siemens +CAC()/CIC()/CDC()/CACP()/CACN() — +unwrapped by SiemensAcIcSyntax, +resolved by McAbcSyntax / +IncrementalResolveSyntax via +CodedPositionUtil). +Implemented by SiemensMachineDataTable using the +Siemens machine data (MD30500 $MA_INDEX_AX_ASSIGN_POS_TAB per +axis; global tables MD10910/MD10930; equidistant MD30501–MD30503).

+

+Positions are expressed in the axis' native units (degrees for rotary, +mm for linear) in the coordinate frame the axis word itself is written +in — machine coordinates for rotary words, program coordinates for +linear words. Position numbering is 1-based: number 1 is the first +table entry (the Siemens machine-data help and alarm texts count this +way; the 0-based value range printed in some programming-manual +editions describes the machine-data array index, not the programmable +number). +

@@ -201,6 +250,19 @@ Implementations include SiemensFrameTable (Sinumerik $P_UIFR frames), and HeidenhainDatumTable (Heidenhain preset rows).

+
+
+
+
IMCodeDeclarationConfig
+

Machine-declared M-code map: what each machine-specific (OEM/PLC) M-code +does, as MCodeEffects — possibly several effects per code +(tool change, spindle direction, coolant) plus a note for behavior this +simulation does not model. Consumed by +MCodeExpansionSyntax, which expands declared +codes into the canonical ISO flags ahead of the regular consumers. +Machine-level (per-case parameter table) rather than brand vocabulary — +implemented by ControllerParameterTableBase, alongside the +narrower ISpindleControlConfig face over the same storage.

@@ -212,6 +274,37 @@ 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.

+
+
+
+
INcDependencyListHost
+

Hosts a per-case INcDependency list that +INcDependencyProxy placeholders in a shared +SoftNcRunner resolve their data against. Implemented by the +object owning both the shared runner and the varied setting data — +e.g. MachiningProject.

+
+
+
+
INcDependencyProxy
+

An INcDependency placeholder that resolves the real +dependency lazily at pipeline-build time instead of carrying the data +itself. Lets a shared SoftNcRunner hold only the fixed +pipeline logic while the frequently-varied data lives on the owning +INcDependencyListHost (e.g. a MachiningProject).

+

+"Maker and taker": GetNcDependency() either constructs the +dependency on demand (maker) or fetches one from the host wired by +InitNcDependencyHost(INcDependencyListHost) (taker). A get-or-create proxy does +both — it takes the host's instance when present and otherwise makes one, +installing it into the host list so it persists and is editable per case. +

+

+A proxy may carry runtime-only state (the wired host, a memoized resolved +dependency). That state is host-wired per run and MUST NOT be written by +MakeXmlSource(string, string, bool) — same +runtime-only posture as ProjectFolderDependency. +

@@ -235,6 +328,23 @@ that lives in the SyntaxPiece JSON dataflow and is bounded by call Implemented by ControllerParameterTableBase using brand-specific parameter numbers (e.g., Fanuc #1420, Siemens MD32000, Heidenhain MP1010).

+ +
+
+
ISpindleControlConfig
+

Machine-specific spindle control codes: maps custom spindle direction +M-codes to SpindleDirection — e.g., an ultrasonic spindle +started by M203 (CW) and stopped by M205 (STOP) instead of +ISO M03/M05. Consulted by +SpindleSpeedSyntax in addition to the +built-in ISO defaults (M03/M04/M05), which always stay in effect; +a configured code wins over its ISO meaning when both match. +Machine-level (per-case parameter table) rather than brand vocabulary — +implemented by ControllerParameterTableBase as a +spindle-direction face over its +MCodeDeclarations storage +(the multi-effect IMCodeDeclarationConfig map), so one +code is never half-recognized by two separate maps.

@@ -244,6 +354,22 @@ 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).

+ +
+
+
IToolChangeTriggerConfig
+

Machine-level tool-change trigger mode. Machining centers with a +magazine treat a bare T word as pre-selection only (the magazine +rotates, no feed axis moves) and change the tool on the trigger M-code; +lathes/turret machines index the turret — and thereby change the tool — +on the T word itself. Real controllers declare this per machine +(e.g. Siemens MD22550 $MC_TOOL_CHANGE_MODE, where 0 means the +T word performs the change). Consulted by +ToolChangeSyntax; machine-level (per-case +parameter table) rather than brand vocabulary — implemented by +ControllerParameterTableBase. Custom trigger M-codes are +the separate IMCodeDeclarationConfig concern +(IsToolChange).

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

+Enum NcExpressionDialect +

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

Selects which brand expression grammar a syntax parses value expressions +with. All dialects produce the same NcExpr AST and are +evaluated by the shared NcExpressionEvaluator — the dialect +only decides tokenization/grammar (Fanuc #nnn + brackets vs +Siemens Rn/named/$ + parentheses).

+
+
+ +
+
public enum NcExpressionDialect
+
+ + + + + + + + +
+
Extension Methods
+
+ + + + + + + + +
+ +

Fields +

+
+
Fanuc = 1
+ +

Fanuc Custom Macro B grammar (NcExpressionParser).

+
+
Heidenhain = 3
+ +

Heidenhain klartext FN grammar (HeidenhainExpressionParser).

+
+
None = 0
+ +

No expression grammar wired — capture syntaxes keep their legacy +lexical RHS boundary (regex + TerminateWords). Not a valid +value for Dialect, which always +evaluates with a concrete grammar.

+
+
Siemens = 2
+ +

Sinumerik grammar (SiemensExpressionParser).

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

+Class NcExpressionDialectUtil +

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

Dispatch helpers over NcExpressionDialect so shared +syntaxes (VariableEvaluatorSyntax, the assignment/tag +capture syntaxes) stay brand-agnostic: they hold a dialect value and +route through here instead of hard-coding a parser type.

+
+
+ +
+
public static class NcExpressionDialectUtil
+
+ + + + +
+
Inheritance
+
+ +
NcExpressionDialectUtil
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ IsVariableKey(NcExpressionDialect, string) + +

+ +

Cheap validity gate for variable keys entering the evaluator's lookup +chain — rejects obviously-non-variable keys before the chain walk. +Keys are produced by the dialect's own parser, so this is defensive.

+
+
+ +
+
public static bool IsVariableKey(NcExpressionDialect dialect, string key)
+
+ +

Parameters

+
+
dialect NcExpressionDialect
+
+
key string
+
+
+ +

Returns

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

+ MakePrefixParser(NcExpressionDialect) + +

+ +

Materializes a dialect into the optional longest-valid-prefix hook +the capture helpers take +(GrabTagEqualsValue(ref string, IEnumerable<string>, ExpressionPrefixParser) / +GrabTagAssignment(ref string, IEnumerable<string>, string, IEnumerable<string>, ExpressionPrefixParser)); null +for None and for dialects without +prefix support (legacy lexical capture).

+
+
+ +
+
public static ExpressionPrefixParser MakePrefixParser(NcExpressionDialect dialect)
+
+ +

Parameters

+
+
dialect NcExpressionDialect
+
+
+ +

Returns

+
+
ExpressionPrefixParser
+
+
+ + + + + + + + + + + + + +

+ TryParse(NcExpressionDialect, string, out NcExpr, out string) + +

+ +

Full-string parse in the given dialect (the whole source must be one +expression). None always fails — +callers on the None path never parse.

+
+
+ +
+
public static bool TryParse(NcExpressionDialect dialect, string source, out NcExpr expr, out string error)
+
+ +

Parameters

+
+
dialect NcExpressionDialect
+
+
source string
+
+
expr NcExpr
+
+
error string
+
+
+ +

Returns

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

+ TryParsePrefix(NcExpressionDialect, string, out int) + +

+ +

Longest-valid-prefix parse for parser-delimited RHS capture. Only +dialects that support prefix parsing return true; the Fanuc +dialect keeps its lexical capture (no known ambiguity to fix) and +reports false so callers use their legacy boundary.

+
+
+ +
+
public static bool TryParsePrefix(NcExpressionDialect dialect, string source, out int consumedLength)
+
+ +

Parameters

+
+
dialect NcExpressionDialect
+
+
source string
+
+
consumedLength int
+
+
+ +

Returns

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

+ VariableRefRegex(NcExpressionDialect) + +

+ +

Regex matching this dialect's variable-reference tokens inside a raw +RHS string. Used only for best-effort same-block forward-reference +detection (VariableEvaluator–SameBlockForwardReference); +expression evaluation itself goes through the dialect parser. The +Siemens pattern covers R-parameters only — named/$ same-block +forward references are vanishingly rare in CAM output and go +unwarned.

+
+
+ +
+
public static Regex VariableRefRegex(NcExpressionDialect dialect)
+
+ +

Parameters

+
+
dialect NcExpressionDialect
+
+
+ +

Returns

+
+
Regex
+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + 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 18e9ab95..12cf5440 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.html @@ -143,6 +143,14 @@ logical bitwise (AND OR XOR, operands truncated to

AST root for a Fanuc Custom Macro B value expression. Concrete leaves and combinators sit alongside NcExpressionParser; walking is the job of NcExpressionEvaluator.

+
+
+
+
NcExpressionDialectUtil
+

Dispatch helpers over NcExpressionDialect so shared +syntaxes (VariableEvaluatorSyntax, the assignment/tag +capture syntaxes) stay brand-agnostic: they hold a dialect value and +route through here instead of hard-coding a parser type.

@@ -333,6 +341,15 @@ Enums
NcBinaryOp

Binary operators allowed in Fanuc Custom Macro B value expressions.

+
+
+
+
NcExpressionDialect
+

Selects which brand expression grammar a syntax parses value expressions +with. All dialects produce the same NcExpr AST and are +evaluated by the shared NcExpressionEvaluator — the dialect +only decides tokenization/grammar (Fanuc #nnn + brackets vs +Siemens Rn/named/$ + parentheses).

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 index 711876f1..5053ce8d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html @@ -253,8 +253,8 @@ and Head -

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

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

@@ -266,7 +266,7 @@ order; an absent wrapper falls back to the default list.

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

Parameters

@@ -277,7 +277,7 @@ order; an absent wrapper falls back to the default list.

baseDirectory string

Project base directory propagated to child XFactory calls.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Diagnostic sink propagated to child factories.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucWhileDoSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucWhileDoSyntax.html index 3e97c47b..3e0d499e 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucWhileDoSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucWhileDoSyntax.html @@ -6,7 +6,7 @@ - + @@ -131,10 +131,13 @@ after LabelScanUtil predicate overload — probe runs the -brand-default FanucWhileDoParsingSyntax on each -candidate, predicate matches on +Forward scan to matching END m uses the anchored +LabelScanUtil overload with +ForwardFromAnchor from the WHILE +host line — sequential loops reuse LoopIds, so only candidates below +the host line may match. The probe runs the brand-default +FanucWhileDoParsingSyntax on each candidate, predicate +matches on Parsing.FanucWhileDo.Term == "END" && LoopId == target.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.html index 0836cf16..a30e6ffa 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.html @@ -433,10 +433,13 @@ after LabelScanUtil predicate overload — probe runs the -brand-default FanucWhileDoParsingSyntax on each -candidate, predicate matches on +Forward scan to matching END m uses the anchored +LabelScanUtil overload with +ForwardFromAnchor from the WHILE +host line — sequential loops reuse LoopIds, so only candidates below +the host line may match. The probe runs the brand-default +FanucWhileDoParsingSyntax on each candidate, predicate +matches on Parsing.FanucWhileDo.Term == "END" && LoopId == target.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainExpressionParser.html new file mode 100644 index 00000000..ca42810d --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainExpressionParser.html @@ -0,0 +1,334 @@ + + + + + Class HeidenhainExpressionParser | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainExpressionParser +

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

Recursive-descent parser for Heidenhain klartext FN value expressions. +Produces the same NcExpr AST as the Fanuc +NcExpressionParser so NcExpressionEvaluator +is reused unchanged. Pure: no variable lookup, no evaluation.

+

Grammar (lowest precedence at top):

+
expr     := add-expr
+add-expr := term (('+' | '-') term)*
+term     := factor (('*' | '/' | 'DIV') factor)*
+factor   := ('+' | '-')? primary
+primary  := number
+         | '(' expr ')'
+         | 'Q' digits | 'QR' digits | 'QL' digits | 'QS' digits
+         | func primary                    → prefix form "SQRT 4" (FN 5)
+         | func '(' arglist ')'            → paren form "SQRT(Q2)"
+

+Dialect notes: Q-family tokens are canonicalised to uppercase +(q1Q1) so Parsing.Assignments keys, table +lookups and same-block references agree. (Caveat shared with the +Siemens R canonicalisation: a lowercase-captured Assignments key +keeps its raw spelling in the evaluator's same-block dictionary, so +a later same-block reference resolves to the pre-block value instead +— klartext posts emit uppercase, corpus-zero.) DIV is the FN 4 +division spelling (FN 4: Q4 = +8 DIV +Q2) and maps onto the +shared divide operator. Function names are limited to the klartext +math vocabulary (SQRT SIN COS TAN ASIN ACOS ATAN ABS INT FRAC SGN +NEG LN LOG EXP); INT normalises to the evaluator's +FIX (truncate toward zero), names the shared evaluator lacks +(FRAC/SGN/NEG/LOG) parse fine and fail +soft at evaluation. Any other identifier is a parse error — klartext +has no named variables, and rejecting bare words keeps the +evaluator's Parsing-tree pass from touching non-expression strings +(MM, MAX, tool-axis letters). Comparison/logical +operators are deliberately absent: FN 9–12 jump conditions are +pre-normalised by +HeidenhainGotoParsingSyntax +into separate value operands plus a shared comparison word — never +parsed here. +

+
+
+ +
+
public sealed class HeidenhainExpressionParser
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainExpressionParser
+
+
+ + + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Methods +

+ + + + +

+ TryParse(string, out NcExpr, out string) + +

+ +

Parses source requiring the whole string to be +consumed. 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
+
+
+ + + + + + + + + + + + + +

+ TryParsePrefix(string, out NcExpr, out int, out string) + +

+ +

Parses the longest valid expression prefix of source. +On success, consumedLength is the number of leading +characters that form the expression (trailing text from that offset on +is the caller's to keep, e.g. as remaining UnparsedText). Fails +only when not even a prefix parses — callers fall back to their legacy +lexical capture in that case. This is the parser-delimited RHS +boundary for Q1 = Q1 - 1-style assignments (whitespace inside +the expression, trailing non-expression words split correctly).

+
+
+ +
+
public static bool TryParsePrefix(string source, out NcExpr expr, out int consumedLength, out string error)
+
+ +

Parameters

+
+
source string
+
+
expr NcExpr
+
+
consumedLength int
+
+
error string
+
+
+ +

Returns

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

+Class HeidenhainGotoSyntax +

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

Resolves Heidenhain FN 9–12 conditional jumps — the +FanucGotoSyntax pattern with klartext LBL +targets and a structural condition. Triggered by +Parsing.HeidenhainGoto (written by +HeidenhainGotoParsingSyntax); decides whether to fire, +and on fire calls +ReplaceSource(IEnumerable<T>) on +layers[0] with the re-segmented file content starting at the +target label line (inclusive — the definition marker is consumed by +HeidenhainSubProgramReturnSyntax downstream).

+

+The condition is compared here, not by the expression grammar: the +parsing owner pre-normalised the statement into two value operands +plus a shared comparison word (the P2 decision that keeps the +Heidenhain dialect free of comparison/logical layers). Each operand is +read polymorphically — numeric (typed at capture for literals, or +substituted in place by VariableEvaluatorSyntax for +resolved Q references) fires the comparison; a still-string operand +means unresolved (the FN 18 SYSREAD target staying vacant is the +designed source) and the jump warns +HeidenhainGoto--ConditionNotEvaluated and falls through — no +fabricated values, both endings stay fail-soft. +

+

+The label scan is whole-file first-match through the runner's own +segmenter (SegmenterDependency) with the P4 call-path +probe stack — klartext has no direction mnemonic and a TNC label is +unique per program, so the anchored directional overloads would add a +distinction the language does not have. Numeric labels canonicalize +("01"1); GOTO LBL 0 targets the +end-of-subprogram sentinel and is refused +(HeidenhainGoto--Lbl0Target, the +HeidenhainSubProgramCallSyntax precedent). Jumps hosted +inside a P4 inlined body (CALL LBL/CALL PGM splice or a +REP section pass) are recognized but not simulated — the +redirect would discard the pending inline tail +(HeidenhainGoto--InlinedContextUnsupported, the Siemens P5 +guard). +

+

+Pipeline placement: tail of the Heidenhain Evaluation bundle, after +VariableEvaluatorSyntax (operand substitution) and the Q +reader. The HeidenhainGotoIterationDependency watchdog +caps fired jumps per (file, label); a missing watchdog disables +the cap (Fanuc parity). +

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

Constructors +

+ + + + +

+ HeidenhainGotoSyntax() + +

+ +

Parameterless instance with default probe syntaxes.

+
+
+ +
+
public HeidenhainGotoSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainGotoSyntax(XElement, string, IProgress<IMessage>) + +

+ +

Loads hosted probe 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 HeidenhainGotoSyntax(XElement src, string baseDirectory, IProgress<IMessage> progress)
+
+ +

Parameters

+
+
src XElement
+

Root element named XName.

+
+
baseDirectory string
+

Project base directory propagated to child XFactory calls.

+
+
progress IProgress<IMessage>
+

Diagnostic sink propagated to child factories.

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

Properties +

+ + + + +

+ LabelProbeSyntaxes + +

+ +

Ordered list of helper syntaxes run on each candidate block during +the label scan before the predicate is checked. Defaults match the +P4 call-path probe stack of +HeidenhainSubProgramCallSyntax: +HeidenhainTildeTrimSyntax (strip ~ continuation +heads), TailCommentSyntax with ";" (a +commented-out label never matches), HeadIndexSyntax +with the bare klartext block-number symbol, then +HeidenhainLblSyntax (whose definition regex excludes +the CALL LBL and GOTO LBL spellings — a jump line is +never a candidate). Order matters: strippers first, label parser +last.

+
+
+ +
+
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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainQParameterReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainQParameterReadingSyntax.html new file mode 100644 index 00000000..08a41727 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainQParameterReadingSyntax.html @@ -0,0 +1,499 @@ + + + + + Class HeidenhainQParameterReadingSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainQParameterReadingSyntax +

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

Obtains values for Heidenhain Q parameters by consuming literal numeric +assignments from Parsing.Assignments.Qn/QRn and routing +them by id range — one reader for the single Q key shape, range +routing inside (the Heidenhain analogue of the Fanuc range-routed reader +trio):

+
  • Q0-Q99HeidenhainQParameterTable free range +(hincproj-persisted; the table is the single source of truth — no JSON +mirror).
  • QRn → the same table's permanent QR store.
  • Q100-Q199 → controller-written system parameters: the write +is consumed but not applied, with a +HeidenhainQ--SystemReadOnly warning (no fabricated values).
  • Q200+ → volatile range: dict-merged into +Vars.Volatile with canonical Q+id keys, carried +block-to-block like the Fanuc VolatileVariableReadingSyntax; +cleared at program end by ProgramEndCleanSyntax.
+

+The carry of the previous block's Vars.Volatile happens on every +block regardless of assignments, so the single-step traceback contract of +HeidenhainVolatileQLookup holds. +

+

+Only literal numeric RHS values are consumed +(Q1 = 5000 ✓; Q1 = Q1*.75 ✗). Non-literal RHS entries are +left untouched in Parsing.Assignments; +VariableEvaluatorSyntax resolves them to literals earlier +on the same block, so by the time this syntax runs, every evaluable RHS +is literal. The two syntaxes are decoupled. +

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

Examples

+

#BeforeBuild: (with a HeidenhainQParameterTable on the dependency list; the literal moves into the table)

+
{
+  "Parsing": { "Assignments": { "Q1": "300" } }
+}
+

#AfterBuild:

+
{}
+ + + + +

Constructors +

+ + + + +

+ HeidenhainQParameterReadingSyntax() + +

+ +

Default constructor.

+
+
+ +
+
public HeidenhainQParameterReadingSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainQParameterReadingSyntax(XElement) + +

+ +

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

+
+
+ +
+
public HeidenhainQParameterReadingSyntax(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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

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

+Class HeidenhainSubProgramCallSyntax +

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

Consumes the Parsing.CALL record captured by +HeidenhainCallSyntax and executes the three klartext +call mechanisms over the shared M98 inline machinery:

+
  • CALL LBL n / CALL LBL "name" (subprogram): +the host file is re-segmented through the runner's own segmenter +(SegmenterDependency), scanned for the matching +LBL definition with LabelScanUtil and the +LabelProbeSyntaxes, truncated at the first following +LBL 0 (inclusive — its consumption pops the frame), and +prepended into layers[0] with a pushed CallStack +frame. A subprogram without LBL 0 is a structured safe-skip +(inlining to EOF would double-execute the file tail).
  • CALL LBL n REP m (program-section repeat — TNC +semantics: the section from LBL n up to, not including, the +call line runs m extra times): m fresh re-segmentation passes of that +slice are prepended. A loop, not a call — no new CallStack +frame is pushed, but the host block's stack propagates onto the +repeated pieces so nested calls inside the section still accumulate +depth against the rail; the repeat count itself is a literal bound. +Any LBL 0 passed inside the section is a no-op for the return +syntax (null-safe pop).
  • CALL PGM name: resolved through +InternalFolder with the +FilePatterns chain ({0}.h{0}.H → +{0}) and inlined whole — the +SiemensSubProgramCallSyntax mechanism verbatim, +including resolve-miss safe-skip +(HeidenhainCall--Skipped). The callee's END PGM pops +the frame via +HeidenhainSubProgramReturnSyntax; a unit switch inside +the callee is not restored on return (recorded limitation).
+

+Recursion rail: like the Siemens call path, a self-recursive +CALL LBL/CALL PGM would splice forever; a call whose +host block already carries MaxCallDepth +CallStack frames is consumed as a safe-skip with +HeidenhainCall--DepthLimitExceeded. No MacroFrame +is stamped — klartext subprograms share the caller's Q scope. +

+Pipeline placement: head of the Heidenhain Evaluation bundle +(the Fanuc discipline — call/inline ahead of all variable machinery). +
+
+ +
+
public class HeidenhainSubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainSubProgramCallSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ HeidenhainSubProgramCallSyntax() + +

+ +

Parameterless instance with default settings.

+
+
+ +
+
public HeidenhainSubProgramCallSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainSubProgramCallSyntax(XElement, string, IProgress<IMessage>) + +

+ +

Loads FilePatterns, MaxCallDepth and +LabelProbeSyntaxes from XML produced by +MakeXmlSource(string, string, bool); absent elements fall back to defaults.

+
+
+ +
+
public HeidenhainSubProgramCallSyntax(XElement src, string baseDirectory, IProgress<IMessage> progress)
+
+ +

Parameters

+
+
src XElement
+

Root element named XName.

+
+
baseDirectory string
+

Project base directory propagated to child XFactory calls.

+
+
progress IProgress<IMessage>
+

Diagnostic sink propagated to child factories.

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

Fields +

+ + + +

+ DefaultMaxCallDepth + +

+ +

Default for MaxCallDepth — the Siemens call-path +value; the TNC itself nests far lower (8 levels).

+
+
+ +
+
public const int DefaultMaxCallDepth = 32
+
+ + + + +

Field Value

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

+ FrameKindKey + +

+ +

Key of the frame-kind marker on a CallFrame entry.

+
+
+ +
+
public const string FrameKindKey = "Kind"
+
+ + + + +

Field Value

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

+ MaxRepetitions + +

+ +

TNC's own repeat-count ceiling. A larger literal is a corrupt or +hostile file; without the cap the O(rep × file size) re-scan loop +is a single-input denial of service.

+
+
+ +
+
public const int MaxRepetitions = 65534
+
+ + + + +

Field Value

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

Properties +

+ + + + +

+ FilePatterns + +

+ +

Filename-resolution fallback chain for CALL PGM, formatted +with the callee name as the only positional arg. Case-insensitive +match is delegated to the host filesystem (the .h/.H +pair matters on Linux).

+
+
+ +
+
public List<string> FilePatterns { get; set; }
+
+ + + + + +

Property Value

+
+
List<string>
+
+
+ + + + + + + + + + +

+ LabelProbeSyntaxes + +

+ +

Ordered probe syntaxes run on each candidate block during label +scans, before the name predicate fires. Defaults match the +Heidenhain Parsing bundle head (; tail comments, bare +klartext block numbers, the LBL statement parser). +Swappable via XML — the +LabelProbeSyntaxes pattern.

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

Property Value

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

+ MaxCallDepth + +

+ +

Recursion rail for the call path (no iteration watchdog covers it); +see the class remarks.

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

Property Value

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

+ 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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

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

+Class HeidenhainSubProgramReturnSyntax +

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

Consumes the two klartext return spellings and the standalone label +markers:

+
  • LBL 0 — end-of-subprogram sentinel: stamps +SubProgramReturn (Term: "LBL 0") and pops the +CallStack frame (null-safe: an LBL 0 reached in +the main flow — the 1.H head layout — is a no-op). Like the Fanuc +M99, the "return" itself is structural: the call syntax truncated the +inlined slice at this block, so the caller's tail follows +naturally.
  • LBL n / LBL "name" — definition markers: +consumed into a block-root HeidenhainLbl record (no +motion; keeps the label visible for dumps and the P5 jump +family).
  • END PGM with a non-empty CallStack — +the return of a CALL PGM callee: consumes Parsing.PGM +before the Logic program-header syntax can treat it as a real program +end (which would clear the volatile Q store mid-stream), stamps +SubProgramReturn (Term: "END PGM"), and pops the +frame. The main file's END PGM (empty stack) is untouched.
+Pipeline placement: directly after +HeidenhainSubProgramCallSyntax at the head of the +Evaluation bundle. +
+
+ +
+
public class HeidenhainSubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainSubProgramReturnSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ HeidenhainSubProgramReturnSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainSubProgramReturnSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainSubProgramReturnSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainSubProgramReturnSyntax(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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainVolatileQLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainVolatileQLookup.html new file mode 100644 index 00000000..06c12aa3 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainVolatileQLookup.html @@ -0,0 +1,524 @@ + + + + + Class HeidenhainVolatileQLookup | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainVolatileQLookup +

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

Reads Heidenhain volatile Q parameters (Q200+, the cycle/user +range that resets at program start) from Vars.Volatile. Self-gates +the id range so the evaluator's +RuntimeVariableLookups chain can +fall through for other keys (Q0-Q99/QRn resolve on the +HeidenhainQParameterTable further +down the chain; Q100-Q199 stay vacant by design). Sibling of the +Fanuc VolatileVariableLookup with the same +single-step traceback contract: +HeidenhainQParameterReadingSyntax dict-merges every block's +Vars.Volatile into the next block, so the entry — if it exists — +is on the current block or the immediately previous one.

+

+Keys are stored canonically as Q + id by the reader; this lookup +re-canonicalises the incoming key the same way, so lowercase raw +captures still resolve. Stateless and dependency-free. +

+
+
+ +
+
public class HeidenhainVolatileQLookup : IRuntimeVariableLookup, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainVolatileQLookup
+
+
+ +
+
Implements
+
+ + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ HeidenhainVolatileQLookup() + +

+ +

Default constructor.

+
+
+ +
+
public HeidenhainVolatileQLookup()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainVolatileQLookup(XElement) + +

+ +

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

+
+
+ +
+
public HeidenhainVolatileQLookup(XElement src)
+
+ +

Parameters

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

Fields +

+ + + +

+ VolatileMax + +

+ +

Inclusive upper bound of the volatile Q range (Q1999) — covers +the TNC cycle-parameter and user ranges above the persistent/system +segments.

+
+
+ +
+
public const int VolatileMax = 1999
+
+ + + + +

Field Value

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

+ VolatileMin + +

+ +

Inclusive lower bound of the volatile Q range (Q200).

+
+
+ +
+
public const int VolatileMin = 200
+
+ + + + +

Field Value

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

Properties +

+ + + + +

+ XName + +

+ +

XML element name for Generators registration.

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

Property Value

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

Methods +

+ + + + +

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

+ +

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<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+ +

Parameters

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

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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

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

Namespace Hi.NcParsers.EvaluationSyntaxs.Heidenhain

+
+
+
+ +

+Classes +

+
+
HeidenhainExpressionParser
+

Recursive-descent parser for Heidenhain klartext FN value expressions. +Produces the same NcExpr AST as the Fanuc +NcExpressionParser so NcExpressionEvaluator +is reused unchanged. Pure: no variable lookup, no evaluation.

+

Grammar (lowest precedence at top):

+
expr     := add-expr
+add-expr := term (('+' | '-') term)*
+term     := factor (('*' | '/' | 'DIV') factor)*
+factor   := ('+' | '-')? primary
+primary  := number
+         | '(' expr ')'
+         | 'Q' digits | 'QR' digits | 'QL' digits | 'QS' digits
+         | func primary                    → prefix form "SQRT 4" (FN 5)
+         | func '(' arglist ')'            → paren form "SQRT(Q2)"
+

+Dialect notes: Q-family tokens are canonicalised to uppercase +(q1Q1) so Parsing.Assignments keys, table +lookups and same-block references agree. (Caveat shared with the +Siemens R canonicalisation: a lowercase-captured Assignments key +keeps its raw spelling in the evaluator's same-block dictionary, so +a later same-block reference resolves to the pre-block value instead +— klartext posts emit uppercase, corpus-zero.) DIV is the FN 4 +division spelling (FN 4: Q4 = +8 DIV +Q2) and maps onto the +shared divide operator. Function names are limited to the klartext +math vocabulary (SQRT SIN COS TAN ASIN ACOS ATAN ABS INT FRAC SGN +NEG LN LOG EXP); INT normalises to the evaluator's +FIX (truncate toward zero), names the shared evaluator lacks +(FRAC/SGN/NEG/LOG) parse fine and fail +soft at evaluation. Any other identifier is a parse error — klartext +has no named variables, and rejecting bare words keeps the +evaluator's Parsing-tree pass from touching non-expression strings +(MM, MAX, tool-axis letters). Comparison/logical +operators are deliberately absent: FN 9–12 jump conditions are +pre-normalised by +HeidenhainGotoParsingSyntax +into separate value operands plus a shared comparison word — never +parsed here. +

+
+
+
+
HeidenhainGotoSyntax
+

Resolves Heidenhain FN 9–12 conditional jumps — the +FanucGotoSyntax pattern with klartext LBL +targets and a structural condition. Triggered by +Parsing.HeidenhainGoto (written by +HeidenhainGotoParsingSyntax); decides whether to fire, +and on fire calls +ReplaceSource(IEnumerable<T>) on +layers[0] with the re-segmented file content starting at the +target label line (inclusive — the definition marker is consumed by +HeidenhainSubProgramReturnSyntax downstream).

+

+The condition is compared here, not by the expression grammar: the +parsing owner pre-normalised the statement into two value operands +plus a shared comparison word (the P2 decision that keeps the +Heidenhain dialect free of comparison/logical layers). Each operand is +read polymorphically — numeric (typed at capture for literals, or +substituted in place by VariableEvaluatorSyntax for +resolved Q references) fires the comparison; a still-string operand +means unresolved (the FN 18 SYSREAD target staying vacant is the +designed source) and the jump warns +HeidenhainGoto--ConditionNotEvaluated and falls through — no +fabricated values, both endings stay fail-soft. +

+

+The label scan is whole-file first-match through the runner's own +segmenter (SegmenterDependency) with the P4 call-path +probe stack — klartext has no direction mnemonic and a TNC label is +unique per program, so the anchored directional overloads would add a +distinction the language does not have. Numeric labels canonicalize +("01"1); GOTO LBL 0 targets the +end-of-subprogram sentinel and is refused +(HeidenhainGoto--Lbl0Target, the +HeidenhainSubProgramCallSyntax precedent). Jumps hosted +inside a P4 inlined body (CALL LBL/CALL PGM splice or a +REP section pass) are recognized but not simulated — the +redirect would discard the pending inline tail +(HeidenhainGoto--InlinedContextUnsupported, the Siemens P5 +guard). +

+

+Pipeline placement: tail of the Heidenhain Evaluation bundle, after +VariableEvaluatorSyntax (operand substitution) and the Q +reader. The HeidenhainGotoIterationDependency watchdog +caps fired jumps per (file, label); a missing watchdog disables +the cap (Fanuc parity). +

+
+
+
+
HeidenhainQParameterReadingSyntax
+

Obtains values for Heidenhain Q parameters by consuming literal numeric +assignments from Parsing.Assignments.Qn/QRn and routing +them by id range — one reader for the single Q key shape, range +routing inside (the Heidenhain analogue of the Fanuc range-routed reader +trio):

+
  • Q0-Q99HeidenhainQParameterTable free range +(hincproj-persisted; the table is the single source of truth — no JSON +mirror).
  • QRn → the same table's permanent QR store.
  • Q100-Q199 → controller-written system parameters: the write +is consumed but not applied, with a +HeidenhainQ--SystemReadOnly warning (no fabricated values).
  • Q200+ → volatile range: dict-merged into +Vars.Volatile with canonical Q+id keys, carried +block-to-block like the Fanuc VolatileVariableReadingSyntax; +cleared at program end by ProgramEndCleanSyntax.
+

+The carry of the previous block's Vars.Volatile happens on every +block regardless of assignments, so the single-step traceback contract of +HeidenhainVolatileQLookup holds. +

+

+Only literal numeric RHS values are consumed +(Q1 = 5000 ✓; Q1 = Q1*.75 ✗). Non-literal RHS entries are +left untouched in Parsing.Assignments; +VariableEvaluatorSyntax resolves them to literals earlier +on the same block, so by the time this syntax runs, every evaluable RHS +is literal. The two syntaxes are decoupled. +

+
+
+
+
HeidenhainSubProgramCallSyntax
+

Consumes the Parsing.CALL record captured by +HeidenhainCallSyntax and executes the three klartext +call mechanisms over the shared M98 inline machinery:

+
  • CALL LBL n / CALL LBL "name" (subprogram): +the host file is re-segmented through the runner's own segmenter +(SegmenterDependency), scanned for the matching +LBL definition with LabelScanUtil and the +LabelProbeSyntaxes, truncated at the first following +LBL 0 (inclusive — its consumption pops the frame), and +prepended into layers[0] with a pushed CallStack +frame. A subprogram without LBL 0 is a structured safe-skip +(inlining to EOF would double-execute the file tail).
  • CALL LBL n REP m (program-section repeat — TNC +semantics: the section from LBL n up to, not including, the +call line runs m extra times): m fresh re-segmentation passes of that +slice are prepended. A loop, not a call — no new CallStack +frame is pushed, but the host block's stack propagates onto the +repeated pieces so nested calls inside the section still accumulate +depth against the rail; the repeat count itself is a literal bound. +Any LBL 0 passed inside the section is a no-op for the return +syntax (null-safe pop).
  • CALL PGM name: resolved through +InternalFolder with the +FilePatterns chain ({0}.h{0}.H → +{0}) and inlined whole — the +SiemensSubProgramCallSyntax mechanism verbatim, +including resolve-miss safe-skip +(HeidenhainCall--Skipped). The callee's END PGM pops +the frame via +HeidenhainSubProgramReturnSyntax; a unit switch inside +the callee is not restored on return (recorded limitation).
+

+Recursion rail: like the Siemens call path, a self-recursive +CALL LBL/CALL PGM would splice forever; a call whose +host block already carries MaxCallDepth +CallStack frames is consumed as a safe-skip with +HeidenhainCall--DepthLimitExceeded. No MacroFrame +is stamped — klartext subprograms share the caller's Q scope. +

+Pipeline placement: head of the Heidenhain Evaluation bundle +(the Fanuc discipline — call/inline ahead of all variable machinery). +
+
+
+
HeidenhainSubProgramReturnSyntax
+

Consumes the two klartext return spellings and the standalone label +markers:

+
  • LBL 0 — end-of-subprogram sentinel: stamps +SubProgramReturn (Term: "LBL 0") and pops the +CallStack frame (null-safe: an LBL 0 reached in +the main flow — the 1.H head layout — is a no-op). Like the Fanuc +M99, the "return" itself is structural: the call syntax truncated the +inlined slice at this block, so the caller's tail follows +naturally.
  • LBL n / LBL "name" — definition markers: +consumed into a block-root HeidenhainLbl record (no +motion; keeps the label visible for dumps and the P5 jump +family).
  • END PGM with a non-empty CallStack — +the return of a CALL PGM callee: consumes Parsing.PGM +before the Logic program-header syntax can treat it as a real program +end (which would clear the volatile Q store mid-stream), stamps +SubProgramReturn (Term: "END PGM"), and pops the +frame. The main file's END PGM (empty stack) is untouched.
+Pipeline placement: directly after +HeidenhainSubProgramCallSyntax at the head of the +Evaluation bundle. +
+
+
+
HeidenhainVolatileQLookup
+

Reads Heidenhain volatile Q parameters (Q200+, the cycle/user +range that resets at program start) from Vars.Volatile. Self-gates +the id range so the evaluator's +RuntimeVariableLookups chain can +fall through for other keys (Q0-Q99/QRn resolve on the +HeidenhainQParameterTable further +down the chain; Q100-Q199 stay vacant by design). Sibling of the +Fanuc VolatileVariableLookup with the same +single-step traceback contract: +HeidenhainQParameterReadingSyntax dict-merges every block's +Vars.Volatile into the next block, so the entry — if it exists — +is on the current block or the immediately previous one.

+

+Keys are stored canonically as Q + id by the reader; this lookup +re-canonicalises the incoming key the same way, so lowercase raw +captures still resolve. Stateless and dependency-free. +

+
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticSeverity.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.LabelScanDirection.html similarity index 80% rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticSeverity.html rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.LabelScanDirection.html index c823567e..cb4764eb 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticSeverity.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.LabelScanDirection.html @@ -2,11 +2,11 @@ - Enum NcDiagnosticSeverity | HiAPI-C# 2025 + Enum LabelScanDirection | HiAPI-C# 2025 - + - + @@ -84,28 +84,29 @@

-
+
-

-Enum NcDiagnosticSeverity +

+Enum LabelScanDirection

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

Importance level of an NC diagnostic. -Combined with NcDiagnosticCategory to form the full -diagnostic meaning (e.g., Unsupported + Warning).

+

Scan region and match policy for the anchored +LabelScanUtil overload. Forward scans take the first +match below the anchor line; backward scans take the nearest match +above it.

-
public enum NcDiagnosticSeverity
+
public enum LabelScanDirection
@@ -147,21 +148,13 @@ diagnostic meaning (e.g., Unsupported + Warning).

Fields

-
Error = 3
+
BackwardNearestToAnchor = 1
-

Definite issue — result may be incorrect.

+

Scan lines strictly above the anchor, nearest (last) match wins (GOTOB).

-
Message = 0
+
ForwardFromAnchor = 0
-

Informational progress or status.

-
-
Success = 1
- -

Completed successfully.

-
-
Warning = 2
- -

Potential issue — processing continues.

+

Scan lines strictly below the anchor, first match wins (GOTOF).

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.html index eaf140e2..56293bc7 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.LabelScanUtil.html @@ -170,6 +170,120 @@ parenthesised comment stripped). + + +

+ CanReadSource(List<INcDependency>, string, string) + +

+ +

Whether a re-segmentation scan can obtain line content for +labelPath — either an in-memory registration on +the pipeline's NcLineSourceDependency (inline NC-code +plays, whose pseudo-path never exists on disk) or an existing file +at absPath. Jump syntaxes use this as the +pre-scan guard in place of a bare File.Exists(absPath), so +control flow inside inline plays is not misreported as a missing +host file.

+
+
+ +
+
public static bool CanReadSource(List<INcDependency> ncDependencyList, string labelPath, string absPath)
+
+ +

Parameters

+
+
ncDependencyList List<INcDependency>
+
+
labelPath string
+
+
absPath string
+
+
+ +

Returns

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

+ SegmentAndRewindToLine(ISegmenter, List<INcDependency>, string, string, int, int, int, NcDiagnosticProgress) + +

+ +

Re-segments absPath and returns the slice +starting at the first piece whose file line index equals +beginLineIndex — the loop back-jump primitive +(no label predicate, no probes). Extracted from the Fanuc WHILE/END +reverse jump so the Siemens loop family shares the same engine; +FanucWhileDoSyntax delegates here unchanged. +Returns null when the line did not materialise as a segment +start.

+
+
+ +
+
public static List<SyntaxPiece> SegmentAndRewindToLine(ISegmenter segmenter, List<INcDependency> ncDependencyList, string absPath, string labelPath, int fileIndex, int sentenceIndexBegin, int beginLineIndex, NcDiagnosticProgress diag)
+
+ +

Parameters

+
+
segmenter ISegmenter
+

Segmenter used to slice the file into Sentence blocks.

+
+
ncDependencyList List<INcDependency>
+

NC dependency list forwarded to GetSyntaxPieces(ISegmenter, List<INcDependency>, IEnumerable<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) while re-segmenting the file.

+
+
absPath string
+

Absolute path to read line content from.

+
+
labelPath string
+

Project-relative path to stamp on each line's IndexedFileLine label.

+
+
fileIndex int
+

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

+
+
sentenceIndexBegin int
+

Legacy fallback starting index — ignored when the pipeline carries a SentenceIndexCounterDependency.

+
+
beginLineIndex int
+

0-based file line index of the block to rewind to (the loop-entry line).

+
+
diag NcDiagnosticProgress
+

Diagnostic sink for the re-segmentation.

+
+
+ +

Returns

+
+
List<SyntaxPiece>
+
+
+ + + + + + + + + + +

@@ -215,7 +329,7 @@ callers (Fanuc unconditional GOTO, M99 P{seq} jump) are unchanged.

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.

+

Legacy fallback starting index for the produced pieces — ignored when the pipeline carries a SentenceIndexCounterDependency.

probeSyntaxes List<ISituNcSyntax>

Ordered list of helper syntaxes to run on each candidate block before the predicate check. May be null.

@@ -244,6 +358,94 @@ callers (Fanuc unconditional GOTO, M99 P{seq} jump) are unchanged. + + +

+ SegmentAndSkipUntilLabel(ISegmenter, List<INcDependency>, string, string, int, int, List<ISituNcSyntax>, Func<JsonObject, bool>, int, LabelScanDirection, NcDiagnosticProgress) + +

+ +

Anchored, direction-aware overload for the Siemens +GOTOF/GOTOB family (and any other scan that must not +see the whole file). The two legacy overloads above always scan the +whole file top-down and take the first match — that cannot express +“forward only, from the jump site” (GOTOF) or “nearest label +above the jump site” (GOTOB), and it silently mis-targets +when the same label text appears both before and after the host +line. Semantics here:

+
  • ForwardFromAnchor — only + candidates whose file line index is strictly greater than + anchorLineIndex are probed and matched; the + first match wins.
  • BackwardNearestToAnchor — + only candidates strictly above anchorLineIndex + are probed and matched; the last match (largest line + index — nearest to the anchor) wins.
+Candidates without a resolvable line index are skipped. The +returned slice runs from the matched block (inclusive — a label +line may carry trailing code) to EOF, exactly like the legacy +overloads; a backward jump is still "replace the source with the +slice from the target down", the same shape the WHILE reverse jump +uses. Returns null when no candidate matches. +
+
+ +
+
public static List<SyntaxPiece> SegmentAndSkipUntilLabel(ISegmenter segmenter, List<INcDependency> ncDependencyList, string absPath, string labelPath, int fileIndex, int sentenceIndexBegin, List<ISituNcSyntax> probeSyntaxes, Func<JsonObject, bool> match, int anchorLineIndex, LabelScanDirection direction, NcDiagnosticProgress diag)
+
+ +

Parameters

+
+
segmenter ISegmenter
+

Segmenter used to slice the file into Sentence blocks.

+
+
ncDependencyList List<INcDependency>
+

NC dependency list forwarded to GetSyntaxPieces(ISegmenter, List<INcDependency>, IEnumerable<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) while re-segmenting the scanned file.

+
+
absPath string
+

Absolute path to read line content from.

+
+
labelPath string
+

Project-relative path to stamp on each line's IndexedFileLine label.

+
+
fileIndex int
+

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

+
+
sentenceIndexBegin int
+

Legacy fallback starting index for the produced pieces — ignored when the pipeline carries a SentenceIndexCounterDependency.

+
+
probeSyntaxes List<ISituNcSyntax>
+

Ordered list of helper syntaxes to run on each in-region candidate before the predicate check. May be null.

+
+
match Func<JsonObject, bool>
+

Per-candidate predicate on the probed block's JSON.

+
+
anchorLineIndex int
+

0-based file line index of the jump host block; the scan region excludes this line itself.

+
+
direction LabelScanDirection
+

Scan region and match policy relative to the anchor.

+
+
diag NcDiagnosticProgress
+

Sink for any diagnostics produced by the probe syntaxes.

+
+
+ +

Returns

+
+
List<SyntaxPiece>
+
+
+ + + + + + + + + + +

@@ -257,10 +459,14 @@ a block whose probeSyntaxes have stamped it in-place), and returns the sub-list of pieces from that block to EOF. Pieces are produced via -GetSyntaxPieces(ISegmenter, List<INcDependency>, 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 +GetSyntaxPieces(ISegmenter, List<INcDependency>, IEnumerable<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken), which stamps +SentenceIndex from the session's +SentenceIndexCounterDependency +when present (the whole re-segmented file is numbered eagerly, so the +discarded pre-label prefix leaves a gap in the sequence) and falls +back to contiguous numbering from +sentenceIndexBegin otherwise. Returns null +when no match is found; the caller emits its own brand-specific “label not found” diagnostic.

The predicate is fixed at the @@ -298,7 +504,7 @@ participating in this scan.

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.

+

Legacy fallback starting index for the produced pieces — ignored when the pipeline carries a SentenceIndexCounterDependency.

targetN int

Integer label target to match against Number.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html index 0598cf30..371db950 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.MacroFileResolver.html @@ -311,6 +311,56 @@ configured an out-of-project folder. + + +

+ Resolve(string, string, string, IEnumerable<string>) + +

+ +

Name-based sibling of Resolve(string, int, string) for +dialects whose subprogram identifier is a word rather than an +O-number (Siemens L9810 / HQ_FC by-name calls). +patterns is formatted with the name as the only +positional arg (e.g. "{0}.SPF") — supplied per call so brand +pattern sets stay on their own syntaxes instead of leaking into the +shared Fanuc FilenamePatterns chain. Folder anchoring +and the tri-form result follow the int overload exactly.

+
+
+ +
+
public static MacroFileResolver.ResolvedFile? Resolve(string folder, string name, string baseDirectory, IEnumerable<string> patterns)
+
+ +

Parameters

+
+
folder string
+
+
name string
+
+
baseDirectory string
+
+
patterns IEnumerable<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 index 8a052351..cb94ea44 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.MacroInlineUtil.html @@ -221,7 +221,12 @@ 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 PrependSource(IEnumerable<T>) on -the source layer.

+the source layer. SentenceIndex allocation happens inside +GetSyntaxPieces(ISegmenter, List<INcDependency>, IEnumerable<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) via the session's +FileIndexCounterDependency sibling +SentenceIndexCounterDependency; +sentenceIndexBegin is only the legacy fallback +numbering for counter-less presets.

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

+Class SiemensAcIcSyntax +

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

Recognizes the Siemens per-word coordinate function family on axis +words — AC(...) (absolute), IC(...) (incremental), +DC(...) (rotary shortest-path), ACP(...) / +ACN(...) (rotary directional approach), and the coded-position +(indexing axis) counterparts CAC(...) / CIC(...) / +CDC(...) / CACP(...) / CACN(...) — e.g. +X=AC(400), C=IC(360/17), C=DC(47.296), +B=CAC(2) — unwraps the inner +expression so the downstream VariableEvaluatorSyntax +resolves it through the normal Siemens expression machinery, and +records the per-word positioning override in a block-root +PositioningOverride section keyed by word name +(Absolute / +Incremental / +Shortest / +PositiveOnly / +NegativeOnly, and the +Coded* values for the coded-position verbs).

+

+Siemens semantics: the wrapper forces the interpretation of that one +coordinate word for that one block, regardless of the modal G90/G91 +state. The positional conversion itself stays with the same consumers +that honor the modal state — +IncrementalResolveSyntax for linear axes and +McAbcSyntax for rotary axes (both treat +every non-Incremental override as an absolute write), while the +rotary shortest/directional resolution stays with the +McAbcCyclicPathSyntax tail-pass — this +syntax only normalizes the text and stamps the override; it never +reads machine position (the Evaluation stage is not the place for +position-state reads). +

+

+Scope: axis words (per AxisNames, +falling back to X/Y/Z/A/B/C) accept the full family, except that the +rotary-only verbs DC/ACP/ACN are unwrapped only +on rotary axes (per IsRotaryAxis(string), +falling back to A/B/C) — on a linear axis they are invalid Siemens +and are left untouched so they surface as unevaluated residue +instead of being silently mis-read. The interpolation parameters +I/J/K accept AC/IC only (Siemens circle centers are +incremental by default; I=AC(...) switches that one component +to an absolute center coordinate, consumed by +SiemensCircularMotionSyntax) — +the rotary verbs are meaningless there and are left untouched. +The coded-position verbs (their argument is a 1-based indexing +position number, not a coordinate) are unwrapped only on axes +that IsIndexingAxis(string) reports as +usable indexing axes — CDC/CACP/CACN +additionally require the axis to be rotary. Everywhere else (a +non-indexing axis, no indexing config on the list, I/J/K) they stay +untouched, mirroring the Siemens alarm 17500 ("axis is not an +indexing axis") with loud unevaluated residue. The number→coordinate +lookup happens at the write stage +(McAbcSyntax / +IncrementalResolveSyntax via +CodedPositionUtil), not here — the +Evaluation stage neither reads machine position nor resolves tables. +Positioning-axis forms (POS[C]=DC(...) / SPOS=) never +reach the word path and are out of scope. Values whose parentheses +do not balance around the wrapper (e.g. IC(1)+AC(2)) are also +left untouched. +

+

+Must be placed in the Evaluation bundle before +VariableEvaluatorSyntax (the unwrapped inner text is a +plain Siemens expression the evaluator numeric-ifies on the same +block). Inside REPEAT / subprogram splices each re-fed piece runs the +full bundle again, so the unwrap happens on every iteration. +

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

Examples

+

C=IC(360/17) (the HUA08126 REPEAT shape) — the wrapper is +unwrapped to the inner expression (still a string; the evaluator +numeric-ifies it later on the same block) and the override section +records the per-word incremental interpretation: +#BeforeBuild:

+
{ "Parsing": { "C": "IC(360/17)" } }
+

#AfterBuild:

+
{
+  "Parsing": { "C": "360/17" },
+  "PositioningOverride": { "C": "Incremental" }
+}
+

X=AC(25) — absolute override; the inner literal stays a string +here (pass-2 of the evaluator turns it numeric): +#BeforeBuild:

+
{ "Parsing": { "X": "AC(25)" } }
+

#AfterBuild:

+
{
+  "Parsing": { "X": "25" },
+  "PositioningOverride": { "X": "Absolute" }
+}
+

A plain expression without the wrapper is not touched and no override +section appears: +#BeforeBuild:

+
{ "Parsing": { "X": "R5+2" } }
+

#AfterBuild:

+
{ "Parsing": { "X": "R5+2" } }
+

Unbalanced wrapper parentheses (IC(1)+AC(2) — the outer regex +shape matches but the inner text closes the wrapper early) — left +untouched so it surfaces as unevaluated residue instead of a silent +mis-read: +#BeforeBuild:

+
{ "Parsing": { "X": "IC(1)+AC(2)" } }
+

#AfterBuild:

+
{ "Parsing": { "X": "IC(1)+AC(2)" } }
+

C=DC(47.296) (the A055548 corpus shape, 6632 lines in one +program) — rotary shortest-path: unwrapped like AC and stamped +Shortest; the write stays absolute and the shortest swing is +the unconditional McAbcCyclicPathSyntax +tail-pass for modular rotary axes (an exactly-180° target resolves +deterministically to the negative swing — the tail-pass window is +half-open [anchor-180°, anchor+180°); real controls make that +measure-zero tie machine-data-dependent): +#BeforeBuild:

+
{ "Parsing": { "C": "DC(47.296)" } }
+

#AfterBuild:

+
{
+  "Parsing": { "C": "47.296" },
+  "PositioningOverride": { "C": "Shortest" }
+}
+

X=DC(90) — the rotary-only verb on a linear axis is invalid +Siemens (real controls alarm): left untouched, loud residue instead +of a silent absolute conversion: +#BeforeBuild:

+
{ "Parsing": { "X": "DC(90)" } }
+

#AfterBuild:

+
{ "Parsing": { "X": "DC(90)" } }
+

C=ACP(270) — absolute target, positive-direction-only +approach (may deliberately take the long way around): +#BeforeBuild:

+
{ "Parsing": { "C": "ACP(270)" } }
+

#AfterBuild:

+
{
+  "Parsing": { "C": "270" },
+  "PositioningOverride": { "C": "PositiveOnly" }
+}
+

C=ACN(90) — the negative-direction mirror: +#BeforeBuild:

+
{ "Parsing": { "C": "ACN(90)" } }
+

#AfterBuild:

+
{
+  "Parsing": { "C": "90" },
+  "PositioningOverride": { "C": "NegativeOnly" }
+}
+

I=AC(400) — interpolation parameter switched to an absolute +center coordinate (Siemens I/J/K default incremental); consumed by +SiemensCircularMotionSyntax: +#BeforeBuild:

+
{ "Parsing": { "I": "AC(400)" } }
+

#AfterBuild:

+
{
+  "Parsing": { "I": "400" },
+  "PositioningOverride": { "I": "Absolute" }
+}
+

I=DC(10) — rotary verbs are meaningless on interpolation +parameters: left untouched, loud residue: +#BeforeBuild:

+
{ "Parsing": { "I": "DC(10)" } }
+

#AfterBuild:

+
{ "Parsing": { "I": "DC(10)" } }
+

The coded-position cases below inject a +SiemensMachineDataTable declaring C rotary and X linear, both +assigned to indexing table 1 = [0, 90, 180, 270] (the values +double as mm for X). C=CAC(3) — coded absolute: the inner +text (a position number expression, numeric-ified later by the +evaluator like every other case) is unwrapped and the coded override +is stamped; the number→angle lookup stays with the write-stage +consumers: +#BeforeBuild:

+
{ "Parsing": { "C": "CAC(3)" } }
+

#AfterBuild:

+
{
+  "Parsing": { "C": "3" },
+  "PositioningOverride": { "C": "CodedAbsolute" }
+}
+

C=CIC(2) — coded incremental (advance two indexing +positions): +#BeforeBuild:

+
{ "Parsing": { "C": "CIC(2)" } }
+

#AfterBuild:

+
{
+  "Parsing": { "C": "2" },
+  "PositioningOverride": { "C": "CodedIncremental" }
+}
+

C=CDC(4) — coded shortest-path: +#BeforeBuild:

+
{ "Parsing": { "C": "CDC(4)" } }
+

#AfterBuild:

+
{
+  "Parsing": { "C": "4" },
+  "PositioningOverride": { "C": "CodedShortest" }
+}
+

C=CACP(2) — coded positive-direction-only: +#BeforeBuild:

+
{ "Parsing": { "C": "CACP(2)" } }
+

#AfterBuild:

+
{
+  "Parsing": { "C": "2" },
+  "PositioningOverride": { "C": "CodedPositiveOnly" }
+}
+

C=CACN(2) — coded negative-direction-only: +#BeforeBuild:

+
{ "Parsing": { "C": "CACN(2)" } }
+

#AfterBuild:

+
{
+  "Parsing": { "C": "2" },
+  "PositioningOverride": { "C": "CodedNegativeOnly" }
+}
+

C=CAC(3) with no indexing config on the dependency list (this +case injects none) — the axis is not an indexing axis, so the word +stays untouched and surfaces as loud unevaluated residue (the +Siemens control raises alarm 17500 here): +#BeforeBuild:

+
{ "Parsing": { "C": "CAC(3)" } }
+

#AfterBuild:

+
{ "Parsing": { "C": "CAC(3)" } }
+

X=CDC(2) — the rotary coded verbs are invalid on a linear +indexing axis: left untouched, loud residue (X=CAC(2) / +X=CIC(2) would unwrap): +#BeforeBuild:

+
{ "Parsing": { "X": "CDC(2)" } }
+

#AfterBuild:

+
{ "Parsing": { "X": "CDC(2)" } }
+

I=CAC(3) — interpolation parameters take no coded verbs: +#BeforeBuild:

+
{ "Parsing": { "I": "CAC(3)" } }
+

#AfterBuild:

+
{ "Parsing": { "I": "CAC(3)" } }
+ + + + +

Constructors +

+ + + + +

+ SiemensAcIcSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public SiemensAcIcSyntax()
+
+ + + + + + + + + + + + + + + +

+ SiemensAcIcSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public SiemensAcIcSyntax(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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensExpressionParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensExpressionParser.html new file mode 100644 index 00000000..2b3a447f --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensExpressionParser.html @@ -0,0 +1,344 @@ + + + + + Class SiemensExpressionParser | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensExpressionParser +

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

Recursive-descent parser for Sinumerik value expressions. Produces the +same NcExpr AST as the Fanuc +NcExpressionParser so NcExpressionEvaluator +is reused unchanged. Pure: no variable lookup, 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 (('==' | '<>' | '>=' | '<=' | '>' | '<') add-expr)*
+add-expr := term (('+' | '-') term)*
+term     := factor (('*' | '/' | 'MOD') factor)*
+factor   := ('+' | '-')? primary
+primary  := number
+         | '(' expr ')'
+         | 'R' digits                      → variable "R63" (canonical uppercase)
+         | '$' name ('[' indexlist ']')?   → variable "$P_UIFR[1,X,TR]" (canonical)
+         | name '(' arglist ')'            → function call
+         | name '[' indexlist ']'          → variable "_RENC[35]" (canonical)
+         | name                            → variable "_X_HOME" (case preserved)
+indexlist := (integer | name) (',' (integer | name))*
+arglist   := expr (',' expr)*
+

+Dialect differences from the Fanuc parser: parentheses group and call +(Fanuc uses brackets); comparisons are spelled == <> +>= <= > < (Fanuc uses +EQ NE .. words); bare identifiers are named-variable references +(Fanuc rejects an identifier without [); R63 is +canonicalised to uppercase so table lookups and +Parsing.Assignments keys agree. Indexed accesses +($P_UIFR[1,X,TR], _RENC[35]) require literal index +elements (integers, bare letters, or keywords like TR) and are +emitted as a single NcVariableExpr whose key is the +canonical uppercase-indexed token — the whole token routes through +Get(string), keeping the AST brand-agnostic. +Function-name aliases are normalised where Sinumerik and the shared +evaluator spell the same math differently: ATAN2ATAN +(both are two-arg atan2 in degrees), TRUNCFIX +(truncate toward zero). Unknown functions (e.g. the rotary positioning +form DC(...)) parse fine and fail later in the evaluator, which +callers treat as fail-soft. +

+
+
+ +
+
public sealed class SiemensExpressionParser
+
+ + + + +
+
Inheritance
+
+ +
SiemensExpressionParser
+
+
+ + + +
+
Inherited Members
+
+ + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Methods +

+ + + + +

+ TryParse(string, out NcExpr, out string) + +

+ +

Parses source requiring the whole string to be +consumed. 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
+
+
+ + + + + + + + + + + + + +

+ TryParsePrefix(string, out NcExpr, out int, out string) + +

+ +

Parses the longest valid expression prefix of source. +On success, consumedLength is the number of leading +characters that form the expression (trailing text from that offset on +is the caller's to keep, e.g. as remaining UnparsedText). +Fails only when not even a prefix parses (e.g. the text starts with a +quote or an operator dangles at end-of-input) — callers fall back to +their legacy lexical capture in that case.

+

+This is the parser-delimited RHS boundary: the expression grammar +itself decides where the right-hand side ends, so whitespace inside +expressions (R64 - 14/2), balanced call parentheses +(DC(47.296)) and a following non-expression word +(R24=14 R26=... / F=R103 X-204.) all resolve without +lexical boundary regexes or TerminateWords. +

+
+
+ +
+
public static bool TryParsePrefix(string source, out NcExpr expr, out int consumedLength, out string error)
+
+ +

Parameters

+
+
source string
+
+
expr NcExpr
+
+
consumedLength int
+
+
error string
+
+
+ +

Returns

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

+Class SiemensGotoSyntax +

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

Resolves Siemens GOTOF/GOTOB control flow — the +FanucGotoSyntax pattern with named-label targets +and explicit direction. Triggered by Parsing.SiemensGoto +(written by SiemensGotoParsingSyntax); decides whether +to fire, and on fire calls +ReplaceSource(IEnumerable<T>) on +layers[0] with the re-segmented file content starting at the +target label line (inclusive — a Siemens label may prefix code).

+

+Direction comes from the mnemonic and drives the anchored +LabelScanUtil overload: GOTOF takes the first +match strictly below the host line, GOTOB the nearest match +strictly above it — never the whole-file first match, which would +silently mis-target duplicate label texts. Targets may be a named +label (LBL1: line, matched Ordinal-exact on the block-root +SiemensLabel record) or an N<num> block +number (matched on Number). +

+

+The conditional forms (IF <cond> GOTOF <label>) +lean on VariableEvaluatorSyntax's pass-2 tree walk; +ReadCondition(JsonNode) (a dialect-neutral +numeric-JSON reader despite its home) reads the resolved node. +Truthy fires; zero falls through silently; unresolved warns +SiemensGoto--ConditionNotEvaluated and falls through. Because +the label field is an ordinary Parsing string, a label name that +collides with a set named variable may have been substituted to a +numeric by the evaluator — the original text is then recovered from +the Formula.SiemensGoto.Label mirror. +

+

+Pipeline placement: Evaluation bundle, in the control-flow group +after VariableEvaluatorSyntax. The +SiemensGotoIterationDependency watchdog caps fired +jumps per (file, label); a missing watchdog disables the cap +(Fanuc parity). +

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

Constructors +

+ + + + +

+ SiemensGotoSyntax() + +

+ +

Parameterless instance with default probe syntaxes.

+
+
+ +
+
public SiemensGotoSyntax()
+
+ + + + + + + + + + + + + + + +

+ SiemensGotoSyntax(XElement, string, IProgress<IMessage>) + +

+ +

Loads hosted probe 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 SiemensGotoSyntax(XElement src, string baseDirectory, IProgress<IMessage> progress)
+
+ +

Parameters

+
+
src XElement
+

Root element named XName.

+
+
baseDirectory string
+

Project base directory propagated to child XFactory calls.

+
+
progress IProgress<IMessage>
+

Diagnostic sink propagated to child factories.

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

Properties +

+ + + + +

+ LabelProbeSyntaxes + +

+ +

Ordered list of helper syntaxes run on each candidate block during +the label scan before the predicate is checked. Defaults match the +Siemens probe stack established by the P4 REPEAT scan: +TailCommentSyntax (strip ; comments so a +commented-out label never matches), HeadIndexSyntax +with symbol “N” (so N100 block-number targets +resolve and a numbered label line still exposes its label), then +SiemensLabelSyntax (block-root +SiemensLabel record). Order matters: comment +stripper first, label parser last.

+
+
+ +
+
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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

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

+Class SiemensIfSyntax +

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

Resolves the Siemens IF ... [ELSE ...] ENDIF block +conditional. Three phrases dispatched by +Term, none of which needs a frame stack:

+
  • IF — reads the resolved condition via + FanucConditionReader (dialect-neutral numeric-JSON + reader). True falls through into the then-branch; false + forward-jumps to just after the matching ELSE (else-branch + executes) or after the matching ENDIF when no else exists; + unresolved warns SiemensIf--ConditionNotEvaluated and falls + through (no redirect on unresolved input — the then-branch + executes, and the ELSE rule below then skips the else-branch, + which keeps the two branches mutually exclusive even on the + fail-soft path).
  • ELSE — reached in the normal stream only when the + then-branch just executed (a false IF jumps past the ELSE line + directly), so it unconditionally forward-jumps past the matching + ENDIF.
  • ENDIF — consumed no-op (stamped for cache dumps).
+

+Both forward scans run on the anchored LabelScanUtil +overload from the host line, with a nesting-depth predicate: each +nested block-IF increments the depth, each ENDIF at +depth > 0 decrements it, and the match fires only at depth 0. The +probe stack replays the Parsing statement owners the depth counter +depends on — including SiemensGotoParsingSyntax ahead +of SiemensIfParsingSyntax, so a nested single-line +IF cond GOTOF lbl is claimed by the GOTO owner and never +miscounted as a block-IF. +

+

+Pipeline placement: Evaluation bundle control-flow group, after +VariableEvaluatorSyntax (condition substituted) and +before the variable readers. +

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

Constructors +

+ + + + +

+ SiemensIfSyntax() + +

+ +

Parameterless instance (no XML state).

+
+
+ +
+
public SiemensIfSyntax()
+
+ + + + + + + + + + + + + + + +

+ SiemensIfSyntax(XElement) + +

+ +

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

+
+
+ +
+
public SiemensIfSyntax(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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensInlineContextUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensInlineContextUtil.html new file mode 100644 index 00000000..597b3848 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensInlineContextUtil.html @@ -0,0 +1,236 @@ + + + + + Class SiemensInlineContextUtil | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensInlineContextUtil +

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

Detects whether a block executes inside a P4 inlined body — an +L/name-call subprogram splice or a REPEAT label section +repetition. Both are PrependSource inlines whose “return to +the caller / to the line after REPEAT” is the natural pipeline tail; +the P5 control-flow redirects (ReplaceSource with a +re-segmented host-file slice) would silently discard that pending +tail — and, for a section repeat, re-execute the REPEAT +statement itself, which has no watchdog (its count is eagerly known) +and therefore no bound. The P5 jump syntaxes consult this guard and +degrade to a structured warning + fall-through instead: control flow +inside an inlined body is recognized but not simulated (corpus count +zero; true support needs return-frame machinery, a future work +item).

+
  • Subprogram context: the call syntax stamps a pushed + CallStack on every inlined piece — any frame on the + stack marks callee context.
  • Section-repeat context: SiemensRepeatSyntax + stamps every inlined piece with a SiemensRepeat + clone carrying a 1-based Iteration; + the REPEAT host block itself never carries that field.
+
+
+ +
+
public static class SiemensInlineContextUtil
+
+ + + + +
+
Inheritance
+
+ +
SiemensInlineContextUtil
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ IsInlinedContext(JsonObject) + +

+ +

True when hostJson belongs to an inlined +subprogram or section-repeat body (see class remarks).

+
+
+ +
+
public static bool IsInlinedContext(JsonObject hostJson)
+
+ +

Parameters

+
+
hostJson JsonObject
+
+
+ +

Returns

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

+Class SiemensLoopSyntax +

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

Resolves the four Siemens loop constructs against one shared frame +stack — WHILE ... ENDWHILE, FOR ... ENDFOR, +REPEAT ... UNTIL (the label-less post-test loop) and +LOOP ... ENDLOOP — the +FanucWhileDoSyntax template (frames-in-JSON + +ModalCarry tracked key + forward scan to the terminator + back-jump +to the recorded entry line), adapted to constructs that carry no +LoopId: frames stack in nesting order on the block-root +SiemensLoopFrames section, and every terminator +validates that the innermost frame carries its own construct +Kind and file. A single shared stack +is what makes mixed-construct nesting (a FOR inside a WHILE inside a +LOOP) pair correctly.

+
  • WHILE — pre-test: truthy pushes a frame (first + arrival) and falls through; falsy/unresolved pops its own frame + and forward-jumps past the matching ENDWHILE + (depth-counted). ENDWHILE back-jumps unconditionally; the + WHILE line re-evaluates.
  • FOR — counting: first arrival resolves the bounds + once (Sinumerik semantics), assigns the loop variable by lifting + into Parsing.Assignments (the reader syntaxes downstream + persist it exactly as a written assignment), and pushes a frame + carrying Var/End/Value; each re-arrival increments + Value until it exceeds End, then pops and jumps past + ENDFOR.
  • REPEAT/UNTIL — post-test: REPEAT pushes and + always falls through; UNTIL exits on truthy (pop), warns + and exits on unresolved, back-jumps to the REPEAT line on + falsy.
  • LOOP/ENDLOOP — endless: ENDLOOP back-jumps + while the SiemensLoopIterationDependency watchdog + allows; the watchdog is a hard requirement here (no exit + condition exists), so a missing dependency suppresses the jump + with a configuration error instead of hanging the pipeline.
+

+Back-jump counting happens at the back-jump step only (a loop whose +condition is false from the outset consumes zero iterations), keyed +(FileName, BeginLineNo) on the watchdog. All scans use the +anchored LabelScanUtil overload from the host line — +never the whole-file first match, which would pair a terminator with +an earlier sibling construct of the same kind. +

+

+Pipeline placement: Evaluation bundle control-flow group, after +VariableEvaluatorSyntax (conditions and bounds +substituted) and before the variable readers (the FOR lift must +reach them on the same block). +

+

+Known limitation — stack pairing vs lexical pairing. Real +Sinumerik pairs loop constructs lexically at block preparation; this +syntax pairs them dynamically on the carried frame stack. A +GOTOF/GOTOB that leaves a loop body strands that +loop's frame (only the FOR head detects and drops a stale frame, via +AdvancePending), so a jump from an +inner loop into an enclosing loop's body can mispair the +enclosing terminator with the stale inner frame. Sinumerik itself +forbids jumping into control structures; all such shapes stay +bounded here by the watchdog and surface loud diagnostics. Scan +probes also mirror the Fanuc convention of not replaying +BlockSkipSyntax — a /-prefixed terminator is invisible +to the exit scans. +

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

Constructors +

+ + + + +

+ SiemensLoopSyntax() + +

+ +

Parameterless instance (no XML state).

+
+
+ +
+
public SiemensLoopSyntax()
+
+ + + + + + + + + + + + + + + +

+ SiemensLoopSyntax(XElement) + +

+ +

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

+
+
+ +
+
public SiemensLoopSyntax(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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensNamedVariableLookup.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensNamedVariableLookup.html new file mode 100644 index 00000000..126a124b --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensNamedVariableLookup.html @@ -0,0 +1,451 @@ + + + + + Class SiemensNamedVariableLookup | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensNamedVariableLookup +

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

Reads Sinumerik named program variables (_X_HOME) from +Vars.Named. Self-gates on the named-identifier key shape so the +evaluator's RuntimeVariableLookups +chain can fall through for other keys. Sibling of the Fanuc +VolatileVariableLookup with the same +single-step traceback: SiemensNamedVariableReadingSyntax +dict-merges every block's Vars.Named into the next block, so the +entry — if it exists — is on the current block or the immediately +previous one.

+

+Stateless and dependency-free — instances are interchangeable. +

+
+
+ +
+
public class SiemensNamedVariableLookup : IRuntimeVariableLookup, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
SiemensNamedVariableLookup
+
+
+ +
+
Implements
+
+ + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ SiemensNamedVariableLookup() + +

+ +

Default constructor.

+
+
+ +
+
public SiemensNamedVariableLookup()
+
+ + + + + + + + + + + + + + + +

+ SiemensNamedVariableLookup(XElement) + +

+ +

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

+
+
+ +
+
public SiemensNamedVariableLookup(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<SyntaxPiece>, IReadOnlyList<INcDependency>) + +

+ +

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<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+ +

Parameters

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

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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensNamedVariableReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensNamedVariableReadingSyntax.html new file mode 100644 index 00000000..34208ed4 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensNamedVariableReadingSyntax.html @@ -0,0 +1,496 @@ + + + + + Class SiemensNamedVariableReadingSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensNamedVariableReadingSyntax +

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

Obtains values for Sinumerik named program variables (GUD/LUD +identifiers such as _X_HOME, declared via DEF REAL or +assigned directly). Reads literal numeric assignments from +Parsing.Assignments.<ident>, dict-merges them with the +previous block's state, and writes the resulting per-block dictionary +into Vars.Named — the same carry-forward pattern as the Fanuc +VolatileVariableReadingSyntax.

+

+Lifetime is bounded by MachiningSession: within one session the +dictionary carries forward block-by-block; session restart abandons the +SyntaxPiece JSON dataflow and starts fresh. This matches LUD scoping +well (program-local) and under-persists real GUD (globally retentive) — +acceptable until a GUD definition-file feature exists. +

+

+Only literal numeric RHS values are consumed +(_X_HOME = 155.5 ✓; _A = R1+5 ✗ — the evaluator resolves +those to literals earlier on the same block). String-valued RHS (quoted) +never reaches Assignments — the quote-guard syntaxes quarantine it in +the Parsing bundle. +

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

Examples

+

#BeforeBuild:

+
{
+  "Parsing": { "Assignments": { "_X_HOME": "155.5" } }
+}
+

#AfterBuild:

+
{
+  "Vars": { "Named": { "_X_HOME": 155.5 } }
+}
+ + + + +

Constructors +

+ + + + +

+ SiemensNamedVariableReadingSyntax() + +

+ +

Default constructor.

+
+
+ +
+
public SiemensNamedVariableReadingSyntax()
+
+ + + + + + + + + + + + + + + +

+ SiemensNamedVariableReadingSyntax(XElement) + +

+ +

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

+
+
+ +
+
public SiemensNamedVariableReadingSyntax(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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensRParameterReadingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensRParameterReadingSyntax.html new file mode 100644 index 00000000..61d06932 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensRParameterReadingSyntax.html @@ -0,0 +1,494 @@ + + + + + Class SiemensRParameterReadingSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensRParameterReadingSyntax +

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

Obtains values for Sinumerik R parameters (R0-R999) by consuming +literal numeric assignments from Parsing.Assignments.Rn and +writing them straight to a registered SiemensRParameterTable. +Sibling of the Fanuc RetainedCommonVariableReadingSyntax.

+

+No SyntaxPiece JSON mirror is created — the table is the single source of +truth for R values, and VariableEvaluatorSyntax reads from +the table directly (the table implements IVariableLookup). +The hincproj round-trip preserves writes across project sessions. +

+

+Only literal numeric RHS values are consumed by this syntax +(R63 = 100.5 ✓; R26 = R64-14/2 ✗). Non-literal RHS entries +are left untouched in Parsing.Assignments; VariableEvaluatorSyntax +resolves them to literals earlier on the same block, so by the time this +syntax runs, every evaluable RHS is literal. The two syntaxes are decoupled. +

+

+If no SiemensRParameterTable is registered on the runner's +effective NcDependencyList, this syntax is a no-op. +

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

Examples

+

#BeforeBuild: (with a SiemensRParameterTable on the dependency list; the literal moves into the table)

+
{
+  "Parsing": { "Assignments": { "R63": "100.5" } }
+}
+

#AfterBuild:

+
{}
+ + + + +

Constructors +

+ + + + +

+ SiemensRParameterReadingSyntax() + +

+ +

Default constructor.

+
+
+ +
+
public SiemensRParameterReadingSyntax()
+
+ + + + + + + + + + + + + + + +

+ SiemensRParameterReadingSyntax(XElement) + +

+ +

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

+
+
+ +
+
public SiemensRParameterReadingSyntax(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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensRepeatSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensRepeatSyntax.html new file mode 100644 index 00000000..26ce62f4 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensRepeatSyntax.html @@ -0,0 +1,495 @@ + + + + + Class SiemensRepeatSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensRepeatSyntax +

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

Executes the Siemens REPEAT StartLabel EndLabel [P=n] section +repeat: the host file is re-segmented from the top, the +[StartLabel: … EndLabel:) slice is cut out (start-label line +included — it may carry trailing code; end-label line excluded), and +the slice is prepended into layers[0] once per repetition via +PrependSource(IEnumerable<T>). “Return to the line +after REPEAT” is the natural pipeline tail — the M98-inline pattern — +so no return frame or rewind is needed (Siemens end labels are +passive, unlike Fanuc's END m which actively fires a syntax).

+

+Label scanning reuses LabelScanUtil's predicate overload +with a Siemens probe stack (TailCommentSyntax + +HeadIndexSyntax + SiemensLabelSyntax) and +matches on the block-root SiemensLabel record. Each +repetition is its own segmentation pass with a fresh fileIndex — +downstream syntaxes mutate block JSON in place, so repetitions must +not share piece instances. Every inlined block is stamped with a +SiemensRepeat clone carrying its 1-based +Iteration. +

+

+Fail-soft paths (consume + structured warning + no motion): missing +end label in the statement (single-label form — corpus count zero, +not simulated), start/end label not found in the file, a slice that +contains the REPEAT line itself (would re-fire forever — real +Sinumerik programs place REPEAT after the end label), and missing +runtime dependencies. The repetition count is known eagerly, so no +iteration watchdog is needed. +

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

Constructors +

+ + + + +

+ SiemensRepeatSyntax() + +

+ +

Parameterless instance (no XML state).

+
+
+ +
+
public SiemensRepeatSyntax()
+
+ + + + + + + + + + + + + + + +

+ SiemensRepeatSyntax(XElement) + +

+ +

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

+
+
+ +
+
public SiemensRepeatSyntax(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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

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

+Class SiemensSubProgramCallSyntax +

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

Consumes the Parsing.SiemensCall sub-object captured by +SiemensCallStatementSyntax and +either inlines the called subprogram or safe-skips the call:

+
  • Resolved — the callee file (looked up through +InternalFolder with the +FilePatterns chain, default {name}.SPF → +{name}.MPF{name}) is segmented and prepended into +layers[0] — the SubProgramCallSyntax (M98) +mechanism verbatim, including the P-times repetition loop, +per-repetition file indices, and a pushed CallStack +frame that SiemensSubProgramReturnSyntax pops on +M17/RET. Like M98 (and unlike G65), no MacroFrame is +stamped — callee blocks share the caller's variable scope; DEF-local +isolation is a later work item.
  • Unresolved — the corpus norm: OEM / measuring cycles +(HQ_FC, Renishaw L9810, L_ZYM91) whose +definition files ship with the machine, not the NC program. The call +is consumed whole with a block-root SiemensCall record +(Skipped: true) and a single structured +SiemensCall--Skipped warning — motion state untouched, +replacing the raw UnparsedText--Remaining noise.
+

+Pipeline placement: head of the Siemens Evaluation bundle +(the Fanuc discipline — call/inline ahead of all variable and motion +machinery). Argument binding to PROC parameters is not implemented: +a resolved call carrying arguments emits +SiemensCall--ArgsNotBound and inlines without bindings. +

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

Constructors +

+ + + + +

+ SiemensSubProgramCallSyntax() + +

+ +

Parameterless instance with default settings.

+
+
+ +
+
public SiemensSubProgramCallSyntax()
+
+ + + + + + + + + + + + + + + +

+ SiemensSubProgramCallSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public SiemensSubProgramCallSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Source XML element.

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

Fields +

+ + + +

+ DefaultMaxCallDepth + +

+ +

Default for MaxCallDepth. Sinumerik itself caps +program levels far lower (16 on 840D); 32 leaves headroom for +exotic post output while still catching recursion promptly.

+
+
+ +
+
public const int DefaultMaxCallDepth = 32
+
+ + + + +

Field Value

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

Properties +

+ + + + +

+ FilePatterns + +

+ +

Filename-resolution fallback chain, formatted with the callee name +as the only positional arg. Default mirrors Sinumerik conventions: +.SPF subprogram, .MPF main-program-as-subprogram, +bare name. Case-insensitive match is delegated to the host +filesystem (Windows is, Linux is not).

+
+
+ +
+
public List<string> FilePatterns { get; set; }
+
+ + + + + +

Property Value

+
+
List<string>
+
+
+ + + + + + + + + + +

+ MaxCallDepth + +

+ +

Recursion rail: a self- or mutually-recursive callee re-captures +its own call statement inside every inlined body and would splice +forever (no iteration watchdog covers the call path). A call whose +host block already carries this many CallStack +frames is consumed as a structured safe-skip with +SiemensCall–DepthLimitExceeded instead of inlining.

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

Property Value

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

+ 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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensSubProgramReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensSubProgramReturnSyntax.html new file mode 100644 index 00000000..382deb1e --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensSubProgramReturnSyntax.html @@ -0,0 +1,497 @@ + + + + + Class SiemensSubProgramReturnSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensSubProgramReturnSyntax +

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

Consumes Siemens subprogram-end words — M17 (subprogram end) +and RET (return without function output) — and pops one +CallStack frame. Like the plain-M99 half of +SubProgramReturnSyntax, the actual “return” is the +natural pipeline tail: the inlined body's last block is followed in +layers[0] by the caller's next block, so this syntax only +consumes the trigger (keeping +UnconsumedCheckSyntax quiet), stamps a +SubProgramReturn section, and writes the popped stack.

+

+M17 in the main frame (no caller) is the norm in practice — +post-processors commonly end a main .MPF with M17 — and is +consumed silently +with no pop and no warning, mirroring how a plain M99 tolerates the +main frame. Sinumerik's M17 has no P-jump form, so there is no +redirect path here. +

+

+Triggers: M17 arrives in Parsing.Flags via +NumberedFlagSyntax; RET via the +FlagSyntax word table. +

+

+Known limitation — early return. Because the return is the +natural pipeline tail, an M17/RET in the middle +of a body (e.g. inside an IF branch) pops the frame but does +not truncate the remaining inlined blocks — they still execute. +Honoring a mid-body return needs body-boundary bookkeeping (a future +work item alongside PROC parameter binding); the corpus places every +return at the body end. +

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

Constructors +

+ + + + +

+ SiemensSubProgramReturnSyntax() + +

+ +

Parameterless instance (no XML state).

+
+
+ +
+
public SiemensSubProgramReturnSyntax()
+
+ + + + + + + + + + + + + + + +

+ SiemensSubProgramReturnSyntax(XElement) + +

+ +

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

+
+
+ +
+
public SiemensSubProgramReturnSyntax(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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensSystemVariableSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensSystemVariableSyntax.html new file mode 100644 index 00000000..82997a30 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensSystemVariableSyntax.html @@ -0,0 +1,531 @@ + + + + + Class SiemensSystemVariableSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensSystemVariableSyntax +

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

Consumes writes to Sinumerik $ system variables the pipeline does +not simulate ($TC_DP… handled elsewhere aside, e.g. +$AC_TIME, $SC_…, non-TR $P_UIFR components). +Siemens counterpart of the Fanuc record-only +FanucSystemControlVariableSyntax pattern:

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

Examples

+

#BeforeBuild:

+
{
+  "Parsing": { "Assignments": { "$SC_PA_ACTIV_IMMED": "1" } }
+}
+

#AfterBuild:

+
{
+  "Vars": { "SystemNamed": { "$SC_PA_ACTIV_IMMED": 1 } }
+}
+ + +

Remarks

+
  1. records the literal write on the block JSON under +Vars.SystemNamed (round-trip and cache-dump visibility), carried +forward block-by-block;
  2. emits a SiemensSystemVariable--Unsupported +UnsupportedMessage(ISentenceCarrier, string, string, object) +so the user knows the assignment was recognised but its controller-side +effect is not simulated (Message severity — safe no-op offline);
  3. removes the entry from Parsing.Assignments so it does not +re-surface as a generic Parsing--Unconsumed diagnostic.
+

+MUST run after SiemensUifrWritingSyntax — this syntax is +the $-catchall; the UIFR bridge owns the simulated subset. +Only literal numeric RHS values are consumed; non-literal RHS is left +for VariableEvaluatorSyntax. +

+
+ + +

Constructors +

+ + + + +

+ SiemensSystemVariableSyntax() + +

+ +

Default constructor.

+
+
+ +
+
public SiemensSystemVariableSyntax()
+
+ + + + + + + + + + + + + + + +

+ SiemensSystemVariableSyntax(XElement) + +

+ +

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

+
+
+ +
+
public SiemensSystemVariableSyntax(XElement src)
+
+ +

Parameters

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

Fields +

+ + + +

+ UnsupportedDiagId + +

+ +

Diagnostic id emitted for every consumed unsimulated $ +assignment — recognised by the parser, ignored by simulation.

+
+
+ +
+
public const string UnsupportedDiagId = "SiemensSystemVariable--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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

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

+Class SiemensUifrVariableLookup +

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

Reads Sinumerik settable-frame translations +(R100=$P_UIFR[1,X,TR]) from the SiemensFrameTable +on the runner's effective dependency list. Self-gates on the +$P_UIFR[n,axis,TR] key shape so the evaluator's +RuntimeVariableLookups chain can +fall through for other keys (non-TR components fall to the record-only +SiemensSystemVariableSyntax path as unevaluable reads).

+

+State-from-deps flavour: the table is resolved from the call's +dependencies list on every call — never held as a field — +so the lookup survives XML round-trip without a rebind path (the wrapper +anti-pattern ban on IRuntimeVariableLookup). +

+
+
+ +
+
public class SiemensUifrVariableLookup : IRuntimeVariableLookup, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
SiemensUifrVariableLookup
+
+
+ +
+
Implements
+
+ + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ SiemensUifrVariableLookup() + +

+ +

Default constructor.

+
+
+ +
+
public SiemensUifrVariableLookup()
+
+ + + + + + + + + + + + + + + +

+ SiemensUifrVariableLookup(XElement) + +

+ +

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

+
+
+ +
+
public SiemensUifrVariableLookup(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<SyntaxPiece>, IReadOnlyList<INcDependency>) + +

+ +

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<SyntaxPiece> node, IReadOnlyList<INcDependency> dependencies)
+
+ +

Parameters

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

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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

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

+Class SiemensUifrWritingSyntax +

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

Consumes Sinumerik settable-frame translation writes +($P_UIFR[5,Z,TR]=R102-281.48, probing programs' workpiece +re-referencing idiom) by routing literal numeric assignments from +Parsing.Assignments into the SiemensFrameTable on +the runner's effective dependency list — the write is thereby fully +simulated: a subsequent G54/G505+ selection reads the updated +offset through the existing CoordinateOffset path (X/Y/Z), and +$P_UIFR reads see it via SiemensUifrVariableLookup.

+

+Only literal numeric RHS values are consumed; +VariableEvaluatorSyntax normalizes expression RHS to +literals earlier on the same block. Only the TR component is +bridged — other components (RT, FI) stay in Assignments +and fall to the record-only SiemensSystemVariableSyntax, +which must run after this syntax. Writes to $P_UIFR[0,..] +(G500) are consumed but ignored, matching +SetAxisOffset(string, string, double). +

+

+If no SiemensFrameTable is registered, this syntax is a +no-op (entries stay visible as unconsumed residue). +

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

Examples

+

#BeforeBuild:

+
{
+  "Parsing": { "Assignments": { "$P_UIFR[5,Z,TR]": "-281.48" } }
+}
+

#AfterBuild:

+
{
+}
+ + + + +

Constructors +

+ + + + +

+ SiemensUifrWritingSyntax() + +

+ +

Default constructor.

+
+
+ +
+
public SiemensUifrWritingSyntax()
+
+ + + + + + + + + + + + + + + +

+ SiemensUifrWritingSyntax(XElement) + +

+ +

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

+
+
+ +
+
public SiemensUifrWritingSyntax(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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

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

Namespace Hi.NcParsers.EvaluationSyntaxs.Siemens

+
+
+
+ +

+Classes +

+
+
SiemensAcIcSyntax
+

Recognizes the Siemens per-word coordinate function family on axis +words — AC(...) (absolute), IC(...) (incremental), +DC(...) (rotary shortest-path), ACP(...) / +ACN(...) (rotary directional approach), and the coded-position +(indexing axis) counterparts CAC(...) / CIC(...) / +CDC(...) / CACP(...) / CACN(...) — e.g. +X=AC(400), C=IC(360/17), C=DC(47.296), +B=CAC(2) — unwraps the inner +expression so the downstream VariableEvaluatorSyntax +resolves it through the normal Siemens expression machinery, and +records the per-word positioning override in a block-root +PositioningOverride section keyed by word name +(Absolute / +Incremental / +Shortest / +PositiveOnly / +NegativeOnly, and the +Coded* values for the coded-position verbs).

+

+Siemens semantics: the wrapper forces the interpretation of that one +coordinate word for that one block, regardless of the modal G90/G91 +state. The positional conversion itself stays with the same consumers +that honor the modal state — +IncrementalResolveSyntax for linear axes and +McAbcSyntax for rotary axes (both treat +every non-Incremental override as an absolute write), while the +rotary shortest/directional resolution stays with the +McAbcCyclicPathSyntax tail-pass — this +syntax only normalizes the text and stamps the override; it never +reads machine position (the Evaluation stage is not the place for +position-state reads). +

+

+Scope: axis words (per AxisNames, +falling back to X/Y/Z/A/B/C) accept the full family, except that the +rotary-only verbs DC/ACP/ACN are unwrapped only +on rotary axes (per IsRotaryAxis(string), +falling back to A/B/C) — on a linear axis they are invalid Siemens +and are left untouched so they surface as unevaluated residue +instead of being silently mis-read. The interpolation parameters +I/J/K accept AC/IC only (Siemens circle centers are +incremental by default; I=AC(...) switches that one component +to an absolute center coordinate, consumed by +SiemensCircularMotionSyntax) — +the rotary verbs are meaningless there and are left untouched. +The coded-position verbs (their argument is a 1-based indexing +position number, not a coordinate) are unwrapped only on axes +that IsIndexingAxis(string) reports as +usable indexing axes — CDC/CACP/CACN +additionally require the axis to be rotary. Everywhere else (a +non-indexing axis, no indexing config on the list, I/J/K) they stay +untouched, mirroring the Siemens alarm 17500 ("axis is not an +indexing axis") with loud unevaluated residue. The number→coordinate +lookup happens at the write stage +(McAbcSyntax / +IncrementalResolveSyntax via +CodedPositionUtil), not here — the +Evaluation stage neither reads machine position nor resolves tables. +Positioning-axis forms (POS[C]=DC(...) / SPOS=) never +reach the word path and are out of scope. Values whose parentheses +do not balance around the wrapper (e.g. IC(1)+AC(2)) are also +left untouched. +

+

+Must be placed in the Evaluation bundle before +VariableEvaluatorSyntax (the unwrapped inner text is a +plain Siemens expression the evaluator numeric-ifies on the same +block). Inside REPEAT / subprogram splices each re-fed piece runs the +full bundle again, so the unwrap happens on every iteration. +

+
+
+
+
SiemensExpressionParser
+

Recursive-descent parser for Sinumerik value expressions. Produces the +same NcExpr AST as the Fanuc +NcExpressionParser so NcExpressionEvaluator +is reused unchanged. Pure: no variable lookup, 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 (('==' | '<>' | '>=' | '<=' | '>' | '<') add-expr)*
+add-expr := term (('+' | '-') term)*
+term     := factor (('*' | '/' | 'MOD') factor)*
+factor   := ('+' | '-')? primary
+primary  := number
+         | '(' expr ')'
+         | 'R' digits                      → variable "R63" (canonical uppercase)
+         | '$' name ('[' indexlist ']')?   → variable "$P_UIFR[1,X,TR]" (canonical)
+         | name '(' arglist ')'            → function call
+         | name '[' indexlist ']'          → variable "_RENC[35]" (canonical)
+         | name                            → variable "_X_HOME" (case preserved)
+indexlist := (integer | name) (',' (integer | name))*
+arglist   := expr (',' expr)*
+

+Dialect differences from the Fanuc parser: parentheses group and call +(Fanuc uses brackets); comparisons are spelled == <> +>= <= > < (Fanuc uses +EQ NE .. words); bare identifiers are named-variable references +(Fanuc rejects an identifier without [); R63 is +canonicalised to uppercase so table lookups and +Parsing.Assignments keys agree. Indexed accesses +($P_UIFR[1,X,TR], _RENC[35]) require literal index +elements (integers, bare letters, or keywords like TR) and are +emitted as a single NcVariableExpr whose key is the +canonical uppercase-indexed token — the whole token routes through +Get(string), keeping the AST brand-agnostic. +Function-name aliases are normalised where Sinumerik and the shared +evaluator spell the same math differently: ATAN2ATAN +(both are two-arg atan2 in degrees), TRUNCFIX +(truncate toward zero). Unknown functions (e.g. the rotary positioning +form DC(...)) parse fine and fail later in the evaluator, which +callers treat as fail-soft. +

+
+
+
+
SiemensGotoSyntax
+

Resolves Siemens GOTOF/GOTOB control flow — the +FanucGotoSyntax pattern with named-label targets +and explicit direction. Triggered by Parsing.SiemensGoto +(written by SiemensGotoParsingSyntax); decides whether +to fire, and on fire calls +ReplaceSource(IEnumerable<T>) on +layers[0] with the re-segmented file content starting at the +target label line (inclusive — a Siemens label may prefix code).

+

+Direction comes from the mnemonic and drives the anchored +LabelScanUtil overload: GOTOF takes the first +match strictly below the host line, GOTOB the nearest match +strictly above it — never the whole-file first match, which would +silently mis-target duplicate label texts. Targets may be a named +label (LBL1: line, matched Ordinal-exact on the block-root +SiemensLabel record) or an N<num> block +number (matched on Number). +

+

+The conditional forms (IF <cond> GOTOF <label>) +lean on VariableEvaluatorSyntax's pass-2 tree walk; +ReadCondition(JsonNode) (a dialect-neutral +numeric-JSON reader despite its home) reads the resolved node. +Truthy fires; zero falls through silently; unresolved warns +SiemensGoto--ConditionNotEvaluated and falls through. Because +the label field is an ordinary Parsing string, a label name that +collides with a set named variable may have been substituted to a +numeric by the evaluator — the original text is then recovered from +the Formula.SiemensGoto.Label mirror. +

+

+Pipeline placement: Evaluation bundle, in the control-flow group +after VariableEvaluatorSyntax. The +SiemensGotoIterationDependency watchdog caps fired +jumps per (file, label); a missing watchdog disables the cap +(Fanuc parity). +

+
+
+
+
SiemensIfSyntax
+

Resolves the Siemens IF ... [ELSE ...] ENDIF block +conditional. Three phrases dispatched by +Term, none of which needs a frame stack:

+
  • IF — reads the resolved condition via + FanucConditionReader (dialect-neutral numeric-JSON + reader). True falls through into the then-branch; false + forward-jumps to just after the matching ELSE (else-branch + executes) or after the matching ENDIF when no else exists; + unresolved warns SiemensIf--ConditionNotEvaluated and falls + through (no redirect on unresolved input — the then-branch + executes, and the ELSE rule below then skips the else-branch, + which keeps the two branches mutually exclusive even on the + fail-soft path).
  • ELSE — reached in the normal stream only when the + then-branch just executed (a false IF jumps past the ELSE line + directly), so it unconditionally forward-jumps past the matching + ENDIF.
  • ENDIF — consumed no-op (stamped for cache dumps).
+

+Both forward scans run on the anchored LabelScanUtil +overload from the host line, with a nesting-depth predicate: each +nested block-IF increments the depth, each ENDIF at +depth > 0 decrements it, and the match fires only at depth 0. The +probe stack replays the Parsing statement owners the depth counter +depends on — including SiemensGotoParsingSyntax ahead +of SiemensIfParsingSyntax, so a nested single-line +IF cond GOTOF lbl is claimed by the GOTO owner and never +miscounted as a block-IF. +

+

+Pipeline placement: Evaluation bundle control-flow group, after +VariableEvaluatorSyntax (condition substituted) and +before the variable readers. +

+
+
+
+
SiemensInlineContextUtil
+

Detects whether a block executes inside a P4 inlined body — an +L/name-call subprogram splice or a REPEAT label section +repetition. Both are PrependSource inlines whose “return to +the caller / to the line after REPEAT” is the natural pipeline tail; +the P5 control-flow redirects (ReplaceSource with a +re-segmented host-file slice) would silently discard that pending +tail — and, for a section repeat, re-execute the REPEAT +statement itself, which has no watchdog (its count is eagerly known) +and therefore no bound. The P5 jump syntaxes consult this guard and +degrade to a structured warning + fall-through instead: control flow +inside an inlined body is recognized but not simulated (corpus count +zero; true support needs return-frame machinery, a future work +item).

+
  • Subprogram context: the call syntax stamps a pushed + CallStack on every inlined piece — any frame on the + stack marks callee context.
  • Section-repeat context: SiemensRepeatSyntax + stamps every inlined piece with a SiemensRepeat + clone carrying a 1-based Iteration; + the REPEAT host block itself never carries that field.
+
+
+
+
SiemensLoopSyntax
+

Resolves the four Siemens loop constructs against one shared frame +stack — WHILE ... ENDWHILE, FOR ... ENDFOR, +REPEAT ... UNTIL (the label-less post-test loop) and +LOOP ... ENDLOOP — the +FanucWhileDoSyntax template (frames-in-JSON + +ModalCarry tracked key + forward scan to the terminator + back-jump +to the recorded entry line), adapted to constructs that carry no +LoopId: frames stack in nesting order on the block-root +SiemensLoopFrames section, and every terminator +validates that the innermost frame carries its own construct +Kind and file. A single shared stack +is what makes mixed-construct nesting (a FOR inside a WHILE inside a +LOOP) pair correctly.

+
  • WHILE — pre-test: truthy pushes a frame (first + arrival) and falls through; falsy/unresolved pops its own frame + and forward-jumps past the matching ENDWHILE + (depth-counted). ENDWHILE back-jumps unconditionally; the + WHILE line re-evaluates.
  • FOR — counting: first arrival resolves the bounds + once (Sinumerik semantics), assigns the loop variable by lifting + into Parsing.Assignments (the reader syntaxes downstream + persist it exactly as a written assignment), and pushes a frame + carrying Var/End/Value; each re-arrival increments + Value until it exceeds End, then pops and jumps past + ENDFOR.
  • REPEAT/UNTIL — post-test: REPEAT pushes and + always falls through; UNTIL exits on truthy (pop), warns + and exits on unresolved, back-jumps to the REPEAT line on + falsy.
  • LOOP/ENDLOOP — endless: ENDLOOP back-jumps + while the SiemensLoopIterationDependency watchdog + allows; the watchdog is a hard requirement here (no exit + condition exists), so a missing dependency suppresses the jump + with a configuration error instead of hanging the pipeline.
+

+Back-jump counting happens at the back-jump step only (a loop whose +condition is false from the outset consumes zero iterations), keyed +(FileName, BeginLineNo) on the watchdog. All scans use the +anchored LabelScanUtil overload from the host line — +never the whole-file first match, which would pair a terminator with +an earlier sibling construct of the same kind. +

+

+Pipeline placement: Evaluation bundle control-flow group, after +VariableEvaluatorSyntax (conditions and bounds +substituted) and before the variable readers (the FOR lift must +reach them on the same block). +

+

+Known limitation — stack pairing vs lexical pairing. Real +Sinumerik pairs loop constructs lexically at block preparation; this +syntax pairs them dynamically on the carried frame stack. A +GOTOF/GOTOB that leaves a loop body strands that +loop's frame (only the FOR head detects and drops a stale frame, via +AdvancePending), so a jump from an +inner loop into an enclosing loop's body can mispair the +enclosing terminator with the stale inner frame. Sinumerik itself +forbids jumping into control structures; all such shapes stay +bounded here by the watchdog and surface loud diagnostics. Scan +probes also mirror the Fanuc convention of not replaying +BlockSkipSyntax — a /-prefixed terminator is invisible +to the exit scans. +

+
+
+
+
SiemensNamedVariableLookup
+

Reads Sinumerik named program variables (_X_HOME) from +Vars.Named. Self-gates on the named-identifier key shape so the +evaluator's RuntimeVariableLookups +chain can fall through for other keys. Sibling of the Fanuc +VolatileVariableLookup with the same +single-step traceback: SiemensNamedVariableReadingSyntax +dict-merges every block's Vars.Named into the next block, so the +entry — if it exists — is on the current block or the immediately +previous one.

+

+Stateless and dependency-free — instances are interchangeable. +

+
+
+
+
SiemensNamedVariableReadingSyntax
+

Obtains values for Sinumerik named program variables (GUD/LUD +identifiers such as _X_HOME, declared via DEF REAL or +assigned directly). Reads literal numeric assignments from +Parsing.Assignments.<ident>, dict-merges them with the +previous block's state, and writes the resulting per-block dictionary +into Vars.Named — the same carry-forward pattern as the Fanuc +VolatileVariableReadingSyntax.

+

+Lifetime is bounded by MachiningSession: within one session the +dictionary carries forward block-by-block; session restart abandons the +SyntaxPiece JSON dataflow and starts fresh. This matches LUD scoping +well (program-local) and under-persists real GUD (globally retentive) — +acceptable until a GUD definition-file feature exists. +

+

+Only literal numeric RHS values are consumed +(_X_HOME = 155.5 ✓; _A = R1+5 ✗ — the evaluator resolves +those to literals earlier on the same block). String-valued RHS (quoted) +never reaches Assignments — the quote-guard syntaxes quarantine it in +the Parsing bundle. +

+
+
+
+
SiemensRParameterReadingSyntax
+

Obtains values for Sinumerik R parameters (R0-R999) by consuming +literal numeric assignments from Parsing.Assignments.Rn and +writing them straight to a registered SiemensRParameterTable. +Sibling of the Fanuc RetainedCommonVariableReadingSyntax.

+

+No SyntaxPiece JSON mirror is created — the table is the single source of +truth for R values, and VariableEvaluatorSyntax reads from +the table directly (the table implements IVariableLookup). +The hincproj round-trip preserves writes across project sessions. +

+

+Only literal numeric RHS values are consumed by this syntax +(R63 = 100.5 ✓; R26 = R64-14/2 ✗). Non-literal RHS entries +are left untouched in Parsing.Assignments; VariableEvaluatorSyntax +resolves them to literals earlier on the same block, so by the time this +syntax runs, every evaluable RHS is literal. The two syntaxes are decoupled. +

+

+If no SiemensRParameterTable is registered on the runner's +effective NcDependencyList, this syntax is a no-op. +

+
+
+
+
SiemensRepeatSyntax
+

Executes the Siemens REPEAT StartLabel EndLabel [P=n] section +repeat: the host file is re-segmented from the top, the +[StartLabel: … EndLabel:) slice is cut out (start-label line +included — it may carry trailing code; end-label line excluded), and +the slice is prepended into layers[0] once per repetition via +PrependSource(IEnumerable<T>). “Return to the line +after REPEAT” is the natural pipeline tail — the M98-inline pattern — +so no return frame or rewind is needed (Siemens end labels are +passive, unlike Fanuc's END m which actively fires a syntax).

+

+Label scanning reuses LabelScanUtil's predicate overload +with a Siemens probe stack (TailCommentSyntax + +HeadIndexSyntax + SiemensLabelSyntax) and +matches on the block-root SiemensLabel record. Each +repetition is its own segmentation pass with a fresh fileIndex — +downstream syntaxes mutate block JSON in place, so repetitions must +not share piece instances. Every inlined block is stamped with a +SiemensRepeat clone carrying its 1-based +Iteration. +

+

+Fail-soft paths (consume + structured warning + no motion): missing +end label in the statement (single-label form — corpus count zero, +not simulated), start/end label not found in the file, a slice that +contains the REPEAT line itself (would re-fire forever — real +Sinumerik programs place REPEAT after the end label), and missing +runtime dependencies. The repetition count is known eagerly, so no +iteration watchdog is needed. +

+
+
+
+
SiemensSubProgramCallSyntax
+

Consumes the Parsing.SiemensCall sub-object captured by +SiemensCallStatementSyntax and +either inlines the called subprogram or safe-skips the call:

+
  • Resolved — the callee file (looked up through +InternalFolder with the +FilePatterns chain, default {name}.SPF → +{name}.MPF{name}) is segmented and prepended into +layers[0] — the SubProgramCallSyntax (M98) +mechanism verbatim, including the P-times repetition loop, +per-repetition file indices, and a pushed CallStack +frame that SiemensSubProgramReturnSyntax pops on +M17/RET. Like M98 (and unlike G65), no MacroFrame is +stamped — callee blocks share the caller's variable scope; DEF-local +isolation is a later work item.
  • Unresolved — the corpus norm: OEM / measuring cycles +(HQ_FC, Renishaw L9810, L_ZYM91) whose +definition files ship with the machine, not the NC program. The call +is consumed whole with a block-root SiemensCall record +(Skipped: true) and a single structured +SiemensCall--Skipped warning — motion state untouched, +replacing the raw UnparsedText--Remaining noise.
+

+Pipeline placement: head of the Siemens Evaluation bundle +(the Fanuc discipline — call/inline ahead of all variable and motion +machinery). Argument binding to PROC parameters is not implemented: +a resolved call carrying arguments emits +SiemensCall--ArgsNotBound and inlines without bindings. +

+
+
+
+
SiemensSubProgramReturnSyntax
+

Consumes Siemens subprogram-end words — M17 (subprogram end) +and RET (return without function output) — and pops one +CallStack frame. Like the plain-M99 half of +SubProgramReturnSyntax, the actual “return” is the +natural pipeline tail: the inlined body's last block is followed in +layers[0] by the caller's next block, so this syntax only +consumes the trigger (keeping +UnconsumedCheckSyntax quiet), stamps a +SubProgramReturn section, and writes the popped stack.

+

+M17 in the main frame (no caller) is the norm in practice — +post-processors commonly end a main .MPF with M17 — and is +consumed silently +with no pop and no warning, mirroring how a plain M99 tolerates the +main frame. Sinumerik's M17 has no P-jump form, so there is no +redirect path here. +

+

+Triggers: M17 arrives in Parsing.Flags via +NumberedFlagSyntax; RET via the +FlagSyntax word table. +

+

+Known limitation — early return. Because the return is the +natural pipeline tail, an M17/RET in the middle +of a body (e.g. inside an IF branch) pops the frame but does +not truncate the remaining inlined blocks — they still execute. +Honoring a mid-body return needs body-boundary bookkeeping (a future +work item alongside PROC parameter binding); the corpus places every +return at the body end. +

+
+
+
+
SiemensSystemVariableSyntax
+

Consumes writes to Sinumerik $ system variables the pipeline does +not simulate ($TC_DP… handled elsewhere aside, e.g. +$AC_TIME, $SC_…, non-TR $P_UIFR components). +Siemens counterpart of the Fanuc record-only +FanucSystemControlVariableSyntax pattern:

+
+
+
+
SiemensUifrVariableLookup
+

Reads Sinumerik settable-frame translations +(R100=$P_UIFR[1,X,TR]) from the SiemensFrameTable +on the runner's effective dependency list. Self-gates on the +$P_UIFR[n,axis,TR] key shape so the evaluator's +RuntimeVariableLookups chain can +fall through for other keys (non-TR components fall to the record-only +SiemensSystemVariableSyntax path as unevaluable reads).

+

+State-from-deps flavour: the table is resolved from the call's +dependencies list on every call — never held as a field — +so the lookup survives XML round-trip without a rebind path (the wrapper +anti-pattern ban on IRuntimeVariableLookup). +

+
+
+
+
SiemensUifrWritingSyntax
+

Consumes Sinumerik settable-frame translation writes +($P_UIFR[5,Z,TR]=R102-281.48, probing programs' workpiece +re-referencing idiom) by routing literal numeric assignments from +Parsing.Assignments into the SiemensFrameTable on +the runner's effective dependency list — the write is thereby fully +simulated: a subsequent G54/G505+ selection reads the updated +offset through the existing CoordinateOffset path (X/Y/Z), and +$P_UIFR reads see it via SiemensUifrVariableLookup.

+

+Only literal numeric RHS values are consumed; +VariableEvaluatorSyntax normalizes expression RHS to +literals earlier on the same block. Only the TR component is +bridged — other components (RT, FI) stay in Assignments +and fall to the record-only SiemensSystemVariableSyntax, +which must run after this syntax. Writes to $P_UIFR[0,..] +(G500) are consumed but ignored, matching +SetAxisOffset(string, string, double). +

+

+If no SiemensFrameTable is registered, this syntax is a +no-op (entries stay visible as unconsumed residue). +

+
+
+ + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + 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 d75159e2..1b4cd1ef 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.SubProgramReturnSyntax.html @@ -259,8 +259,8 @@ parameterized match has already consumed the text by the time -

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

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

@@ -271,7 +271,7 @@ default probe list.

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

Parameters

@@ -282,7 +282,7 @@ default probe list.

baseDirectory string

Project base directory propagated to child XFactory calls.

-
progress IProgress<object>
+
progress IProgress<IMessage>

Diagnostic sink propagated to child factories.

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 b861caa2..b81f75ad 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.VariableEvaluatorSyntax.html @@ -6,7 +6,7 @@ - + @@ -173,11 +173,16 @@ The Parsing.* subtree carries the resolved value (R-format string for Assignments; numeric JsonValue for tags); the Formula.* subtree preserves the source-text expression for diagnostics, round-trip reconstruction, and downstream -inspection. Pure-literal RHS / tag values produce no Formula entry — -the Parsing value is already the original text. Evaluation failures -(parse error, vacant variable, non-finite result) also produce no -Formula entry — the original string is still in Parsing.* -untouched, no preservation needed. +inspection. Pure-literal RHS values produce no Formula entry — the +Parsing value is already the original text. In the tag pass the same +holds for the Heidenhain dialect only (literal strings short-circuit +there because klartext readers consume them as strings); Fanuc / +Siemens literal-string tags are numeric-ified as they always were +(int-typed capture fallbacks and constant conditions depend on it) +and thus carry a Formula entry. Evaluation failures (parse error, +vacant variable, non-finite result) produce no Formula entry — the +original string is still in Parsing.* untouched, no +preservation needed.

@@ -301,7 +306,7 @@ untouched, no preservation needed. -

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

+

Loads from an XML element produced by MakeXmlSource(string, string, bool); restores RuntimeVariableLookups via XFactory dispatch. A missing <Dialect> element falls back to Fanuc (legacy files).

@@ -365,6 +370,45 @@ untouched, no preservation needed. + + +

+ Dialect + +

+ +

Expression grammar this evaluator parses with. Default +Fanuc keeps the legacy behavior +byte-identical (Custom Macro B #nnn + brackets); the Siemens +preset sets Siemens for +Rn/named/$ keys and parenthesised grammar. The +evaluation machinery (lookup chain, Formula mirror, diagnostics) is +dialect-independent — only tokenization routes through +NcExpressionDialectUtil.

+
+
+ +
+
public NcExpressionDialect Dialect { get; set; }
+
+ + + + + +

Property Value

+
+
NcExpressionDialect
+
+
+ + + + + + + +

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html index 93cf6853..387f9cbe 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.EvaluationSyntaxs.html @@ -383,11 +383,16 @@ The Parsing.* subtree carries the resolved value (R-format string for Assignments; numeric JsonValue for tags); the Formula.* subtree preserves the source-text expression for diagnostics, round-trip reconstruction, and downstream -inspection. Pure-literal RHS / tag values produce no Formula entry — -the Parsing value is already the original text. Evaluation failures -(parse error, vacant variable, non-finite result) also produce no -Formula entry — the original string is still in Parsing.* -untouched, no preservation needed. +inspection. Pure-literal RHS values produce no Formula entry — the +Parsing value is already the original text. In the tag pass the same +holds for the Heidenhain dialect only (literal strings short-circuit +there because klartext readers consume them as strings); Fanuc / +Siemens literal-string tags are numeric-ified as they always were +(int-typed capture fallbacks and constant conditions depend on it) +and thus carry a Formula entry. Evaluation failures (parse error, +vacant variable, non-finite result) produce no Formula entry — the +original string is still in Parsing.* untouched, no +preservation needed.

@@ -425,6 +430,17 @@ matched name; AbsPath is the fully-resolved I/O target.

+ + +

+Enums +

+
+
LabelScanDirection
+

Scan region and match policy for the anchored +LabelScanUtil overload. Forward scans take the first +match below the anchor line; backward scans take the nearest match +above it.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ISentenceIndexed.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ISentenceIndexed.html index e17dbe54..dd4cf8d6 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ISentenceIndexed.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ISentenceIndexed.html @@ -6,7 +6,7 @@ - + @@ -100,10 +100,9 @@ Interface 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)) +MachiningStep, etc.) when the (FileIndex, LineIndex) source order is not enough because SubProgram inline reorders blocks relative to -(FileIndex, LineIndex).

+source order.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ISessionResettable.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ISessionResettable.html index ad7e1748..f8458759 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ISessionResettable.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ISessionResettable.html @@ -98,12 +98,12 @@ Interface ISessionResettable

Marker for objects that hold session-scoped runtime state which must be -cleared when RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) initializes a new +cleared when RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) initializes a new session pipeline (the state.IsInitialized == false edge).

Implementers may live on either chain: INcDependency or INcSyntax. SoftNcRunner scans -NcDependencyList and +PipelineNcDependencyList and NcSyntaxList on the session-init edge and calls OnSessionReset() on every match.

@@ -170,7 +170,7 @@ counters, file-index allocators, etc.).

Clears the session-scoped subset owned by this object. Called by -RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) on the same edge that +RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) on the same edge that rebuilds the syntax-piece pipeline so a runner reused across sessions does not leak counters / allocators / accumulators from the previous session.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Initializers.HomeMcInitializer.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Initializers.HomeMcInitializer.html index d57c248a..8c556ac7 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Initializers.HomeMcInitializer.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Initializers.HomeMcInitializer.html @@ -6,7 +6,7 @@ - + @@ -99,9 +99,11 @@ Class HomeMcInitializer

Sets the initial MachineCoordinateState on the first SyntaxPiece from IHomeMcConfig and -IMachineAxisConfig. Only configured linear axes are -written; rotary axes (which typically have no home) are omitted — -downstream readers must tolerate missing axis keys.

+IMachineAxisConfig. Every declared axis is written — +rotary axes without a configured home seed at 0 deg, the same value +the runtime's begin/reset teleport re-homes the machining chain to — +so the first motion contour interpolates from the pose the machine +actually holds at t=0 instead of a per-axis “never set” hole.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Initializers.StaticInitializer.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Initializers.StaticInitializer.html index 924fccc2..46904ba5 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Initializers.StaticInitializer.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Initializers.StaticInitializer.html @@ -419,7 +419,20 @@ reading the embedded JSON from the Initialization child element.

-

Siemens default: G54 active, canned-cycle cancelled (G80).

+

Siemens default: no settable work offset active (G500) and +canned-cycle cancelled (the shared G80 inactive sentinel — +Sinumerik has no G80 vocabulary, the marker is internal).

+

+G500 is the Siemens factory default of G group 8 +(Programming Manual Fundamentals 03/2010 §16.3, SAG column): +unlike Fanuc's implicit G54, a Sinumerik activates no settable +frame until the program commands one — a program that never +writes G54-G599 machines in the machine frame. +Group 1's factory default (G1, not G0) is +deliberately NOT seeded: no brand initializer seeds a motion +term — first-block motion semantics are owned uniformly by the +motion syntaxes' absent-state rules. +

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Initializers.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Initializers.html index 7f7708db..c9b5fc12 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Initializers.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Initializers.html @@ -98,9 +98,11 @@ Classes
HomeMcInitializer

Sets the initial MachineCoordinateState on the first SyntaxPiece from IHomeMcConfig and -IMachineAxisConfig. Only configured linear axes are -written; rotary axes (which typically have no home) are omitted — -downstream readers must tolerate missing axis keys.

+IMachineAxisConfig. Every declared axis is written — +rotary axes without a configured home seed at 0 deg, the same value +the runtime's begin/reset teleport re-homes the machining chain to — +so the first motion contour interpolates from the pose the machine +actually holds at t=0 instead of a per-axis “never set” hole.

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 9012d17f..bd9bfb8a 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.UnconsumedCheckSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.InspectionSyntaxs.UnconsumedCheckSyntax.html @@ -261,7 +261,16 @@ Must be placed at the end of

Parsing flags/keys that are known but intentionally unhandled.

+

Parsing flags/keys that are known but intentionally unhandled — listed +entries are silently skipped by this check. This is the per-project +escape hatch for non-M-code residue (sections, dotted keys, vendor +G/word codes) a project has decided is irrelevant, configured via +<Exclude> elements in the project XML. For machine +M-codes prefer IMCodeDeclarationConfig +declarations instead: an empty declaration silences by explicit +intent, and a note-only declaration keeps the code visible as +known-but-unmodeled. Brand presets deliberately ship this set empty — +a silent default would erode the very signal this check exists for.

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Fanuc.FanucKeywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Fanuc.FanucKeywords.html index 1b20c5b9..a9210280 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Fanuc.FanucKeywords.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Fanuc.FanucKeywords.html @@ -155,6 +155,72 @@ For ISO standard codes shared across brands, see + G12p1 + + + + +
+ +
+
public const string G12p1 = "G12.1"
+
+ + + + +

Field Value

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

+ G13p1 + +

+ +

G13.1: end Polar Coordinate Interpolation. Modal counterpart of +G12p1.

+
+
+ +
+
public const string G13p1 = "G13.1"
+
+ + + + +

Field Value

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

G43p4 diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Generic.MotionForm.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Generic.MotionForm.html index a55041b2..5fc11a4e 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Generic.MotionForm.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Generic.MotionForm.html @@ -156,6 +156,40 @@ that resolves the motion into + ClArc + +

+ + +
+ +
+
public const string ClArc = "ClArc"
+
+ + + + +

Field Value

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

ClLinear @@ -164,7 +198,7 @@ that resolves the motion into

Linear interpolation at cutter-location (CL) level with per-step inverse kinematics. Used when RTCP (G43.4/TRAORI/M128) is active and rotary axes move, so the tool orientation changes during -interpolation. Resolved by ClLinearMotionSemantic.

+interpolation. Resolved by ClLinearMcMotionSemantic.

@@ -190,6 +224,39 @@ interpolation. Resolved by + ClTeleport + + + + +
+ +
+
public const string ClTeleport = "ClTeleport"
+
+ + + + +

Field Value

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

McArc @@ -257,6 +324,74 @@ XYZ-only vs XYZABC by checking for rotary axis values in +

+ McPolarArc + +

+ +

Circular interpolation (arc/helix) on the polar hypothetical +plane while Polar Coordinate Interpolation (Fanuc G12.1) is active. +Resolved by McPolarArcMotionSemantic into +ActMcPolarSpiralContour.

+
+
+ +
+
public const string McPolarArc = "McPolarArc"
+
+ + + + +

Field Value

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

+ McPolarLinear + +

+ +

Linear interpolation on the polar hypothetical plane while +Polar Coordinate Interpolation (Fanuc G12.1) is active. Resolved by +McPolarLinearMotionSemantic into +ActMcPolarLinearContour.

+
+
+ +
+
public const string McPolarLinear = "McPolarLinear"
+
+ + + + +

Field Value

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

+Class HeidenhainCall +

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

Block-root record left on a CALL LBL/CALL PGM host block +by HeidenhainSubProgramCallSyntax. +Inlined callee blocks are stamped with a clone of the same record.

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

Properties +

+ + + + +

+ FileName + +

+ +

Bare matched file name for a resolved CALL PGM.

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

Property Value

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

+ Name + +

+ +

Label number/name or called program name (quotes stripped).

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

Property Value

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

+ Rep + +

+ +

Repeat count of the CALL LBL n REP m program-section-repeat +form (the section between LBL n and the call line runs m +extra times). Absent on the plain subprogram-call form.

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

Property Value

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

+ Skipped + +

+ +

true when the call was consumed without inlining (unresolved +program file, label not found, missing LBL 0, or the +call-depth rail) — structured safe-skip, no motion effect.

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

Property Value

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

+ Target + +

+ +

Call target kind: “LBL” or “PGM”.

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

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.UniversalNc.Lang.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Heidenhain.HeidenhainCyclCall.html similarity index 73% rename from App/wwwroot/HiAPI-docsite/api/Hi.UniversalNc.Lang.html rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Heidenhain.HeidenhainCyclCall.html index 083ed95b..8c65b065 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.UniversalNc.Lang.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Heidenhain.HeidenhainCyclCall.html @@ -2,11 +2,11 @@ - Class Lang | HiAPI-C# 2025 + Class HeidenhainCyclCall | HiAPI-C# 2025 - + - + @@ -84,25 +84,29 @@
-
+
-

-Class Lang +

+Class HeidenhainCyclCall

-
Namespace
Hi.UniversalNc
-
Assembly
HiNc.dll
+
Namespace
Hi.NcParsers.Keywords.Heidenhain
+
Assembly
HiMech.dll
-

A strongly-typed resource class, for looking up localized strings, etc.

+

Block-root record left on a cycle-call host block by +HeidenhainCannedCycleSyntax, +making the consumed call visible in cache dumps and carrying the +deferred M140 retract hand-off for +HeidenhainCycleRetractSyntax.

-
public class Lang
+
public class HeidenhainCyclCall
@@ -112,7 +116,7 @@ Class Lang
Inheritance
-
Lang
+
HeidenhainCyclCall
@@ -178,19 +182,19 @@ Class Lang - + -

- CsvBasedNcPlayer +

+ IsoTerm

-

Looks up a localized string similar to CSV-based NC Player.

+

Mapped ISO term the call fired as; absent when the call was consumed without motion effect.

-
public static string CsvBasedNcPlayer { get; }
+
public string IsoTerm { get; set; }
@@ -210,20 +214,19 @@ Class Lang - + -

- Culture +

+ Number

-

Overrides the current thread's CurrentUICulture property for all -resource lookups using this strongly typed resource class.

+

Cycle number of the definition the call resolved against.

-
public static CultureInfo Culture { get; set; }
+
public int Number { get; set; }
@@ -232,7 +235,7 @@ resource lookups using this strongly typed resource class.

Property Value

-
CultureInfo
+
int
@@ -243,19 +246,19 @@ resource lookups using this strongly typed resource class.

- + -

- GrpcClientNcPlayer +

+ Term

-

Looks up a localized string similar to gRPC-based NC Player.

+

Triggering spelling: CYCL CALL, CYCL CALL POS, M99 or M89.

-
public static string GrpcClientNcPlayer { get; }
+
public string Term { get; set; }
@@ -275,38 +278,6 @@ resource lookups using this strongly typed resource class.

- - -

- ResourceManager - -

- -

Returns the cached ResourceManager instance used by this class.

-
-
- -
-
public static ResourceManager ResourceManager { get; }
-
- - - - - -

Property Value

-
-
ResourceManager
-
-
- - - - - - - -
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Heidenhain.HeidenhainGoto.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Heidenhain.HeidenhainGoto.html new file mode 100644 index 00000000..48137d0a --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Heidenhain.HeidenhainGoto.html @@ -0,0 +1,731 @@ + + + + + Class HeidenhainGoto | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainGoto +

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

Heidenhain FN 9–12 conditional jump record +(FN 12: IF +Q1 LT +5 GOTO LBL n). Two lifetimes share the shape:

+
  • Parsing.HeidenhainGoto — written by +HeidenhainGotoParsingSyntax for +all four opcodes, in both the spaced standard spelling and the +compressed post spelling (FN12:IF+Q94 LT+1GOTOLBL"NAME").
  • block-root HeidenhainGoto — stamped by +HeidenhainGotoSyntax after +the control-flow decision, with Fired flipped true on a +successful redirect.
+

+Unlike the Fanuc / Siemens jump records the condition is not one +expression string: the klartext jump grammar is strictly +<value> <comparator> <value>, and the +Heidenhain expression grammar deliberately has no comparison layer +(its bare-word rejection is what keeps the evaluator's Parsing-tree +pass off non-expression strings). The parsing owner therefore +pre-normalises the statement: Lhs/Rhs are +captured as separate value operands (pure literals typed numeric at +capture, Q references kept as strings for the evaluator's pass-2 +substitution) and the comparator spelling is normalised to the shared +comparison words (EQUEQ; NE/GT/LT +as written). The comparison itself happens in the evaluation syntax. +

+

+Klartext has no unconditional jump statement and no direction +mnemonic — a TNC label is unique per program, so the consumer scans +the whole host file and takes the first matching definition +(LBL n / LBL "name"), forward or backward alike. +

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

Fields +

+ + + +

+ OpEq + +

+ +

Op normalised from the klartext EQU spelling.

+
+
+ +
+
public const string OpEq = "EQ"
+
+ + + + +

Field Value

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

+ OpGt + +

+ +

Op for the klartext GT comparator.

+
+
+ +
+
public const string OpGt = "GT"
+
+ + + + +

Field Value

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

+ OpLt + +

+ +

Op for the klartext LT comparator.

+
+
+ +
+
public const string OpLt = "LT"
+
+ + + + +

Field Value

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

+ OpNe + +

+ +

Op for the klartext NE comparator.

+
+
+ +
+
public const string OpNe = "NE"
+
+ + + + +

Field Value

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

+ TermFn10 + +

+ +

Term of the FN 10 (not-equal) jump.

+
+
+ +
+
public const string TermFn10 = "FN10"
+
+ + + + +

Field Value

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

+ TermFn11 + +

+ +

Term of the FN 11 (greater-than) jump.

+
+
+ +
+
public const string TermFn11 = "FN11"
+
+ + + + +

Field Value

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

+ TermFn12 + +

+ +

Term of the FN 12 (less-than) jump.

+
+
+ +
+
public const string TermFn12 = "FN12"
+
+ + + + +

Field Value

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

+ TermFn9 + +

+ +

Term of the FN 9 (equal) jump.

+
+
+ +
+
public const string TermFn9 = "FN9"
+
+ + + + +

Field Value

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

Properties +

+ + + + +

+ ConditionEvaluated + +

+ +

Tri-state comparison outcome stamped by the evaluation syntax: +true — condition met (jump proceeds); false — not met +(falls through silently); null — an operand did not resolve +to a finite numeric (warns +HeidenhainGoto–ConditionNotEvaluated and falls through — +the FN 18 SYSREAD target staying vacant is the designed source of +this state).

+
+
+ +
+
public bool? ConditionEvaluated { get; set; }
+
+ + + + + +

Property Value

+
+
bool?
+
+
+ + + + + + + + + + +

+ Fired + +

+ +

True when the redirect actually replaced the source layer.

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

Property Value

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

+ Label + +

+ +

Target label number or name as written (quotes stripped: +GOTOLBL"SLOW_FEED" captures SLOW_FEED). Numeric labels +canonicalize at match time (“01”1 on a TNC). If a +quoted name collides with a set Q spelling the evaluator may have +substituted a numeric here; the consumer recovers the original text +from the Formula.HeidenhainGoto.Label mirror.

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

Property Value

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

+ Lhs + +

+ +

Left comparison operand. Parsing-side a pure numeric literal is +typed numeric at capture; a Q-reference operand ("+Q94") +stays a string and is substituted in place by +VariableEvaluatorSyntax's pass-2 +walk when it resolves (original text mirrored to +Formula.HeidenhainGoto.Lhs). A still-string operand at the +evaluation syntax means “unresolved” — the jump falls through with +HeidenhainGoto–ConditionNotEvaluated.

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

Property Value

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

+ Op + +

+ +

Comparator normalised to the shared comparison words: one of +OpEq, OpNe, OpGt, +OpLt. Captured from the spelled word (which on a real +TNC always agrees with the opcode).

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

Property Value

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

+ Rhs + +

+ +

Right comparison operand; same contract as Lhs.

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

Property Value

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

+ Term + +

+ +

Statement opcode: one of TermFn9TermFn12, +as spelled in the source (whitespace dropped).

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

Property Value

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

+Class HeidenhainLbl +

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

Block-root record left on a consumed LBL marker block by +HeidenhainSubProgramReturnSyntax. +A plain definition marker produces no motion; the record keeps the +label visible for cache dumps (and the P5 jump family).

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

Properties +

+ + + + +

+ Name + +

+ +

Label number or name (quotes stripped); “0” is the end-of-subprogram sentinel.

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

Property Value

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

+Class MachiningCycleDef +

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

Block-root section carrying the stored Heidenhain machining-cycle +definition (the CYCL DEF 2xx “setup half”). Written by +HeidenhainCannedCycleSyntax on +every block (self-carrying modal state, the P1 datum-shift pattern) — +a klartext definition never executes by itself; execution is gated on +CYCL CALL/M99 (call-once) or M89 (modal call on +positioning blocks), which convert this store into a direct ISO cycle +sub-section under Parsing.

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

Properties +

+ + + + +

+ Armable + +

+ +

Whether a call can execute this definition. false for +unsupported cycle numbers and for definitions whose required +parameters were missing or non-literal.

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

Property Value

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

+ Modal + +

+ +

true while M89 modality is active: the cycle fires on +every positioning block until M99 clears it or a new +CYCL DEF replaces the store.

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

Property Value

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

+ Number + +

+ +

Heidenhain cycle number (e.g. 232, 251, 252, 253, 200).

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

Property Value

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

+ Params + +

+ +

Mapped ISO parameter slots (absolute Z/R, optional +X/Y/Q/F/P) ready for the direct +Parsing.G8x section on a call block.

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

Property Value

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

+ Term + +

+ +

Mapped ISO canned-cycle term (G81/G82/G83). +Absent when the cycle is recognized but not simulated.

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

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Heidenhain.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Heidenhain.html index 88e1db32..fea963aa 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Heidenhain.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Heidenhain.html @@ -91,6 +91,78 @@
+

+Classes +

+
+
HeidenhainCall
+

Block-root record left on a CALL LBL/CALL PGM host block +by HeidenhainSubProgramCallSyntax. +Inlined callee blocks are stamped with a clone of the same record.

+
+
+
+
HeidenhainCyclCall
+

Block-root record left on a cycle-call host block by +HeidenhainCannedCycleSyntax, +making the consumed call visible in cache dumps and carrying the +deferred M140 retract hand-off for +HeidenhainCycleRetractSyntax.

+
+
+
+
HeidenhainGoto
+

Heidenhain FN 9–12 conditional jump record +(FN 12: IF +Q1 LT +5 GOTO LBL n). Two lifetimes share the shape:

+
  • Parsing.HeidenhainGoto — written by +HeidenhainGotoParsingSyntax for +all four opcodes, in both the spaced standard spelling and the +compressed post spelling (FN12:IF+Q94 LT+1GOTOLBL"NAME").
  • block-root HeidenhainGoto — stamped by +HeidenhainGotoSyntax after +the control-flow decision, with Fired flipped true on a +successful redirect.
+

+Unlike the Fanuc / Siemens jump records the condition is not one +expression string: the klartext jump grammar is strictly +<value> <comparator> <value>, and the +Heidenhain expression grammar deliberately has no comparison layer +(its bare-word rejection is what keeps the evaluator's Parsing-tree +pass off non-expression strings). The parsing owner therefore +pre-normalises the statement: Lhs/Rhs are +captured as separate value operands (pure literals typed numeric at +capture, Q references kept as strings for the evaluator's pass-2 +substitution) and the comparator spelling is normalised to the shared +comparison words (EQUEQ; NE/GT/LT +as written). The comparison itself happens in the evaluation syntax. +

+

+Klartext has no unconditional jump statement and no direction +mnemonic — a TNC label is unique per program, so the consumer scans +the whole host file and takes the first matching definition +(LBL n / LBL "name"), forward or backward alike. +

+
+
+
+
HeidenhainLbl
+

Block-root record left on a consumed LBL marker block by +HeidenhainSubProgramReturnSyntax. +A plain definition marker produces no motion; the record keeps the +label visible for cache dumps (and the P5 jump family).

+
+
+
+
MachiningCycleDef
+

Block-root section carrying the stored Heidenhain machining-cycle +definition (the CYCL DEF 2xx “setup half”). Written by +HeidenhainCannedCycleSyntax on +every block (self-carrying modal state, the P1 datum-shift pattern) — +a klartext definition never executes by itself; execution is gated on +CYCL CALL/M99 (call-once) or M89 (modal call on +positioning blocks), which convert this store into a direct ISO cycle +sub-section under Parsing.

+
+

Interfaces

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.IArcMotionDef.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.IArcMotionDef.html index 3ea51f09..7ea6269a 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.IArcMotionDef.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.IArcMotionDef.html @@ -256,6 +256,43 @@ cached on the event — same source of truth as + + +

+ IsIjkAbsolute + +

+ +

True when the source block's I/J/K words addressed the center as +absolute program coordinates (Heidenhain DIN/ISO, G90 in effect). +Stamped only when true — absent means the ordinary start-to-center +offsets. Read by the NcOpt splition write-back, which must emit the +same absolute center on every fragment instead of per-fragment +offsets.

+
+
+ +
+
bool IsIjkAbsolute { get; }
+
+ + + + + +

Property Value

+
+
bool
+
+
+ + + + + + + +
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html index 49183e7a..d6570474 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html @@ -6,7 +6,7 @@ - + @@ -106,12 +106,23 @@ LogicSyntaxs ( G53p1RotaryPositionSyntax, ReferenceReturnSyntax); seeded on the init block by HomeMcInitializer; carried across -non-motion blocks by ModalCarrySyntax.

+non-motion blocks — and per-key completed on partially-written blocks +(an XYZ-only motion block receives the carried modal rotary values) — +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.

+

+After the PostLogic carry the section is a MODAL record: key presence +means "state known", never "this block commanded the axis". Consumers +needing "commanded" must read the block's Parsing words or compare +values against the previous block (see +LinearMotionUtil.HasRotaryMotion). The only presence-as-commanded +carve-out is CompoundMotion.Items[*] item-level sections, which +the carry never touches. +

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 71024aaf..660cbc4c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.IMotionEventDef.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.IMotionEventDef.html @@ -102,7 +102,7 @@ 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) +McArcMotionSemantic, ClLinearMcMotionSemantic) then early-return on distance <= 0 and emit no IAct. NOT carried forward across blocks.

@@ -160,6 +160,21 @@ Property names are used as JSON keys via nameof.

"MotionEvent": { "Form": "McLinear", "IsRapid": false }
+

Remarks

+

+Term source-precedence rule: modal motion (G00/G01/G02/G03) +leaves Term unset because the source G-code is already +latched in the sibling MotionState.Term. +Non-modal one-shots that drive the block's motion themselves — currently +G53.1 (rapid rotary positioning to align with the active tilted +plane), and the same pattern is the intended fit for any future +non-modal motion command — set Term to record the +originating G-code. When Term is non-null, readers should +treat it as the authoritative source for this block; the modal +MotionState in this case is inherited context, not the +block's actual motion driver. +

+

Properties @@ -230,6 +245,83 @@ Property names are used as JSON keys via nameof. + + +

+ PoseStated + +

+ +

True when the writer solved and STATED the full six-axis pose on this +block's MachineCoordinateState +and wants the pose-carrying act (currently the +ClToMcTransformSyntax constant-posture downgrade: its acts are +expanded pose-first, so even an unchanged rotary state must ride the +act). Absent/false for NC blocks: there +McLinearMotionSemantic discriminates by rotary VALUE change — +key presence stopped meaning “commanded” once +ModalCarrySyntax completes every +section with carried modal values.

+
+
+ +
+
bool PoseStated { get; set; }
+
+ + + + + +

Property Value

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

+ Term + +

+ +

Source G-code term, set only when a non-modal one-shot drove +this block's motion (e.g. “G53.1”). Null/absent for modal motion +blocks (G00/G01/G02/G03) whose source is recorded on the sibling +Term. See type-level remarks for the +precedence rule.

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

Property Value

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

+Interface IPolarInterpolationDef +

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

JSON section schemas for Fanuc Polar Coordinate Interpolation (G12.1/G13.1). +Property names are used as JSON keys via nameof.

+

+PolarInterpolationState is the modal valve: its presence on a +block means polar interpolation is active there. It is written by +PolarInterpolationSyntax on the G12.1 block and +re-materialized onto every following block until a G13.1 block ends the +mode (single-step lookback carry, same pattern as +PositioningSyntax — not registered on +ModalCarrySyntax). +

+

+ProgramPolarRxcz is the per-block polar position, relative to +the G12.1 anchor (InitRxcz). Rxcz axes: +X = radius-direction linear axis in mm (the NC word X is a diameter +and is halved on parse), Y = hypothetical rotary-substitute axis in mm, +Z = real Z in mm. The absolute (rotation-center-origin) position used by +the math is InitRxcz + ProgramPolarRxcz, mirroring HardNc +PolarEntry.CentralProgramPolarRxcz. +

+
+
+ +
+
public interface IPolarInterpolationDef
+
+ + + + + + + + +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ PolarInterpolationState + +

+ +

Modal polar-interpolation state section (the valve). +Inner keys: Dir, +InitRxcz.

+
+
+ +
+
JsonObject PolarInterpolationState { get; set; }
+
+ + + + + +

Property Value

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

+ ProgramPolarRxcz + +

+ +

Per-block polar position (anchor-relative Rxcz, mm).

+
+
+ +
+
JsonObject ProgramPolarRxcz { get; set; }
+
+ + + + + +

Property Value

+
+
JsonObject
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ITransformationDef.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ITransformationDef.html index ca727e9d..7e59d952 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ITransformationDef.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.ITransformationDef.html @@ -113,7 +113,7 @@ 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 +(ClLinearMcMotionSemantic) handles per-step IK separately. Use HasDynamicEntry(JsonObject) to detect the presence of any Dynamic entry on this block. diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.MotionEvent.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.MotionEvent.html index 9fac3913..b883e8c5 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.MotionEvent.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.MotionEvent.html @@ -248,6 +248,83 @@ Class MotionEvent + + +

+ PoseStated + +

+ +

True when the writer solved and STATED the full six-axis pose on this +block's MachineCoordinateState +and wants the pose-carrying act (currently the +ClToMcTransformSyntax constant-posture downgrade: its acts are +expanded pose-first, so even an unchanged rotary state must ride the +act). Absent/false for NC blocks: there +McLinearMotionSemantic discriminates by rotary VALUE change — +key presence stopped meaning “commanded” once +ModalCarrySyntax completes every +section with carried modal values.

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

Property Value

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

+ Term + +

+ +

Source G-code term, set only when a non-modal one-shot drove +this block's motion (e.g. “G53.1”). Null/absent for modal motion +blocks (G00/G01/G02/G03) whose source is recorded on the sibling +Term. See type-level remarks for the +precedence rule.

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

Property Value

+
+
string
+
+
+ + + + + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.PathSmoothing.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.PathSmoothing.html index 3ef531ac..c9e3b443 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.PathSmoothing.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.PathSmoothing.html @@ -127,6 +127,7 @@ Class PathSmoothing
Derived
+
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.PolarInterpolation.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.PolarInterpolation.html new file mode 100644 index 00000000..7d022a38 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.PolarInterpolation.html @@ -0,0 +1,516 @@ + + + + + Class PolarInterpolation | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class PolarInterpolation +

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

Inner-key constants of the +PolarInterpolationState section.

+
+
+ +
+
public static class PolarInterpolation
+
+ + + + +
+
Inheritance
+
+ +
PolarInterpolation
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Fields +

+ + + +

+ CompensatedBeginCentral + +

+ +

Motion-section key: where the compensated polar arc's motion begins — +the previous block's CompensatedCentral (falling back to +the nominal previous position when the previous block was not +compensated). Present only on compensated polar arc blocks.

+
+
+ +
+
public const string CompensatedBeginCentral = "CompensatedBeginCentral"
+
+ + + + +

Field Value

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

+ CompensatedCentral + +

+ +

Block-root key holding the radius-compensated position of a polar block +in central (anchor-origin) hypothetical-plane coordinates. Written by +RadiusCompensationSyntax's polar branch; +mirrors HardNc RadiusCompensationBuf.CompensatedPosOnProgramCoordinate +(which stores the anchor-relative twin). Sub-object with X/Y/Z keys in mm.

+
+
+ +
+
public const string CompensatedCentral = "CompensatedCentral"
+
+ + + + +

Field Value

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

+ CompensatedEndCentral + +

+ +

Motion-section key: the compensated polar arc block's final position +(ray intersection or perpendicular offset). Its presence marks the +block's polar arc as radius-compensated, switching +McPolarArcMotionSemantic to the bridged +transient act structure. Mirrors HardNc +RadiusCompensationBuf.CompensatedPosOnProgramCoordinate.

+
+
+ +
+
public const string CompensatedEndCentral = "CompensatedEndCentral"
+
+ + + + +

Field Value

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

+ Dir + +

+ +

Polar plane axis pair key; value e.g. DirXC.

+
+
+ +
+
public const string Dir = "Dir"
+
+ + + + +

Field Value

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

+ DirXC + +

+ +

X linear axis + C rotary axis polar pair (the standard +turn-mill pair; the X radius word is a diameter).

+
+
+ +
+
public const string DirXC = "XC"
+
+ + + + +

Field Value

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

+ DirYA + +

+ +

Y linear axis + A rotary axis (about X) polar pair.

+
+
+ +
+
public const string DirYA = "YA"
+
+ + + + +

Field Value

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

+ DirZB + +

+ +

Z linear axis + B rotary axis (about Y) polar pair.

+
+
+ +
+
public const string DirZB = "ZB"
+
+ + + + +

Field Value

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

+ InitRxcz + +

+ +

Anchor position key — the X/C words on the G12.1 block itself +(X halved from diameter to radius), zero when absent. Sub-object with +X/Y/Z keys in mm.

+
+
+ +
+
public const string InitRxcz = "InitRxcz"
+
+ + + + +

Field Value

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

+ TransientBeginCentral + +

+ +

Motion-section key: point on the compensated arc's offset circle where +the arc motion begins when the previous segment's offset path meets it +at a corner; a linear bridge on the hypothetical plane connects +CompensatedBeginCentral to it. Absent when the adjoining +rays are parallel. Mirrors HardNc +RadiusCompensationBuf.TransientBeginProgramPos.

+
+
+ +
+
public const string TransientBeginCentral = "TransientBeginCentral"
+
+ + + + +

Field Value

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

+ TransientEndCentral + +

+ +

Motion-section key: point on the compensated arc's offset circle where +the arc motion ends when the next segment's offset path meets it at a +corner; a linear bridge on the hypothetical plane connects it to +CompensatedEndCentral. Absent when the adjoining rays are +parallel. Mirrors HardNc +RadiusCompensationBuf.TransientEndProgramPos.

+
+
+ +
+
public const string TransientEndCentral = "TransientEndCentral"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Positioning.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Positioning.html index c9a3c25e..dd73e638 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Positioning.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Positioning.html @@ -216,6 +216,183 @@ Class Positioning +

+ CodedAbsolute + +

+ +

Coded-position absolute mode name (Siemens CAC()): the word +value is an indexing position number, not a coordinate — the +write-stage consumers (McAbcSyntax / +IncrementalResolveSyntax) look the number +up in the machine's indexing table +(IIndexingPositionConfig) and rewrite the +entry to the plain counterpart (Absolute) once the +coordinate is resolved, so the +McAbcCyclicPathSyntax tail-pass never +sees a coded value. Per-word +PositioningOverride value only.

+
+
+ +
+
public const string CodedAbsolute = "CodedAbsolute"
+
+ + + + +

Field Value

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

+ CodedIncremental + +

+ +

Coded-position incremental mode name (Siemens CIC()): the +word value counts indexing positions to advance (positive) or +retreat (negative) from the current position; 0 does not +traverse. Resolved and rewritten by the same consumers as +CodedAbsolute — on a cyclic indexing axis the sign +becomes a PositiveOnly / NegativeOnly +approach so the swing keeps the programmed direction.

+
+
+ +
+
public const string CodedIncremental = "CodedIncremental"
+
+ + + + +

Field Value

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

+ CodedNegativeOnly + +

+ +

Coded-position negative-direction-only mode name (Siemens +CACN()) — the mirror of CodedPositiveOnly, +rewritten to NegativeOnly.

+
+
+ +
+
public const string CodedNegativeOnly = "CodedNegativeOnly"
+
+ + + + +

Field Value

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

+ CodedPositiveOnly + +

+ +

Coded-position positive-direction-only mode name (Siemens +CACP()) — CodedAbsolute lookup rewritten to +PositiveOnly. Rotary indexing axes only.

+
+
+ +
+
public const string CodedPositiveOnly = "CodedPositiveOnly"
+
+ + + + +

Field Value

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

+ CodedShortest + +

+ +

Coded-position shortest-path mode name (Siemens CDC()) — +CodedAbsolute lookup rewritten to +Shortest. Rotary indexing axes only.

+
+
+ +
+
public const string CodedShortest = "CodedShortest"
+
+ + + + +

Field Value

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

Incremental @@ -246,6 +423,118 @@ Class Positioning + +

+ NegativeOnly + +

+ +

Rotary negative-direction-only approach mode name (Siemens +ACN()) — the mirror of PositiveOnly.

+
+
+ +
+
public const string NegativeOnly = "NegativeOnly"
+
+ + + + +

Field Value

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

+ PositiveOnly + +

+ +

Rotary positive-direction-only approach mode name (Siemens +ACP()): absolute target approached by rotating in the +positive axis direction, even when that is the longer way around. +Per-word PositioningOverride value only. Write-stage +consumers fall through to the absolute write; the directional +window swap happens in +McAbcCyclicPathSyntax.

+
+
+ +
+
public const string PositiveOnly = "PositiveOnly"
+
+ + + + +

Field Value

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

+ Shortest + +

+ +

Rotary shortest-path mode name (Siemens DC()): absolute +target reached by the shortest cyclic swing. Only meaningful as a +per-word PositioningOverride value, never as the +modal Mode. The write-stage consumers +(McAbcSyntax / +IncrementalResolveSyntax) deliberately +treat every non-Incremental value as an absolute +write; the shortest swing itself is the +McAbcCyclicPathSyntax tail-pass default +for modular rotary axes, so this value changes no consumer +behavior — it preserves the DC-vs-AC distinction on the block and +lets the tail-pass warn when the axis is not modular rotary (where +the shortest-path promise cannot be honored).

+
+
+ +
+
public const string Shortest = "Shortest"
+
+ + + + +

Field Value

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

Properties

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

+Class PositioningOverride +

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

Per-word positioning override — a non-modal block-root section keyed +by word name (axis words and the I/J/K interpolation parameters) +whose values are Absolute / +Incremental / +Shortest / +PositiveOnly / +NegativeOnly, plus the coded-position +(indexing axis) family CodedAbsolute / +CodedIncremental / +CodedShortest / +CodedPositiveOnly / +CodedNegativeOnly. +Overrides the modal G90/G91 Positioning state (and, for +I/J/K, the default incremental center reading) for the listed words +on this block only.

+

+Written by +SiemensAcIcSyntax when a +word carries one of the Siemens per-word coordinate function +wrappers AC() / IC() / DC() / ACP() / +ACN() or their coded-position counterparts CAC() / +CIC() / CDC() / CACP() / CACN(). +Consumed by +IncrementalResolveSyntax (linear axes) and +McAbcSyntax (rotary axes) — both treat +every non-Incremental value as an absolute write, and both resolve a +coded entry's indexing position number through +CodedPositionUtil and rewrite the entry to +its plain counterpart in place — by +McAbcCyclicPathSyntax (the directional +window for PositiveOnly / +NegativeOnly and the non-modular-axis +boundary warning; it never sees a coded value), and by +SiemensCircularMotionSyntax +(absolute I/J/K center components); words without an entry keep the +default behavior unchanged. The section is not listed in any +ModalCarry key set — it never carries to later blocks. +

+
+
+ +
+
public static class PositioningOverride
+
+ + + + +
+
Inheritance
+
+ +
PositioningOverride
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + +

Examples

+
"PositioningOverride": { "C": "Shortest" }
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.ISiemensPathSmoothingDef.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.ISiemensPathSmoothingDef.html new file mode 100644 index 00000000..41c2dbee --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.ISiemensPathSmoothingDef.html @@ -0,0 +1,487 @@ + + + + + Interface ISiemensPathSmoothingDef | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Interface ISiemensPathSmoothingDef +

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

Siemens path-control / smoothing modal registers recorded by +SiemensPathSmoothingSyntax under the +brand-invariant PathSmoothing section key. Record-only — +simulation does not alter the tool path; the registers exist for +bidirectional NC-text reconstruction and UI display.

+

+Each property mirrors one orthogonal Sinumerik modal group; a property +is absent from the JSON section until its group is first programmed. +IsEnabled is derived: true while a +CYCLE832 high-speed setting is armed (Tolerance present) +or a continuous-path mode (G64/G641/G642) is active. +Term records the token that last +changed the path-control state (a G code or CYCLE832). +

+
+
+ +
+
public interface ISiemensPathSmoothingDef : IPathSmoothingDef
+
+ + + + + + + +
+
Inherited Members
+
+ + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ AccelProfile + +

+ +

Acceleration profile group: SOFT (jerk-limited) / BRISK.

+
+
+ +
+
string AccelProfile { get; set; }
+
+ + + + + +

Property Value

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

+ Compressor + +

+ +

Compressor group: COMPCAD / COMPON / COMPOF.

+
+
+ +
+
string Compressor { get; set; }
+
+ + + + + +

Property Value

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

+ ExactStopCriterion + +

+ +

Exact-stop criterion group: G601 (fine) / G602 (coarse).

+
+
+ +
+
string ExactStopCriterion { get; set; }
+
+ + + + + +

Property Value

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

+ FeedForward + +

+ +

Feedforward group: FFWON / FFWOF.

+
+
+ +
+
string FeedForward { get; set; }
+
+ + + + + +

Property Value

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

+ FeedProfile + +

+ +

Feedrate profile group: FNORM.

+
+
+ +
+
string FeedProfile { get; set; }
+
+ + + + + +

Property Value

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

+ Mode + +

+ +

CYCLE832 technology/mode argument verbatim (e.g. _ORI_FINISH, 1) while armed.

+
+
+ +
+
string Mode { get; set; }
+
+ + + + + +

Property Value

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

+ PathControl + +

+ +

Path-control group: G60 (exact stop) / G64 / G641 / G642 (continuous path).

+
+
+ +
+
string PathControl { get; set; }
+
+ + + + + +

Property Value

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

+ PathReference + +

+ +

Path-reference group: UPATH / SPATH.

+
+
+ +
+
string PathReference { get; set; }
+
+ + + + + +

Property Value

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

+ Tolerance + +

+ +

CYCLE832 machining tolerance (first argument, mm) while armed; +absent when CYCLE832 is cancelled. A non-numeric source argument +(variable/expression) is preserved verbatim as a string in the JSON +section for the future evaluator.

+
+
+ +
+
double? Tolerance { get; set; }
+
+ + + + + +

Property Value

+
+
double?
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.Msg.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.Msg.html new file mode 100644 index 00000000..c44d07c2 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.Msg.html @@ -0,0 +1,242 @@ + + + + + Class Msg | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class Msg +

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

Block-root section recording a Siemens MSG("...") operator +display message, written by +SiemensMsgSyntax. A section +without Text records the bare MSG() clear form. +Record-only: simulation ignores it; the section exists for +bidirectional NC-text reconstruction and UI display.

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

Properties +

+ + + + +

+ Text + +

+ +

Verbatim message text between the quotes; absent for the MSG() clear form.

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

Property Value

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

+Class SiemensCall +

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

Siemens subprogram-call record. Two lifetimes share the shape:

+
  • Parsing.SiemensCall — written by +SiemensCallStatementSyntax when a +whole-line call statement is captured (L9810, L123 P3, +HQ_FC(1,2)). Carries Name, optional verbatim +Args, optional P.
  • block-root SiemensCall — written by +SiemensSubProgramCallSyntax on +the host block and on every inlined body block once the call is +consumed. FileName records the resolved subprogram file; +Skipped marks the safe-skip outcome (no file found — +OEM / measuring cycles like HQ_FC, Renishaw L9810) where +the call is consumed with zero motion effect and a structured +warning replaces the raw unparsed-text noise.
+
+
+ +
+
public class SiemensCall
+
+ + + + +
+
Inheritance
+
+ +
SiemensCall
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ Args + +

+ +

Verbatim positional argument strings from the parenthesized form +(HQ_FC(1,2)[“1”,“2”]). Absent for bare calls. +P4 records but does not bind them — argument-to-PROC-parameter +binding is a later work item; a resolved call with arguments +emits SiemensCall–ArgsNotBound.

+
+
+ +
+
public string[] Args { get; set; }
+
+ + + + + +

Property Value

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

+ FileName + +

+ +

Bare matched file name (e.g. “L9810.SPF”) when the call resolved; null when skipped.

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

Property Value

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

+ Name + +

+ +

Called name exactly as written: “L9810”, “HQ_FC”, “MY_SUB”.

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

Property Value

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

+ P + +

+ +

Repeat count from the trailing P word (L123 P3); defaults to 1 when absent.

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

Property Value

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

+ Skipped + +

+ +

True when no subprogram file resolved and the call was consumed as a structured safe-skip.

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

Property Value

+
+
bool
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.FluteZData.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.SiemensFor.html similarity index 60% rename from App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.FluteZData.html rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.SiemensFor.html index fa802266..a52af0ae 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.FluteZData.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.SiemensFor.html @@ -2,11 +2,11 @@ - Class FluteZData | HiAPI-C# 2025 + Class SiemensFor | HiAPI-C# 2025 - + - + @@ -84,25 +84,32 @@
-
+
-

-Class FluteZData +

+Class SiemensFor

-
Namespace
Hi.MillingForces
+
Namespace
Hi.NcParsers.Keywords.Siemens
Assembly
HiMech.dll
-

Represents data for a flute at a specific Z position during milling operation

+

Siemens FOR <var> = <start> TO <end> ... ENDFOR +counting-loop record. The Parsing capture stores the start expression +as a single-entry Init map ({ “R1”: 0 }) — the variable +name is a JSON key, which the evaluator's pass-2 tree walk +never rewrites (values only), so a loop variable whose name matches a +set named variable is not clobbered; the start/end values are +substituted normally. The block-root stamp records the loop variable +and its per-iteration Value.

-
public class FluteZData
+
public class SiemensFor
@@ -112,7 +119,7 @@ Class FluteZData
Inheritance
-
FluteZData
+
SiemensFor
@@ -139,6 +146,9 @@ Class FluteZData +
@@ -171,42 +181,32 @@ Class FluteZData -

Constructors +

Fields

- -

- FluteZData(SpanContourPos4d, SpanContourPos4d, SpanContourPos4d, double, double) +

+ InitKey

-

Initializes a new instance of the FluteZData class

+

JSON key of the single-entry init map under +Parsing.SiemensFor: Init = { <var>: <start> }.

-
public FluteZData(SpanContourPos4d cur, SpanContourPos4d floor, SpanContourPos4d ceil, double z, double zInterval)
+
public const string InitKey = "Init"
-

Parameters

+ + + +

Field Value

-
cur SpanContourPos4d
-

Current contour position

-
-
floor SpanContourPos4d
-

Floor contour position

-
-
ceil SpanContourPos4d
-

Ceiling contour position

-
-
z double
-

Z coordinate in millimeters

-
-
zInterval double
-

Z interval in millimeters

-
+
string
+
@@ -218,26 +218,87 @@ Class FluteZData +

+ TermEndfor + +

+ +

Loop terminator term.

+
+
+ +
+
public const string TermEndfor = "ENDFOR"
+
+ + + + +

Field Value

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

+ TermFor + +

+ +

Loop entry term.

+
+
+ +
+
public const string TermFor = "FOR"
+
+ + + + +

Field Value

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

Properties

- + -

- Ds +

+ End

-

Gets or sets the differential length element along the flute path in millimeters. -The flute length depends on dz.

+

Inclusive end bound. Parsing-side it is the raw end expression +(literal written numeric, expression written string for the +evaluator); the loop frame captures the resolved value once at loop +entry — Sinumerik evaluates FOR bounds once, not per iteration.

-
public double Ds { get; set; }
+
public double End { get; set; }
@@ -257,19 +318,19 @@ The flute length depends on dz.

- + -

- Dz +

+ Term

-

Gets the Z interval (height difference) in millimeters

+
-
public double Dz { get; }
+
public string Term { get; set; }
@@ -277,173 +338,9 @@ The flute length depends on dz.

Property Value

-
-
double
-
-
- - - - - - - - - - -

- InitialPhi_rad - -

- -

Gets or sets the original phi angle (angular position on XY plane) in radians. -Phi angle is angular position on XY plane from the flute edge to tool running direction. -The value here has not considered the spindle angular shift.

-
-
- -
-
public double InitialPhi_rad { get; set; }
-
- - - - - -

Property Value

-
-
double
-
-
- - - - - - - - - - -

- Kappa_rad - -

- -

Gets or sets the kappa angle (angle between cutting edge and tool axis) in radians

-
-
- -
-
public double Kappa_rad { get; set; }
-
- - - - - -

Property Value

-
-
double
-
-
- - - - - - - - - - -

- R - -

- -

Gets or sets the radius at the current Z position in millimeters

-
-
- -
-
public double R { get; set; }
-
- - - - - -

Property Value

-
-
double
-
-
- - - - - - - - - - -

- Z - -

- -

Gets or sets the Z coordinate in millimeters

-
-
- -
-
public double Z { get; set; }
-
- - - - - -

Property Value

-
-
double
-
-
- - - - - - - - -

Methods -

- - - - -

- ToString() - -

- -

Returns a string representation of the FluteZData

-
-
- -
-
public override string ToString()
-
- - -

Returns

string
-

A string containing the values of R, Z, Phi angle in degrees, Kappa angle in degrees, and Ds

-
+
@@ -453,6 +350,67 @@ The value here has not considered the spindle angular shift.

+ + +

+ Value + +

+ +

Current counter value assigned on this FOR arrival, stamp-side.

+
+
+ +
+
public double Value { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ Var + +

+ +

Loop variable name (“R1” or a named variable), stamp-side.

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

Property Value

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

+Class SiemensGoto +

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

Siemens GOTOF/GOTOB jump record. Two lifetimes share the +shape:

+
  • Parsing.SiemensGoto — written by +SiemensGotoParsingSyntax for both +the bare jump (GOTOF LBL1) and the single-line conditional +(IF R1==1 GOTOF LBL1).
  • block-root SiemensGoto — stamped by +SiemensGotoSyntax after the +control-flow decision, with Fired flipped true on a +successful redirect.
+

+Unlike Fanuc's numbered GOTO n, the target is a named label +(LBL1: line) or an N<num> block number; direction +is explicit in the mnemonic — GOTOF scans forward from the host +line, GOTOB scans backward to the nearest label above. +

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

Fields +

+ + + +

+ TermGotob + +

+ +

Bare backward jump term.

+
+
+ +
+
public const string TermGotob = "GOTOB"
+
+ + + + +

Field Value

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

+ TermGotof + +

+ +

Bare forward jump term.

+
+
+ +
+
public const string TermGotof = "GOTOF"
+
+ + + + +

Field Value

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

+ TermIfGotob + +

+ +

Conditional backward jump term (IF <cond> GOTOB <label>).

+
+
+ +
+
public const string TermIfGotob = "IF...GOTOB"
+
+ + + + +

Field Value

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

+ TermIfGotof + +

+ +

Conditional forward jump term (IF <cond> GOTOF <label>).

+
+
+ +
+
public const string TermIfGotof = "IF...GOTOF"
+
+ + + + +

Field Value

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

Properties +

+ + + + +

+ Condition + +

+ +

Raw boolean expression text of the conditional forms at Parsing +time; substituted to a numeric JSON value in place by +VariableEvaluatorSyntax when it +evaluates successfully. Absent for the bare forms. Not written on +the host-level stamp; the gate outcome lives at +ConditionEvaluated and the original text at +Formula.SiemensGoto.Condition.

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

Property Value

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

+ ConditionEvaluated + +

+ +

Tri-state outcome of the conditional forms: true — condition +met (jump proceeds); false — not met (falls through +silently); null — evaluator could not produce a finite truth +value (warns SiemensGoto–ConditionNotEvaluated and falls +through). Absent on the bare forms.

+
+
+ +
+
public bool? ConditionEvaluated { get; set; }
+
+ + + + + +

Property Value

+
+
bool?
+
+
+ + + + + + + + + + +

+ Fired + +

+ +

True when the redirect actually replaced the source layer.

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

Property Value

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

+ Label + +

+ +

Target label identifier as written (“LBL1”, “MARKE_A”, +or an N-number form like “N100”). If the identifier +collides with a set named variable, the evaluator's pass-2 tree walk +may substitute a numeric here; the consumer recovers the original +text from the Formula.SiemensGoto.Label mirror.

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

Property Value

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

+ Term + +

+ +

Triggering phrase: one of TermGotof, +TermGotob, TermIfGotof, +TermIfGotob.

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

Property Value

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

+Class SiemensIf +

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

Siemens IF/ELSE/ENDIF block-conditional record. +Parsing.SiemensIf carries the captured phrase; the block-root +stamp written by SiemensIfSyntax +adds the gate outcome. Unlike the loop family there is no frame stack: +an ELSE reached in the normal stream always means the true +branch just finished (a false condition jumps past the ELSE +line directly), so ELSE unconditionally skips to its matching +ENDIF and ENDIF itself is a consumed no-op.

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

Fields +

+ + + +

+ TermElse + +

+ +

Alternative-branch separator term.

+
+
+ +
+
public const string TermElse = "ELSE"
+
+ + + + +

Field Value

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

+ TermEndif + +

+ +

Block-conditional terminator term.

+
+
+ +
+
public const string TermEndif = "ENDIF"
+
+ + + + +

Field Value

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

+ TermIf + +

+ +

Block-conditional entry term.

+
+
+ +
+
public const string TermIf = "IF"
+
+ + + + +

Field Value

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

Properties +

+ + + + +

+ Condition + +

+ +

Raw condition text on the IF phrase (no brackets on +Sinumerik); substituted in place by the evaluator's pass-2 walk. +Absent on ELSE/ENDIF. Original text survives at +Formula.SiemensIf.Condition.

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

Property Value

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

+ ConditionEvaluated + +

+ +

Tri-state gate outcome stamped on the IF host: true — +then-branch executes; false — forward-jump to after the +matching ELSE (or ENDIF when no else-branch exists); +null — unresolved condition, warns and falls through into +the then-branch (no redirect on unresolved input).

+
+
+ +
+
public bool? ConditionEvaluated { get; set; }
+
+ + + + + +

Property Value

+
+
bool?
+
+
+ + + + + + + + + + +

+ Term + +

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

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.SiemensKeywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.SiemensKeywords.html index 6f58629b..41c8ba07 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.SiemensKeywords.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.SiemensKeywords.html @@ -154,6 +154,719 @@ Class SiemensKeywords +

+ Amirror + +

+ +

AMIRROR: Additive programmable-frame mirroring.

+
+
+ +
+
public const string Amirror = "AMIRROR"
+
+ + + + +

Field Value

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

+ Arot + +

+ +

AROT: Additive programmable-frame rotation.

+
+
+ +
+
public const string Arot = "AROT"
+
+ + + + +

Field Value

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

+ Arots + +

+ +

AROTS: Additive programmable-frame rotation via solid angles (behaves like Arot).

+
+
+ +
+
public const string Arots = "AROTS"
+
+ + + + +

Field Value

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

+ Ascale + +

+ +

ASCALE: Additive programmable-frame scaling.

+
+
+ +
+
public const string Ascale = "ASCALE"
+
+ + + + +

Field Value

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

+ Atrans + +

+ +

ATRANS: Additive programmable-frame translation.

+
+
+ +
+
public const string Atrans = "ATRANS"
+
+ + + + +

Field Value

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

+ Brisk + +

+ +

BRISK: Stepped (brisk) axis acceleration profile.

+
+
+ +
+
public const string Brisk = "BRISK"
+
+ + + + +

Field Value

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

+ CompCad + +

+ +

COMPCAD: CAD-quality compressor on.

+
+
+ +
+
public const string CompCad = "COMPCAD"
+
+ + + + +

Field Value

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

+ CompOf + +

+ +

COMPOF: Compressor off.

+
+
+ +
+
public const string CompOf = "COMPOF"
+
+ + + + +

Field Value

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

+ CompOn + +

+ +

COMPON: Compressor on.

+
+
+ +
+
public const string CompOn = "COMPON"
+
+ + + + +

Field Value

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

+ CrTag + +

+ +

CR: Arc radius address (equals form, e.g. CR=5.5); sign selects the ≤180°/>180° arc.

+
+
+ +
+
public const string CrTag = "CR"
+
+ + + + +

Field Value

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

+ Crots + +

+ +

CROTS: Frame rotation with solid angles referencing the valid frame in the control's frame database — not simulated (no database frame chain offline).

+
+
+ +
+
public const string Crots = "CROTS"
+
+ + + + +

Field Value

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

+ Cut3dc + +

+ +

CUT3DC: 3D circumferential cutter compensation mode word (used with TRAORI) — recognized, not simulated (radius compensation stays 2D offline).

+
+
+ +
+
public const string Cut3dc = "CUT3DC"
+
+ + + + +

Field Value

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

+ Cycle800 + +

+ +

CYCLE800: Swivel cycle (tilted work plane + implicit rotary positioning).

+
+
+ +
+
public const string Cycle800 = "CYCLE800"
+
+ + + + +

Field Value

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

+ Cycle81 + +

+ +

CYCLE81: Drilling / centering cycle (rapid retract).

+
+
+ +
+
public const string Cycle81 = "CYCLE81"
+
+ + + + +

Field Value

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

+ Cycle82 + +

+ +

CYCLE82: Drilling / counterboring cycle (dwell at depth).

+
+
+ +
+
public const string Cycle82 = "CYCLE82"
+
+ + + + +

Field Value

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

+ Cycle83 + +

+ +

CYCLE83: Deep-hole drilling cycle (chip-break / stock-removal pecking).

+
+
+ +
+
public const string Cycle83 = "CYCLE83"
+
+ + + + +

Field Value

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

+ Cycle832 + +

+ +

CYCLE832: High-speed-settings cycle (tolerance + machining mode).

+
+
+ +
+
public const string Cycle832 = "CYCLE832"
+
+ + + + +

Field Value

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

+ Cycle85 + +

+ +

CYCLE85: Reaming / boring cycle (feed in, feed out).

+
+
+ +
+
public const string Cycle85 = "CYCLE85"
+
+ + + + +

Field Value

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

+ Else + +

+ +

ELSE: Alternative branch of a block conditional.

+
+
+ +
+
public const string Else = "ELSE"
+
+ + + + +

Field Value

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

+ Endfor + +

+ +

ENDFOR: Counting loop terminator.

+
+
+ +
+
public const string Endfor = "ENDFOR"
+
+ + + + +

Field Value

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

+ Endif + +

+ +

ENDIF: Block-conditional terminator.

+
+
+ +
+
public const string Endif = "ENDIF"
+
+ + + + +

Field Value

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

+ Endloop + +

+ +

ENDLOOP: Endless loop terminator (back-jump; offline replay bounded by the loop watchdog).

+
+
+ +
+
public const string Endloop = "ENDLOOP"
+
+ + + + +

Field Value

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

+ Endwhile + +

+ +

ENDWHILE: Pre-test loop terminator.

+
+
+ +
+
public const string Endwhile = "ENDWHILE"
+
+ + + + +

Field Value

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

ExtendedCoordinateSeries @@ -185,6 +898,161 @@ Class SiemensKeywords +

+ Ffwof + +

+ +

FFWOF: Feedforward control off.

+
+
+ +
+
public const string Ffwof = "FFWOF"
+
+ + + + +

Field Value

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

+ Ffwon + +

+ +

FFWON: Feedforward control on.

+
+
+ +
+
public const string Ffwon = "FFWON"
+
+ + + + +

Field Value

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

+ Fnorm + +

+ +

FNORM: Feedrate profile — F value applies as a constant per block (DIN 66025 default).

+
+
+ +
+
public const string Fnorm = "FNORM"
+
+ + + + +

Field Value

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

+ For + +

+ +

FOR: Counting loop entry (FOR var = start TO end ... ENDFOR).

+
+
+ +
+
public const string For = "FOR"
+
+ + + + +

Field Value

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

+ G153 + +

+ +

G153: Suppress all frames (incl. base/system) for one block.

+
+
+ +
+
public const string G153 = "G153"
+
+ + + + +

Field Value

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

G500 @@ -216,6 +1084,1194 @@ Class SiemensKeywords +

+ G60 + +

+ +

G60: Exact stop (modal).

+
+
+ +
+
public const string G60 = "G60"
+
+ + + + +

Field Value

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

+ G601 + +

+ +

G601: Exact-stop criterion — fine positioning window.

+
+
+ +
+
public const string G601 = "G601"
+
+ + + + +

Field Value

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

+ G602 + +

+ +

G602: Exact-stop criterion — coarse positioning window.

+
+
+ +
+
public const string G602 = "G602"
+
+ + + + +

Field Value

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

+ G64 + +

+ +

G64: Continuous-path mode.

+
+
+ +
+
public const string G64 = "G64"
+
+ + + + +

Field Value

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

+ G641 + +

+ +

G641: Continuous-path mode with programmable blending distance (ADIS).

+
+
+ +
+
public const string G641 = "G641"
+
+ + + + +

Field Value

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

+ G642 + +

+ +

G642: Continuous-path mode with axis-tolerance blending.

+
+
+ +
+
public const string G642 = "G642"
+
+ + + + +

Field Value

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

+ G70 + +

+ +

G70: Inch input system (geometry words only; feed stays as configured).

+
+
+ +
+
public const string G70 = "G70"
+
+ + + + +

Field Value

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

+ G700 + +

+ +

G700: Inch input system incl. feedrate interpretation.

+
+
+ +
+
public const string G700 = "G700"
+
+ + + + +

Field Value

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

+ G71 + +

+ +

G71: Metric input system (geometry words only).

+
+
+ +
+
public const string G71 = "G71"
+
+ + + + +

Field Value

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

+ G710 + +

+ +

G710: Metric input system incl. feedrate interpretation.

+
+
+ +
+
public const string G710 = "G710"
+
+ + + + +

Field Value

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

+ G74 + +

+ +

G74: Reference-point approach — the axes written in the block travel +to their machine reference point (not the Fanuc LH tapping cycle; +the Siemens preset excludes G74 from the canned-cycle vocabulary). +Non-modal; axis values are dummies; machine coordinates, frames +bypassed. Consumed by +SiemensFixedPointReturnSyntax.

+
+
+ +
+
public const string G74 = "G74"
+
+ + + + +

Field Value

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

+ G75 + +

+ +

G75: Fixed-point approach — like G74 but targeting a +machine-data fixed point (MD30600 $MA_FIX_POINT_POS, not yet +modeled — see +SiemensFixedPointReturnSyntax).

+
+
+ +
+
public const string G75 = "G75"
+
+ + + + +

Field Value

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

+ Gotob + +

+ +

GOTOB: Jump backward (toward start of program) to a label or block number.

+
+
+ +
+
public const string Gotob = "GOTOB"
+
+ + + + +

Field Value

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

+ Gotof + +

+ +

GOTOF: Jump forward (toward end of program) to a label or block number.

+
+
+ +
+
public const string Gotof = "GOTOF"
+
+ + + + +

Field Value

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

+ If + +

+ +

IF: Conditional — block form (IF cond ... ENDIF) or single-line jump (IF cond GOTOF lbl).

+
+
+ +
+
public const string If = "IF"
+
+ + + + +

Field Value

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

+ Loop + +

+ +

LOOP: Endless loop entry (LOOP ... ENDLOOP; exits via jump or return).

+
+
+ +
+
public const string Loop = "LOOP"
+
+ + + + +

Field Value

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

+ M17 + +

+ +

M17: Subprogram end (return to caller).

+
+
+ +
+
public const string M17 = "M17"
+
+ + + + +

Field Value

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

+ Mcall + +

+ +

MCALL: Modal subprogram/cycle call — re-executed at every subsequent motion block; bare MCALL cancels.

+
+
+ +
+
public const string Mcall = "MCALL"
+
+ + + + +

Field Value

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

+ Mirror + +

+ +

MIRROR: Absolute programmable-frame mirroring.

+
+
+ +
+
public const string Mirror = "MIRROR"
+
+ + + + +

Field Value

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

+ Proc + +

+ +

PROC: Subprogram declaration header (program name + parameter list).

+
+
+ +
+
public const string Proc = "PROC"
+
+ + + + +

Field Value

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

+ Repeat + +

+ +

REPEAT: Repeat the program section between two labels (REPEAT LBL1 LBL0 P=n).

+
+
+ +
+
public const string Repeat = "REPEAT"
+
+ + + + +

Field Value

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

+ Ret + +

+ +

RET: Subprogram return without function output (M17 sibling).

+
+
+ +
+
public const string Ret = "RET"
+
+ + + + +

Field Value

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

+ Rot + +

+ +

ROT: Absolute programmable-frame rotation (resets the whole programmable frame).

+
+
+ +
+
public const string Rot = "ROT"
+
+ + + + +

Field Value

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

+ Rots + +

+ +

ROTS: Absolute programmable-frame rotation via solid angles (behaves like Rot; two angles orient a plane, the first-named axis stays in its old plane).

+
+
+ +
+
public const string Rots = "ROTS"
+
+ + + + +

Field Value

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

+ RplTag + +

+ +

RPL: Rotation in the active plane (equals form, e.g. ROT RPL=45) — around the G17/G18/G19 plane normal.

+
+
+ +
+
public const string RplTag = "RPL"
+
+ + + + +

Field Value

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

+ Scale + +

+ +

SCALE: Absolute programmable-frame scaling.

+
+
+ +
+
public const string Scale = "SCALE"
+
+ + + + +

Field Value

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

+ Soft + +

+ +

SOFT: Jerk-limited (soft) axis acceleration profile.

+
+
+ +
+
public const string Soft = "SOFT"
+
+ + + + +

Field Value

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

+ Spath + +

+ +

SPATH: Path parameter follows arc length (path-reference group, vs UPATH).

+
+
+ +
+
public const string Spath = "SPATH"
+
+ + + + +

Field Value

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

+ Stopre + +

+ +

STOPRE: Stop the preprocessing run (block-search buffer sync). No offline effect.

+
+
+ +
+
public const string Stopre = "STOPRE"
+
+ + + + +

Field Value

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

+ Supa + +

+ +

SUPA: Suppress all frames plus handwheel (DRF) / external offsets for +one block. Superset of G153; in this pipeline both reduce +to a one-shot machine-coordinate move.

+
+
+ +
+
public const string Supa = "SUPA"
+
+ + + + +

Field Value

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

+ To + +

+ +

TO: Bound separator inside the FOR statement.

+
+
+ +
+
public const string To = "TO"
+
+ + + + +

Field Value

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

+ Trafoof + +

+ +

TRAFOOF: All kinematic transformations off (ends TRAORI; plain length compensation stays).

+
+
+ +
+
public const string Trafoof = "TRAFOOF"
+
+ + + + +

Field Value

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

+ Trans + +

+ +

TRANS: Absolute programmable-frame translation (resets the whole programmable frame).

+
+
+ +
+
public const string Trans = "TRANS"
+
+ + + + +

Field Value

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

+ Traori + +

+ +

TRAORI: Orientation transformation on (RTCP — tool length follows tool orientation).

+
+
+ +
+
public const string Traori = "TRAORI"
+
+ + + + +

Field Value

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

+ TurnTag + +

+ +

TURN: Additional full-circle count for helices (equals form, e.g. TURN=16).

+
+
+ +
+
public const string TurnTag = "TURN"
+
+ + + + +

Field Value

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

+ Until + +

+ +

UNTIL: Post-test loop condition (REPEAT ... UNTIL cond; the bare REPEAT opens the loop).

+
+
+ +
+
public const string Until = "UNTIL"
+
+ + + + +

Field Value

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

+ Upath + +

+ +

UPATH: Path parameter follows spline parameter (path-reference group, vs SPATH).

+
+
+ +
+
public const string Upath = "UPATH"
+
+ + + + +

Field Value

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

+ While + +

+ +

WHILE: Pre-test loop entry (WHILE cond ... ENDWHILE).

+
+
+ +
+
public const string While = "WHILE"
+
+ + + + +

Field Value

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

+Class SiemensLabel +

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

Block-root record for a Siemens label line (LBL1:), written by +SiemensLabelSyntax. Labels are +passive jump targets — the record only makes the consumed token +visible to cache dumps and lets +SiemensRepeatSyntax's scan +probe match candidates.

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

Properties +

+ + + + +

+ Name + +

+ +

Label identifier without the trailing colon.

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

Property Value

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

+Class SiemensLoop +

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

Siemens LOOP ... ENDLOOP endless-loop record. The construct has +no exit condition — real programs leave it via GOTOF/GOTOB +or a subprogram return; offline replay is bounded by +SiemensLoopIterationDependency, +which is therefore a hard requirement for the ENDLOOP back-jump +(a missing watchdog suppresses the jump instead of hanging the +pipeline).

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

Fields +

+ + + +

+ TermEndloop + +

+ +

Endless-loop terminator term.

+
+
+ +
+
public const string TermEndloop = "ENDLOOP"
+
+ + + + +

Field Value

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

+ TermLoop + +

+ +

Endless-loop entry term.

+
+
+ +
+
public const string TermLoop = "LOOP"
+
+ + + + +

Field Value

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

Properties +

+ + + + +

+ Term + +

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

Property Value

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

+Class SiemensLoopFrame +

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

One entry on the SiemensLoopFrames stack. Identity is +(Kind, FilePath, BeginLineNo) — the file path disambiguates a +loop line in the main program from the same line number inside an +inlined subprogram, and lets the terminator refuse a cross-file +mismatch.

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

Fields +

+ + + +

+ KindFor + +

+ +

Kind value for FOR frames.

+
+
+ +
+
public const string KindFor = "FOR"
+
+ + + + +

Field Value

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

+ KindLoop + +

+ +

Kind value for LOOP frames.

+
+
+ +
+
public const string KindLoop = "LOOP"
+
+ + + + +

Field Value

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

+ KindRepeat + +

+ +

Kind value for REPEAT/UNTIL frames.

+
+
+ +
+
public const string KindRepeat = "REPEAT"
+
+ + + + +

Field Value

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

+ KindWhile + +

+ +

Kind value for WHILE frames.

+
+
+ +
+
public const string KindWhile = "WHILE"
+
+ + + + +

Field Value

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

Properties +

+ + + + +

+ AdvancePending + +

+ +

FOR frames only: set by the ENDFOR back-jump just before it +rewinds, cleared by the FOR head on arrival. Distinguishes the +legitimate iteration re-arrival (advance the counter) from a +re-entry via GOTOF/GOTOB while the frame is still on +the stack — Sinumerik restarts the construct in that case, so the +FOR head drops the stale frame and re-initialises.

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

Property Value

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

+ BeginLineNo + +

+ +

0-based file line index of the loop-entry block — the back-jump target.

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

Property Value

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

+ End + +

+ +

FOR frames only: inclusive end bound resolved once at loop entry.

+
+
+ +
+
public double End { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ FilePath + +

+ +

Source-level file path of the loop-entry block (Sentence.FilePath relative form).

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

Property Value

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

+ Kind + +

+ +

Construct kind: one of the Kind* constants.

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

Property Value

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

+ Value + +

+ +

FOR frames only: current counter value.

+
+
+ +
+
public double Value { get; set; }
+
+ + + + + +

Property Value

+
+
double
+
+
+ + + + + + + + + + +

+ Var + +

+ +

FOR frames only: loop variable name.

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

Property Value

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

+Class SiemensLoopFrames +

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

Block-root carrier for the active Siemens loop-construct stack, +mutated by SiemensLoopSyntax at +the Evaluation stage and carried block-to-block by +ModalCarrySyntax's Logic tracked-key +list (plus an eager previous-block clone inside the loop syntax +itself, mirroring the Fanuc WhileFrames pattern). Wrapped in a +JSON object ({ “Frames”: [ ... ] }) rather than a bare array so +the ModalCarry deep-clone JsonObject carry applies — the same reason +CallStack wraps its frame list.

+

+A single shared stack (rather than one per construct kind) is what +makes mixed-construct nesting work: a FOR inside a +WHILE pushes on top of the WHILE frame, and each terminator +validates that the innermost (last) frame carries its own +Kind. +

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

Fields +

+ + + +

+ FramesKey + +

+ +

JSON key of the frame array (bottom of stack first).

+
+
+ +
+
public const string FramesKey = "Frames"
+
+ + + + +

Field Value

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

+Class SiemensPathSmoothing +

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

Section data holder for ISiemensPathSmoothingDef.

+
+
+ +
+
public class SiemensPathSmoothing : PathSmoothing, ISiemensPathSmoothingDef, IPathSmoothingDef
+
+ + + + +
+
Inheritance
+
+ + +
SiemensPathSmoothing
+
+
+ +
+
Implements
+
+ + +
+
+ + +
+
Inherited Members
+
+ + + + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Properties +

+ + + + +

+ AccelProfile + +

+ +

Acceleration profile group: SOFT (jerk-limited) / BRISK.

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

Property Value

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

+ Compressor + +

+ +

Compressor group: COMPCAD / COMPON / COMPOF.

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

Property Value

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

+ ExactStopCriterion + +

+ +

Exact-stop criterion group: G601 (fine) / G602 (coarse).

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

Property Value

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

+ FeedForward + +

+ +

Feedforward group: FFWON / FFWOF.

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

Property Value

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

+ FeedProfile + +

+ +

Feedrate profile group: FNORM.

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

Property Value

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

+ Mode + +

+ +

CYCLE832 technology/mode argument verbatim (e.g. _ORI_FINISH, 1) while armed.

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

Property Value

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

+ PathControl + +

+ +

Path-control group: G60 (exact stop) / G64 / G641 / G642 (continuous path).

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

Property Value

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

+ PathReference + +

+ +

Path-reference group: UPATH / SPATH.

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

Property Value

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

+ Tolerance + +

+ +

CYCLE832 machining tolerance (first argument, mm) while armed; +absent when CYCLE832 is cancelled. A non-numeric source argument +(variable/expression) is preserved verbatim as a string in the JSON +section for the future evaluator.

+
+
+ +
+
public double? Tolerance { get; set; }
+
+ + + + + +

Property Value

+
+
double?
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.SiemensProc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.SiemensProc.html new file mode 100644 index 00000000..47c94804 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.SiemensProc.html @@ -0,0 +1,272 @@ + + + + + Class SiemensProc | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensProc +

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

Block-root record for a Siemens PROC declaration header, +written by SiemensProcSyntax. +The declaration is consumed whole (parameter binding is a later work +item); Statement keeps the verbatim remainder visible.

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

Properties +

+ + + + +

+ Name + +

+ +

Declared subprogram name.

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

Property Value

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

+ Statement + +

+ +

Verbatim declaration remainder after the name (parameter list, SAVE/DISPLOF attributes); null when empty.

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

Property Value

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

+Class SiemensRepeat +

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

Siemens REPEAT record. Parsing.SiemensRepeat carries the +captured label pair; the block-root section written by +SiemensRepeatSyntax adds the +firing outcome, and every inlined repetition block is stamped with a +clone carrying Iteration so cache-dump readers can see +which pass a block belongs to.

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

Properties +

+ + + + +

+ End + +

+ +

End label name; null for the single-label form (not simulated in P4).

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

Property Value

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

+ Fired + +

+ +

True when the section was actually inlined for re-execution.

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

Property Value

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

+ Iteration + +

+ +

1-based repetition ordinal stamped on inlined body blocks.

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

Property Value

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

+ P + +

+ +

Repetition count from P=n; defaults to 1 when absent.

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

Property Value

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

+ Start + +

+ +

Start label name (REPEAT LBL1 LBL0“LBL1”).

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

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.IndexedSentence.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.SiemensRepeatUntil.html similarity index 62% rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.IndexedSentence.html rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.SiemensRepeatUntil.html index 5d1d60fc..421f0715 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.IndexedSentence.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.SiemensRepeatUntil.html @@ -2,11 +2,11 @@ - Class IndexedSentence | HiAPI-C# 2025 + Class SiemensRepeatUntil | HiAPI-C# 2025 - + - + @@ -84,29 +84,28 @@
-
+
-

-Class IndexedSentence +

+Class SiemensRepeatUntil

-
Namespace
Hi.NcParsers
+
Namespace
Hi.NcParsers.Keywords.Siemens
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.

+

Siemens REPEAT ... UNTIL <cond> post-test loop record. +The bare REPEAT line (no label — the labelled forms belong to +SiemensRepeat) opens the loop; UNTIL evaluates +the exit condition after each pass.

-
public record IndexedSentence : ISentenceCarrier, IGetSentence, ISentenceIndexed, IEquatable<IndexedSentence>
+
public class SiemensRepeatUntil
@@ -116,19 +115,10 @@ without a SyntaxPie
Inheritance
-
IndexedSentence
+
SiemensRepeatUntil
-
-
Implements
-
- - - - -
-
@@ -187,37 +177,31 @@ without a SyntaxPie -

Constructors +

Fields

-
-

- IndexedSentence(Sentence, int) +

+ TermRepeat

-

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.

+

Post-test loop entry term (bare REPEAT).

-
public IndexedSentence(Sentence Sentence, int SentenceIndex)
+
public const string TermRepeat = "REPEAT"
-

Parameters

+ + + +

Field Value

-
Sentence Sentence
-

The source sentence carried.

-
-
SentenceIndex int
-

0-based ordinal in pipeline execution order.

-
+
string
+
@@ -229,25 +213,55 @@ without a SyntaxPie +

+ TermUntil + +

+ +

Post-test loop condition term.

+
+
+ +
+
public const string TermUntil = "UNTIL"
+
+ + + + +

Field Value

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

Properties

- + -

- Sentence +

+ Condition

-

The source sentence carried.

+

Raw exit-condition text on the UNTIL phrase; substituted in +place by the evaluator. Absent on REPEAT. Original text +survives at Formula.SiemensRepeatUntil.Condition.

-
public Sentence Sentence { get; init; }
+
public string Condition { get; set; }
@@ -256,7 +270,7 @@ without a SyntaxPie

Property Value

-
Sentence
+
string
@@ -267,19 +281,23 @@ without a SyntaxPie - + -

- SentenceIndex +

+ ConditionEvaluated

-

0-based ordinal in pipeline execution order.

+

Tri-state exit outcome per UNTIL arrival: true — loop exits +(falls through); false — back-jump to the matching +REPEAT line for another pass; null — unresolved +condition, warns and exits defensively (no redirect on unresolved +input).

-
public int SentenceIndex { get; init; }
+
public bool? ConditionEvaluated { get; set; }
@@ -288,7 +306,7 @@ without a SyntaxPie

Property Value

-
int
+
bool?
@@ -299,29 +317,28 @@ without a SyntaxPie -

Methods -

+
- - - -

- GetSentence() +

+ Term

-

Returns the source Sentence carried by this object.

+
-
public Sentence GetSentence()
+
public string Term { get; set; }
-

Returns

+ + + +

Property Value

-
Sentence
+
string
@@ -333,9 +350,6 @@ without a SyntaxPie - - -
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.SiemensWhile.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.SiemensWhile.html new file mode 100644 index 00000000..3c2e1393 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.SiemensWhile.html @@ -0,0 +1,376 @@ + + + + + Class SiemensWhile | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class SiemensWhile +

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

Siemens WHILE ... ENDWHILE pre-test loop record. +Parsing.SiemensWhile carries the captured phrase; the block-root +stamp adds the per-arrival gate outcome. Loop state lives on the +shared SiemensLoopFrames stack managed by +SiemensLoopSyntax.

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

Fields +

+ + + +

+ TermEndwhile + +

+ +

Loop terminator term.

+
+
+ +
+
public const string TermEndwhile = "ENDWHILE"
+
+ + + + +

Field Value

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

+ TermWhile + +

+ +

Loop entry term.

+
+
+ +
+
public const string TermWhile = "WHILE"
+
+ + + + +

Field Value

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

Properties +

+ + + + +

+ Condition + +

+ +

Raw condition text on the WHILE phrase; substituted in place +by the evaluator. Absent on ENDWHILE. Original text survives +at Formula.SiemensWhile.Condition.

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

Property Value

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

+ ConditionEvaluated + +

+ +

Tri-state gate outcome per WHILE arrival: true — body +executes; false — loop exits (forward-jump past the matching +ENDWHILE); null — unresolved condition, warns and +exits the loop defensively (Fanuc WHILE precedent).

+
+
+ +
+
public bool? ConditionEvaluated { get; set; }
+
+ + + + + +

Property Value

+
+
bool?
+
+
+ + + + + + + + + + +

+ Term + +

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

Property Value

+
+
string
+
+
+ + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceUtil.AnglePack.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.Stopre.html similarity index 77% rename from App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceUtil.AnglePack.html rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.Stopre.html index e9abc313..45829e66 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.MillingForces.MillingForceUtil.AnglePack.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.Stopre.html @@ -2,11 +2,11 @@ - Class MillingForceUtil.AnglePack | HiAPI-C# 2025 + Class Stopre | HiAPI-C# 2025 - + - + @@ -84,25 +84,29 @@
-
+
-

-Class MillingForceUtil.AnglePack +

+Class Stopre

-
Namespace
Hi.MillingForces
+
Namespace
Hi.NcParsers.Keywords.Siemens
Assembly
HiMech.dll
-

Container class for angle-specific calculations during milling operation

+

Block-root section recording a consumed Siemens STOPRE +(stop preprocessing / block-search buffer sync), written by +SiemensStopreSyntax. STOPRE has no +effect in offline simulation — the section exists solely so the token +survives for bidirectional NC-text reconstruction.

-
public class MillingForceUtil.AnglePack
+
public class Stopre
@@ -112,7 +116,7 @@ Class MillingForceUtil.AnglePack
Inheritance
-
MillingForceUtil.AnglePack
+
Stopre
@@ -174,6 +178,42 @@ Class MillingForceUtil.AnglePack +

Properties +

+ + + + +

+ Term + +

+ +

Source token, always STOPRE.

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

Property Value

+
+
string
+
+
+ + + + + + + +
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.html index 50a84d5e..4e45718b 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Siemens.html @@ -94,9 +94,199 @@

Classes

+
+
Msg
+

Block-root section recording a Siemens MSG("...") operator +display message, written by +SiemensMsgSyntax. A section +without Text records the bare MSG() clear form. +Record-only: simulation ignores it; the section exists for +bidirectional NC-text reconstruction and UI display.

+
+
+
+
SiemensCall
+

Siemens subprogram-call record. Two lifetimes share the shape:

+
  • Parsing.SiemensCall — written by +SiemensCallStatementSyntax when a +whole-line call statement is captured (L9810, L123 P3, +HQ_FC(1,2)). Carries Name, optional verbatim +Args, optional P.
  • block-root SiemensCall — written by +SiemensSubProgramCallSyntax on +the host block and on every inlined body block once the call is +consumed. FileName records the resolved subprogram file; +Skipped marks the safe-skip outcome (no file found — +OEM / measuring cycles like HQ_FC, Renishaw L9810) where +the call is consumed with zero motion effect and a structured +warning replaces the raw unparsed-text noise.
+
+
+
+
SiemensFor
+

Siemens FOR <var> = <start> TO <end> ... ENDFOR +counting-loop record. The Parsing capture stores the start expression +as a single-entry Init map ({ “R1”: 0 }) — the variable +name is a JSON key, which the evaluator's pass-2 tree walk +never rewrites (values only), so a loop variable whose name matches a +set named variable is not clobbered; the start/end values are +substituted normally. The block-root stamp records the loop variable +and its per-iteration Value.

+
+
+
+
SiemensGoto
+

Siemens GOTOF/GOTOB jump record. Two lifetimes share the +shape:

+
  • Parsing.SiemensGoto — written by +SiemensGotoParsingSyntax for both +the bare jump (GOTOF LBL1) and the single-line conditional +(IF R1==1 GOTOF LBL1).
  • block-root SiemensGoto — stamped by +SiemensGotoSyntax after the +control-flow decision, with Fired flipped true on a +successful redirect.
+

+Unlike Fanuc's numbered GOTO n, the target is a named label +(LBL1: line) or an N<num> block number; direction +is explicit in the mnemonic — GOTOF scans forward from the host +line, GOTOB scans backward to the nearest label above. +

+
+
+
+
SiemensIf
+

Siemens IF/ELSE/ENDIF block-conditional record. +Parsing.SiemensIf carries the captured phrase; the block-root +stamp written by SiemensIfSyntax +adds the gate outcome. Unlike the loop family there is no frame stack: +an ELSE reached in the normal stream always means the true +branch just finished (a false condition jumps past the ELSE +line directly), so ELSE unconditionally skips to its matching +ENDIF and ENDIF itself is a consumed no-op.

+
+
SiemensKeywords

Siemens Sinumerik G-code and M-code constants.

+
+
+
+
SiemensLabel
+

Block-root record for a Siemens label line (LBL1:), written by +SiemensLabelSyntax. Labels are +passive jump targets — the record only makes the consumed token +visible to cache dumps and lets +SiemensRepeatSyntax's scan +probe match candidates.

+
+
+
+
SiemensLoop
+

Siemens LOOP ... ENDLOOP endless-loop record. The construct has +no exit condition — real programs leave it via GOTOF/GOTOB +or a subprogram return; offline replay is bounded by +SiemensLoopIterationDependency, +which is therefore a hard requirement for the ENDLOOP back-jump +(a missing watchdog suppresses the jump instead of hanging the +pipeline).

+
+
+
+
SiemensLoopFrame
+

One entry on the SiemensLoopFrames stack. Identity is +(Kind, FilePath, BeginLineNo) — the file path disambiguates a +loop line in the main program from the same line number inside an +inlined subprogram, and lets the terminator refuse a cross-file +mismatch.

+
+
+
+
SiemensLoopFrames
+

Block-root carrier for the active Siemens loop-construct stack, +mutated by SiemensLoopSyntax at +the Evaluation stage and carried block-to-block by +ModalCarrySyntax's Logic tracked-key +list (plus an eager previous-block clone inside the loop syntax +itself, mirroring the Fanuc WhileFrames pattern). Wrapped in a +JSON object ({ “Frames”: [ ... ] }) rather than a bare array so +the ModalCarry deep-clone JsonObject carry applies — the same reason +CallStack wraps its frame list.

+

+A single shared stack (rather than one per construct kind) is what +makes mixed-construct nesting work: a FOR inside a +WHILE pushes on top of the WHILE frame, and each terminator +validates that the innermost (last) frame carries its own +Kind. +

+
+
+
+
SiemensPathSmoothing
+

Section data holder for ISiemensPathSmoothingDef.

+
+
+
+
SiemensProc
+

Block-root record for a Siemens PROC declaration header, +written by SiemensProcSyntax. +The declaration is consumed whole (parameter binding is a later work +item); Statement keeps the verbatim remainder visible.

+
+
+
+
SiemensRepeat
+

Siemens REPEAT record. Parsing.SiemensRepeat carries the +captured label pair; the block-root section written by +SiemensRepeatSyntax adds the +firing outcome, and every inlined repetition block is stamped with a +clone carrying Iteration so cache-dump readers can see +which pass a block belongs to.

+
+
+
+
SiemensRepeatUntil
+

Siemens REPEAT ... UNTIL <cond> post-test loop record. +The bare REPEAT line (no label — the labelled forms belong to +SiemensRepeat) opens the loop; UNTIL evaluates +the exit condition after each pass.

+
+
+
+
SiemensWhile
+

Siemens WHILE ... ENDWHILE pre-test loop record. +Parsing.SiemensWhile carries the captured phrase; the block-root +stamp adds the per-arrival gate outcome. Loop state lives on the +shared SiemensLoopFrames stack managed by +SiemensLoopSyntax.

+
+
+
+
Stopre
+

Block-root section recording a consumed Siemens STOPRE +(stop preprocessing / block-search buffer sync), written by +SiemensStopreSyntax. STOPRE has no +effect in offline simulation — the section exists solely so the token +survives for bidirectional NC-text reconstruction.

+
+
+

+Interfaces +

+
+
ISiemensPathSmoothingDef
+

Siemens path-control / smoothing modal registers recorded by +SiemensPathSmoothingSyntax under the +brand-invariant PathSmoothing section key. Record-only — +simulation does not alter the tool path; the registers exist for +bidirectional NC-text reconstruction and UI display.

+

+Each property mirrors one orthogonal Sinumerik modal group; a property +is absent from the JSON section until its group is first programmed. +IsEnabled is derived: true while a +CYCLE832 high-speed setting is armed (Tolerance present) +or a continuous-path mode (G64/G641/G642) is active. +Term records the token that last +changed the path-control state (a G code or CYCLE832). +

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html index f8cb1c02..325eedb2 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.Vars.html @@ -229,6 +229,40 @@ runtime. + + +

+ Named + +

+ +

Named program-variable sub-section (Siemens GUD/LUD identifiers such +as _X_HOME). Carried forward block-by-block by +SiemensNamedVariableReadingSyntax.

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

Property Value

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

@@ -261,6 +295,40 @@ runtime. + + +

+ SystemNamed + +

+ +

Named system-variable sub-section (Siemens $ variables the +pipeline records but does not simulate). Carried forward +block-by-block by SiemensSystemVariableSyntax.

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

Property Value

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

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html index d1c35260..7421881f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Keywords.html @@ -432,11 +432,59 @@ purely functional marker the local-variable I/O syntaxes consult.
PlaneSelect

Section key holder for IPlaneSelectDef.

+
+
+
+
PolarInterpolation
+

Inner-key constants of the +PolarInterpolationState section.

Positioning

Section key holder + concrete implementation for IPositioningDef.

+
+
+
+
PositioningOverride
+

Per-word positioning override — a non-modal block-root section keyed +by word name (axis words and the I/J/K interpolation parameters) +whose values are Absolute / +Incremental / +Shortest / +PositiveOnly / +NegativeOnly, plus the coded-position +(indexing axis) family CodedAbsolute / +CodedIncremental / +CodedShortest / +CodedPositiveOnly / +CodedNegativeOnly. +Overrides the modal G90/G91 Positioning state (and, for +I/J/K, the default incremental center reading) for the listed words +on this block only.

+

+Written by +SiemensAcIcSyntax when a +word carries one of the Siemens per-word coordinate function +wrappers AC() / IC() / DC() / ACP() / +ACN() or their coded-position counterparts CAC() / +CIC() / CDC() / CACP() / CACN(). +Consumed by +IncrementalResolveSyntax (linear axes) and +McAbcSyntax (rotary axes) — both treat +every non-Incremental value as an absolute write, and both resolve a +coded entry's indexing position number through +CodedPositionUtil and rewrite the entry to +its plain counterpart in place — by +McAbcCyclicPathSyntax (the directional +window for PositiveOnly / +NegativeOnly and the non-modular-axis +boundary warning; it never sees a coded value), and by +SiemensCircularMotionSyntax +(absolute I/J/K center components); words without an entry keep the +default behavior unchanged. The section is not listed in any +ModalCarry key set — it never carries to later blocks. +

@@ -657,12 +705,23 @@ LogicSyntaxs ( G53p1RotaryPositionSyntax, ReferenceReturnSyntax); seeded on the init block by HomeMcInitializer; carried across -non-motion blocks by ModalCarrySyntax.

+non-motion blocks — and per-key completed on partially-written blocks +(an XYZ-only motion block receives the carried modal rotary values) — +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.

+

+After the PostLogic carry the section is a MODAL record: key presence +means "state known", never "this block commanded the axis". Consumers +needing "commanded" must read the block's Parsing words or compare +values against the previous block (see +LinearMotionUtil.HasRotaryMotion). The only presence-as-commanded +carve-out is CompoundMotion.Items[*] item-level sections, which +the carry never touches. +

@@ -672,7 +731,7 @@ 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) +McArcMotionSemantic, ClLinearMcMotionSemantic) then early-return on distance <= 0 and emit no IAct. NOT carried forward across blocks.

@@ -738,6 +797,30 @@ 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).

+ +
+
+
IPolarInterpolationDef
+

JSON section schemas for Fanuc Polar Coordinate Interpolation (G12.1/G13.1). +Property names are used as JSON keys via nameof.

+

+PolarInterpolationState is the modal valve: its presence on a +block means polar interpolation is active there. It is written by +PolarInterpolationSyntax on the G12.1 block and +re-materialized onto every following block until a G13.1 block ends the +mode (single-step lookback carry, same pattern as +PositioningSyntax — not registered on +ModalCarrySyntax). +

+

+ProgramPolarRxcz is the per-block polar position, relative to +the G12.1 anchor (InitRxcz). Rxcz axes: +X = radius-direction linear axis in mm (the NC word X is a diameter +and is halved on parse), Y = hypothetical rotary-substitute axis in mm, +Z = real Z in mm. The absolute (rotation-center-origin) position used by +the math is InitRxcz + ProgramPolarRxcz, mirroring HardNc +PolarEntry.CentralProgramPolarRxcz. +

@@ -875,7 +958,7 @@ 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 +(ClLinearMcMotionSemantic) handles per-step IK separately. Use HasDynamicEntry(JsonObject) to detect the presence of any Dynamic entry on this block. 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 189bcb6f..f1bc2768 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html @@ -6,7 +6,7 @@ - + @@ -114,6 +114,23 @@ Must be placed before MotionEvent first claims it.

+

+IsIjkAbsolute switches the I/J/K reading to absolute +center coordinates (Heidenhain DIN/ISO — the ISO twin of the +Klartext CC pole; the Heidenhain list sets it, every other brand +keeps the offset default). In that mode the center is modal: letters +not written in a block inherit the previous absolute pole +(AbsoluteIjkPoleKey, carried by the brand's +ModalCarrySyntax), a letter never +written falls back to the arc start's component, a letters-free +block that commands an endpoint continues the modal arc off the +pole (a flags-only block stays motionless), a G91 block reads +offsets again and breaks the pole chain, and the plane-normal letter +is a center coordinate — never the per-turn helix pitch. Behavior +mirrors HardNcLine.BuildArcNcArg + +ArcNcArg.GetCenterOrCenterOnBeginPlane (HiUniNc 3.1.152.2) +bit for bit. +

@@ -347,8 +364,8 @@ semantic knows to draw the closed loop: } Fanuc L parameter (helix turn count, 1-based) — L3 on a start==end closed loop means three total turns, so -AdditionalCircleNum = L − 1 = 2. Matches legacy -NcProc.cs:442; the L parameter is consumed alongside I/J/K/R: +AdditionalCircleNum = L − 1 = 2. Matches the legacy +HardNc reading; the L parameter is consumed alongside I/J/K/R: #BeforeBuild:
{
   "Parsing": { "Flags": ["G02"], "I": 5, "J": 0, "L": 3 },
@@ -371,8 +388,8 @@ arc, it is the per-turn axial pitch, not a center offset. Here
 K = −3 mm/turn over ΔZ = −9 mm gives
 AdditionalCircleNum = floor(−9 / −3) = 3. The center stays
 on the begin-plane (Z = 0) — ResolveCenterFromIjk zeros the
-plane-normal component before adding to begin. Matches legacy
-NcProc.cs:458:
+plane-normal component before adding to begin. Matches the legacy
+HardNc reading:
 #BeforeBuild:
 
{
   "Parsing": { "Flags": ["G02"], "I": 5, "J": 0, "K": -3 },
@@ -389,6 +406,95 @@ plane-normal component before adding to begin. Matches legacy
     "AdditionalCircleNum": 3
   }
 }
+Absolute I/J (IsIjkAbsolute = true on the SUT — the +Heidenhain DIN/ISO reading; values taken from a real production +program): I/J ARE the center's program coordinates, the center +is locked onto the begin plane (Z from the previous block), the +post-inheritance letters are recorded as the modal +AbsoluteIjkPole section and the event is stamped +IsIjkAbsolute for the NcOpt splition write-back (the arc +start comes from the predecessor's MachineCoordinateState — +the modal anchor GetLastProgramXyz reads; no transform chain +here, so it equals the program position): +#Previous: +
{ "MachineCoordinateState": { "X": -23.958, "Y": -0.0965, "Z": 3.4338 } }
+#BeforeBuild: +
{
+  "Parsing": { "Flags": ["G02"], "I": -23.3261, "J": -1.2062 },
+  "ProgramXyz": { "X": -23.3253, "Y": 0.0708, "Z": 3.4338 }
+}
+#AfterBuild: +
{
+  "ProgramXyz": { "X": -23.3253, "Y": 0.0708, "Z": 3.4338 },
+  "AbsoluteIjkPole": { "I": -23.3261, "J": -1.2062 },
+  "MotionState": { "Term": "G02" },
+  "MotionEvent": {
+    "Form": "McArc",
+    "ArcCenter": { "X": -23.3261, "Y": -1.2062, "Z": 3.4338 },
+    "IsCcw": false,
+    "AdditionalCircleNum": 0,
+    "IsIjkAbsolute": true
+  }
+}
+Absolute modal pole (the CC-pole twin): a continuation block writes +only J — the I component inherits the previous block's +AbsoluteIjkPole, the G03 mode continues via +#Previous: MotionState.Term, and the refreshed pole is +written back: +#Previous: +
{
+  "MachineCoordinateState": { "X": -25.2297, "Y": 0.0704, "Z": 0 },
+  "AbsoluteIjkPole": { "I": -25.2029, "J": -0.9154 },
+  "MotionState": { "Term": "G03" }
+}
+#BeforeBuild: +
{
+  "Parsing": { "J": -0.9154 },
+  "ProgramXyz": { "X": -24.9288, "Y": 0.5929, "Z": 0 }
+}
+#AfterBuild: +
{
+  "ProgramXyz": { "X": -24.9288, "Y": 0.5929, "Z": 0 },
+  "AbsoluteIjkPole": { "I": -25.2029, "J": -0.9154 },
+  "MotionState": { "Term": "G03" },
+  "MotionEvent": {
+    "Form": "McArc",
+    "ArcCenter": { "X": -25.2029, "Y": -0.9154, "Z": 0 },
+    "IsCcw": true,
+    "AdditionalCircleNum": 0,
+    "IsIjkAbsolute": true
+  }
+}
+G91 on an IsIjkAbsolute SUT switches the block back to the +ordinary start-to-center offsets (center = begin + (I, J)), ignores +the inherited pole and BREAKS the pole chain — the emptied section +blocks the ModalCarry copy, so a later absolute block falls back to +the arc start (the preArcNcArg.IsIjkAbsolute check of +HardNcLine.BuildArcNcArg): +#Previous: +
{
+  "MachineCoordinateState": { "X": 10, "Y": 0, "Z": 0 },
+  "AbsoluteIjkPole": { "I": -25.2029, "J": -0.9154 }
+}
+#BeforeBuild: +
{
+  "Parsing": { "Flags": ["G02"], "I": 10, "J": 0 },
+  "Positioning": { "Term": "G91", "Mode": "Incremental" },
+  "ProgramXyz": { "X": 20, "Y": 10, "Z": 0 }
+}
+#AfterBuild: +
{
+  "Positioning": { "Term": "G91", "Mode": "Incremental" },
+  "ProgramXyz": { "X": 20, "Y": 10, "Z": 0 },
+  "AbsoluteIjkPole": {},
+  "MotionState": { "Term": "G02" },
+  "MotionEvent": {
+    "Form": "McArc",
+    "ArcCenter": { "X": 20, "Y": 0, "Z": 0 },
+    "IsCcw": false,
+    "AdditionalCircleNum": 0
+  }
+}
@@ -457,10 +563,87 @@ plane-normal component before adding to begin. Matches legacy +

Fields +

+ + + +

+ AbsoluteIjkPoleKey + +

+ +

Root-section key of the modal absolute-center pole (the letters of +the last absolute arc, post-inheritance — the SoftNc dual of +HardNcLine.ArcNcArg.Ijk). Written by every effective-absolute +arc block, emptied by a G91 arc block to break the chain, and +carried across intermediate blocks by the brand list's +ModalCarrySyntax Logic track. Kept +apart from HeidenhainCircleCenterSyntax's Klartext CC +section — the two dialect poles never share a key.

+
+
+ +
+
public const string AbsoluteIjkPoleKey = "AbsoluteIjkPole"
+
+ + + + +

Field Value

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

Properties

+ + +

+ IsIjkAbsolute + +

+ +

When true, I/J/K address the circle center as absolute program +coordinates instead of start-to-center offsets, with the modal-pole +/ G91 semantics described on the class doc. Set by the Heidenhain +list (DIN/ISO dialect); every other brand keeps the offset default.

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

Property Value

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

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

+Class CodedPositionUtil +

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

Shared coded-position resolution for the write-stage consumers +(McAbcSyntax for rotary words, +IncrementalResolveSyntax for linear words): turns a +per-word PositioningOverride entry of the coded family +(CodedAbsolute / +CodedIncremental / +CodedShortest / +CodedPositiveOnly / +CodedNegativeOnly — stamped by +SiemensAcIcSyntax for +CAC()/CIC()/CDC()/CACP()/CACN()) +plus the evaluated position number into an axis coordinate via +IIndexingPositionConfig, and names the plain override +value the caller rewrites the entry to — so the +McAbcCyclicPathSyntax tail-pass and every other +downstream reader only ever see the established non-coded vocabulary.

+

+Failure semantics mirror the Siemens alarms as far as a simulator can: +an invalid position number (alarm 17510) or a missing table reports an +error diagnostic and resolves to "hold" — the caller writes the anchor +so the axis does not move. CIC(0) also resolves to hold, by +specification ("the indexing axis is not traversed") and silently. +A CIC from between two indexing positions advances to the n-th +next position in the programmed direction. On a cyclic indexing axis +the incremental sign becomes a directional +(PositiveOnly / +NegativeOnly) approach; increments spanning +more than one revolution reach the correct position but collapse the +extra full turns (the tail-pass windows cover one revolution). +

+
+
+ +
+
public static class CodedPositionUtil
+
+ + + + +
+
Inheritance
+
+ +
CodedPositionUtil
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Fields +

+ + + +

+ ConfigMissingDiagId + +

+ +

Diagnostic id for a coded-position word whose axis no longer +resolves an indexing table at the write stage (the unwrap stage +only stamps coded overrides for configured indexing axes, so this +indicates the dependency list changed between stages). The axis +holds its position.

+
+
+ +
+
public const string ConfigMissingDiagId = "CodedPosition--ConfigMissing"
+
+ + + + +

Field Value

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

+ NumberInvalidDiagId + +

+ +

Diagnostic id for a coded position number the indexing table cannot +resolve: not an integer, outside the table, or (via CIC) +advanced past the end of a non-cyclic table. The Siemens control +raises alarm 17510 and stops; the simulation reports this error and +holds the axis.

+
+
+ +
+
public const string NumberInvalidDiagId = "CodedPosition--NumberInvalid"
+
+ + + + +

Field Value

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

Methods +

+ + + + +

+ IsCodedOverride(string) + +

+ +

True when overrideValue is one of the five +coded-position PositioningOverride values.

+
+
+ +
+
public static bool IsCodedOverride(string overrideValue)
+
+ +

Parameters

+
+
overrideValue string
+
+
+ +

Returns

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

+ TryResolveCodedTarget(IIndexingPositionConfig, string, string, double, double, ISentenceCarrier, NcDiagnosticProgress, out double, out string) + +

+ +

Resolves a coded-position word to its target axis coordinate. +Returns true with the target position; false means “hold” — the +caller writes anchorPosition instead (no motion +on this axis), with any error already reported. +resolvedOverride is always set to the plain +override value the caller stamps over the coded entry +(Absolute on every hold).

+
+
+ +
+
public static bool TryResolveCodedTarget(IIndexingPositionConfig indexingConfig, string axis, string codedOverride, double parsedValue, double anchorPosition, ISentenceCarrier sentenceCarrier, NcDiagnosticProgress diag, out double targetPosition, out string resolvedOverride)
+
+ +

Parameters

+
+
indexingConfig IIndexingPositionConfig
+

Indexing table, or null when the dependency list carries none.

+
+
axis string
+

Axis name (e.g., “C”).

+
+
codedOverride string
+

The coded PositioningOverride entry value.

+
+
parsedValue double
+

Evaluated word value — the position number (or count, for CodedIncremental).

+
+
anchorPosition double
+

Current axis position, used as the CIC anchor and as the hold target.

+
+
sentenceCarrier ISentenceCarrier
+

Block to anchor diagnostics to.

+
+
diag NcDiagnosticProgress
+

Diagnostic sink; may be null.

+
+
targetPosition double
+

Resolved target axis coordinate.

+
+
resolvedOverride string
+

Plain override value to stamp over the coded entry.

+
+
+ +

Returns

+
+
bool
+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.DwellSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.DwellSyntax.html new file mode 100644 index 00000000..492e609d --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.DwellSyntax.html @@ -0,0 +1,681 @@ + + + + + Class DwellSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class DwellSyntax +

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

Consumes the non-modal G4/G04 dwell sub-section captured by +G4Syntax +(Parsing.G4 / Parsing.G04) and emits a +CompoundMotion with a single Dwell item, +which Hi.NcParsers.Semantics.CompoundMotionSemanticUtil resolves into +an ActDelay of the dwell duration.

+

+Argument dialects are configured per brand preset: +

+ +

+Because the capture layer owns the whole argument (the F/X/P word +lands inside the dwell sub-section, never in Parsing.F / +Parsing.X), a dwell block cannot poison the modal +Feedrate and its X-word cannot mint a ghost motion — +structural fixes for the G04 F60000 feed-poison and +G04 X0.5 ghost-motion hazards. +

+

+Spindle-revolution dwell needs the modal spindle speed: this syntax +must be placed after SpindleSpeedSyntax in the Logic +bundle so the block's own modal SpindleSpeed section is +already written. When no positive rpm is known the dwell is consumed +and recorded via an Unsupported Message (Dwell--SpindleRevUnresolved) +instead of being time-simulated — no act is emitted. +

+

+When several recognized argument prefixes appear on one block the +resolution priority is seconds → milliseconds → revolutions; every +recognized key is consumed either way. Unrecognized keys inside the +sub-section are left in place so they surface through +UnconsumedCheckSyntax. +

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

Examples

+

Siemens dialect instance (SecondsPrefixes=[“F”], +MillisecondsPrefixes=[], SpindleRevPrefixes=[“S”]) — +the G04 F60000 corpus shape: the F is a dwell time in seconds, +consumed here without ever touching the modal Feedrate: +#BeforeBuild:

+
{ "Parsing": { "G04": { "F": 60000 } } }
+

#AfterBuild:

+
{
+  "CompoundMotion": {
+    "Term": "G04",
+    "Items": [ { "Dwell": { "Time": 60000 } } ]
+  }
+}
+

Default Fanuc-family instance — G4 P500 milliseconds: +#BeforeBuild:

+
{ "Parsing": { "G4": { "P": 500 } } }
+

#AfterBuild:

+
{
+  "CompoundMotion": {
+    "Term": "G4",
+    "Items": [ { "Dwell": { "Time": 0.5 } } ]
+  }
+}
+

Siemens dialect instance — G4 S30 spindle revolutions against +the block's modal 600 rpm → 3 s: +#BeforeBuild:

+
{
+  "Parsing": { "G4": { "S": 30 } },
+  "SpindleSpeed": { "SpindleSpeed_rpm": 600, "Direction": "CW" }
+}
+

#AfterBuild:

+
{
+  "SpindleSpeed": { "SpindleSpeed_rpm": 600, "Direction": "CW" },
+  "CompoundMotion": {
+    "Term": "G4",
+    "Items": [ { "Dwell": { "Time": 3 } } ]
+  }
+}
+

Siemens dialect instance — revolution dwell with no known spindle +speed: consumed and recorded (Unsupported Message +Dwell–SpindleRevUnresolved, not part of the JSON), no act: +#BeforeBuild:

+
{ "Parsing": { "G04": { "S": 30 } } }
+

#AfterBuild:

+
{}
+ + + + +

Constructors +

+ + + + +

+ DwellSyntax() + +

+ +

Initializes a new instance with the default (Fanuc-family) dialect.

+
+
+ +
+
public DwellSyntax()
+
+ + + + + + + + + + + + + + + +

+ DwellSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public DwellSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Source XML element.

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

Properties +

+ + + + +

+ MillisecondsPrefixes + +

+ +

Argument prefixes holding a dwell time in milliseconds.

+
+
+ +
+
public List<string> MillisecondsPrefixes { get; set; }
+
+ + + + + +

Property Value

+
+
List<string>
+
+
+ + + + + + + + + + +

+ Name + +

+ +

Syntax kind name (typically the concrete type name).

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

Property Value

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

+ SecondsPrefixes + +

+ +

Argument prefixes holding a dwell time in seconds.

+
+
+ +
+
public List<string> SecondsPrefixes { get; set; }
+
+ + + + + +

Property Value

+
+
List<string>
+
+
+ + + + + + + + + + +

+ SectionKeys + +

+ +

Parsing sub-section keys this syntax consumes — both dwell +code spellings as captured verbatim by +G4Syntax.

+
+
+ +
+
public List<string> SectionKeys { get; set; }
+
+ + + + + +

Property Value

+
+
List<string>
+
+
+ + + + + + + + + + +

+ SpindleRevPrefixes + +

+ +

Argument prefixes holding a dwell length in spindle revolutions.

+
+
+ +
+
public List<string> SpindleRevPrefixes { get; set; }
+
+ + + + + +

Property Value

+
+
List<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.G43p4RtcpSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.G43p4RtcpSyntax.html index f684d272..e5f04008 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.G43p4RtcpSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.G43p4RtcpSyntax.html @@ -208,7 +208,25 @@ ToolHeightCompensation entry when RTCP is active) and before

Examples

-

Explicit G43.4 H1 activation with no IMachineKinematics +

Real-kinematics cases below wire TestDeps.CodeKinematics +with the default chain code [O][Z][A][w];[O][Y][X][B][S][t] +— a table-A / head-B 5-axis machine. A pivots around -X +through origin (table side); B pivots around +Y through origin +(head side). Both pivot axes pass through (0,0,0) because +CodeXyzabcChain uses zero-offset +component attachments — the head-B origin pivot is a pedagogical +simplification (a real table-head machine has the spindle pivot +offset from origin). Realistic MachineCoordinateState +therefore carries A and B only; there is no C axis in this chain +(5-axis machines have at most two rotary axes).

+

+Verification cue: with B=30° on the head side and the cutter +extending +Z in tool frame at ABC=0, the tool normal after the +head rotation lies at (sin 30°, 0, cos 30°); multiplying +by the 10 mm tool length gives Trans ≈ (5, 0, 8.66). +

+

+Explicit G43.4 H1 activation with no IMachineKinematics and no IToolOffsetConfig in the dependency list — exercises the activate path on its identity-matrix corner. The section is written with Offset_mm = 0 (no offset table @@ -216,9 +234,10 @@ section is written with Offset_mm = 0 (no offset table no-kinematics branch new Mat4d { Trans = UnitZ * 0 } which collapses to identity; abcChanged is false (no current MC, no previous block) so the entry is tagged KindStatic. -#BeforeBuild:

+

+#BeforeBuild:
{ "Parsing": { "G43.4": { "H": "1" } } }
-

#AfterBuild:

+#AfterBuild:
{
   "ToolHeightCompensation": { "Offset_mm": 0, "Term": "G43.4", "OffsetId": 1 },
   "ProgramToMcTransform": [
@@ -229,28 +248,23 @@ no previous block) so the entry is tagged XyzabcSolver (table-A / head-B
-5-axis), and current block already carrying all three rotary axes
-in MachineCoordinateState (A=0, B=30, C=0 — as a prior
-McAbcSyntax in the chain would have written). The
+G43.4 H1 with ToolOffset(1 → 10 mm), the real 5-axis solver
+above, and current block carrying both rotary axes
+MachineCoordinateState.A = 0, B = 30 (as a prior
+McAbcSyntax would have written on this machine). The
 height-mat goes through
 MakeToolHeightMat(IMachineKinematics, Vec3d, double) which probes
 kinematics.McToPn(Zero, abc).Normal at abc = (0, π/6, 0)
 to get the tool orientation, then scales by 10 mm. With no
-previous block, abcChanged is false → entry stays Static.
-Note: all three ABC must be present (or fall back to the per-axis
-modal lookback path); a partial section with only B set leaves A/C
-as NaN and the resulting Mat4d.Trans would serialise as
-non-finite numbers.
-#BeforeBuild:

+previous block, abcChanged is false → entry stays Static: +#BeforeBuild:
{
   "Parsing": { "G43.4": { "H": "1" } },
-  "MachineCoordinateState": { "A": 0, "B": 30, "C": 0 }
+  "MachineCoordinateState": { "A": 0, "B": 30 }
 }
-

#AfterBuild:

+#AfterBuild:
{
-  "MachineCoordinateState": { "A": 0, "B": 30, "C": 0 },
+  "MachineCoordinateState": { "A": 0, "B": 30 },
   "ToolHeightCompensation": { "Offset_mm": 10, "Term": "G43.4", "OffsetId": 1 },
   "ProgramToMcTransform": [
     {
@@ -265,24 +279,24 @@ non-finite numbers.
     }
   ]
 }
-

Same setup plus a #Previous: block with +Same setup plus a #Previous: block with MachineCoordinateState.B = 0 + XYZ origin — -DidAbcChange(LazyLinkedListNode<SyntaxPiece>, IMachineAxisConfig) compares the rotary deltas and finds B +DidAbcChange(LazyLinkedListNode<SyntaxPiece>, IMachineAxisConfig) compares the rotary deltas and finds B changed across the block, so the entry is tagged KindDynamic (signalling that the tool orientation varies along the contour): -#Previous:

+#Previous:
{
-  "MachineCoordinateState": { "X": 0, "Y": 0, "Z": 0, "A": 0, "B": 0, "C": 0 }
+  "MachineCoordinateState": { "X": 0, "Y": 0, "Z": 0, "A": 0, "B": 0 }
 }
-

#BeforeBuild:

+#BeforeBuild:
{
   "Parsing": { "G43.4": { "H": "1" } },
-  "MachineCoordinateState": { "A": 0, "B": 30, "C": 0 }
+  "MachineCoordinateState": { "A": 0, "B": 30 }
 }
-

#AfterBuild:

+#AfterBuild:
{
-  "MachineCoordinateState": { "A": 0, "B": 30, "C": 0 },
+  "MachineCoordinateState": { "A": 0, "B": 30 },
   "ToolHeightCompensation": { "Offset_mm": 10, "Term": "G43.4", "OffsetId": 1 },
   "ProgramToMcTransform": [
     {
@@ -297,6 +311,25 @@ tool orientation varies along the contour):
     }
   ]
 }
+Explicit activation whose H did not survive variable evaluation +(vacant #100 stays a string) — no offset id resolves, RTCP +still activates with a zero-length compensation (identity height +mat) and the syntax emits the Comp-ToolHeight--001 +validation warning (asserted by the integration test; the dump +below pins the JSON shape only): +#BeforeBuild: +
{ "Parsing": { "G43.4": { "H": "#100" } } }
+#AfterBuild: +
{
+  "ToolHeightCompensation": { "Offset_mm": 0, "Term": "G43.4", "OffsetId": 0 },
+  "ProgramToMcTransform": [
+    {
+      "Source": "ToolHeightCompensation",
+      "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.G53p1RotaryPositionSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html index 461b7306..608809fe 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html @@ -195,17 +195,44 @@ Motion is handled by Examples -

No-kinematics dep-guard early-return: standalone G53.1 with +

Real-kinematics cases below wire TestDeps.CodeKinematics +with the default chain code [O][Z][A][w];[O][Y][X][B][S][t] +— a table-A / head-B 5-axis machine. A pivots around -X +through origin (table side); B pivots around +Y through origin +(head side). Both pivot axes pass through (0,0,0) because +CodeXyzabcChain uses zero-offset +component attachments — the head-B origin pivot is a pedagogical +simplification (real table-head machines have a spindle pivot +offset). The TestDeps.AxisConfig((“A”, Rotary), (“B”, Rotary)) +dep supplies the IMachineAxisConfig that the syntax +queries for the rotary axis list; the rotaryAxes loop +therefore writes exactly the A and B columns of +MachineCoordinateState. There is no C axis on this +machine (5-axis machines have at most two rotary axes).

+

+Verification cue: IK converts the active tilt's +AxialNormal back to rotary degrees. For an IJK=(0,30°,0) +tilt the solver picks an A angle close to 30° (drift from +chain-axis-pivot offsets shows up as A≈29.94° in case 1) and +leaves B at 0°. +

+

+No-kinematics dep-guard early-return: standalone G53.1 with no IMachineKinematics dep in the list — the syntax -detects the flag, finds no kinematics, and silently consumes the -flag via ConsumeFlag. Empty Parsing is then removed -by CleanupParsing(JsonObject), so the post-Build block -is empty: -#BeforeBuild:

+emits validation error Coord-MachCoord--005 (G53.1 on a +machine without rotary IK is an unexpected combination — +typically a 5-axis NC file run against a 3-axis machine config, +or a missing dep wire-up) and then consumes the flag via +ConsumeFlag. Empty Parsing is then removed by +CleanupParsing(JsonObject), so the post-Build block +JSON is empty even though the diagnostic message was sent (the +conformance check verifies only the JSON shape): +

+#BeforeBuild:
{ "Parsing": { "Flags": ["G53.1"] } }
-

#AfterBuild:

+#AfterBuild:
{}
-

IK happy path — G53.1 with active G68.2 tilt on +IK happy path — G53.1 with active G68.2 tilt on #Previous:, real XyzabcSolver (table-A / head-B 5-axis), and a TestDeps.AxisConfig(A=Rotary, B=Rotary) dep. The syntax @@ -213,8 +240,14 @@ reads the previous block's tilt Mat4d, solves OrientationToMcAbc(tiltMat.AxialNormal) for the rotary ABC, converts radians → degrees, writes MachineCoordinateState with both rotary axes (XYZ inherited from prevMc = Vec3d.Zero -when no previous MC exists), and stamps ProgramXyz: -#Previous:

+when no previous MC exists), and stamps ProgramXyz. The +block also gets a non-modal MotionEvent with +Term: "G53.1" so the source G-code survives in JSON for +bidirectional reconstruction (per the precedence rule on +Term: when set, this is the +block's actual motion source; the modal MotionState +remains as inherited context): +#Previous:
{
   "TiltTransform": { "Term": "G68.2", "X": 0, "Y": 0, "Z": 0, "I": 0, "J": 30, "K": 0 },
   "ProgramToMcTransform": [
@@ -230,20 +263,21 @@ when no previous MC exists), and stamps ProgramXyz:
     }
   ]
 }
-

#BeforeBuild:

+#BeforeBuild:
{ "Parsing": { "Flags": ["G53.1"] } }
-

#AfterBuild:

+#AfterBuild:
{
-  "MachineCoordinateState": { "X": 0, "Y": 0, "Z": 0, "A": 29.942194198514308, "B": 0 },
-  "ProgramXyz": { "X": 0, "Y": 0, "Z": 0 }
+  "MachineCoordinateState": { "X": 0, "Y": 0, "Z": 0, "A": 29.99999937094331, "B": 0 },
+  "ProgramXyz": { "X": 0, "Y": 0, "Z": 0 },
+  "MotionEvent": { "Form": "McLinear", "IsRapid": true, "Term": "G53.1" }
 }
-

Explicit ABC override — G53.1 A0 B45 on top of the same +Explicit ABC override — G53.1 A0 B45 on top of the same G68.2 tilt + kinematics + axis-config set up. The IK still solves, but the explicit A=0 and B=45 overrides what IK returned for those axes; C stays at the IK-solved value (C-axis is not present in the table-A/head-B layout, so the rotaryAxes loop only writes A and B): -#Previous:

+#Previous:
{
   "TiltTransform": { "Term": "G68.2", "X": 0, "Y": 0, "Z": 0, "I": 0, "J": 30, "K": 0 },
   "ProgramToMcTransform": [
@@ -259,14 +293,15 @@ loop only writes A and B):
     }
   ]
 }
-

#BeforeBuild:

+#BeforeBuild:
{
   "Parsing": { "Flags": ["G53.1"], "A": 0, "B": 45 }
 }
-

#AfterBuild:

+#AfterBuild:
{
   "MachineCoordinateState": { "X": 0, "Y": 0, "Z": 0, "A": 0, "B": 45 },
-  "ProgramXyz": { "X": 0, "Y": 0, "Z": 0 }
+  "ProgramXyz": { "X": 0, "Y": 0, "Z": 0 },
+  "MotionEvent": { "Form": "McLinear", "IsRapid": true, "Term": "G53.1" }
 }
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCannedCycleSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCannedCycleSyntax.html new file mode 100644 index 00000000..6afc9b96 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCannedCycleSyntax.html @@ -0,0 +1,576 @@ + + + + + Class HeidenhainCannedCycleSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainCannedCycleSyntax +

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

Bridges the klartext machining-cycle vocabulary onto the shared ISO +canned-cycle machinery. Owns the self-carrying +MachiningCycleDef store (single-step lookback + rewrite +on every block — the P1 datum-shift pattern) and the call-once vs +modal split:

+
  • Definition (Parsing.MachiningCycle from +HeidenhainMachiningCycleSyntax): mapped to ISO slots at +definition time — 200 → G81/G82/G83 (peck when Q202 < |Q201|), +232 → G81 (start point Q225/Q226/Q227, end Q386, feed Q207), +251/252/253 → G81/G83 (surface Q203, clearance Q200, depth Q201, +plunge feed Q206, step-down Q202). A definition never executes by +itself. Unsupported numbers (19, …) are recognized-but-not-simulated: +consumed whole with HeidenhainCycl--Unsupported, stored +unarmable so a later call warns instead of moving. Required +parameters that are missing or non-literal make the store unarmable +with HeidenhainCycl--ParamsNotLiteral.
  • Call-once (CYCL CALL [POS] record from +HeidenhainCyclCallSyntax, or an M99 flag on a +positioning block — the TNC block-wise call, unrelated to the Fanuc +return M99): writes the mapped cycle as a direct Parsing.G8x +sub-section on this block, which +CannedCycleResolveSyntax resolves and the shared cycle +syntaxes expand into a CompoundMotion. POS coordinates +override the stored X/Y; the POS Z is a pre-position, recorded but +never fed into the hole-bottom slot. The ISO modal-lookback branch is +deliberately bypassed: it has no positioning gate, so an armed +CannedCycle would re-execute on flag-only blocks — +wrong for klartext.
  • Modal (M89): sets Modal; +each subsequent block carrying root axis words (and no +CArc statement) fires the same direct-section path with the +block's X/Y consumed into the cycle. M99 fires once and +clears the modality; a new CYCL DEF replaces the store.
  • Seal: on every non-firing block whose previous block +carries an active CannedCycle term, a G80 flag +is injected (the P0 G00/G01 injection pattern) so +CannedCycleResolveSyntax writes the cancel sentinel — +the one-shot execution never leaks into ISO modal repetition.
+

+Known divergences (recorded, corpus-benign): the cycle's mapped feed +enters the modal Feedrate section during expansion (ISO +semantics; the Siemens MCALL precedent accepts the same leak); the +final retract plane is the ISO G98 initial level, not Q204's second +set-up clearance (Q204 is recorded in the definition store only). +

+Must run after the tilt/RTCP family and immediately before +CannedCycleResolveSyntax. +
+
+ +
+
public class HeidenhainCannedCycleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainCannedCycleSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ HeidenhainCannedCycleSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainCannedCycleSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainCannedCycleSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainCannedCycleSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Source XML element.

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

Fields +

+ + + +

+ M89Flag + +

+ +

Modal cycle-call M function.

+
+
+ +
+
public const string M89Flag = "M89"
+
+ + + + +

Field Value

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

+ M99Flag + +

+ +

Block-wise cycle-call M function (TNC semantics, not the Fanuc return).

+
+
+ +
+
public const string M99Flag = "M99"
+
+ + + + +

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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircleCenterSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircleCenterSyntax.html new file mode 100644 index 00000000..1e505931 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircleCenterSyntax.html @@ -0,0 +1,508 @@ + + + + + Class HeidenhainCircleCenterSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainCircleCenterSyntax +

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

Heidenhain-specific: turns the Parsing.CC record into the +modal HeidenhainCircleCenter { X, Y, Z? } section (absolute +program coordinates). Self-carrying every block (PlaneSelect pattern +— detected ?? previous), so the arc syntax's single-step read always +works without ModalCarry involvement; a CC with partial axes merges +the missing components from the previous center. Must run before +HeidenhainCircularMotionSyntax.

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

Constructors +

+ + + + +

+ HeidenhainCircleCenterSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainCircleCenterSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainCircleCenterSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainCircleCenterSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Source XML element.

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

Fields +

+ + + +

+ SectionKey + +

+ +

Modal section key (absolute program-coordinate center).

+
+
+ +
+
public const string SectionKey = "HeidenhainCircleCenter"
+
+ + + + +

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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircularMotionSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircularMotionSyntax.html new file mode 100644 index 00000000..c1d4a529 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircularMotionSyntax.html @@ -0,0 +1,482 @@ + + + + + Class HeidenhainCircularMotionSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainCircularMotionSyntax +

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

Heidenhain circular motion — the Klartext half of the brand's two +arc syntaxes. The shared CircularMotionSyntax (with +IsIjkAbsolute set) runs right +after it for the DIN/ISO dialect: the two gates are per-block +exclusive (a klartext arc has CArc and no I/J/K/R; an ISO arc +the reverse) and both honor the single Group 01 +MotionEvent slot. +Gated by the Parsing.C statement marker (klartext arcs +carry no G02/G03 and no modal arc continuation): the endpoint comes +from the block's resolved ProgramXyz, the center from the +modal HeidenhainCircleCenterSyntax section (implicit +center = current position when no CC was ever given), and the +direction from DR- (CW → G02) / DR+ (CCW → G03). A +closed arc on the active plane is a full circle. A missing DR warns +(Arc-DR–Missing) and degrades to the modal linear move to the +endpoint (chord).

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

Constructors +

+ + + + +

+ HeidenhainCircularMotionSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainCircularMotionSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainCircularMotionSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainCircularMotionSyntax(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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + 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 9672f980..d7b9fb0f 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 @@ -6,7 +6,7 @@ - + @@ -100,14 +100,26 @@ Class HeidenhainCoordinateOffsetSyntax

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. +CYCL DEF 247 Q339=N: selects datum preset table entry N — written to +the shared CoordinateOffset section (kept alive +modally by IsoCoordinateOffsetSyntax via +HeidenhainDatumTable synthetic-id resolution). +

+

+CYCL DEF 7 (#N table row or direct X/Y/Z) is additive on top +of the active preset (TNC semantics; HardNc oracle composes +-preset + shift): it is written to its own DatumShift +section with a separate ProgramToMcTransform entry +(DatumShiftTransformSource) so preset and shift compose +in the transform chain instead of replacing each other. The shift is +carried modally by this syntax itself: on blocks without a CYCL DEF, +a numbered row re-resolves from the table and a direct shift carries +its values forward. Cancelling is a zero shift +(CYCL DEF 7.1 X+0 Y+0 Z+0).

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. +Uses replace-by-source so both syntaxes coexist without double-composing.
@@ -192,9 +204,9 @@ 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.

+[1,0,0,0, 0,1,0,0, 0,0,1,0, tx,ty,tz,1]. The cycle keys are +consumed (block text stays authoritative for round-trip emission), so +datum declarations replay without unconsumed-parsing noise.

CYCL DEF 247 Q339=+1 with a HeidenhainDatumTable populated so preset @@ -206,7 +218,6 @@ resolved preset index:

{ "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
@@ -220,42 +231,41 @@ resolved preset index:
   ]
 }
CYCL DEF 7 #5 — datum shift table lookup via the # -index (here mapped to (100, 200, 0)); CoordinateId -records the resolved shift row id: +index (here mapped to (100, 200, 0)); the shift lands in its +own DatumShift section and transform entry so it composes +with (instead of replacing) an active preset: #BeforeBuild:
{ "Parsing": { "CYCL DEF": 7, "#": 5 } }
#AfterBuild:
{
-  "Parsing": { "CYCL DEF": 7, "#": 5 },
-  "CoordinateOffset": {
-    "CoordinateId": "DATUM_SHIFT_5",
+  "DatumShift": {
+    "ShiftId": "DATUM_SHIFT_5",
     "Offset_X": 100, "Offset_Y": 200, "Offset_Z": 0
   },
   "ProgramToMcTransform": [
     {
-      "Source": "CoordinateOffset",
+      "Source": "DatumShift",
       "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 +CYCL DEF 7.0/7.1 X+10 Y+20 Z+5 — direct X/Y/Z form: the +values are read from the nested Parsing["DATUM SHIFT"] record +written by the datum-shift cycle parser; no HeidenhainDatumTable dep is required. -CoordinateId is the literal "DATUM_SHIFT_DIRECT" -sentinel: +ShiftId is the literal "DATUM_SHIFT_DIRECT" sentinel: #BeforeBuild: -
{ "Parsing": { "CYCL DEF": 7, "X": 10, "Y": 20, "Z": 5 } }
+
{ "Parsing": { "CYCL DEF": 7, "DATUM SHIFT": { "X": 10, "Y": 20, "Z": 5 } } }
#AfterBuild:
{
-  "Parsing": { "CYCL DEF": 7, "X": 10, "Y": 20, "Z": 5 },
-  "CoordinateOffset": {
-    "CoordinateId": "DATUM_SHIFT_DIRECT",
+  "DatumShift": {
+    "ShiftId": "DATUM_SHIFT_DIRECT",
     "Offset_X": 10, "Offset_Y": 20, "Offset_Z": 5
   },
   "ProgramToMcTransform": [
     {
-      "Source": "CoordinateOffset",
+      "Source": "DatumShift",
       "Kind": "Static",
       "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,5,1]
     }
@@ -329,6 +339,134 @@ sentinel:
 
 
 
+  

Fields +

+ + + +

+ DatumShiftSection + +

+ +

JSON section name for the additive datum shift (CYCL DEF 7).

+
+
+ +
+
public const string DatumShiftSection = "DatumShift"
+
+ + + + +

Field Value

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

+ DatumShiftTransformSource + +

+ +

Transform-stack source key for the datum-shift translation (separate from the preset's so both compose).

+
+
+ +
+
public const string DatumShiftTransformSource = "DatumShift"
+
+ + + + +

Field Value

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

+ DirectShiftId + +

+ +

ShiftIdKey sentinel for the direct-XYZ form.

+
+
+ +
+
public const string DirectShiftId = "DATUM_SHIFT_DIRECT"
+
+ + + + +

Field Value

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

+ ShiftIdKey + +

+ +

Section key holding the shift identity (row id or the DIRECT sentinel).

+
+
+ +
+
public const string ShiftIdKey = "ShiftId"
+
+ + + + +

Field Value

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

Properties

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCyclePrePositionSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCyclePrePositionSyntax.html new file mode 100644 index 00000000..68d6ae4b --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCyclePrePositionSyntax.html @@ -0,0 +1,485 @@ + + + + + Class HeidenhainCyclePrePositionSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainCyclePrePositionSyntax +

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

Lifts the expanded cycle's initial plane to the recorded TNC +pre-position Z. A CYCL CALL POS … Z±n (and an M99/M89 +positioning block's own Z word) positions the spindle BEFORE the cycle +runs; the shared ISO expansion instead anchors its initial plane — the +first rapid and the G98 final retract — on the PREVIOUS block's Z. +Left unlifted, a call that climbs to a safe Z before drilling would be +simulated traversing at the stale old Z (phantom collisions through +fixtures) and G98 would plunge the tool back to that stale Z after the +hole.

+

+Mechanics: when the HeidenhainCyclCall record carries a +numeric Z and a CompoundMotion was expanded, the +first item (the initial-plane rapid — both shared cycle syntaxes emit +it first) and, under G98, the final item and the block's final +ProgramXyz are re-anchored to the pre-position Z. G99 finals +(R-plane) are untouched. Runs after the shared cycle syntaxes and +before HeidenhainCycleRetractSyntax (whose appended M140 +retract builds on the lifted final point). +

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

Constructors +

+ + + + +

+ HeidenhainCyclePrePositionSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainCyclePrePositionSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainCyclePrePositionSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainCyclePrePositionSyntax(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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCycleRetractSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCycleRetractSyntax.html new file mode 100644 index 00000000..6d795ea8 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCycleRetractSyntax.html @@ -0,0 +1,524 @@ + + + + + Class HeidenhainCycleRetractSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainCycleRetractSyntax +

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

Consumes the Parsing.M140 record that +HeidenhainMFunctionSyntax deferred on a may-fire-cycle +block — a CYCL CALL [POS] host (… M140 MB+n is a real +house.H shape), an M99/M89 flag block, or any block +under armed M89 modality. +WriteCompoundMotion(JsonObject, string, JsonArray, Vec3d) destroys any +pre-written MotionEvent, so the retract is appended +after the cycle expansion instead:

+
  • Cycle expanded — a rapid item to (final X, final Y, retract Z) +is appended to the CompoundMotion items and the block's +final ProgramXyz is lifted to the retract plane. The MB math is +ResolveRetractTargetZ(JsonObject, Vec3d, List<INcDependency>, ISentenceCarrier, NcDiagnosticProgress) verbatim. +The real TNC runs M140 at block start (retract, then position + cycle); +appending it is a transient-only divergence — the endpoint chain +re-anchors on the next command point (the P3 PLANE MOVE precedent) and +the appended order is the safer trajectory. An F on the M140 is +recorded on the item but the appended retract stays rapid +(corpus M140-on-call blocks are all F-less).
  • Cycle did not expand (call consumed without motion) — the plain +HeidenhainMFunctionSyntax retract behavior runs here +unchanged, so a fail-soft call never silently drops the retract.
+Must run after the shared cycle syntaxes +(DrillingCycleSyntax/PeckDrillingCycleSyntax) +and before McXyzSyntax. +
+
+ +
+
public class HeidenhainCycleRetractSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainCycleRetractSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ HeidenhainCycleRetractSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainCycleRetractSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainCycleRetractSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainCycleRetractSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Source XML element.

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

Fields +

+ + + +

+ RetractZKey + +

+ +

Record key of the appended retract plane (program Z) on the call record.

+
+
+ +
+
public const string RetractZKey = "RetractZ"
+
+ + + + +

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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainMFunctionSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainMFunctionSyntax.html new file mode 100644 index 00000000..7ccb59af --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainMFunctionSyntax.html @@ -0,0 +1,552 @@ + + + + + Class HeidenhainMFunctionSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainMFunctionSyntax +

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

Heidenhain-specific M-function semantics for the near-universal corpus +family:

+
  • M126/M127 — shortest-path rotary traverse on/off. +Writes the modal RotaryWrap { Shortest } section consumed by +McAbcCyclicPathSyntax (absent = shortest, the shared +default); the Heidenhain preset's Logic ModalCarry tracks the +section.
  • M128/M129 — owned by HeidenhainRtcpSyntax +since P3 (full RTCP on the ToolHeightCompensation section); +this syntax no longer touches them.
  • M140 MB — tool-axis retract. Executes a machine-coordinate +move along +Z (the corpus machines are table-tilting, so the tool +axis stays machine +Z; a head-machine generalization is a recorded +P6 backlog item): +MB+n retracts by n mm, MB MAX retracts to the positive +Z stroke limit (IStrokeLimitConfig; unresolvable limit +warns M140--NoStrokeLimit and skips). The retract runs at the +modal feed (the statement's F is recorded on the MotionEvent as +RetractFeedrate, not folded into the modal feedrate).
+Must run before McAbcCyclicPathSyntax (RotaryWrap) and +before LinearMotionSyntax/McXyzSyntax +(M140 occupies the block's MotionEvent). +
+
+ +
+
public class HeidenhainMFunctionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainMFunctionSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ HeidenhainMFunctionSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainMFunctionSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainMFunctionSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainMFunctionSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Source XML element.

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

Fields +

+ + + +

+ RotaryWrapSection + +

+ +

Modal section consumed by McAbcCyclicPathSyntax; absent = shortest (shared default).

+
+
+ +
+
public const string RotaryWrapSection = "RotaryWrap"
+
+ + + + +

Field Value

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

+ ShortestKey + +

+ +

Key of the boolean inside RotaryWrapSection.

+
+
+ +
+
public const string ShortestKey = "Shortest"
+
+ + + + +

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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainMirrorTransformSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainMirrorTransformSyntax.html new file mode 100644 index 00000000..d4cb0769 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainMirrorTransformSyntax.html @@ -0,0 +1,753 @@ + + + + + Class HeidenhainMirrorTransformSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainMirrorTransformSyntax +

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

Simulates the Heidenhain DIN/ISO G28 MIRROR IMAGE function +(the CYCL DEF 8 twin): consumes the statement list +HeidenhainMirrorImageSyntax recorded under +Parsing.MirrorImage, keeps the modal mirror set in the root +SectionKey section (each statement REPLACES the set — +course 62192's four-quadrant idiom relies on G28 Y after +G28 X Y leaving only Y mirrored; bare G28 resets), and +writes the sign-flip matrix into +ProgramToMcTransform as the +TransformSource entry.

+

+Must run before every other transform writer +(HeidenhainPlaneTiltSyntax downward) so the mirror +entry is the chain's first — the mirror flips program +coordinates about the current datum inside the active working plane, +i.e. innermost: tilt, tool-height and coordinate-offset entries +compose after it and are never themselves mirrored. Because every +motion semantic resolves contours in program coordinates and maps +each interpolated point through the composed chain +(CreateProgramPosToMcFunc(LazyLinkedListNode<SyntaxPiece>, IMachineAxisConfig)), +the arc-handedness flip (G02↔G03) and the radius-compensation side +flip (G41↔G42) a real control performs under a single-axis mirror +emerge from the pointwise mapping — no re-tagging of +IsCcw or the compensation side happens, +and none is needed. +

+

+Two statement shapes stay recognized-but-not-simulated: +a rotary axis letter (RotaryUnsupportedId — a rotary +mirror is not representable in the XYZ transform chain; the letter is +dropped from the set, the statement still replaces) and the +Fanuc-shaped valued form (ValuedUnsupportedId — the +manual's mirror idiom is bare letters, so G91 G28 X0 Y0 Z0 in +a mislabeled .I file must not arm a full-XYZ mirror; the +statement is consumed with zero effect). +

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

Examples

+

Activation — a single-axis statement arms the mirror: the modal +section appears and the chain gets the sign-flip entry: +#BeforeBuild:

+
{ "Parsing": { "MirrorImage": [ { "Axes": ["X"] } ] } }
+

#AfterBuild:

+
{
+  "MirrorImage": { "Axes": ["X"] },
+  "ProgramToMcTransform": [
+    {
+      "Source": "MirrorImage",
+      "Kind": "Static",
+      "Mat4d": [-1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
+    }
+  ]
+}
+

Replace semantics — a new statement replaces the previous set (never +a union): Y-only survives after an X-mirror block: +#Previous:

+
{ "MirrorImage": { "Axes": ["X"] } }
+

#BeforeBuild:

+
{ "Parsing": { "MirrorImage": [ { "Axes": ["Y"] } ] } }
+

#AfterBuild:

+
{
+  "MirrorImage": { "Axes": ["Y"] },
+  "ProgramToMcTransform": [
+    {
+      "Source": "MirrorImage",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,-1,0,0, 0,0,1,0, 0,0,0,1]
+    }
+  ]
+}
+

Modal carry — a statement-free block re-writes the active set and its +chain entry (single-step lookback, the DatumShift pattern): +#Previous:

+
{ "MirrorImage": { "Axes": ["X", "Y"] } }
+

#BeforeBuild:

+
{}
+

#AfterBuild:

+
{
+  "MirrorImage": { "Axes": ["X", "Y"] },
+  "ProgramToMcTransform": [
+    {
+      "Source": "MirrorImage",
+      "Kind": "Static",
+      "Mat4d": [-1,0,0,0, 0,-1,0,0, 0,0,1,0, 0,0,0,1]
+    }
+  ]
+}
+

Bare reset — the empty set stays modal (blocking a stale carry) and +no chain entry is written: +#Previous:

+
{ "MirrorImage": { "Axes": ["X"] } }
+

#BeforeBuild:

+
{ "Parsing": { "MirrorImage": [ { "Axes": [] } ] } }
+

#AfterBuild:

+
{ "MirrorImage": { "Axes": [] } }
+

Rotary letter — dropped from the set with the +HeidenhainMirror–RotaryUnsupported warning (statement still +replaces, so a lone rotary word clears an active linear mirror): +#Previous:

+
{ "MirrorImage": { "Axes": ["Y"] } }
+

#BeforeBuild:

+
{ "Parsing": { "MirrorImage": [ { "Axes": ["C"] } ] } }
+

#AfterBuild:

+
{ "MirrorImage": { "Axes": [] } }
+

Valued (Fanuc-shaped) statement — consumed with zero mirror effect +(HeidenhainMirror–ValuedUnsupported); the active set carries +through unchanged: +#Previous:

+
{ "MirrorImage": { "Axes": ["X"] } }
+

#BeforeBuild:

+
{
+  "Parsing": {
+    "MirrorImage": [ { "Axes": ["X", "Y", "Z"], "Valued": true } ]
+  }
+}
+

#AfterBuild:

+
{
+  "MirrorImage": { "Axes": ["X"] },
+  "ProgramToMcTransform": [
+    {
+      "Source": "MirrorImage",
+      "Kind": "Static",
+      "Mat4d": [-1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
+    }
+  ]
+}
+

Sequential statements on one block — applied in source order, each +replacing (the last one wins): +#BeforeBuild:

+
{
+  "Parsing": {
+    "MirrorImage": [ { "Axes": ["X"] }, { "Axes": ["Y"] } ]
+  }
+}
+

#AfterBuild:

+
{
+  "MirrorImage": { "Axes": ["Y"] },
+  "ProgramToMcTransform": [
+    {
+      "Source": "MirrorImage",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,-1,0,0, 0,0,1,0, 0,0,0,1]
+    }
+  ]
+}
+

Never-active program — no statement, no previous section: the block +stays untouched (files without G28 dump identically to before this +syntax existed): +#BeforeBuild:

+
{ "ProgramXyz": { "X": 10, "Y": 0, "Z": 0 } }
+

#AfterBuild:

+
{ "ProgramXyz": { "X": 10, "Y": 0, "Z": 0 } }
+ + + + +

Constructors +

+ + + + +

+ HeidenhainMirrorTransformSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainMirrorTransformSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainMirrorTransformSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainMirrorTransformSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Source XML element.

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

Fields +

+ + + +

+ RotaryUnsupportedId + +

+ +

Diagnostic id: a rotary axis letter in a G28 statement +(dropped from the mirror set — not representable in the XYZ chain).

+
+
+ +
+
public const string RotaryUnsupportedId = "HeidenhainMirror--RotaryUnsupported"
+
+ + + + +

Field Value

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

+ SectionKey + +

+ +

Root-section key of the modal mirror set: {“Axes”: [...]}, +the letters currently mirrored (empty = mirror off). Written on +every block once the program has touched G28, carried by this +syntax's own single-step lookback (the DatumShift pattern).

+
+
+ +
+
public const string SectionKey = "MirrorImage"
+
+ + + + +

Field Value

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

+ TransformSource + +

+ +

ProgramToMcTransform source name +of the mirror entry. Always the chain's first entry (this syntax +runs ahead of every other transform writer).

+
+
+ +
+
public const string TransformSource = "MirrorImage"
+
+ + + + +

Field Value

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

+ ValuedUnsupportedId + +

+ +

Diagnostic id: the Fanuc-shaped valued statement +(consumed with zero mirror effect).

+
+
+ +
+
public const string ValuedUnsupportedId = "HeidenhainMirror--ValuedUnsupported"
+
+ + + + +

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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainMotionModeSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainMotionModeSyntax.html new file mode 100644 index 00000000..d813837b --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainMotionModeSyntax.html @@ -0,0 +1,576 @@ + + + + + Class HeidenhainMotionModeSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainMotionModeSyntax +

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

Heidenhain-specific: maps the klartext L statement marker +(written by HeidenhainLSyntax) onto the shared ISO +motion-mode vocabulary. An L block carrying the one-shot +FMAX flag becomes a rapid (G00) block; every other L +block is a feed move (G01) driven by the modal feedrate. The injected +G00/G01 flag is consumed downstream exactly like a DIN/ISO block — +by LinearMotionSyntax on ordinary moves and by +MachineCoordSelectSyntax on machine-coordinate (M91) +moves — so no shared syntax needs Heidenhain-specific behavior.

+

+FMAX is one-shot on the real TNC: because every klartext motion is an +L statement and this syntax stamps a mode per statement, the +rapid mode never leaks into the next block — the following L +without FMAX is stamped G01 again. FAUTO (feed from cycle) is +consumed as a feed move. Must be placed at the top of the Logic bundle, +before MachineCoordSelectSyntax and +LinearMotionSyntax. +

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

Examples

+

Feed move — the L marker is consumed and G01 is appended to Flags: +#BeforeBuild:

+
{ "Parsing": { "L": true, "X": 10 } }
+

#AfterBuild:

+
{ "Parsing": { "X": 10, "Flags": ["G01"] } }
+

Rapid move — the one-shot FMAX flag is consumed and G00 is appended: +#BeforeBuild:

+
{ "Parsing": { "Flags": ["FMAX"], "L": true, "X": 10 } }
+

#AfterBuild:

+
{ "Parsing": { "Flags": ["G00"], "X": 10 } }
+

Non-L block — untouched: +#BeforeBuild:

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

#AfterBuild:

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

DIN/ISO numeric L (helix turn count / repeat word captured by the +integer tag syntax in the same mixed-dialect list) — only the +boolean statement marker written by HeidenhainLSyntax +is a klartext L statement; the numeric record is left for +CircularMotionSyntax: +#BeforeBuild:

+
{ "Parsing": { "Flags": ["G02"], "L": 3, "I": 5 } }
+

#AfterBuild:

+
{ "Parsing": { "Flags": ["G02"], "L": 3, "I": 5 } }
+ + + + +

Constructors +

+ + + + +

+ HeidenhainMotionModeSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainMotionModeSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainMotionModeSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainMotionModeSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Source XML element.

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

Fields +

+ + + +

+ FautoFlag + +

+ +

Feed-from-cycle flag; consumed as a feed move.

+
+
+ +
+
public const string FautoFlag = "FAUTO"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ FmaxFlag + +

+ +

One-shot rapid flag on klartext motion statements.

+
+
+ +
+
public const string FmaxFlag = "FMAX"
+
+ + + + +

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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainPathSmoothingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainPathSmoothingSyntax.html new file mode 100644 index 00000000..956b51f3 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainPathSmoothingSyntax.html @@ -0,0 +1,511 @@ + + + + + Class HeidenhainPathSmoothingSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainPathSmoothingSyntax +

+ +
+
Namespace
Hi.NcParsers.LogicSyntaxs.Heidenhain
+
Assembly
HiMech.dll
+
+ +

Heidenhain-specific: consumes the structured CYCL DEF 32 TOLERANCE +record (HeidenhainToleranceCyclSyntax) into the shared +modal PathSmoothing section (tracked by the Logic ModalCarry): +a positive tolerance arms smoothing +({IsEnabled:true, Term:“CYCL DEF 32”, Tolerance, HscMode?, Ta?}); +a bare or zero-tolerance cycle cancels it. Untouched blocks are left +to ModalCarry; the stream's first block seeds a conservative +{IsEnabled:false} (Siemens sibling shape). Replaces the dead +FanucPathSmoothingSyntax in the Heidenhain list (it read +Parsing[“G05.1”], which no Heidenhain capture produces).

+
+
+ +
+
public class HeidenhainPathSmoothingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainPathSmoothingSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ HeidenhainPathSmoothingSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainPathSmoothingSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainPathSmoothingSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainPathSmoothingSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Source XML element.

+
+
+ + + + + + + + + + + + +

Fields +

+ + + +

+ Term + +

+ +

Term recorded when CYCL DEF 32 owns the path-smoothing state.

+
+
+ +
+
public const string Term = "CYCL DEF 32"
+
+ + + + +

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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainPivotTransformationSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainPivotTransformationSyntax.html new file mode 100644 index 00000000..187314e6 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainPivotTransformationSyntax.html @@ -0,0 +1,557 @@ + + + + + Class HeidenhainPivotTransformationSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainPivotTransformationSyntax +

+ +
+
Namespace
Hi.NcParsers.LogicSyntaxs.Heidenhain
+
Assembly
HiMech.dll
+
+ +

Heidenhain pivot gate over the shared engine +(PivotTransformUtil): writes the +PivotTransformSource entry on blocks +where commanded XYZ needs the Pn→MC kinematic rigid transform — an +active tilted plane (HeidenhainPlaneTiltSyntax's +PLANE SPATIAL term, or a mixed-dialect G68/G68.2 term), an +active RTCP modal (RtcpTerms on +the ToolHeightCompensation section — the term check +covers RTCP blocks whose rotary state is stable, which the +Dynamic-entry branch alone would miss), or a Dynamic chain entry.

+

+The third sibling gate after PivotTransformationSyntax +(ISO/Fanuc) and SiemensPivotTransformationSyntax; +all write the identical JSON vocabulary through the shared engine and +only one gate is registered per brand pipeline. Heidenhain has no +plain-geometry-frame exclusion (klartext datum shifts use their own +chain sources, never TiltTransform). Same +chain-position contract: after all Pn-frame writers, so the +PivotTransform entry lands last. +

+
+
+ +
+
public class HeidenhainPivotTransformationSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainPivotTransformationSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + +

Examples

+

Real-kinematics cases below wire TestDeps.CodeKinematics +with the default chain code [O][Z][A][w];[O][Y][X][B][S][t] +— a table-A / head-B 5-axis machine (see +PivotTransformationSyntax's corpus notes for the +zero-offset chain caveats).

+

+Plain-mode skip — no tilt, no RTCP: untouched. +

+#BeforeBuild: +
{}
+#AfterBuild: +
{}
+Indexed rotary without tilt/RTCP (the inactive G69 sentinel) — plain +mode, the gate must not fold the pivot: +#BeforeBuild: +
{
+  "TiltTransform": { "Term": "G69" },
+  "MachineCoordinateState": { "A": 45 }
+}
+#AfterBuild: +
{
+  "TiltTransform": { "Term": "G69" },
+  "MachineCoordinateState": { "A": 45 }
+}
+Active M128 RTCP signalled by the ToolHeightCompensation term — the +TestDeps.Kinematics stub makes the engine's pivot matrix +collapse to identity; no Dynamic entry exists (stable rotary), so +the entry stays Static — the branch the Dynamic-only detection +would miss: +#BeforeBuild: +
{
+  "ToolHeightCompensation": { "Offset_mm": 50, "Term": "M128", "OffsetId": 1 }
+}
+#AfterBuild: +
{
+  "ToolHeightCompensation": { "Offset_mm": 50, "Term": "M128", "OffsetId": 1 },
+  "ProgramToMcTransform": [
+    {
+      "Source": "PivotTransform",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
+    }
+  ]
+}
+Active PLANE SPATIAL with an indexed table angle — real kinematics: +the engine folds the table-A Rx(45°) rigid matrix, the same math the +ISO sibling produces for G68.2: +#BeforeBuild: +
{
+  "TiltTransform": { "Term": "PLANE SPATIAL" },
+  "MachineCoordinateState": { "A": 45 }
+}
+#AfterBuild: +
{
+  "TiltTransform": { "Term": "PLANE SPATIAL" },
+  "MachineCoordinateState": { "A": 45 },
+  "ProgramToMcTransform": [
+    {
+      "Source": "PivotTransform",
+      "Kind": "Static",
+      "Mat4d": [
+        1, 0, 0, 0,
+        0, 0.7071067811865475, -0.7071067811865475, 0,
+        0, 0.7071067811865475, 0.7071067811865475, 0,
+        0, 0, 0, 1
+      ]
+    }
+  ]
+}
+ + + + +

Constructors +

+ + + + +

+ HeidenhainPivotTransformationSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainPivotTransformationSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainPivotTransformationSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainPivotTransformationSyntax(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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainPlaneTiltSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainPlaneTiltSyntax.html new file mode 100644 index 00000000..7e0ed4a4 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainPlaneTiltSyntax.html @@ -0,0 +1,679 @@ + + + + + Class HeidenhainPlaneTiltSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainPlaneTiltSyntax +

+ +
+
Namespace
Hi.NcParsers.LogicSyntaxs.Heidenhain
+
Assembly
HiMech.dll
+
+ +

Heidenhain PLANE consumer — the Heidenhain sibling of +IsoG68p2TiltSyntax (Fanuc G68.2) and +SiemensCycle800TiltSyntax both XmlDocs promise.

+
  • PLANE SPATIAL — composes the tilted work plane +Rx(SPA)·Ry(SPB)·Rz(SPC) (row-vector, degrees; the HardNc +oracle's HeidenhainPlaneSpatialArg matrix verbatim) into +ProgramToMcTransform as the shared +TransformSource entry with +Term = "PLANE SPATIAL".
  • MOVE / TURN — the implicit rotary positioning (the +CYCLE800 "G53.1 half"): with IMachineKinematics wired +the plane orientation is solved to machine ABC (full-orientation IK +first so a pure in-plane SPC under TABLE ROT still turns the +table; tool-axis-normal fallback for machines with fewer rotary DOF; +no identity short-circuit — the explicit zero-angle +PLANE SPATIAL SPA+0 SPB+0 SPC+0 TURN is the klartext idiom +for returning the rotaries to 0, oracle parity) +and written into MachineCoordinateState +plus a non-modal MotionEvent with +Term = "PLANE SPATIAL". MOVE's DIST (tool retract +radius during the swivel) and the TCP-preserving XYZ compensation +are recorded but not simulated — the machine XYZ stays at the +previous position like TURN, a transient-only divergence from the +HardNc oracle (endpoints re-anchor at the next commanded point); +MOVE's F is recorded on the event as MoveFeedrate.
  • COORD ROT is honored only when the plane rotates purely +about the tool axis (ToolAxisDirection, +TNC manual rule; HardNc parity): the coordinate system rotates and +the rotaries stay. Any other rotation — or TABLE ROT, or neither +word — positions the rotary axes on MOVE/TURN.
  • SEQ± is recorded in the section; when the IK solution's +master rotary (first declared rotary axis) violates an explicit SEQ +preference the preference is not applied and +Coord-Tilt--007 warns (solution-family selection is not +modeled; the HardNc ±2π window wrap would be undone by +McAbcCyclicPathSyntax's shortest-cyclic tail pass, and +the corpus never exercises SEQ with MOVE/TURN).
  • PLANE RESET — the shared inactive sentinel +(Term = "G69" + identity entry). The rotary axes are not +re-positioned on reset (CYCLE800 cancel precedent; corpus programs +follow with explicit rotary moves).
  • PLANE VECTOR / PROJECTED / EULER / POINTS / RELATIV / +AXIAL — recognized-but-not-simulated: consumed, +HeidenhainPlane--Unsupported warns, and the previous tilt +state carries unchanged (the HardNc oracle instead reuses a stale +spatial arg here — SoftNc deliberately exceeds it).
+

+Owns the once-per-block TiltTransform modal carry for +the Heidenhain list (CarryForwardFromPrevious(LazyLinkedListNode<SyntaxPiece>, JsonObject)). +Must run before ToolHeightOffsetSyntax / +HeidenhainToolOffsetSyntax (their translation follows +the tilt entry's normal — the oracle's tool-normal-tiltable rule) +and before McAbcSyntax / the coordinate-offset +syntaxes (chain order: tilt entry ahead of CoordinateOffset, +mirroring the Siemens frame slot; implicit MC rotary values must +land before McAbc's per-axis lookback). +

+
+
+ +
+
public class HeidenhainPlaneTiltSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainPlaneTiltSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + +

Examples

+

PLANE RESET — the shared inactive sentinel: +#BeforeBuild:

+
{ "Parsing": { "PLANE": { "Mode": "RESET", "Positioning": "STAY" } } }
+

#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]
+    }
+  ]
+}
+

PLANE SPATIAL with STAY — tilt only, no rotary positioning, no +kinematics needed. SPA+30 gives Rx(30°) (row-vector; the +HardNc Rx(SPA)·Ry(SPB)·Rz(SPC) matrix): +#BeforeBuild:

+
{
+  "Parsing": {
+    "PLANE": {
+      "Mode": "SPATIAL", "SPA": 30, "SPB": 0, "SPC": 0,
+      "Positioning": "STAY"
+    }
+  }
+}
+

#AfterBuild:

+
{
+  "TiltTransform": {
+    "Term": "PLANE SPATIAL",
+    "SPA": 30, "SPB": 0, "SPC": 0, "Positioning": "STAY"
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "TiltTransform",
+      "Kind": "Static",
+      "Mat4d": [
+        1, 0, 0, 0,
+        0, 0.8660254037844387, 0.49999999999999994, 0,
+        0, -0.49999999999999994, 0.8660254037844387, 0,
+        0, 0, 0, 1
+      ]
+    }
+  ]
+}
+

The turbine STAY form — SEQ and TABLE ROT recorded; angles compose +Rx(-77.516°)·Rz(-10.365°); machine coordinates untouched: +#BeforeBuild:

+
{
+  "Parsing": {
+    "PLANE": {
+      "Mode": "SPATIAL", "SPA": -77.516, "SPB": 0, "SPC": -10.365,
+      "SEQ": "-", "Rot": "TABLE", "Positioning": "STAY"
+    }
+  }
+}
+

#AfterBuild:

+
{
+  "TiltTransform": {
+    "Term": "PLANE SPATIAL",
+    "SPA": -77.516, "SPB": 0, "SPC": -10.365,
+    "SEQ": "-", "Rot": "TABLE", "Positioning": "STAY"
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "TiltTransform",
+      "Kind": "Static",
+      "Mat4d": [
+        0.9836815601642315, -0.17991828198619333, 0, 0,
+        0.03889239026499967, 0.21263946449492488, -0.9763564103946809, 0,
+        0.1756643679644177, 0.9604237970533884, 0.21616697222566972, 0,
+        0, 0, 0, 1
+      ]
+    }
+  ]
+}
+

Recognized-but-not-simulated mode — consumed, warned, previous tilt +(here: none → the G69 default stamp) carries unchanged: +#BeforeBuild:

+
{
+  "Parsing": {
+    "PLANE": {
+      "Mode": "VECTOR",
+      "BX": 1, "BY": 0, "BZ": 0, "NX": 0, "NY": 0, "NZ": 1,
+      "Positioning": "STAY"
+    }
+  }
+}
+

#AfterBuild:

+
{
+  "TiltTransform": { "Term": "G69" }
+}
+ + + + +

Constructors +

+ + + + +

+ HeidenhainPlaneTiltSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainPlaneTiltSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainPlaneTiltSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainPlaneTiltSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Source XML element.

+
+
+ + + + + + + + + + + + +

Fields +

+ + + +

+ MoveFeedrateKey + +

+ +

MotionEvent key recording the MOVE repositioning feed (recorded only).

+
+
+ +
+
public const string MoveFeedrateKey = "MoveFeedrate"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ SpatialTerm + +

+ +

TiltTransform term written for an active PLANE +SPATIAL plane (also the implicit positioning MotionEvent term).

+
+
+ +
+
public const string SpatialTerm = "PLANE SPATIAL"
+
+ + + + +

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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainProgramHeaderSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainProgramHeaderSyntax.html new file mode 100644 index 00000000..619f91d6 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainProgramHeaderSyntax.html @@ -0,0 +1,489 @@ + + + + + Class HeidenhainProgramHeaderSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainProgramHeaderSyntax +

+ +
+
Namespace
Hi.NcParsers.LogicSyntaxs.Heidenhain
+
Assembly
HiMech.dll
+
+ +

Heidenhain-specific: consumes the Parsing.PGM record +(BEGIN|END PGM name MM|INCH) — the unit word is pushed into +Parsing.Flags for the UnitModeSyntax instance +configured with InchCodes=[“INCH”], MetricCodes=[“MM”] (which +must run after this syntax), and END PGM writes the shared +one-shot ProgramEnd section (existence-checked by its +consumers exactly like M30). Consuming PGM also removes the +program-header unconsumed noise every klartext file used to emit.

+
+
+ +
+
public class HeidenhainProgramHeaderSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainProgramHeaderSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + +

Examples

+

BEGIN header — unit word relocated to Flags, PGM consumed: +#BeforeBuild:

+
{ "Parsing": { "PGM": { "Command": "BEGIN", "Name": "TEST", "Unit": "MM" } } }
+

#AfterBuild:

+
{ "Parsing": { "Flags": ["MM"] } }
+

END footer — additionally writes the shared ProgramEnd section: +#BeforeBuild:

+
{ "Parsing": { "PGM": { "Command": "END", "Name": "TEST", "Unit": "MM" } } }
+

#AfterBuild:

+
{
+  "Parsing": { "Flags": ["MM"] },
+  "ProgramEnd": { "Term": "END PGM" }
+}
+ + + + +

Constructors +

+ + + + +

+ HeidenhainProgramHeaderSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainProgramHeaderSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainProgramHeaderSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainProgramHeaderSyntax(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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainRadiusCompSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainRadiusCompSyntax.html new file mode 100644 index 00000000..27ca8841 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainRadiusCompSyntax.html @@ -0,0 +1,497 @@ + + + + + Class HeidenhainRadiusCompSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainRadiusCompSyntax +

+ +
+
Namespace
Hi.NcParsers.LogicSyntaxs.Heidenhain
+
Assembly
HiMech.dll
+
+ +

Heidenhain-specific: maps the klartext radius-compensation words +captured by HeidenhainLSyntax (RL/RR/R0 +boolean Parsing-root records) onto the shared vocabulary consumed by +the radius-compensation pass: RL → Parsing.G41 {D: toolId}, +RR → G42, R0 → G40 flag. The offset id is the current +tool number (klartext has no D word; IToolOffsetConfig documents +the offset id as the Heidenhain tool number), resolved by walking back +to the most recent ToolChange section. A missing or non-numeric +tool id degrades to mode-only injection (radius 0 — the compensation +pass records the state but applies no geometric offset) with an +RadiusComp–ToolUnresolved warning.

+

+Must run before the PostLogic radius-compensation pass (any Logic +position works — PostLogic sees completed Logic output) and after +HeidenhainToolChangeSyntax so a same-block TOOL CALL is +visible. +

+
+
+ +
+
public class HeidenhainRadiusCompSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainRadiusCompSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + +

Examples

+

RL with a previous tool — G41 with the tool number as offset id: +#Previous:

+
{ "ToolChange": { "ToolId": 2, "IsChange": true, "Term": "TOOL CALL" } }
+

#BeforeBuild:

+
{ "Parsing": { "RL": true, "X": 10 } }
+

#AfterBuild:

+
{ "Parsing": { "X": 10, "G41": { "D": 2 } } }
+

R0 — compensation off maps to the G40 flag: +#BeforeBuild:

+
{ "Parsing": { "R0": true, "X": 10 } }
+

#AfterBuild:

+
{ "Parsing": { "X": 10, "Flags": ["G40"] } }
+ + + + +

Constructors +

+ + + + +

+ HeidenhainRadiusCompSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainRadiusCompSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainRadiusCompSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainRadiusCompSyntax(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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainRtcpSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainRtcpSyntax.html new file mode 100644 index 00000000..5f9c05a5 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainRtcpSyntax.html @@ -0,0 +1,781 @@ + + + + + Class HeidenhainRtcpSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainRtcpSyntax +

+ +
+
Namespace
Hi.NcParsers.LogicSyntaxs.Heidenhain
+
Assembly
HiMech.dll
+
+ +

Heidenhain RTCP (M128/M129, FUNCTION TCPM/FUNCTION RESET TCPM): the +Heidenhain sibling of G43p4RtcpSyntax and +SiemensTraoriSyntax. While RTCP is active the +IToolHeightCompensationDef section carries the +activating term (M128Term or TcpmTerm) +and the ToolHeightCompensation chain entry becomes a +tool-normal · offset translation at the block endpoint ABC +(MakeToolHeightMat(IMachineKinematics, Vec3d, double)), tagged +KindDynamic when the rotary state +changes across the block — the signal that routes the block to +ClLinear per-step IK.

+

+Tool length ownership stays with the TOOL CALL machinery +(HeidenhainToolOffsetSyntax — table height + DL, which +runs earlier in the bundle): activation adopts the compensation +already resolved on this or the previous block and records the +adopted owner in PriorTermKey; +a TOOL CALL during the modal re-takes the section with the fresh +offset; M129 / FUNCTION RESET TCPM hands the section back to the +recorded owner (default Term — +klartext tool-length compensation survives RTCP deactivation). The +TOOL CALL Delta_mm (DL) rides along so the hand-back restores +it. A deactivation with no active RTCP (the corpus' ubiquitous +program-head M129) is consumed silently. Same-block +contradiction (M128 with M129): the off state wins conservatively +(the P1 rule, kept for continuity). +

+

+The M128 feed limit (M128 F6000., or an FQn token the +evaluator could not resolve) is recorded on the section as +FeedLimitKey — recorded, not simulated. FUNCTION TCPM +behavior arguments are recorded by the parsing syntax and warn +Tcpm--ArgsNotSimulated on activation. +

+

+Must run after ToolHeightOffsetSyntax / +HeidenhainToolOffsetSyntax and the coordinate-offset +syntaxes (mirroring the Fanuc G43.4 / Siemens TRAORI slot) and +before HeidenhainPivotTransformationSyntax, +whose gate recognizes the RtcpTerms and folds the +kinematic pivot. Silently degrades to a plain UnitZ · offset +translation when IMachineKinematics is absent. +

+
+
+ +
+
public class HeidenhainRtcpSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainRtcpSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + +

Examples

+

Activation adopting the TOOL CALL compensation resolved earlier on +the same block (feed limit recorded; owner recorded for hand-back): +#BeforeBuild:

+
{
+  "Parsing": { "M128": { "F": 6000 } },
+  "ToolHeightCompensation": {
+    "Offset_mm": 120.5, "Term": "TOOL CALL", "OffsetId": 2, "Delta_mm": 0.5
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "ToolHeightCompensation",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,120.5,1]
+    }
+  ]
+}
+

#AfterBuild:

+
{
+  "ToolHeightCompensation": {
+    "Offset_mm": 120.5, "Term": "M128", "OffsetId": 2,
+    "PriorTerm": "TOOL CALL", "Delta_mm": 0.5, "FeedLimit": 6000
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "ToolHeightCompensation",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,120.5,1]
+    }
+  ]
+}
+

Modal continuation — no word on the block; the snapshot is carried +and the entry rebuilt: +#Previous:

+
{
+  "ToolHeightCompensation": {
+    "Offset_mm": 120.5, "Term": "M128", "OffsetId": 2,
+    "PriorTerm": "TOOL CALL", "Delta_mm": 0.5, "FeedLimit": 6000
+  }
+}
+

#BeforeBuild:

+
{}
+

#AfterBuild:

+
{
+  "ToolHeightCompensation": {
+    "Offset_mm": 120.5, "Term": "M128", "OffsetId": 2,
+    "PriorTerm": "TOOL CALL", "Delta_mm": 0.5, "FeedLimit": 6000
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "ToolHeightCompensation",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,120.5,1]
+    }
+  ]
+}
+

M129 hand-back — the section returns to the recorded owner and the +plain translation entry is rebuilt; TOOL CALL modal re-resolution +resumes on following blocks: +#Previous:

+
{
+  "ToolHeightCompensation": {
+    "Offset_mm": 120.5, "Term": "M128", "OffsetId": 2,
+    "PriorTerm": "TOOL CALL", "Delta_mm": 0.5, "FeedLimit": 6000
+  }
+}
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["M129"] } }
+

#AfterBuild:

+
{
+  "ToolHeightCompensation": {
+    "Offset_mm": 120.5, "Term": "TOOL CALL", "OffsetId": 2, "Delta_mm": 0.5
+  },
+  "ProgramToMcTransform": [
+    {
+      "Source": "ToolHeightCompensation",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,120.5,1]
+    }
+  ]
+}
+

Defensive M129 with no active RTCP (every GPE program head) — +consumed silently, nothing written: +#BeforeBuild:

+
{ "Parsing": { "Flags": ["M129"] } }
+

#AfterBuild:

+
{}
+

Bare activation with no prior compensation and no kinematics — the +section is taken with zero offset and the entry collapses to +identity: +#BeforeBuild:

+
{ "Parsing": { "M128": { "Bare": true } } }
+

#AfterBuild:

+
{
+  "ToolHeightCompensation": { "Offset_mm": 0, "Term": "M128", "OffsetId": 0 },
+  "ProgramToMcTransform": [
+    {
+      "Source": "ToolHeightCompensation",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
+    }
+  ]
+}
+ + + + +

Constructors +

+ + + + +

+ HeidenhainRtcpSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainRtcpSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainRtcpSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainRtcpSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Source XML element.

+
+
+ + + + + + + + + + + + +

Fields +

+ + + +

+ FeedLimitKey + +

+ +

Section key recording the M128 feed limit (compensating-movement +feed cap) — recorded, not simulated.

+
+
+ +
+
public const string FeedLimitKey = "FeedLimit"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ M128Term + +

+ +

Ownership term while the classic M128 RTCP is active.

+
+
+ +
+
public const string M128Term = "M128"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ RtcpTerms + +

+ +

The Heidenhain RTCP terms — the brand vocabulary the pivot gate +(HeidenhainPivotTransformationSyntax) recognizes on +the ToolHeightCompensation section.

+
+
+ +
+
public static readonly string[] RtcpTerms
+
+ + + + +

Field Value

+
+
string[]
+
+
+ + + + + + + + + + +

+ TcpmTerm + +

+ +

Ownership term while FUNCTION TCPM RTCP is active.

+
+
+ +
+
public const string TcpmTerm = "FUNCTION TCPM"
+
+ + + + +

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<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
+
+
+ + + + + + + + + + + + + + +

+ IsRtcpTerm(string) + +

+ +

True when term is a Heidenhain RTCP owner term.

+
+
+ +
+
public static bool IsRtcpTerm(string term)
+
+ +

Parameters

+
+
term string
+
+
+ +

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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainStockDeclarationSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainStockDeclarationSyntax.html new file mode 100644 index 00000000..e45a5bff --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainStockDeclarationSyntax.html @@ -0,0 +1,564 @@ + + + + + Class HeidenhainStockDeclarationSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainStockDeclarationSyntax +

+ +
+
Namespace
Hi.NcParsers.LogicSyntaxs.Heidenhain
+
Assembly
HiMech.dll
+
+ +

Heidenhain-specific: consumes the Parsing[“BLK FORM”] record +(workpiece blank declaration, present in virtually every klartext +file) into the brand-neutral StockDeclaration section — +recognized and recorded, not simulated. The simulation stock always +comes from the project's own workpiece setup, mirroring the HardNc +oracle which recognizes-and-skips the same lines; the structured +record keeps the declared blank readable for a future stock consumer +without feeding geometry today.

+
+
+ +
+
public class HeidenhainStockDeclarationSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainStockDeclarationSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + +

Examples

+

Corner declaration (BLK FORM 0.1) — record relocated, Parsing consumed: +#BeforeBuild:

+
{ "Parsing": { "BLK FORM": { "Type": "0.1", "Axis": "Z", "X": 0, "Y": 0, "Z": -40 } } }
+

#AfterBuild:

+
{
+  "StockDeclaration": {
+    "Term": "BLK FORM",
+    "Type": "0.1", "Axis": "Z",
+    "X": 0, "Y": 0, "Z": -40
+  }
+}
+

Cylinder declaration: +#BeforeBuild:

+
{ "Parsing": { "BLK FORM": { "Type": "CYLINDER", "Axis": "Z", "R": 50, "L": 105 } } }
+

#AfterBuild:

+
{
+  "StockDeclaration": {
+    "Term": "BLK FORM",
+    "Type": "CYLINDER", "Axis": "Z",
+    "R": 50, "L": 105
+  }
+}
+ + + + +

Constructors +

+ + + + +

+ HeidenhainStockDeclarationSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainStockDeclarationSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainStockDeclarationSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainStockDeclarationSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Source XML element.

+
+
+ + + + + + + + + + + + +

Fields +

+ + + +

+ ParsingKey + +

+ +

Parsing key produced by the BLK FORM parsing syntax.

+
+
+ +
+
public const string ParsingKey = "BLK FORM"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ SectionKey + +

+ +

Key of the section written to the piece root.

+
+
+ +
+
public const string SectionKey = "StockDeclaration"
+
+ + + + +

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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainToolChangeSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainToolChangeSyntax.html new file mode 100644 index 00000000..07f70d56 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainToolChangeSyntax.html @@ -0,0 +1,553 @@ + + + + + Class HeidenhainToolChangeSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainToolChangeSyntax +

+ +
+
Namespace
Hi.NcParsers.LogicSyntaxs.Heidenhain
+
Assembly
HiMech.dll
+
+ +

Heidenhain-specific: consumes the Parsing[“TOOL CALL”] record +(written by HeidenhainToolCallSyntax) +into the shared SectionName section so +ToolChangeSemantic fires the tooling act. A +klartext TOOL CALL always performs the change — no separate M06 +trigger exists — so IsChangeKey is always +true with Term = “TOOL CALL”.

+

+The spindle-speed word (S) is relocated to the root of +Parsing so the shared +SpindleSpeedSyntax — which must run after this syntax in +the Logic bundle — records it modally. Numeric tool ids are written as +ints (the act chain is int-keyed); non-numeric ids stay strings and +resolve (or warn) at the semantic layer. +

+

+P0 limits recorded as diagnostics: non-Z tool axis +(ToolChange--AxisUnsupported), non-zero DL/DR deltas +(ToolChange--DeltaUnsupported; zero deltas are consumed +silently), and a TOOL CALL without a tool id +(ToolChange--MissingToolId, e.g. a variable tool number the +parser could not capture). +

+

+Known P2 limitation: a quoted tool NAME that happens to spell a Q +token (TOOL CALL "Q1" Z) loses its quotes at capture, so the +evaluator substitutes the Q parameter's value and the numeric branch +below treats it as a tool number. Corpus-zero (real names are +"B40R"-style); fixing it needs the capture to preserve the +quoted-ness, which would change the P0-pinned record shape. +

+
+
+ +
+
public class HeidenhainToolChangeSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainToolChangeSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + +

Examples

+

Numeric tool call — id becomes an int, S is relocated to the Parsing +root for the shared spindle syntax: +#BeforeBuild:

+
{ "Parsing": { "TOOL CALL": { "Axis": "Z", "S": "4000", "T": "2" } } }
+

#AfterBuild:

+
{
+  "Parsing": { "S": 4000 },
+  "ToolChange": { "ToolId": 2, "IsChange": true, "Term": "TOOL CALL" }
+}
+

Named tool with zero deltas — the name carries as a string ToolId; +literal DL/DR ride in the section (DL feeds the length compensation; +a non-zero DR would warn): +#BeforeBuild:

+
{ "Parsing": { "TOOL CALL": { "Axis": "Z", "S": "1200", "DL": "+0.0", "DR": "+0.0", "T": "B40R" } } }
+

#AfterBuild:

+
{
+  "Parsing": { "S": 1200 },
+  "ToolChange": { "ToolId": "B40R", "IsChange": true, "Term": "TOOL CALL", "DL": 0, "DR": 0 }
+}
+ + + + +

Constructors +

+ + + + +

+ HeidenhainToolChangeSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainToolChangeSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainToolChangeSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainToolChangeSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Source XML element.

+
+
+ + + + + + + + + + + + +

Fields +

+ + + +

+ Term + +

+ +

Value written to TermKey for klartext tool calls.

+
+
+ +
+
public const string Term = "TOOL CALL"
+
+ + + + +

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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainToolOffsetSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainToolOffsetSyntax.html new file mode 100644 index 00000000..30178570 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainToolOffsetSyntax.html @@ -0,0 +1,573 @@ + + + + + Class HeidenhainToolOffsetSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class HeidenhainToolOffsetSyntax +

+ +
+
Namespace
Hi.NcParsers.LogicSyntaxs.Heidenhain
+
Assembly
HiMech.dll
+
+ +

Heidenhain-specific: klartext TOOL CALL always applies tool-length +compensation (there is no cancel word — HardNc compensates +unconditionally). On TOOL CALL blocks the effective height = +GetToolHeightOffset_mm(int)(tool id) + +the TOOL CALL's DL delta; the shared ToolHeightCompensation +section is written (Term = “TOOL CALL”, OffsetId = tool id — +the offset id is documented as the Heidenhain tool number) and the +translation composes into the transform chain via the shared +ToolHeightCompensation source (mutual exclusion with the ISO +G43 sibling by same-source replace).

+

+Modal: on following blocks the section is re-resolved per block from +the table (mirroring the Siemens D sibling — give-way when a same +block ISO term took ownership; carry Term/OffsetId/Delta_mm +otherwise). Must sit after ToolHeightOffsetSyntax (the +ISO anchor — last writer wins on mixed-dialect blocks) and after +HeidenhainToolChangeSyntax (reads its ToolChange +section), before the pivot/tilt syntaxes. +

+
+
+ +
+
public class HeidenhainToolOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
HeidenhainToolOffsetSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + +

Examples

+

TOOL CALL block — height from the injected tool-offset table (tool 2 += 120 mm) plus DL 0.5; the G49 sentinel written by the ISO anchor is +overwritten: +#BeforeBuild:

+
{
+  "ToolChange": { "ToolId": 2, "IsChange": true, "Term": "TOOL CALL", "DL": 0.5 },
+  "ToolHeightCompensation": { "Offset_mm": 0, "Term": "G49", "OffsetId": 0 }
+}
+

#AfterBuild:

+
{
+  "ToolChange": { "ToolId": 2, "IsChange": true, "Term": "TOOL CALL", "DL": 0.5 },
+  "ToolHeightCompensation": { "Offset_mm": 120.5, "Term": "TOOL CALL", "OffsetId": 2, "Delta_mm": 0.5 },
+  "ProgramToMcTransform": [
+    {
+      "Source": "ToolHeightCompensation",
+      "Kind": "Static",
+      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,120.5,1]
+    }
+  ]
+}
+ + + + +

Constructors +

+ + + + +

+ HeidenhainToolOffsetSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public HeidenhainToolOffsetSyntax()
+
+ + + + + + + + + + + + + + + +

+ HeidenhainToolOffsetSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public HeidenhainToolOffsetSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Source XML element.

+
+
+ + + + + + + + + + + + +

Fields +

+ + + +

+ DeltaKey + +

+ +

Section key carrying the TOOL CALL DL delta so modal re-resolution keeps it.

+
+
+ +
+
public const string DeltaKey = "Delta_mm"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ Term + +

+ +

Ownership term recorded in the shared section.

+
+
+ +
+
public const string Term = "TOOL CALL"
+
+ + + + +

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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.html index 69ec0f25..8c728dea 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Heidenhain.html @@ -94,19 +94,490 @@

Classes

+
+
HeidenhainCannedCycleSyntax
+

Bridges the klartext machining-cycle vocabulary onto the shared ISO +canned-cycle machinery. Owns the self-carrying +MachiningCycleDef store (single-step lookback + rewrite +on every block — the P1 datum-shift pattern) and the call-once vs +modal split:

+
  • Definition (Parsing.MachiningCycle from +HeidenhainMachiningCycleSyntax): mapped to ISO slots at +definition time — 200 → G81/G82/G83 (peck when Q202 < |Q201|), +232 → G81 (start point Q225/Q226/Q227, end Q386, feed Q207), +251/252/253 → G81/G83 (surface Q203, clearance Q200, depth Q201, +plunge feed Q206, step-down Q202). A definition never executes by +itself. Unsupported numbers (19, …) are recognized-but-not-simulated: +consumed whole with HeidenhainCycl--Unsupported, stored +unarmable so a later call warns instead of moving. Required +parameters that are missing or non-literal make the store unarmable +with HeidenhainCycl--ParamsNotLiteral.
  • Call-once (CYCL CALL [POS] record from +HeidenhainCyclCallSyntax, or an M99 flag on a +positioning block — the TNC block-wise call, unrelated to the Fanuc +return M99): writes the mapped cycle as a direct Parsing.G8x +sub-section on this block, which +CannedCycleResolveSyntax resolves and the shared cycle +syntaxes expand into a CompoundMotion. POS coordinates +override the stored X/Y; the POS Z is a pre-position, recorded but +never fed into the hole-bottom slot. The ISO modal-lookback branch is +deliberately bypassed: it has no positioning gate, so an armed +CannedCycle would re-execute on flag-only blocks — +wrong for klartext.
  • Modal (M89): sets Modal; +each subsequent block carrying root axis words (and no +CArc statement) fires the same direct-section path with the +block's X/Y consumed into the cycle. M99 fires once and +clears the modality; a new CYCL DEF replaces the store.
  • Seal: on every non-firing block whose previous block +carries an active CannedCycle term, a G80 flag +is injected (the P0 G00/G01 injection pattern) so +CannedCycleResolveSyntax writes the cancel sentinel — +the one-shot execution never leaks into ISO modal repetition.
+

+Known divergences (recorded, corpus-benign): the cycle's mapped feed +enters the modal Feedrate section during expansion (ISO +semantics; the Siemens MCALL precedent accepts the same leak); the +final retract plane is the ISO G98 initial level, not Q204's second +set-up clearance (Q204 is recorded in the definition store only). +

+Must run after the tilt/RTCP family and immediately before +CannedCycleResolveSyntax. +
+
+
+
HeidenhainCircleCenterSyntax
+

Heidenhain-specific: turns the Parsing.CC record into the +modal HeidenhainCircleCenter { X, Y, Z? } section (absolute +program coordinates). Self-carrying every block (PlaneSelect pattern +— detected ?? previous), so the arc syntax's single-step read always +works without ModalCarry involvement; a CC with partial axes merges +the missing components from the previous center. Must run before +HeidenhainCircularMotionSyntax.

+
+
+
+
HeidenhainCircularMotionSyntax
+

Heidenhain circular motion — the Klartext half of the brand's two +arc syntaxes. The shared CircularMotionSyntax (with +IsIjkAbsolute set) runs right +after it for the DIN/ISO dialect: the two gates are per-block +exclusive (a klartext arc has CArc and no I/J/K/R; an ISO arc +the reverse) and both honor the single Group 01 +MotionEvent slot. +Gated by the Parsing.C statement marker (klartext arcs +carry no G02/G03 and no modal arc continuation): the endpoint comes +from the block's resolved ProgramXyz, the center from the +modal HeidenhainCircleCenterSyntax section (implicit +center = current position when no CC was ever given), and the +direction from DR- (CW → G02) / DR+ (CCW → G03). A +closed arc on the active plane is a full circle. A missing DR warns +(Arc-DR–Missing) and degrades to the modal linear move to the +endpoint (chord).

+
+
HeidenhainCoordinateOffsetSyntax

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. +CYCL DEF 247 Q339=N: selects datum preset table entry N — written to +the shared CoordinateOffset section (kept alive +modally by IsoCoordinateOffsetSyntax via +HeidenhainDatumTable synthetic-id resolution). +

+

+CYCL DEF 7 (#N table row or direct X/Y/Z) is additive on top +of the active preset (TNC semantics; HardNc oracle composes +-preset + shift): it is written to its own DatumShift +section with a separate ProgramToMcTransform entry +(DatumShiftTransformSource) so preset and shift compose +in the transform chain instead of replacing each other. The shift is +carried modally by this syntax itself: on blocks without a CYCL DEF, +a numbered row re-resolves from the table and a direct shift carries +its values forward. Cancelling is a zero shift +(CYCL DEF 7.1 X+0 Y+0 Z+0).

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. +Uses replace-by-source so both syntaxes coexist without double-composing. +
+
+
+
HeidenhainCyclePrePositionSyntax
+

Lifts the expanded cycle's initial plane to the recorded TNC +pre-position Z. A CYCL CALL POS … Z±n (and an M99/M89 +positioning block's own Z word) positions the spindle BEFORE the cycle +runs; the shared ISO expansion instead anchors its initial plane — the +first rapid and the G98 final retract — on the PREVIOUS block's Z. +Left unlifted, a call that climbs to a safe Z before drilling would be +simulated traversing at the stale old Z (phantom collisions through +fixtures) and G98 would plunge the tool back to that stale Z after the +hole.

+

+Mechanics: when the HeidenhainCyclCall record carries a +numeric Z and a CompoundMotion was expanded, the +first item (the initial-plane rapid — both shared cycle syntaxes emit +it first) and, under G98, the final item and the block's final +ProgramXyz are re-anchored to the pre-position Z. G99 finals +(R-plane) are untouched. Runs after the shared cycle syntaxes and +before HeidenhainCycleRetractSyntax (whose appended M140 +retract builds on the lifted final point). +

+
+
+
+
HeidenhainCycleRetractSyntax
+

Consumes the Parsing.M140 record that +HeidenhainMFunctionSyntax deferred on a may-fire-cycle +block — a CYCL CALL [POS] host (… M140 MB+n is a real +house.H shape), an M99/M89 flag block, or any block +under armed M89 modality. +WriteCompoundMotion(JsonObject, string, JsonArray, Vec3d) destroys any +pre-written MotionEvent, so the retract is appended +after the cycle expansion instead:

+
  • Cycle expanded — a rapid item to (final X, final Y, retract Z) +is appended to the CompoundMotion items and the block's +final ProgramXyz is lifted to the retract plane. The MB math is +ResolveRetractTargetZ(JsonObject, Vec3d, List<INcDependency>, ISentenceCarrier, NcDiagnosticProgress) verbatim. +The real TNC runs M140 at block start (retract, then position + cycle); +appending it is a transient-only divergence — the endpoint chain +re-anchors on the next command point (the P3 PLANE MOVE precedent) and +the appended order is the safer trajectory. An F on the M140 is +recorded on the item but the appended retract stays rapid +(corpus M140-on-call blocks are all F-less).
  • Cycle did not expand (call consumed without motion) — the plain +HeidenhainMFunctionSyntax retract behavior runs here +unchanged, so a fail-soft call never silently drops the retract.
+Must run after the shared cycle syntaxes +(DrillingCycleSyntax/PeckDrillingCycleSyntax) +and before McXyzSyntax. +
+
+
+
HeidenhainMFunctionSyntax
+

Heidenhain-specific M-function semantics for the near-universal corpus +family:

+
  • M126/M127 — shortest-path rotary traverse on/off. +Writes the modal RotaryWrap { Shortest } section consumed by +McAbcCyclicPathSyntax (absent = shortest, the shared +default); the Heidenhain preset's Logic ModalCarry tracks the +section.
  • M128/M129 — owned by HeidenhainRtcpSyntax +since P3 (full RTCP on the ToolHeightCompensation section); +this syntax no longer touches them.
  • M140 MB — tool-axis retract. Executes a machine-coordinate +move along +Z (the corpus machines are table-tilting, so the tool +axis stays machine +Z; a head-machine generalization is a recorded +P6 backlog item): +MB+n retracts by n mm, MB MAX retracts to the positive +Z stroke limit (IStrokeLimitConfig; unresolvable limit +warns M140--NoStrokeLimit and skips). The retract runs at the +modal feed (the statement's F is recorded on the MotionEvent as +RetractFeedrate, not folded into the modal feedrate).
+Must run before McAbcCyclicPathSyntax (RotaryWrap) and +before LinearMotionSyntax/McXyzSyntax +(M140 occupies the block's MotionEvent). +
+
+
+
HeidenhainMirrorTransformSyntax
+

Simulates the Heidenhain DIN/ISO G28 MIRROR IMAGE function +(the CYCL DEF 8 twin): consumes the statement list +HeidenhainMirrorImageSyntax recorded under +Parsing.MirrorImage, keeps the modal mirror set in the root +SectionKey section (each statement REPLACES the set — +course 62192's four-quadrant idiom relies on G28 Y after +G28 X Y leaving only Y mirrored; bare G28 resets), and +writes the sign-flip matrix into +ProgramToMcTransform as the +TransformSource entry.

+

+Must run before every other transform writer +(HeidenhainPlaneTiltSyntax downward) so the mirror +entry is the chain's first — the mirror flips program +coordinates about the current datum inside the active working plane, +i.e. innermost: tilt, tool-height and coordinate-offset entries +compose after it and are never themselves mirrored. Because every +motion semantic resolves contours in program coordinates and maps +each interpolated point through the composed chain +(CreateProgramPosToMcFunc(LazyLinkedListNode<SyntaxPiece>, IMachineAxisConfig)), +the arc-handedness flip (G02↔G03) and the radius-compensation side +flip (G41↔G42) a real control performs under a single-axis mirror +emerge from the pointwise mapping — no re-tagging of +IsCcw or the compensation side happens, +and none is needed. +

+

+Two statement shapes stay recognized-but-not-simulated: +a rotary axis letter (RotaryUnsupportedId — a rotary +mirror is not representable in the XYZ transform chain; the letter is +dropped from the set, the statement still replaces) and the +Fanuc-shaped valued form (ValuedUnsupportedId — the +manual's mirror idiom is bare letters, so G91 G28 X0 Y0 Z0 in +a mislabeled .I file must not arm a full-XYZ mirror; the +statement is consumed with zero effect). +

+
+
+
+
HeidenhainMotionModeSyntax
+

Heidenhain-specific: maps the klartext L statement marker +(written by HeidenhainLSyntax) onto the shared ISO +motion-mode vocabulary. An L block carrying the one-shot +FMAX flag becomes a rapid (G00) block; every other L +block is a feed move (G01) driven by the modal feedrate. The injected +G00/G01 flag is consumed downstream exactly like a DIN/ISO block — +by LinearMotionSyntax on ordinary moves and by +MachineCoordSelectSyntax on machine-coordinate (M91) +moves — so no shared syntax needs Heidenhain-specific behavior.

+

+FMAX is one-shot on the real TNC: because every klartext motion is an +L statement and this syntax stamps a mode per statement, the +rapid mode never leaks into the next block — the following L +without FMAX is stamped G01 again. FAUTO (feed from cycle) is +consumed as a feed move. Must be placed at the top of the Logic bundle, +before MachineCoordSelectSyntax and +LinearMotionSyntax. +

+
+
+
+
HeidenhainPathSmoothingSyntax
+

Heidenhain-specific: consumes the structured CYCL DEF 32 TOLERANCE +record (HeidenhainToleranceCyclSyntax) into the shared +modal PathSmoothing section (tracked by the Logic ModalCarry): +a positive tolerance arms smoothing +({IsEnabled:true, Term:“CYCL DEF 32”, Tolerance, HscMode?, Ta?}); +a bare or zero-tolerance cycle cancels it. Untouched blocks are left +to ModalCarry; the stream's first block seeds a conservative +{IsEnabled:false} (Siemens sibling shape). Replaces the dead +FanucPathSmoothingSyntax in the Heidenhain list (it read +Parsing[“G05.1”], which no Heidenhain capture produces).

+
+
+
+
HeidenhainPivotTransformationSyntax
+

Heidenhain pivot gate over the shared engine +(PivotTransformUtil): writes the +PivotTransformSource entry on blocks +where commanded XYZ needs the Pn→MC kinematic rigid transform — an +active tilted plane (HeidenhainPlaneTiltSyntax's +PLANE SPATIAL term, or a mixed-dialect G68/G68.2 term), an +active RTCP modal (RtcpTerms on +the ToolHeightCompensation section — the term check +covers RTCP blocks whose rotary state is stable, which the +Dynamic-entry branch alone would miss), or a Dynamic chain entry.

+

+The third sibling gate after PivotTransformationSyntax +(ISO/Fanuc) and SiemensPivotTransformationSyntax; +all write the identical JSON vocabulary through the shared engine and +only one gate is registered per brand pipeline. Heidenhain has no +plain-geometry-frame exclusion (klartext datum shifts use their own +chain sources, never TiltTransform). Same +chain-position contract: after all Pn-frame writers, so the +PivotTransform entry lands last. +

+
+
+
+
HeidenhainPlaneTiltSyntax
+

Heidenhain PLANE consumer — the Heidenhain sibling of +IsoG68p2TiltSyntax (Fanuc G68.2) and +SiemensCycle800TiltSyntax both XmlDocs promise.

+
  • PLANE SPATIAL — composes the tilted work plane +Rx(SPA)·Ry(SPB)·Rz(SPC) (row-vector, degrees; the HardNc +oracle's HeidenhainPlaneSpatialArg matrix verbatim) into +ProgramToMcTransform as the shared +TransformSource entry with +Term = "PLANE SPATIAL".
  • MOVE / TURN — the implicit rotary positioning (the +CYCLE800 "G53.1 half"): with IMachineKinematics wired +the plane orientation is solved to machine ABC (full-orientation IK +first so a pure in-plane SPC under TABLE ROT still turns the +table; tool-axis-normal fallback for machines with fewer rotary DOF; +no identity short-circuit — the explicit zero-angle +PLANE SPATIAL SPA+0 SPB+0 SPC+0 TURN is the klartext idiom +for returning the rotaries to 0, oracle parity) +and written into MachineCoordinateState +plus a non-modal MotionEvent with +Term = "PLANE SPATIAL". MOVE's DIST (tool retract +radius during the swivel) and the TCP-preserving XYZ compensation +are recorded but not simulated — the machine XYZ stays at the +previous position like TURN, a transient-only divergence from the +HardNc oracle (endpoints re-anchor at the next commanded point); +MOVE's F is recorded on the event as MoveFeedrate.
  • COORD ROT is honored only when the plane rotates purely +about the tool axis (ToolAxisDirection, +TNC manual rule; HardNc parity): the coordinate system rotates and +the rotaries stay. Any other rotation — or TABLE ROT, or neither +word — positions the rotary axes on MOVE/TURN.
  • SEQ± is recorded in the section; when the IK solution's +master rotary (first declared rotary axis) violates an explicit SEQ +preference the preference is not applied and +Coord-Tilt--007 warns (solution-family selection is not +modeled; the HardNc ±2π window wrap would be undone by +McAbcCyclicPathSyntax's shortest-cyclic tail pass, and +the corpus never exercises SEQ with MOVE/TURN).
  • PLANE RESET — the shared inactive sentinel +(Term = "G69" + identity entry). The rotary axes are not +re-positioned on reset (CYCLE800 cancel precedent; corpus programs +follow with explicit rotary moves).
  • PLANE VECTOR / PROJECTED / EULER / POINTS / RELATIV / +AXIAL — recognized-but-not-simulated: consumed, +HeidenhainPlane--Unsupported warns, and the previous tilt +state carries unchanged (the HardNc oracle instead reuses a stale +spatial arg here — SoftNc deliberately exceeds it).
+

+Owns the once-per-block TiltTransform modal carry for +the Heidenhain list (CarryForwardFromPrevious(LazyLinkedListNode<SyntaxPiece>, JsonObject)). +Must run before ToolHeightOffsetSyntax / +HeidenhainToolOffsetSyntax (their translation follows +the tilt entry's normal — the oracle's tool-normal-tiltable rule) +and before McAbcSyntax / the coordinate-offset +syntaxes (chain order: tilt entry ahead of CoordinateOffset, +mirroring the Siemens frame slot; implicit MC rotary values must +land before McAbc's per-axis lookback). +

+
+
+
+
HeidenhainProgramHeaderSyntax
+

Heidenhain-specific: consumes the Parsing.PGM record +(BEGIN|END PGM name MM|INCH) — the unit word is pushed into +Parsing.Flags for the UnitModeSyntax instance +configured with InchCodes=[“INCH”], MetricCodes=[“MM”] (which +must run after this syntax), and END PGM writes the shared +one-shot ProgramEnd section (existence-checked by its +consumers exactly like M30). Consuming PGM also removes the +program-header unconsumed noise every klartext file used to emit.

+
+
+
+
HeidenhainRadiusCompSyntax
+

Heidenhain-specific: maps the klartext radius-compensation words +captured by HeidenhainLSyntax (RL/RR/R0 +boolean Parsing-root records) onto the shared vocabulary consumed by +the radius-compensation pass: RL → Parsing.G41 {D: toolId}, +RR → G42, R0 → G40 flag. The offset id is the current +tool number (klartext has no D word; IToolOffsetConfig documents +the offset id as the Heidenhain tool number), resolved by walking back +to the most recent ToolChange section. A missing or non-numeric +tool id degrades to mode-only injection (radius 0 — the compensation +pass records the state but applies no geometric offset) with an +RadiusComp–ToolUnresolved warning.

+

+Must run before the PostLogic radius-compensation pass (any Logic +position works — PostLogic sees completed Logic output) and after +HeidenhainToolChangeSyntax so a same-block TOOL CALL is +visible. +

+
+
+
+
HeidenhainRtcpSyntax
+

Heidenhain RTCP (M128/M129, FUNCTION TCPM/FUNCTION RESET TCPM): the +Heidenhain sibling of G43p4RtcpSyntax and +SiemensTraoriSyntax. While RTCP is active the +IToolHeightCompensationDef section carries the +activating term (M128Term or TcpmTerm) +and the ToolHeightCompensation chain entry becomes a +tool-normal · offset translation at the block endpoint ABC +(MakeToolHeightMat(IMachineKinematics, Vec3d, double)), tagged +KindDynamic when the rotary state +changes across the block — the signal that routes the block to +ClLinear per-step IK.

+

+Tool length ownership stays with the TOOL CALL machinery +(HeidenhainToolOffsetSyntax — table height + DL, which +runs earlier in the bundle): activation adopts the compensation +already resolved on this or the previous block and records the +adopted owner in PriorTermKey; +a TOOL CALL during the modal re-takes the section with the fresh +offset; M129 / FUNCTION RESET TCPM hands the section back to the +recorded owner (default Term — +klartext tool-length compensation survives RTCP deactivation). The +TOOL CALL Delta_mm (DL) rides along so the hand-back restores +it. A deactivation with no active RTCP (the corpus' ubiquitous +program-head M129) is consumed silently. Same-block +contradiction (M128 with M129): the off state wins conservatively +(the P1 rule, kept for continuity). +

+

+The M128 feed limit (M128 F6000., or an FQn token the +evaluator could not resolve) is recorded on the section as +FeedLimitKey — recorded, not simulated. FUNCTION TCPM +behavior arguments are recorded by the parsing syntax and warn +Tcpm--ArgsNotSimulated on activation. +

+

+Must run after ToolHeightOffsetSyntax / +HeidenhainToolOffsetSyntax and the coordinate-offset +syntaxes (mirroring the Fanuc G43.4 / Siemens TRAORI slot) and +before HeidenhainPivotTransformationSyntax, +whose gate recognizes the RtcpTerms and folds the +kinematic pivot. Silently degrades to a plain UnitZ · offset +translation when IMachineKinematics is absent. +

+
+
+
+
HeidenhainStockDeclarationSyntax
+

Heidenhain-specific: consumes the Parsing[“BLK FORM”] record +(workpiece blank declaration, present in virtually every klartext +file) into the brand-neutral StockDeclaration section — +recognized and recorded, not simulated. The simulation stock always +comes from the project's own workpiece setup, mirroring the HardNc +oracle which recognizes-and-skips the same lines; the structured +record keeps the declared blank readable for a future stock consumer +without feeding geometry today.

+
+
+
+
HeidenhainToolChangeSyntax
+

Heidenhain-specific: consumes the Parsing[“TOOL CALL”] record +(written by HeidenhainToolCallSyntax) +into the shared SectionName section so +ToolChangeSemantic fires the tooling act. A +klartext TOOL CALL always performs the change — no separate M06 +trigger exists — so IsChangeKey is always +true with Term = “TOOL CALL”.

+

+The spindle-speed word (S) is relocated to the root of +Parsing so the shared +SpindleSpeedSyntax — which must run after this syntax in +the Logic bundle — records it modally. Numeric tool ids are written as +ints (the act chain is int-keyed); non-numeric ids stay strings and +resolve (or warn) at the semantic layer. +

+

+P0 limits recorded as diagnostics: non-Z tool axis +(ToolChange--AxisUnsupported), non-zero DL/DR deltas +(ToolChange--DeltaUnsupported; zero deltas are consumed +silently), and a TOOL CALL without a tool id +(ToolChange--MissingToolId, e.g. a variable tool number the +parser could not capture). +

+

+Known P2 limitation: a quoted tool NAME that happens to spell a Q +token (TOOL CALL "Q1" Z) loses its quotes at capture, so the +evaluator substitutes the Q parameter's value and the numeric branch +below treats it as a tool number. Corpus-zero (real names are +"B40R"-style); fixing it needs the capture to preserve the +quoted-ness, which would change the P0-pinned record shape. +

+
+
+
+
HeidenhainToolOffsetSyntax
+

Heidenhain-specific: klartext TOOL CALL always applies tool-length +compensation (there is no cancel word — HardNc compensates +unconditionally). On TOOL CALL blocks the effective height = +GetToolHeightOffset_mm(int)(tool id) + +the TOOL CALL's DL delta; the shared ToolHeightCompensation +section is written (Term = “TOOL CALL”, OffsetId = tool id — +the offset id is documented as the Heidenhain tool number) and the +translation composes into the transform chain via the shared +ToolHeightCompensation source (mutual exclusion with the ISO +G43 sibling by same-source replace).

+

+Modal: on following blocks the section is re-resolved per block from +the table (mirroring the Siemens D sibling — give-way when a same +block ISO term took ownership; carry Term/OffsetId/Delta_mm +otherwise). Must sit after ToolHeightOffsetSyntax (the +ISO anchor — last writer wins on mixed-dialect blocks) and after +HeidenhainToolChangeSyntax (reads its ToolChange +section), before the pivot/tilt syntaxes. +

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 aa5bed74..f69dc586 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html @@ -6,7 +6,7 @@ - + @@ -102,6 +102,32 @@ within Term written by PositioningSyntax.

+Per-word override: a block-root +PositioningOverride section (written by +SiemensAcIcSyntax for the +Siemens per-word coordinate functions) beats the modal +term for the listed axes on this block only: an +Incremental entry converts that word even +under G90, an Absolute entry skips it even +under G91 — as does, deliberately, every other non-Incremental value +(the rotary-family Shortest / +PositiveOnly / +NegativeOnly entries are absolute targets; +their swing resolution lives in McAbcCyclicPathSyntax, +not here). A coded-position entry +(CodedAbsolute / +CodedIncremental — Siemens +CAC()/CIC() on a linear indexing axis) carries an +indexing position number instead of a coordinate: the number +is resolved through IIndexingPositionConfig +via TryResolveCodedTarget(IIndexingPositionConfig, string, string, double, double, ISentenceCarrier, NcDiagnosticProgress, out double, out string), the word +is rewritten to the resolved absolute coordinate, and the entry to +Absolute; a failed resolve reports an error +and holds the last program position. Axes without an entry follow the +modal term unchanged, so brands that never write the section +(Fanuc/Heidenhain/...) keep the exact legacy behavior. +

+

WorkingPathList specifies which JSON paths contain axis values that need incremental-to-absolute conversion. Default: [["Parsing"], ["Parsing", "G28"]]. @@ -252,6 +278,59 @@ and resolves them against the same lastProgramXyz: "Positioning": { "Term": "G91", "Mode": "Incremental" }, "Parsing": { "G28": { "X": 105, "Y": 210, "Z": 315 } } }

+

G90 (absolute) with a per-word PositioningOverride — the +Siemens X=IC(10) shape after +SiemensAcIcSyntax unwrapped it. Only the overridden X converts +against the last program position; Y follows the modal G90 and stays: +#Previous:

+
{ "MachineCoordinateState": { "X": 100, "Y": 200, "Z": 300 } }
+

#BeforeBuild:

+
{
+  "Positioning": { "Term": "G90", "Mode": "Absolute" },
+  "PositioningOverride": { "X": "Incremental" },
+  "Parsing": { "X": 10, "Y": 20 }
+}
+

#AfterBuild:

+
{
+  "Positioning": { "Term": "G90", "Mode": "Absolute" },
+  "PositioningOverride": { "X": "Incremental" },
+  "Parsing": { "X": 110, "Y": 20 }
+}
+

G91 (incremental) with an Absolute override on X — X is +skipped (already absolute, e.g. from X=AC(25)), Y still +converts under the modal G91: +#Previous:

+
{ "MachineCoordinateState": { "X": 100, "Y": 200, "Z": 300 } }
+

#BeforeBuild:

+
{
+  "Positioning": { "Term": "G91", "Mode": "Incremental" },
+  "PositioningOverride": { "X": "Absolute" },
+  "Parsing": { "X": 25, "Y": 20 }
+}
+

#AfterBuild:

+
{
+  "Positioning": { "Term": "G91", "Mode": "Incremental" },
+  "PositioningOverride": { "X": "Absolute" },
+  "Parsing": { "X": 25, "Y": 220 }
+}
+

Coded-position absolute on a linear indexing axis (the Siemens +X=CAC(2) workholder shape after the unwrap + evaluation +stages). The case injects a SiemensMachineDataTable declaring +X linear and assigned to indexing table 1 = +[-200, -100, 0, 100]: position number 2 resolves to -100 mm +and the entry is rewritten to Absolute: +#BeforeBuild:

+
{
+  "Positioning": { "Term": "G90", "Mode": "Absolute" },
+  "PositioningOverride": { "X": "CodedAbsolute" },
+  "Parsing": { "X": 2 }
+}
+

#AfterBuild:

+
{
+  "Positioning": { "Term": "G90", "Mode": "Absolute" },
+  "PositioningOverride": { "X": "Absolute" },
+  "Parsing": { "X": -100 }
+}
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html index 0c9706a9..295f06c0 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.IsoG68p2TiltSyntax.html @@ -188,8 +188,31 @@ Heidenhain equivalent: PLANE SPATIAL (separate syntax).

Examples

-

G69 cancel via TryHandleG69(JsonObject, JsonObject) — the -kinematics-free short-circuit path that writes the identity tilt.

+

Real-kinematics cases below wire TestDeps.CodeKinematics +with the default chain code [O][Z][A][w];[O][Y][X][B][S][t] +— a table-A / head-B 5-axis machine. A pivots around -X +through origin (table side); B pivots around +Y through origin +(head side). Both pivot axes pass through (0,0,0) because +CodeXyzabcChain uses zero-offset +component attachments — origin pivots are physically realistic +for a table-table trunnion layout but not for a head pivot on a +real table-head machine; here the zero-offset chain is a +pedagogical simplification. Only the IK-refinement cases (2 and +3) use kinematics; cases 0 (G69 cancel) and 1 (pure IJK euler) +are kinematics-free.

+

+Verification cue: the IK refinement path computes +orientationDelta = ijkAbcOrient.Inverse * ijkRotation to +preserve the exact IJK orientation while aligning with the +kinematic ABC solution. For this chain at IJK=(0,30°,0), the +solver's polished convergence lands the table-A angle within +~1e-8 rad of 30°, and that residual lives in the Mat4d +off-diagonals visible in case 3 (≈1e-8-scale entries). +

+

+G69 cancel via TryHandleG69(JsonObject, JsonObject) — the +kinematics-free short-circuit path that writes the identity tilt. +

Standalone G69 — the flag is consumed, TiltTransform is written with Term: "G69", @@ -253,8 +276,8 @@ aligns it with the kinematic ABC solution: "Kind": "Static", "Mat4d": [ 1, 0, 0, 0, - 0, 0.8660254037844388, 0.5, 0, - 0, -0.5, 0.8660254037844388, 0, + 0, 0.8660254037844388, 0.49999999999999994, 0, + 0, -0.49999999999999994, 0.8660254037844388, 0, 0, 0, 0, 1 ] } @@ -288,9 +311,9 @@ The TiltTransfor "Source": "TiltTransform", "Kind": "Static", "Mat4d": [ - 0.8660254037844387, 0.0002477343364339079, -0.4999999386276948, 0, - 0, 0.9999998772553897, 0.0004954686728678159, 0, - 0.49999999999999994, -0.00042908845748289027, 0.8660252974844881, 0, + 0.8660254037844387, 9.927341754201178E-09, -0.4999999999999999, 0, + 0, 0.9999999999999999, 1.985468350840236E-08, 0, + 0.49999999999999994, -1.719466030237639E-08, 0.8660254037844386, 0, 0, 0, 0, 1 ] } @@ -310,6 +333,15 @@ the tilt is computed as: where orientationDelta = kinematicRotation(ijkAbc).Inverse * ijkRotation preserves the exact IJK orientation while aligning with the post-processor's solution.

+

+When kinematics is configured but the inverse-kinematics solve fails +(orientation outside rotary-axis travel, or unrepresentable by the +chain), the tilt falls back to the un-refined IJK euler result and a +validation warning is emitted — Coord-Tilt--001 on the plain +IJK path, Coord-Tilt--002 on the explicit A/B/C path. A missing +kinematics dependency is not a warning: IK is optional refinement for +G68.2 and the euler tilt is a complete result on its own. +

diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.MCodeExpansionSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.MCodeExpansionSyntax.html new file mode 100644 index 00000000..0e49392e --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.MCodeExpansionSyntax.html @@ -0,0 +1,621 @@ + + + + + Class MCodeExpansionSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class MCodeExpansionSyntax +

+ +
+
Namespace
Hi.NcParsers.LogicSyntaxs
+
Assembly
HiMech.dll
+
+ +

Expands machine-declared M-codes (IMCodeDeclarationConfig +on the controller parameter table) into the canonical ISO flags the +regular consumers already understand: tool change → M06, spindle +direction → M03/M04/M05, coolant → +M07/M08/M09. Must run ahead of +SpindleSpeedSyntax, CoolantSyntax, and +ToolChangeSyntax — expanding early is what lets one +composite OEM code (e.g. M13 = spindle CW + flood coolant) feed +several downstream consumers without any of them fighting over who +removes the original flag. Same rewrite-into-shared-vocabulary pattern +as HeidenhainRadiusCompSyntax (RL/RR/R0 → +G41/G42/G40).

+

+Two deliberate boundaries keep the rewrite faithful. Declarations whose +sole content is a spindle direction +(IsSpindleDirectionOnly) are NOT expanded — +SpindleSpeedSyntax resolves them in place via +TryResolveDirection(string, out SpindleDirection), which keeps +legacy <SpindleMCode> configs bit-identical and avoids the +expansion product being re-translated by that same custom-first map +(e.g. a mirrored M03↔M04 remap would otherwise flip direction). +Expansion codes are inserted at the declared flag's own position, and a +code whose raw twin also appears un-declared elsewhere in the block is +not emitted — the block's textual order keeps deciding last-wins +conflicts exactly as it did before. +

+

+Declared-but-unmodeled behavior stays loud: a declaration carrying an +UnmodeledNote emits one +DeclaredMCode--UnmodeledEffects informational diagnostic per +occurrence — a declaration replaces the raw Parsing--Unconsumed +warning with an explanation, never with silence. A declaration with no +effects and no note consumes its code silently by explicit intent. +Undeclared codes are untouched and keep falling through to +UnconsumedCheckSyntax. +

+
+
+ +
+
public class MCodeExpansionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
MCodeExpansionSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + +

Examples

+

Composite OEM code (test declares M13 → spindle CW + flood coolant) — +the declared flag is replaced in place by its canonical ISO +equivalents; other words ride along untouched: +#BeforeBuild:

+
{ "Parsing": { "Flags": ["M13"], "S": 2000 } }
+

#AfterBuild:

+
{ "Parsing": { "Flags": ["M03", "M08"], "S": 2000 } }
+

Custom tool-change trigger (test declares M106 → tool change, the +Siemens $MC_TOOL_CHANGE_M_CODE shape) — expands to M06 for +ToolChangeSyntax to consume: +#BeforeBuild:

+
{ "Parsing": { "Flags": ["M106"], "T": 5 } }
+

#AfterBuild:

+
{ "Parsing": { "Flags": ["M06"], "T": 5 } }
+

Note-only declaration (test declares M23 with an unmodeled note and no +effects) — consumed with an explanatory diagnostic, leaving the block +clean: +#BeforeBuild:

+
{ "Parsing": { "Flags": ["M23"] } }
+

#AfterBuild:

+
{}
+

Undeclared code — untouched, still falls through to the unconsumed +check: +#BeforeBuild:

+
{ "Parsing": { "Flags": ["M55"] } }
+

#AfterBuild:

+
{ "Parsing": { "Flags": ["M55"] } }
+

Spindle-direction-only declaration (test declares M203 → CW, nothing +else) — deliberately NOT expanded; SpindleSpeedSyntax +resolves it in place, keeping legacy configs bit-identical: +#BeforeBuild:

+
{ "Parsing": { "Flags": ["M203"], "S": 1670 } }
+

#AfterBuild:

+
{ "Parsing": { "Flags": ["M203"], "S": 1670 } }
+

In-place expansion keeps textual last-wins order — the composite M13 +expands at its own position, so a later raw M05 still overrides the +spindle half downstream: +#BeforeBuild:

+
{ "Parsing": { "Flags": ["M13", "M05"] } }
+

#AfterBuild:

+
{ "Parsing": { "Flags": ["M03", "M08", "M05"] } }
+

A canonical target that is itself declared (test declares M08 → +note-only) must not swallow the composite's effect: the raw M08 is +consumed for its own declaration while M13's flood half still emits +M08: +#BeforeBuild:

+
{ "Parsing": { "Flags": ["M13", "M08"] } }
+

#AfterBuild:

+
{ "Parsing": { "Flags": ["M03", "M08"] } }
+ + + + +

Constructors +

+ + + + +

+ MCodeExpansionSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public MCodeExpansionSyntax()
+
+ + + + + + + + + + + + + + + +

+ MCodeExpansionSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public MCodeExpansionSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Source XML element.

+
+
+ + + + + + + + + + + + +

Fields +

+ + + +

+ UnknownCoolantDiagId + +

+ +

Diagnostic id for a declaration whose +CoolantMode names no known mode.

+
+
+ +
+
public const string UnknownCoolantDiagId = "DeclaredMCode--UnknownCoolantMode"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + + +

+ UnmodeledDiagId + +

+ +

Diagnostic id for the informational message emitted when a consumed +declaration carries an UnmodeledNote.

+
+
+ +
+
public const string UnmodeledDiagId = "DeclaredMCode--UnmodeledEffects"
+
+ + + + +

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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + 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 4a830b5d..6ea40028 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html @@ -6,7 +6,7 @@ - + @@ -97,15 +97,28 @@ Class MachineCoordSelectSyntax
Assembly
HiMech.dll
-

Handles G53 (machine coordinate selection) — non-modal, one-shot. +

Handles 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.

+If G91 (incremental) is active, the code is ignored per ISO standard.

+

+Defaults to ISO G53. Brands with additional one-shot +machine-coordinate codes widen SupportedCodes — the +Siemens preset adds G153 and SUPA (both suppress every +active frame for one block; in this pipeline all of those reduce to +"bypass the composed ProgramToMcTransform", +which the ProgramXyz back-derivation below already models). The +matched code is stamped verbatim into +Term for bidirectional source recovery. +Rotary words on the same block (e.g. SUPA G0 B0) are left to +McAbcSyntax — same behavior as ISO G53, where rotary +axes flow through the normal rotary path. +

Must be placed before ProgramXyzSyntax in the -syntax chain. When G53 is active, this syntax consumes X/Y/Z from -Parsing and writes +syntax chain. When a supported code is active, this syntax consumes +X/Y/Z from Parsing and writes MachineCoordinateState directly, preventing ProgramXyzSyntax from processing them as program coordinates. @@ -192,18 +205,27 @@ as program coordinates.

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: +

G53 with full XYZ on a first block (no #Previous:) — +FindPreviousMc falls back to Vec3d.Zero, transform +defaults to identity, so ProgramXyz equals +MachineCoordinateState. A non-modal MotionEvent is +stamped with Term: “G53” for bidirectional source recovery +(per the precedence rule on Term); +IsRapid inherits from the modal +MotionState.Term +(G00 → true, G01/G02/G03 → false, none → true as the conservative +“safe rapid” default common in practice): #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 }
+  "ProgramXyz": { "X": 10, "Y": 20, "Z": 30 },
+  "MotionEvent": { "Form": "McLinear", "IsRapid": true, "Term": "G53" }
 }
-

G53 with only Z specified — FindPreviousMc picks up X/Y from the -previous block's MachineCoordinateState; Z is overwritten: +

G53 with only Z specified — FindPreviousMc picks up X/Y from +the previous block's MachineCoordinateState; Z is overwritten; +MotionEvent stamped as above: #Previous:

{ "MachineCoordinateState": { "X": 100, "Y": 50, "Z": -200 } }

#BeforeBuild:

@@ -211,19 +233,46 @@ previous block's MachineCoordinateState; Z is overwritten:

#AfterBuild:

{
   "MachineCoordinateState": { "X": 100, "Y": 50, "Z": 0 },
-  "ProgramXyz": { "X": 100, "Y": 50, "Z": 0 }
+  "ProgramXyz": { "X": 100, "Y": 50, "Z": 0 },
+  "MotionEvent": { "Form": "McLinear", "IsRapid": true, "Term": "G53" }
 }
-

G91 active on the same block → G53 is ignored per ISO standard; nothing -is consumed and no machine-state section is written: +

G91 active on the same block — G53 incompatible with G91 incremental +positioning per ISO standard. Syntax emits validation error +Coord-MachCoord–006, consumes the G53 flag and any X/Y/Z, +and writes no machine state. Positioning section preserved: #BeforeBuild:

{
   "Parsing": { "Flags": ["G53"], "X": 10 },
   "Positioning": { "Term": "G91" }
 }

#AfterBuild:

+
{ "Positioning": { "Term": "G91" } }
+

Standalone G53 with no X/Y/Z — G53 by itself has no destination +to interpret as machine coordinates, so the syntax emits validation +error Coord-MachCoord–007 and consumes the flag without +writing machine state: +#BeforeBuild:

+
{ "Parsing": { "Flags": ["G53"] } }
+

#AfterBuild:

+
{}
+

Siemens SUPA retract (SUT configured with +SupportedCodes = [“G53”, “G153”, “SUPA”]) — corpus shape +N5 SUPA G0 Z1150 D0: the matched code is stamped verbatim as +Term, missing X/Y fill from the previous machine position, +the motion-mode flag is claimed into the modal MotionState +(LinearMotionSyntax skips this block, so nobody else would), and the +D word stays in Parsing for its own consumer: +#Previous:

+
{ "MachineCoordinateState": { "X": 500, "Y": 1000, "Z": -30 } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["SUPA", "G00"], "Z": 1150, "D": 0 } }
+

#AfterBuild:

{
-  "Parsing": { "Flags": ["G53"], "X": 10 },
-  "Positioning": { "Term": "G91" }
+  "Parsing": { "D": 0 },
+  "MachineCoordinateState": { "X": 500, "Y": 1000, "Z": 1150 },
+  "ProgramXyz": { "X": 500, "Y": 1000, "Z": 1150 },
+  "MotionState": { "Term": "G00" },
+  "MotionEvent": { "Form": "McLinear", "IsRapid": true, "Term": "SUPA" }
 }
@@ -329,6 +378,42 @@ is consumed and no machine-state section is written: + + +

+ SupportedCodes + +

+ +

One-shot machine-coordinate codes this syntax consumes; defaults to +ISO G53. The Siemens preset widens the list to G53 + G153 + SUPA. +The first list entry present in Parsing.Flags is stamped as +Term; every listed code present on the +block is consumed so none re-triggers the unconsumed-parsing warning.

+
+
+ +
+
public List<string> SupportedCodes { get; set; }
+
+ + + + + +

Property Value

+
+
List<string>
+
+
+ + + + + + + +

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 399554c2..ab552fb0 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 @@ - + @@ -114,6 +114,32 @@ 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. +

+Per-word directional override: a block-root +PositioningOverride entry (stamped by +SiemensAcIcSyntax) valued +PositiveOnly (Siemens ACP()) or +NegativeOnly (ACN()) swaps that +axis's window for this block only: [anchor, anchor+360°) / +(anchor-360°, anchor] instead of the default ±180° — the approach +direction is forced even when it is the longer way around. A target +congruent with the anchor (within an ULP-scale epsilon) keeps the +anchor value verbatim — no move, never a spurious full turn, and no +deg→rad→deg drift. Shortest (DC()) +is the default window and needs no special path here. The override +is read from the current block only (it is one-shot, never carried — +deliberately unlike the modal RotaryWrap gate's one-step +previous fallback) and applies to the root MC stage only, not to +CompoundMotion items (G28/G74/G75 expansions capture +their words in sub-objects the stamping syntax never sees, so an +override can only ever describe a root word). Directional/shortest +entries keyed by an axis outside the modular set are reported as +Coord-McAbc--003 — the promise cannot be honored there and +silence would mis-read the program's intent; an entry with no anchor +to resolve against (first rotary value in the stream) is reported as +Coord-McAbc--004 and adopted unwrapped, matching the default +path. +

@@ -261,6 +287,55 @@ around 0°), so the test discriminates between chain and no-chain: ] } }
+

+ACP (PositiveOnly) forces the positive swing even though the +shortest path from 0° to 270° is -90° (compare the default case +above — same numbers, opposite outcome). The override section stays +on the block (nothing consumes it away): +

+#Previous: +
{ "MachineCoordinateState": { "B": 0 } }
+#BeforeBuild: +
{
+  "MachineCoordinateState": { "B": 270 },
+  "PositioningOverride": { "B": "PositiveOnly" }
+}
+#AfterBuild: +
{
+  "MachineCoordinateState": { "B": 270 },
+  "PositioningOverride": { "B": "PositiveOnly" }
+}
+ACN (NegativeOnly) mirror — target 90° from anchor 0° swings +-270° instead of the shortest +90°: +#Previous: +
{ "MachineCoordinateState": { "B": 0 } }
+#BeforeBuild: +
{
+  "MachineCoordinateState": { "B": 90 },
+  "PositioningOverride": { "B": "NegativeOnly" }
+}
+#AfterBuild: +
{
+  "MachineCoordinateState": { "B": -270 },
+  "PositioningOverride": { "B": "NegativeOnly" }
+}
+Congruent target under a directional override — the raw anchor sits +at 370° (e.g. after an earlier ACP long-way swing) and the ACN +target 10° is the same physical position: no move, the anchor value +is kept verbatim (the epsilon snap; without it, radian ULP noise +would decide between "no move" and a spurious full -360° turn): +#Previous: +
{ "MachineCoordinateState": { "B": 370 } }
+#BeforeBuild: +
{
+  "MachineCoordinateState": { "B": 10 },
+  "PositioningOverride": { "B": "NegativeOnly" }
+}
+#AfterBuild: +
{
+  "MachineCoordinateState": { "B": 370 },
+  "PositioningOverride": { "B": "NegativeOnly" }
+}
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 022dc410..37c07558 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html @@ -6,7 +6,7 @@ - + @@ -125,6 +125,46 @@ unless the current section already has the value Values are stored in degrees (matching McAbcCyclicPathSyntax).

+Per-word override: a block-root +PositioningOverride section (written by +SiemensAcIcSyntax for the +Siemens AC()/IC() coordinate functions) marks a rotary +word Incremental: the parsed value is then +added to the previous modal value of that axis (previous +MachineCoordinateState lookback, falling back to a value +already present in the current section, then 0) instead of being +written as an absolute angle. The accumulated raw degrees stay +monotonic across iterations — each per-block step is well inside the +±180° window, so the McAbcCyclicPathSyntax tail-pass +keeps it as net rotation instead of re-normalizing it away. An +Absolute entry (from AC()) matches +the default write and needs no special path — and so, deliberately, +do the rotary-family entries Shortest +(DC()) / PositiveOnly +(ACP()) / NegativeOnly +(ACN()): this syntax writes the raw absolute target and the +shortest/directional swing is resolved by the +McAbcCyclicPathSyntax tail-pass, which owns the wrap +math. Brands that never write the section keep the exact legacy +behavior. +

+

+Coded-position overrides (Siemens +CAC()/CIC()/CDC()/CACP()/CACN()) +carry an indexing position number instead of an angle: the +number is resolved through IIndexingPositionConfig via +TryResolveCodedTarget(IIndexingPositionConfig, string, string, double, double, ISentenceCarrier, NcDiagnosticProgress, out double, out string) and the override +entry is rewritten to the plain vocabulary +(Absolute / +Shortest / +PositiveOnly / +NegativeOnly — a cyclic CIC keeps +its programmed direction through the directional values) before the +tail-pass runs, so the tail-pass never sees a coded value. A failed +resolve (invalid number, missing table) reports an error and holds +the axis at its previous value. +

+

Must be placed before McXyzSyntax so syntaxes that need the current-block ABC to compute transforms (e.g. G43p4RtcpSyntax) can see it; and before @@ -241,6 +281,54 @@ per-axis backward lookback ({ "Parsing": { "B": 30 } } #AfterBuild:

{ "MachineCoordinateState": { "B": 30, "C": 0 } }
+Per-word incremental override (the Siemens C=IC(...) shape +after the unwrap + evaluation stages) — the parsed 21.5 is added onto +the previous modal C instead of overwriting it; B has no override +entry and fills from lookback as usual: +#Previous: +
{ "MachineCoordinateState": { "B": 10, "C": 40 } }
+#BeforeBuild: +
{
+  "PositioningOverride": { "C": "Incremental" },
+  "Parsing": { "C": 21.5 }
+}
+#AfterBuild: +
{
+  "PositioningOverride": { "C": "Incremental" },
+  "MachineCoordinateState": { "B": 10, "C": 61.5 }
+}
+Coded-position absolute (the Siemens C=CAC(3) shape after the +unwrap + evaluation stages). The case injects a +SiemensMachineDataTable declaring C rotary and assigned to +indexing table 1 = [0, 90, 180, 270]: position number 3 +resolves to 180° and the override entry is rewritten to +Absolute for the tail-pass: +#BeforeBuild: +
{
+  "PositioningOverride": { "C": "CodedAbsolute" },
+  "Parsing": { "C": 3 }
+}
+#AfterBuild: +
{
+  "PositioningOverride": { "C": "Absolute" },
+  "MachineCoordinateState": { "C": 180 }
+}
+Coded-position incremental with the same table — from 270° (position +4), advancing 2 positions wraps the 4-position cycle to position 2 +(90°), and the positive count becomes a PositiveOnly approach +so the swing keeps the programmed direction: +#Previous: +
{ "MachineCoordinateState": { "C": 270 } }
+#BeforeBuild: +
{
+  "PositioningOverride": { "C": "CodedIncremental" },
+  "Parsing": { "C": 2 }
+}
+#AfterBuild: +
{
+  "PositioningOverride": { "C": "PositiveOnly" },
+  "MachineCoordinateState": { "C": 90 }
+}
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PivotTransformUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PivotTransformUtil.html new file mode 100644 index 00000000..b4e9f970 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PivotTransformUtil.html @@ -0,0 +1,278 @@ + + + + + Class PivotTransformUtil | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class PivotTransformUtil +

+ +
+
Namespace
Hi.NcParsers.LogicSyntaxs
+
Assembly
HiMech.dll
+
+ +

Shared engine for the brand pivot-gate syntaxes +(PivotTransformationSyntax — ISO/Fanuc family, +SiemensPivotTransformationSyntax — Siemens). +Each brand syntax owns only its gate (which modal terms mean +“commanded XYZ needs the Pn→MC kinematic rigid transform”); the +endpoint-ABC resolution and the PivotTransform chain entry +composition live here so every brand writes the identical JSON +vocabulary.

+
+
+ +
+
public static class PivotTransformUtil
+
+ + + + +
+
Inheritance
+
+ +
PivotTransformUtil
+
+
+ + + +
+
Inherited Members
+
+ + + + + + + +
+ + + + + + +

Methods +

+ + + + +

+ ComposePivotEntry(LazyLinkedListNode<SyntaxPiece>, JsonObject, List<INcDependency>) + +

+ +

Composes the PivotTransformSource +entry for the block's endpoint ABC — the shared body every brand +gate runs after it decides the block needs the kinematic pivot. +Silently no-ops when IMachineKinematics is absent +(3-axis configurations without rotary kinematics). The entry's +kind mirrors HasDynamicEntry(JsonObject): +when no Dynamic entry exists (RTCP with stable rotary, or a tilted +plane without RTCP), the kinematic pivot is contour-valid and +stays Static.

+
+
+ +
+
public static void ComposePivotEntry(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, JsonObject json, List<INcDependency> ncDependencyList)
+
+ +

Parameters

+
+
syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
+
+
json JsonObject
+
+
ncDependencyList List<INcDependency>
+
+
+ + + + + + + + + + + + + + +

+ ResolveEndpointAbc(LazyLinkedListNode<SyntaxPiece>, IMachineAxisConfig) + +

+ +

Reads the current block's MC ABC, falling back per-axis to modal +lookback (via FindPreviousMcXyzabc(LazyLinkedListNode<SyntaxPiece>, IMachineAxisConfig)) +for rotary axes the machine declares but the current section +does not carry — blocks like G49, comments, or pure +non-motion state changes do not rewrite ABC, yet the kinematic +rotary state is still active and must appear in the chain. +Non-rotary axes default to 0. Also used by +SiemensTraoriSyntax, whose tool-height +entry needs the same endpoint semantics.

+
+
+ +
+
public static Vec3d ResolveEndpointAbc(LazyLinkedListNode<SyntaxPiece> node, IMachineAxisConfig axisConfig)
+
+ +

Parameters

+
+
node LazyLinkedListNode<SyntaxPiece>
+
+
axisConfig IMachineAxisConfig
+
+
+ +

Returns

+
+
Vec3d
+
+
+ + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PivotTransformationSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PivotTransformationSyntax.html index 89bf3f97..91e5e202 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PivotTransformationSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PivotTransformationSyntax.html @@ -6,7 +6,7 @@ - + @@ -97,32 +97,38 @@ Class PivotTransformationSyntax
Assembly
HiMech.dll
-

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.

+

ISO/Fanuc-family pivot gate: writes the +PivotTransformSource entry +into ProgramToMcTransform on blocks +where the controller is interpreting commanded XYZ in a frame that +needs the Pn→MC kinematic rigid transform — namely active RTCP +(G43.4) or active tilted plane (G68/G68.2). On plain-mode blocks +(no RTCP, no tilted plane), the controller treats commanded XYZ as +machine-frame directly, so the indexed rotary angle is a positioning +value only and must not fold into the linear axes; this +syntax skips those blocks and leaves the chain at identity (or +whatever non-kinematic offsets earlier syntaxes contributed). +Brand variants with their own modal vocabulary gate the same shared +engine (PivotTransformUtil): Siemens TRAORI/CYCLE800 → +SiemensPivotTransformationSyntax; Heidenhain +M128/PLANE SPATIAL would follow the same pattern.

-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. +Mirrors real Fanuc semantics: plain G43 offsets along the active +tilted-plane normal (or machine Z when no tilt is active), and +plain XYZ moves map directly to machine axis registers regardless +of indexed table/head rotary position. Only G43.4 follows the live +tool vector and only G68.2 redefines the work-plane orientation — +both of which this guard detects via the existing chain markers.

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. +brand-specific coord offset syntaxes) so the guard sees the +finalised mode markers and the PivotTransform entry — when +emitted — 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 @@ -210,62 +216,71 @@ Silently no-ops when Examples -

Identity probe — a TestDeps.Kinematics stub that -makes McToPn pass through XYZ and return a fixed UnitZ -normal, so MakePivotTransformMat(IMachineKinematics, Vec3d)'s -four-basis probing returns identity K(0) and K(abc), -and the product K(0) * K(abc).GetInverse() collapses to -identity. With no current or previous MachineCoordinateState, -endpoint ABC defaults to (0,0,0); no dynamic entries exist -yet so the entry is tagged KindStatic. -Case for the dep-guard contract only; the real kinematics paths are -covered by the cases below. -#BeforeBuild:

+

Real-kinematics cases below wire TestDeps.CodeKinematics +with the default chain code [O][Z][A][w];[O][Y][X][B][S][t] +— a table-A / head-B 5-axis machine. A is on the table side +(rotates the workpiece around -X); B is on the head side (rotates +the spindle around +Y). Both rotary pivot axes pass through the +origin (0,0,0) of the chain root frame because +CodeXyzabcChain uses zero-offset +Branch.Attach between components — a real table-head +machine usually has the spindle-B pivot offset from origin, but +for the corpus the zero-offset chain keeps the matrices +hand-verifiable. Realistic MachineCoordinateState carries +A and/or B only; there is no C axis in this chain (5-axis +machines have at most two rotary axes).

+

+Verification cue specific to this syntax: the zero-offset chain +puts the machine-zero attacher at the origin, so the entry's +translation anchor T(McToPn(0).Point) vanishes and the +matrix reduces to K(abc)⁻¹ alone. Table-A rotation moves +the workpiece's coordinate frame around the X axis through +origin, so the four-basis probe of +MakePivotTransformMat(IMachineKinematics, Vec3d) returns +a pure rotation around X — case 3 below pulls out exactly Rx(45°) +(no translation column) for table-A=45°. Head-B rotation maps +every probe point through the same head-chain rotation, but +because everything on the head side downstream of B is at origin +before B applies, the rotation reduces to the identity on the +probe set: K(abc) == K(0) == I and the entry collapses to +identity. That is the symmetry the plain-mode bug fix relies on — +head-side rotary was harmlessly writing identity matrices, while +table-side rotary was silently rotating linear axes into MC. +

+

+Plain-mode skip — kinematics dep is present but the block has no +active tilted plane and no RTCP, so ShouldFoldKinematicPivot +returns false and the syntax leaves the block untouched. This is +the "no work to do" guard that prevents over-application of the +kinematic transform on indexed-rotary plain XYZ moves: +

+#BeforeBuild:
{}
-

#AfterBuild:

-
{
-  "ProgramToMcTransform": [
-    {
-      "Source": "PivotTransform",
-      "Kind": "Static",
-      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
-    }
-  ]
-}
-

Real XyzabcSolver (table-A / head-B 5-axis layout -[O][Z][A][w];[O][Y][X][B][S][t]) with current block declaring -MachineCoordinateState.A = 45 — endpoint ABC = -(π/4, 0, 0) radians. Table-side A rotation moves the tool -position in the workpiece frame, so -MakePivotTransformMat's four-basis probe returns a -non-identity rigid matrix. The exact Mat4d below was captured from -BuildAndDump's actual output (per gotcha #2: rad/deg trig -drift, always dump first): -#BeforeBuild:

+#AfterBuild: +
{}
+Plain-mode skip with indexed rotary — same guard, but the block +already carries a MachineCoordinateState.A = 45 indexed +table angle (as a prior McAbcSyntax would have written). +In a real Fanuc controller, commanded XYZ on this block goes +straight to the machine axis registers regardless of A; the +kinematic rotation must not be folded into the chain. +Real XyzabcSolver dep is wired in so the guard is +what stops the write (not the dep-guard at the top of +Build): +#BeforeBuild:
{ "MachineCoordinateState": { "A": 45 } }
-

#AfterBuild:

-
{
-  "MachineCoordinateState": { "A": 45 },
-  "ProgramToMcTransform": [
-    {
-      "Source": "PivotTransform",
-      "Kind": "Static",
-      "Mat4d": [
-        1, 0, 0, 0,
-        0, 0.7071067811865475, -0.7071067811865475, 0,
-        0, 0.7071067811865475, 0.7071067811865475, 0,
-        0, 0, 0, 1
-      ]
-    }
-  ]
-}
-

Stub TestDeps.Kinematics with a pre-existing Dynamic -chain entry on the current block (as G43p4RtcpSyntax -would have written when RTCP is dynamic). HasDynamicEntry(JsonObject) -returns true so the PivotTransform entry is tagged -KindDynamic even though the math -itself collapses to identity: -#BeforeBuild:

+#AfterBuild: +
{ "MachineCoordinateState": { "A": 45 } }
+Active RTCP signalled by a pre-existing Dynamic chain entry (as +G43p4RtcpSyntax would have written when RTCP is +active and ABC changes across the block). +HasDynamicEntry(JsonObject) returns true, so +the guard passes and the PivotTransform entry is written and +tagged KindDynamic. The +TestDeps.Kinematics stub makes +MakePivotTransformMat(IMachineKinematics, Vec3d) collapse to +identity: +#BeforeBuild:
{
   "ProgramToMcTransform": [
     {
@@ -275,7 +290,7 @@ itself collapses to identity:
     }
   ]
 }
-

#AfterBuild:

+#AfterBuild:
{
   "ProgramToMcTransform": [
     {
@@ -290,6 +305,59 @@ itself collapses to identity:
     }
   ]
 }
+Active G68.2 tilted plane — the current block carries the modal +TiltTransform snapshot plus an existing Static +TiltTransform chain entry (as IsoG68p2TiltSyntax +would have written) and MachineCoordinateState.A = 45. The +guard reads TiltTransform.Term = "G68.2" and passes; with +real XyzabcSolver kinematics (table-A / head-B +5-axis), MakePivotTransformMat at abc = (π/4, 0, 0) +produces the table-A Rx(45°) rigid matrix. No Dynamic entries in +the chain so the new entry stays Static: +#BeforeBuild: +
{
+  "TiltTransform": { "Term": "G68.2", "X": 0, "Y": 0, "Z": 0, "I": 0, "J": 30, "K": 0 },
+  "ProgramToMcTransform": [
+    {
+      "Source": "TiltTransform",
+      "Kind": "Static",
+      "Mat4d": [
+        1, 0, 0, 0,
+        0, 0.8660254037844387, 0.49999999999999994, 0,
+        0, -0.49999999999999994, 0.8660254037844387, 0,
+        0, 0, 0, 1
+      ]
+    }
+  ],
+  "MachineCoordinateState": { "A": 45 }
+}
+#AfterBuild: +
{
+  "TiltTransform": { "Term": "G68.2", "X": 0, "Y": 0, "Z": 0, "I": 0, "J": 30, "K": 0 },
+  "ProgramToMcTransform": [
+    {
+      "Source": "TiltTransform",
+      "Kind": "Static",
+      "Mat4d": [
+        1, 0, 0, 0,
+        0, 0.8660254037844387, 0.49999999999999994, 0,
+        0, -0.49999999999999994, 0.8660254037844387, 0,
+        0, 0, 0, 1
+      ]
+    },
+    {
+      "Source": "PivotTransform",
+      "Kind": "Static",
+      "Mat4d": [
+        1, 0, 0, 0,
+        0, 0.7071067811865475, -0.7071067811865475, 0,
+        0, 0.7071067811865475, 0.7071067811865475, 0,
+        0, 0, 0, 1
+      ]
+    }
+  ],
+  "MachineCoordinateState": { "A": 45 }
+}
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PolarGCodeCheckSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PolarGCodeCheckSyntax.html new file mode 100644 index 00000000..e03d9cbf --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PolarGCodeCheckSyntax.html @@ -0,0 +1,489 @@ + + + + + Class PolarGCodeCheckSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class PolarGCodeCheckSyntax +

+ +
+
Namespace
Hi.NcParsers.LogicSyntaxs
+
Assembly
HiMech.dll
+
+ +

Warns on G-codes that Fanuc disallows during Polar Coordinate +Interpolation (G12.1), per the manual whitelist mirrored from HardNc +IsGCodePolarModeCompatible +(IncompatibleDiagId).

+

+Placed FIRST in the Logic bundle so the scan sees +Parsing Flags before the mode/plane/offset +syntaxes consume their codes — at the old in-place check position, +G17/G18/G19, G20/G21, G49, G53.1 and G68/G69 cancels had already been +eaten and passed silently. Polar-active detection needs no valve of its +own: the PREVIOUS block's +PolarInterpolationState is already +final (the whole Logic bundle ran for it) unless this block exits with +G13.1; a block entering with G12.1 is checked too. +

+

+Residual blind spot (documented): codes captured as Parsing sub-objects +by ParameterizedFlagSyntax in the Parsing bundle (G28, G43/G44, +G43.4, G05.1, G52, G54.1, G68/G68.2, canned cycles) never reach Flags +and stay outside the scan. They cannot corrupt the polar trajectory — +the plane normal is fixed by the polar pair — so the gap is +diagnostic-only, same as HardNc's own per-code parse-time check. +

+
+
+ +
+
public class PolarGCodeCheckSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
PolarGCodeCheckSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + + + + +

Constructors +

+ + + + +

+ PolarGCodeCheckSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public PolarGCodeCheckSyntax()
+
+ + + + + + + + + + + + + + + +

+ PolarGCodeCheckSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public PolarGCodeCheckSyntax(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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PolarInterpolationSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PolarInterpolationSyntax.html new file mode 100644 index 00000000..25464759 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PolarInterpolationSyntax.html @@ -0,0 +1,631 @@ + + + + + Class PolarInterpolationSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class PolarInterpolationSyntax +

+ +
+
Namespace
Hi.NcParsers.LogicSyntaxs
+
Assembly
HiMech.dll
+
+ +

Maintains the modal Polar Coordinate Interpolation valve section +(PolarInterpolationState) for Fanuc +G12.1/G13.1.

+

+On a G12.1 block: consumes the flag, reads the block's own X/C words as +the anchor (InitRxcz; the X word is a +diameter and is halved), converts the previous program position +(program X/Z + machine C angle) onto the polar hypothetical plane via +GetProgramPolarRxczByOrdinaryProgramXcz(Vec3d), and +writes both the state section and the entry +ProgramPolarRxcz position. +Mirrors HardNc HardNcLine case 12_100. +

+

+On a G13.1 block: consumes the flag and stops carrying the state — the +block itself is already Cartesian, matching HardNc case 13_100. +

+

+On other blocks: re-materializes the previous block's state section +(single-step lookback carry, the PositioningSyntax pattern), +and warns FanucPolar--IncompatibleGCode for G-codes outside the +Fanuc polar-mode whitelist (mirrors HardNc +IsGCodePolarModeCompatible). +

+Must be placed before McAbcSyntax so the downstream +ProgramRxczSyntax can consume the hypothetical C word before +it is interpreted as a rotary machine axis. +
+
+ +
+
public class PolarInterpolationSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
PolarInterpolationSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + +

Examples

+

Bare G12.1 entry — anchor words absent so +InitRxcz is zero; the entry position is the previous stored +program position (program X/Z with the previous machine C angle) mapped +onto the hypothetical plane: +#Previous:

+
{ "ProgramXyz": { "X": 58, "Y": 0, "Z": 25 }, "MachineCoordinateState": { "X": 58, "Y": 0, "Z": 25, "C": 0 } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["G12.1"] } }
+

#AfterBuild:

+
{
+  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
+  "ProgramPolarRxcz": { "X": 58, "Y": 0, "Z": 25 }
+}
+

G12.1 X10 C0 — the block's own words anchor InitRxcz +(X diameter 10 → radius 5) and the entry position is stored relative to +that anchor: +#Previous:

+
{ "ProgramXyz": { "X": 58, "Y": 0, "Z": 25 }, "MachineCoordinateState": { "X": 58, "Y": 0, "Z": 25, "C": 0 } }
+

#BeforeBuild:

+
{ "Parsing": { "X": 10, "C": 0, "Flags": ["G12.1"] } }
+

#AfterBuild:

+
{
+  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 5, "Y": 0, "Z": 0 } },
+  "ProgramPolarRxcz": { "X": 53, "Y": 0, "Z": 25 }
+}
+

Carry — no G12.1/G13.1 edge on the block, previous block is in polar +mode, so the state section is re-materialized; other parsing content is +untouched (G01 is polar-compatible, no diagnostic): +#Previous:

+
{ "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["G01"] } }
+

#AfterBuild:

+
{
+  "Parsing": { "Flags": ["G01"] },
+  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } }
+}
+

G13.1 — the flag is consumed and the state is not carried; the +block is already Cartesian: +#Previous:

+
{ "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } } }
+

#BeforeBuild:

+
{ "Parsing": { "Flags": ["G13.1"] } }
+

#AfterBuild:

+
{}
+

G12.1 repeated while polar mode is already active — HardNc keeps +the old anchor (the modal flag does not change), so the state is +carried unchanged and the block's axis words are left for +ProgramRxczSyntax to treat as plain polar motion: +#Previous:

+
{ "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } } }
+

#BeforeBuild:

+
{ "Parsing": { "X": 20, "Flags": ["G12.1"] } }
+

#AfterBuild:

+
{
+  "Parsing": { "X": 20 },
+  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } }
+}
+ + + + +

Constructors +

+ + + + +

+ PolarInterpolationSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public PolarInterpolationSyntax()
+
+ + + + + + + + + + + + + + + +

+ PolarInterpolationSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public PolarInterpolationSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Source XML element.

+
+
+ + + + + + + + + + + + +

Fields +

+ + + +

+ IncompatibleDiagId + +

+ +

Diagnostic id for G-codes that Fanuc disallows during polar +coordinate interpolation (per the Fanuc manual whitelist). Emitted by +PolarGCodeCheckSyntax, which runs at the FRONT of the +Logic bundle so mode/plane/offset codes (G17-G19, G20/G21, G49, ...) +are still visible in Parsing.Flags when the scan runs; see its +doc for the residual parameterized-code blind spot.

+
+
+ +
+
public const string IncompatibleDiagId = "FanucPolar--IncompatibleGCode"
+
+ + + + +

Field Value

+
+
string
+
+
+ + + + + + + + + +

Properties +

+ + + + +

+ Name + +

+ +

Syntax kind name (typically the concrete type name).

+
+
+ +
+
public string Name { get; }
+
+ + + + + +

Property Value

+
+
string
+
+
+ + + + + + + + + + +

+ Pair + +

+ +

The polar axis pair this machine runs G12.1 with — +DirXC (default), +DirYA or +DirZB. Machine configuration (Fanuc +selects the pair by parameters, not by NC words), carried per +project through this syntax's XML. Written into the state section's +Dir for every downstream reader.

+
+
+ +
+
public string Pair { get; set; }
+
+ + + + + +

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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + 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 89fe89b5..a2cfc28c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PositioningSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.PositioningSyntax.html @@ -6,7 +6,7 @@ - + @@ -104,7 +104,11 @@ 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. +Siemens: the AC()/IC() per-word override rides on top of this modal +state — SiemensAcIcSyntax +writes a PositioningOverride section the +downstream consumers (IncrementalResolveSyntax, +McAbcSyntax) honor per axis.

Does NOT convert incremental values — that is handled by @@ -216,6 +220,17 @@ modal lookback inherits G91; the unrelated M03 flag is left alone: "Parsing": { "Flags": ["M03"] }, "Positioning": { "Term": "G91", "Mode": "Incremental" } } +

Blank line — the piece has no Parsing at all, yet still receives +the carried Positioning section. Real controllers give blank +lines no meaning, so the modal chain must survive them; without this +carry the next block's single-step lookback would silently reset a +G91 program to the G90 default: +#Previous:

+
{ "Positioning": { "Term": "G91", "Mode": "Incremental" } }
+

#BeforeBuild:

+
{}
+

#AfterBuild:

+
{ "Positioning": { "Term": "G91", "Mode": "Incremental" } }
diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramRxczSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramRxczSyntax.html new file mode 100644 index 00000000..4ad7546d --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramRxczSyntax.html @@ -0,0 +1,629 @@ + + + + + Class ProgramRxczSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
Table of Contents
+ +
+
+ +
+
+
+ +
+
+ + + +
+ +
+ + + +

+Class ProgramRxczSyntax +

+ +
+
Namespace
Hi.NcParsers.LogicSyntaxs
+
Assembly
HiMech.dll
+
+ +

Polar-mode sibling of ProgramXyzSyntax: while the +PolarInterpolationState valve section +is present, consumes the block's X/C/Z words as polar hypothetical-plane +coordinates (X = diameter, halved; C = hypothetical axis in mm) and writes:

+
  1. ProgramPolarRxcz — the +anchor-relative polar position (G90/G91 resolved against the previous +block's position, mirroring HardNc NcGroup03.GetNcFromSyntax);
  2. ProgramXyz — the derived ordinary +program position (radius, previous program Y, Z), so the downstream +McXyzSyntax derives machine XYZ through the normal +transform chain — ProgramXyzSyntax itself naturally +no-ops because the axis words are already consumed;
  3. the machine C angle (degrees) into +MachineCoordinateState — +placed before McAbcSyntax, which then preserves the +value instead of treating C as a directly-commanded rotary word;
  4. on motion-programmed blocks, MotionState and a +MotionEvent with McPolarLinear +(G00/G01) or McPolarArc (G02/G03 with R or +I/J/K resolved on the hypothetical plane).
+The G12.1 entry block is skipped (its position was anchored by +PolarInterpolationSyntax). Angle-branch resolution mirrors +HardNc: GetOrdinaryProgramXcz_rad(Vec3d, double, Vec3d) chained from +the previous machine C angle. +
+
+ +
+
public class ProgramRxczSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
+
+ + + + +
+
Inheritance
+
+ +
ProgramRxczSyntax
+
+
+ +
+
Implements
+
+ + + +
+
+ + +
+
Inherited Members
+
+ + + + + + + +
+ +
+
Extension Methods
+
+ + + + + + + +
+ + +

Examples

+

G90 linear move along the radius axis — the X word is a diameter +(X20 → radius 10), the missing C word carries over from the previous +polar position, the machine C angle is written in degrees: +#Previous:

+
{ "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } }, "ProgramPolarRxcz": { "X": 58, "Y": 0, "Z": 25 }, "MachineCoordinateState": { "X": 58, "Y": 0, "Z": 25, "C": 0 } }
+

#BeforeBuild:

+
{
+  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
+  "Positioning": { "Term": "G90", "Mode": "Absolute" },
+  "Parsing": { "X": 20, "Z": 2, "Flags": ["G01"] }
+}
+

#AfterBuild:

+
{
+  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
+  "Positioning": { "Term": "G90", "Mode": "Absolute" },
+  "ProgramPolarRxcz": { "X": 10, "Y": 0, "Z": 2 },
+  "ProgramXyz": { "X": 10, "Y": 0, "Z": 2 },
+  "MachineCoordinateState": { "C": 0 },
+  "MotionState": { "Term": "G01" },
+  "MotionEvent": { "Form": "McPolarLinear" }
+}
+

Hypothetical-axis move to the 90° branch — the C word is a Cartesian +millimeter coordinate on the hypothetical plane; the machine C angle +follows by atan2 with chained branch resolution: +#Previous:

+
{ "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } }, "ProgramPolarRxcz": { "X": 10, "Y": 0, "Z": 2 }, "MachineCoordinateState": { "X": 10, "Y": 0, "Z": 2, "C": 0 } }
+

#BeforeBuild:

+
{
+  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
+  "Positioning": { "Term": "G90", "Mode": "Absolute" },
+  "Parsing": { "X": 0, "C": 10, "Flags": ["G01"] }
+}
+

#AfterBuild:

+
{
+  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
+  "Positioning": { "Term": "G90", "Mode": "Absolute" },
+  "ProgramPolarRxcz": { "X": 0, "Y": 10, "Z": 2 },
+  "ProgramXyz": { "X": 10, "Y": 0, "Z": 2 },
+  "MachineCoordinateState": { "C": 90 },
+  "MotionState": { "Term": "G01" },
+  "MotionEvent": { "Form": "McPolarLinear" }
+}
+

G02 arc on the hypothetical plane with an I word — I/J are start→center +increments in plane millimeters (not halved, unlike the X endpoint word); +the center is stored in anchor-origin (central) coordinates: +#Previous:

+
{ "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } }, "ProgramPolarRxcz": { "X": 10, "Y": 0, "Z": 0 }, "MachineCoordinateState": { "X": 10, "Y": 0, "Z": 0, "C": 0 } }
+

#BeforeBuild:

+
{
+  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
+  "Positioning": { "Term": "G90", "Mode": "Absolute" },
+  "Parsing": { "X": 0, "C": -10, "I": -10, "Flags": ["G02"] }
+}
+

#AfterBuild:

+
{
+  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
+  "Positioning": { "Term": "G90", "Mode": "Absolute" },
+  "ProgramPolarRxcz": { "X": 0, "Y": -10, "Z": 0 },
+  "ProgramXyz": { "X": 10, "Y": 0, "Z": 0 },
+  "MachineCoordinateState": { "C": -90 },
+  "MotionState": { "Term": "G02" },
+  "MotionEvent": { "Form": "McPolarArc", "ArcCenter": { "X": 0, "Y": 0, "Z": 0 }, "IsCcw": false, "AdditionalCircleNum": 0 }
+}
+

G91 incremental — the X increment is still a diameter value (halved), +components without words stay put: +#Previous:

+
{ "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } }, "ProgramPolarRxcz": { "X": 10, "Y": 0, "Z": 2 }, "MachineCoordinateState": { "X": 10, "Y": 0, "Z": 2, "C": 0 } }
+

#BeforeBuild:

+
{
+  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
+  "Positioning": { "Term": "G91", "Mode": "Incremental" },
+  "Parsing": { "X": 10, "Z": -1, "Flags": ["G01"] }
+}
+

#AfterBuild:

+
{
+  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
+  "Positioning": { "Term": "G91", "Mode": "Incremental" },
+  "ProgramPolarRxcz": { "X": 15, "Y": 0, "Z": 1 },
+  "ProgramXyz": { "X": 15, "Y": 0, "Z": 1 },
+  "MachineCoordinateState": { "C": 0 },
+  "MotionState": { "Term": "G01" },
+  "MotionEvent": { "Form": "McPolarLinear" }
+}
+

Non-motion block inside polar mode (e.g. a bare M08) — the polar +position is still carried and the derived sections written, but no +motion sections appear and the unrelated flag is untouched: +#Previous:

+
{ "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } }, "ProgramPolarRxcz": { "X": 10, "Y": 0, "Z": 2 }, "MachineCoordinateState": { "X": 10, "Y": 0, "Z": 2, "C": 0 } }
+

#BeforeBuild:

+
{
+  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
+  "Positioning": { "Term": "G90", "Mode": "Absolute" },
+  "Parsing": { "Flags": ["M08"] }
+}
+

#AfterBuild:

+
{
+  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
+  "Positioning": { "Term": "G90", "Mode": "Absolute" },
+  "Parsing": { "Flags": ["M08"] },
+  "ProgramPolarRxcz": { "X": 10, "Y": 0, "Z": 2 },
+  "ProgramXyz": { "X": 10, "Y": 0, "Z": 2 },
+  "MachineCoordinateState": { "C": 0 }
+}
+ + + + +

Constructors +

+ + + + +

+ ProgramRxczSyntax() + +

+ +

Initializes a new instance with default settings.

+
+
+ +
+
public ProgramRxczSyntax()
+
+ + + + + + + + + + + + + + + +

+ ProgramRxczSyntax(XElement) + +

+ +

Initializes a new instance by deserializing from the given XML element.

+
+
+ +
+
public ProgramRxczSyntax(XElement src)
+
+ +

Parameters

+
+
src XElement
+

Source XML element.

+
+
+ + + + + + + + + + + + +

Fields +

+ + + +

+ ArcCenterNotFoundDiagId + +

+ +

Diagnostic id for a modal G02/G03 polar block whose arc center cannot +be resolved (no R / I/J/K). Mirrors HardNc +GetActSpiralMcXyzContour–CircleCenterNotFound.

+
+
+ +
+
public const string ArcCenterNotFoundDiagId = "FanucPolar--ArcCenterNotFound"
+
+ + + + +

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<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.

+
+ + + + + + +

+ Reg(XFactory) + +

+ +

Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

+
+
+ +
+
public static void Reg(XFactory factory = null)
+
+ +

Parameters

+
+
factory XFactory
+
+
+ + + + + + + + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ +
+ + + + 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 4244a27e..fa96aec7 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramStopSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramStopSyntax.html @@ -6,7 +6,7 @@ - + @@ -97,12 +97,21 @@ Class ProgramStopSyntax
Assembly
HiMech.dll
-

Consumes M00 (unconditional stop) and M01 (optional stop) from +

Consumes the program-stop words in SupportedCodes +(default M00 unconditional / M01 optional) 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.

+SupportedCodes is ordered by priority: when several +listed words share a block the first listed one wins and stamps +Term with its literal; every listed word is removed from the +block either way. A brand preset widens the list for its own +vocabulary (the Heidenhain STOP word — the +SupportedCodes precedent). +

+

Siblings with ProgramEndSyntax (M02/M30) which handles end-of-program, not in-program stops.

@@ -262,7 +271,10 @@ pauses the run is a runtime/semantic decision gated by the operator's

Parameters

src XElement
-

Source XML element.

+

Source XML element. Only a MISSING +SupportedCodes element (legacy bare XML) falls back to the +default list; a present-but-empty element stays empty — the +configured off-switch (the MachineCoordSelectSyntax precedent).

@@ -313,6 +325,40 @@ pauses the run is a runtime/semantic decision gated by the operator's + + +

+ SupportedCodes + +

+ +

Stop words consumed from Flags, ordered by +priority (first listed word present on a block wins the +Term stamp). Default [M00, M01].

+
+
+ +
+
public List<string> SupportedCodes { get; set; }
+
+ + + + + +

Property Value

+
+
List<string>
+
+
+ + + + + + + +

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 9a63fe7f..1c2e58ef 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ProgramXyzUtil.html @@ -6,7 +6,7 @@ - + @@ -142,7 +142,7 @@ 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.) +SoftNc / HardNc divergence found on a five-axis sample program.)
  • RTCP using "current" — double-counts the rotary PivotTransform difference, so the inherited workpiece anchor @@ -323,6 +323,52 @@ from the non-RTCP branch of + +

    + DidAbcChange(LazyLinkedListNode<SyntaxPiece>, IMachineAxisConfig) + +

    + +

    True when any rotary axis differs between the current block's +MachineCoordinateState and the previous modal value +(per-axis, 1e-9 rad tolerance; a NaN↔value transition counts as a +change). Used by the RTCP syntaxes (G43p4RtcpSyntax, +SiemensTraoriSyntax) to decide the +KindDynamic tagging of the +tool-height chain entry — when the tool orientation varies along +the contour, the entry is an endpoint-only snapshot.

    +
    +
    + +
    +
    public static bool DidAbcChange(LazyLinkedListNode<SyntaxPiece> node, IMachineAxisConfig axisConfig)
    +
    + +

    Parameters

    +
    +
    node LazyLinkedListNode<SyntaxPiece>
    +
    +
    axisConfig IMachineAxisConfig
    +
    +
    + +

    Returns

    +
    +
    bool
    +
    +
    + + + + + + + + + + +

    @@ -380,11 +426,29 @@ 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 +stopping ClLinearMcMotionSemantic's duration computation in RTCP contours where the XYZ block right before the current one didn't record ABC.

    +In the standard pipeline the per-axis walks are BOUNDED: +MergeKeys completes +every block's section with the carried modal values, and +HomeMcInitializer seeds every DECLARED +axis on the first piece — so the nearest XYZ carrier already +answers all declared axes and the backfill loop is a fallback only: +for Logic-stage reads inside a +RadiusCompensationSyntax look-forward +window (dragged builds see not-yet-completed predecessors) and for +pipelines without the carry. Both legs matter: without the home +seed, a declared axis the program never writes would walk the whole +history on every block. Do not remove the walks, and never let +a new backward walk read frozen pieces per node without such a +bound: each visited frozen piece re-parses its whole JSON snapshot, +which made per-step cost grow with playback progress before the +merge existed. +

    +

    axisConfig scopes the rotary-backfill to the machine's declared rotary axes (via GetRotaryAxes(IMachineAxisConfig)): non-rotary axes stay diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCircularMotionSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCircularMotionSyntax.html new file mode 100644 index 00000000..06770c5f --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCircularMotionSyntax.html @@ -0,0 +1,649 @@ + + + + + Class SiemensCircularMotionSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensCircularMotionSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.LogicSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Siemens variant of CircularMotionSyntax (replaces it in +the Siemens preset — do not run both): writes +McArc motion for G02/G03 blocks from +I/J/K center offsets or the Siemens signed radius CR= +(captured as Parsing.CR by an equals-form +FloatTagValueSyntax), with the helix +turn count from TURN= (Parsing.TURN).

    +

    +Differences from the Fanuc/ISO parent, per the corpus-driven plan: +

    • CR replaces R — same math + (ResolveCenterFromSignedRadius(Vec3d, Vec3d, int, bool, double); + negative CR selects the >180° arc), but a CR full circle + (start ≈ end on the plane) is invalid on Sinumerik and the chord + collapse would produce a NaN center — rejected with + Arc-CR--ClosedChord, params left visible.
    • TURN=N means N additional full circles: + AdditionalCircleNum = TURN + (closed ? 1 : 0)no −1 + (the legacy HardNc path treated TURN like Fanuc L and silently + undercounted Siemens helices by one turn; deliberately not ported). + The closed-loop +1 stacks on the same closure heuristic used when + TURN is absent, because the downstream angle wrap yields 0 rad for + closed arcs and the whole loop count must come from + AdditionalCircleNum.
    • No L and no K-as-pitch reading — Siemens L{n} is a + subprogram call and helix travel is endpoint + TURN driven.
    • Per-word absolute center: an I=AC(...) / + J=AC(...) / K=AC(...) wrapper (unwrapped by + SiemensAcIcSyntax into a + numeric Parsing value plus a PositioningOverride + entry) switches that one component from the default incremental + offset-from-start to an absolute center coordinate + (ResolveCenterFromMixedIjk(Vec3d, int, double, double, double, bool, bool, bool)); + components without an entry — and IC()-wrapped ones — + keep the incremental reading. Blocks without the section take the + legacy ResolveCenterFromIjk(Vec3d, int, double, double, double) + path byte-for-byte.
    + +

    +Must be placed before LinearMotionSyntax (shared +Group 01 motion slot). +

    +
    +
    + +
    +
    public class SiemensCircularMotionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensCircularMotionSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    All cases run with the current block's ProgramXyz already set +and no #Previous: unless noted, so GetLastProgramXyz +returns Vec3d.Zero; G17 XY plane is implicit.

    +

    +CR= 90° arc: G02 from (0,0,0) to (10,10,0) with +CR=10 — same center math as ISO R: +

    +#BeforeBuild: +
    {
    +  "Parsing": { "Flags": ["G02"], "CR": 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 },
    +    "IsCcw": false,
    +    "AdditionalCircleNum": 0
    +  }
    +}
    +Negative CR selects the >180° side — center flips across the +chord relative to the case above: +#BeforeBuild: +
    {
    +  "Parsing": { "Flags": ["G02"], "CR": -10 },
    +  "ProgramXyz": { "X": 10, "Y": 10, "Z": 0 }
    +}
    +#AfterBuild: +
    {
    +  "ProgramXyz": { "X": 10, "Y": 10, "Z": 0 },
    +  "MotionState": { "Term": "G02" },
    +  "MotionEvent": {
    +    "Form": "McArc",
    +    "ArcCenter": { "X": 0, "Y": 10, "Z": 0 },
    +    "IsCcw": false,
    +    "AdditionalCircleNum": 0
    +  }
    +}
    +Corpus helix shape (G3 X.. Y.. Z.. I.. J.. TURN=16, reduced): +I/J center on the begin plane, XY endpoint differs from start (open +arc) so AdditionalCircleNum = TURN exactly — no −1: +#BeforeBuild: +
    {
    +  "Parsing": { "Flags": ["G03"], "I": 5, "J": 0, "TURN": 16 },
    +  "ProgramXyz": { "X": 0, "Y": 5, "Z": -48 }
    +}
    +#AfterBuild: +
    {
    +  "ProgramXyz": { "X": 0, "Y": 5, "Z": -48 },
    +  "MotionState": { "Term": "G03" },
    +  "MotionEvent": {
    +    "Form": "McArc",
    +    "ArcCenter": { "X": 5, "Y": 0, "Z": 0 },
    +    "IsCcw": true,
    +    "AdditionalCircleNum": 16
    +  }
    +}
    +Closed full circle with TURN=2 — base circle + 2 extra turns = 3 +loops total; the closure +1 stacks on TURN because the downstream +angle wrap contributes 0 rad for start == end: +#BeforeBuild: +
    {
    +  "Parsing": { "Flags": ["G02"], "I": 5, "J": 0, "TURN": 2 },
    +  "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 },
    +    "IsCcw": false,
    +    "AdditionalCircleNum": 3
    +  }
    +}
    +CR= with start ≈ end (invalid on Sinumerik — the chord defines no +center): rejected with Arc-CR--ClosedChord; params stay +visible as residue, and the modal MotionState is still +recorded so following continuation arc blocks keep their circular +mode (the G02 flag was already consumed): +#BeforeBuild: +
    {
    +  "Parsing": { "Flags": ["G02"], "CR": 5 },
    +  "ProgramXyz": { "X": 0, "Y": 0, "Z": 0 }
    +}
    +#AfterBuild: +
    {
    +  "Parsing": { "CR": 5 },
    +  "ProgramXyz": { "X": 0, "Y": 0, "Z": 0 },
    +  "MotionState": { "Term": "G02" }
    +}
    +Per-word absolute center (G2 X10 Y10 I=AC(10) J=AC(5) after +unwrap + evaluation): begin is (10,0,0) from #Previous:, and +the flagged I/J are the center coordinates themselves — an +incremental misread would land on (20,5) instead. The override +section stays on the block (nothing consumes it away): +#Previous: +
    { "ProgramXyz": { "X": 10, "Y": 0, "Z": 0 } }
    +#BeforeBuild: +
    {
    +  "Parsing": { "Flags": ["G02"], "I": 10, "J": 5 },
    +  "PositioningOverride": { "I": "Absolute", "J": "Absolute" },
    +  "ProgramXyz": { "X": 10, "Y": 10, "Z": 0 }
    +}
    +#AfterBuild: +
    {
    +  "PositioningOverride": { "I": "Absolute", "J": "Absolute" },
    +  "ProgramXyz": { "X": 10, "Y": 10, "Z": 0 },
    +  "MotionState": { "Term": "G02" },
    +  "MotionEvent": {
    +    "Form": "McArc",
    +    "ArcCenter": { "X": 10, "Y": 5, "Z": 0 },
    +    "IsCcw": false,
    +    "AdditionalCircleNum": 0
    +  }
    +}
    +Mixed form — I=AC(10) J5: the absolute I is the center X, the +plain J keeps the incremental offset-from-start reading; same center +as above: +#Previous: +
    { "ProgramXyz": { "X": 10, "Y": 0, "Z": 0 } }
    +#BeforeBuild: +
    {
    +  "Parsing": { "Flags": ["G02"], "I": 10, "J": 5 },
    +  "PositioningOverride": { "I": "Absolute" },
    +  "ProgramXyz": { "X": 10, "Y": 10, "Z": 0 }
    +}
    +#AfterBuild: +
    {
    +  "PositioningOverride": { "I": "Absolute" },
    +  "ProgramXyz": { "X": 10, "Y": 10, "Z": 0 },
    +  "MotionState": { "Term": "G02" },
    +  "MotionEvent": {
    +    "Form": "McArc",
    +    "ArcCenter": { "X": 10, "Y": 5, "Z": 0 },
    +    "IsCcw": false,
    +    "AdditionalCircleNum": 0
    +  }
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensCircularMotionSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public SiemensCircularMotionSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensCircularMotionSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public SiemensCircularMotionSyntax(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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCutCompModeSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCutCompModeSyntax.html new file mode 100644 index 00000000..893ff7e4 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCutCompModeSyntax.html @@ -0,0 +1,520 @@ + + + + + Class SiemensCutCompModeSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensCutCompModeSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.LogicSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Consumes the Siemens CUT3DC flag (3D circumferential cutter +compensation mode, used with TRAORI) from +Flags and records a non-modal block-root +CutCompMode section. The offline +RadiusCompensationSyntax only models +the 2D plane modes, so a SiemensCutComp–Unsupported warning +is emitted: a later G41/G42 in this program simulates +as plane compensation, not as the control's 3D surface-normal +offset — recognized, visibly not simulated, never a half-guess.

    +

    +Capture side: CUT3DC is a bare word collected by the Siemens +preset's FlagSyntax word list. +

    +
    +
    + +
    +
    public class SiemensCutCompModeSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensCutCompModeSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    #BeforeBuild:

    +
    { "Parsing": { "Flags": ["CUT3DC"] } }
    +

    #AfterBuild:

    +
    { "CutCompMode": { "Term": "CUT3DC" } }
    + + + + +

    Constructors +

    + + + + +

    + SiemensCutCompModeSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public SiemensCutCompModeSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensCutCompModeSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public SiemensCutCompModeSyntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Source XML element.

    +
    +
    + + + + + + + + + + + + +

    Fields +

    + + + +

    + CutCompMode + +

    + +

    Block-root section key recording the consumed mode word.

    +
    +
    + +
    +
    public const string CutCompMode = "CutCompMode"
    +
    + + + + +

    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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCycle800TiltSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCycle800TiltSyntax.html new file mode 100644 index 00000000..446599a0 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCycle800TiltSyntax.html @@ -0,0 +1,606 @@ + + + + + Class SiemensCycle800TiltSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensCycle800TiltSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.LogicSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Siemens CYCLE800 (swivel cycle): resolves the tilted work plane from +the positional arguments captured by +SiemensCycleCallSyntax and composes it into +ProgramToMcTransform as the shared +TransformSource entry — the Siemens +sibling of IsoG68p2TiltSyntax its XmlDoc promises. +Unlike Fanuc G68.2 (plane only), CYCLE800 also positions the rotary +axes implicitly (the G53.1 half): with +IMachineKinematics wired, the tilt normal is solved to +machine ABC and written into +MachineCoordinateState, and +the block gets a non-modal rapid MotionEvent with +Term = “CYCLE800” (mirroring +G53p1RotaryPositionSyntax).

    +

    +Argument layout (HardNc reference NcArgCycle800): +CYCLE800(FR, TC, ST, MODE, X0, Y0, Z0, A, B, C, X1, Y1, Z1, DIR +[, FR_I, DMODE]) — 15- and 16-arg post variants both occur in +the corpus. MODE is bit-coded: bits 7-6 select the swivel +mode (00 axis-by-axis, 01 solid angle, 10 projection angle, +11 direct rotary), bit pairs 1-0/3-2/5-4 select each angle's axis +(01=X, 10=Y, 11=Z). The motion-convention matrix is +T(X1,Y1,Z1) · R · T(X0,Y0,Z0) (row-vector; the post-rotation +zero offset applies innermost). ST units digit 1 composes +additively onto the current programmable frame; FR/FR_I +retraction and DIR solution preference are recorded in the +section but not simulated (DIR = 0 suppresses the rotary +positioning, per the control's frame-only variant). +

    +

    +Cancel forms — bare CYCLE800, empty parentheses, the +single-argument CYCLE800(0), or swivel-data-record name +TC = "0" — reset the tilt to the shared inactive sentinel +(Term = "G69" + identity entry, HardNc's convention). An +in-between argument count (1–9 with a live TC) is treated as a +truncated/unmodeled capture, not a cancel — warning + visible +residue, so a mis-parsed call can never silently drop an active +swivel. The rotary axes are not re-positioned on cancel: the +retract/re-orient behavior depends on the machine's swivel data +record, which does not exist offline; corpus programs follow the +cancel with explicit G0 A.. C.. moves anyway. +

    +

    +Fail-soft: a non-numeric argument (machine-runtime variable) leaves +the Parsing.CYCLE800 residue visible and applies no transform +(Coord-Tilt--003); an IK failure keeps the euler tilt and +skips positioning (Coord-Tilt--004); a rotating CYCLE800 on a +machine without kinematics/rotary axes keeps the tilt and warns +(Coord-Tilt--005). +

    +

    +Must run before SiemensProgrammableFrameSyntax +(which owns the once-per-block TiltTransform modal +carry and composes additive AROT/ATRANS onto this cycle's fresh +matrix) and before the coordinate-offset syntaxes (chain order: +frame entry ahead of CoordinateOffset). +

    +
    +
    + +
    +
    public class SiemensCycle800TiltSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensCycle800TiltSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Cancel via empty parentheses — tilt reset to the shared inactive +sentinel: +#BeforeBuild:

    +
    { "Parsing": { "CYCLE800": { "Args": [] } } }
    +

    #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]
    +    }
    +  ]
    +}
    +

    Cancel via the bare word (corpus N140 CYCLE800 shape): +#BeforeBuild:

    +
    { "Parsing": { "CYCLE800": { "Bare": true } } }
    +

    #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]
    +    }
    +  ]
    +}
    +

    Cancel via swivel-data-record deselection (TC = “0”): +#BeforeBuild:

    +
    { "Parsing": { "CYCLE800": { "Args": ["0", "\"0\"", "0", "57"] } } }
    +

    #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]
    +    }
    +  ]
    +}
    +

    Full-parameter corpus shape, no kinematics dependency — the tilt is +complete on its own (positioning would warn only when a rotation is +commanded; here MODE 57 maps A→X, B→Y, C→Z and A=30 gives +Rx(30°)). 15-arg “R_DATA” family with DIR = -1: +#BeforeBuild:

    +
    {
    +  "Parsing": {
    +    "CYCLE800": {
    +      "Args": [
    +        "1", "\"R_DATA\"", "0", "57", "0", "0", "0",
    +        "30", "0", "0", "0", "0", "0", "-1", "0"
    +      ]
    +    }
    +  }
    +}
    +

    #AfterBuild:

    +
    {
    +  "TiltTransform": {
    +    "Term": "CYCLE800",
    +    "TC": "R_DATA", "ST": 0, "MODE": 57,
    +    "X0": 0, "Y0": 0, "Z0": 0,
    +    "A": 30, "B": 0, "C": 0,
    +    "X1": 0, "Y1": 0, "Z1": 0,
    +    "DIR": -1
    +  },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "TiltTransform",
    +      "Kind": "Static",
    +      "Mat4d": [
    +        1, 0, 0, 0,
    +        0, 0.8660254037844387, 0.49999999999999994, 0,
    +        0, -0.49999999999999994, 0.8660254037844387, 0,
    +        0, 0, 0, 1
    +      ]
    +    }
    +  ]
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensCycle800TiltSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public SiemensCycle800TiltSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensCycle800TiltSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public SiemensCycle800TiltSyntax(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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensFixedPointReturnSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensFixedPointReturnSyntax.html new file mode 100644 index 00000000..c5c012bd --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensFixedPointReturnSyntax.html @@ -0,0 +1,581 @@ + + + + + Class SiemensFixedPointReturnSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensFixedPointReturnSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.LogicSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Consumes the Siemens G74 (reference-point approach) / +G75 (fixed-point approach) statement captured into +Parsing.G74 / Parsing.G75 by the Siemens preset's +dedicated ParameterizedFlagSyntax +instance, and emits a one-shot machine-coordinate move for the +participating axes.

    +

    +Siemens semantics honored here: non-modal; only the axes written in +the block participate; the numeric axis value is a dummy +(conventionally 0) and is discarded; the motion happens in MACHINE +coordinates ignoring every active frame; the F word in the block does +not change the modal feed (the machine travels at its own rapid). +The frame bypass reuses the MachineCoordSelectSyntax +mechanism — write MachineCoordinateState +directly and back-derive ProgramXyz +through the inverse of the composed +ProgramToMcTransform — so a G54/G505 +offset or programmable frame shifts the recovered program coordinate, +never the machine target. +

    +

    +Target position: G74 (reference-point approach) reads the per-axis +machine reference from GetHomePosition(string) +(MD34010 on a Siemens table; 0 when the axis has no configured home). +G75 (fixed-point approach) reads the fixed-point table MD30600 +$MA_FIX_POINT_POS via +GetFixPointPosition(string), +falling back per axis to the same reference position when no fixed +point is configured — so machines whose fixed point differs from the +reference retract to the right place. Only fixed point 1 is modeled; +a FP= word in the block emits Coord-FixPoint--003 and +uses fixed point 1. Non-participating linear axes keep the previous +machine position; rotary axes participate only when written and +configured rotary (their target lands in the shared MC section, +wrapped shortest-path later by McAbcCyclicPathSyntax). +

    +

    +Placement: after ReferenceReturnSyntax (the G28 slot) — +behind every coordinate-offset / frame syntax so the composed +transform is complete for the ProgramXyz back-derivation, and before +McXyzSyntax / LinearMotionSyntax (the +stamped MotionEvent makes the motion syntaxes skip the +block; a G0/G1 word on the block is claimed into the modal +MotionState exactly like +MachineCoordSelectSyntax does). Without an +IHomeMcConfig dependency the statement stays in +Parsing and surfaces as unconsumed residue. +

    +
    +
    + +
    +
    public class SiemensFixedPointReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensFixedPointReturnSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    All cases hardcode a TestDeps.HomeMc with X/Y home at 0 and Z +home at 100, and leave the ProgramToMcTransform chain at +identity so ProgramXyz equals MachineCoordinateState.

    +

    +The corpus shape N19 G75 Z0 F8000 — only Z participates +(its dummy 0 is discarded), X/Y keep the previous machine position, +the F stays inside the consumed statement (modal feed untouched), +and a rapid one-shot machine move is stamped: +

    +#Previous: +
    { "MachineCoordinateState": { "X": 50, "Y": 60, "Z": -20 } }
    +#BeforeBuild: +
    { "Parsing": { "G75": { "Z": 0, "F": 8000 } } }
    +#AfterBuild: +
    {
    +  "MachineCoordinateState": { "X": 50, "Y": 60, "Z": 100 },
    +  "ProgramXyz": { "X": 50, "Y": 60, "Z": 100 },
    +  "MotionEvent": { "Form": "McLinear", "IsRapid": true, "Term": "G75" }
    +}
    +G74 X0 Z0 — reference-point approach for X and Z; Y keeps the +previous machine position: +#Previous: +
    { "MachineCoordinateState": { "X": 50, "Y": 60, "Z": -20 } }
    +#BeforeBuild: +
    { "Parsing": { "G74": { "X": 0, "Z": 0 } } }
    +#AfterBuild: +
    {
    +  "MachineCoordinateState": { "X": 0, "Y": 60, "Z": 100 },
    +  "ProgramXyz": { "X": 0, "Y": 60, "Z": 100 },
    +  "MotionEvent": { "Form": "McLinear", "IsRapid": true, "Term": "G74" }
    +}
    +Statement without any axis word — nothing participates, so the +statement is consumed with a validation warning +(Coord-FixPoint--001, diagnostic sink only) and no motion: +#BeforeBuild: +
    { "Parsing": { "G75": { "F": 8000 } } }
    +#AfterBuild: +
    {}
    +G75 Z0 with a Siemens machine-data table carrying MD30600 +$MA_FIX_POINT_POS Z = 1150 — the fixed point wins over the Z +reference at 100 (840D-SL posts park at such a fixed point before +M06); X/Y keep the previous machine position: +#Previous: +
    { "MachineCoordinateState": { "X": 50, "Y": 60, "Z": -20 } }
    +#BeforeBuild: +
    { "Parsing": { "G75": { "Z": 0 } } }
    +#AfterBuild: +
    {
    +  "MachineCoordinateState": { "X": 50, "Y": 60, "Z": 1150 },
    +  "ProgramXyz": { "X": 50, "Y": 60, "Z": 1150 },
    +  "MotionEvent": { "Form": "McLinear", "IsRapid": true, "Term": "G75" }
    +}
    +G74 Z0 with the same table — G74 is the reference-point +approach and deliberately ignores the fixed-point table; Z travels to +the reference at 100: +#Previous: +
    { "MachineCoordinateState": { "X": 50, "Y": 60, "Z": -20 } }
    +#BeforeBuild: +
    { "Parsing": { "G74": { "Z": 0 } } }
    +#AfterBuild: +
    {
    +  "MachineCoordinateState": { "X": 50, "Y": 60, "Z": 100 },
    +  "ProgramXyz": { "X": 50, "Y": 60, "Z": 100 },
    +  "MotionEvent": { "Form": "McLinear", "IsRapid": true, "Term": "G74" }
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensFixedPointReturnSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public SiemensFixedPointReturnSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensFixedPointReturnSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public SiemensFixedPointReturnSyntax(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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensModalCycleSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensModalCycleSyntax.html new file mode 100644 index 00000000..492fb2d8 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensModalCycleSyntax.html @@ -0,0 +1,545 @@ + + + + + Class SiemensModalCycleSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensModalCycleSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.LogicSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Maps Siemens MCALL CYCLE8x(…) modal drilling calls onto the +shared canned-cycle machinery — the “setup half” of the Fanuc +G66-style modal pattern; the “expansion half” needs no new code +because CannedCycleResolveSyntax's previous-block modal +lookback already re-triggers the armed cycle at every subsequent +block carrying X/Y words, exactly Sinumerik's MCALL semantic.

    +
    • MCALL CYCLE81/82(RTP,RFP,SDIS,DP,DPR[,DTB]) → an armed +CannedCycle section (Term G81/G82) with +Params.R = RFP + |SDIS|, Params.Z = DP (or +RFP − DPR), dwell P = DTB for G82.
    • MCALL CYCLE83(…,FDEP,FDPR,DAM,DTB,DTS,FRF,VARI,…) → +G83 (VARI≠0, full retract) or G73 (VARI=0, chip-break) with +Q = |RFP − FDEP| or |FDPR|. The FDEP/DAM decreasing +peck chain is approximated by that constant first-peck depth.
    • MCALL CYCLE85(…,DTB,FFR,RFF) → G89 (DTB>0, dwell) or +G85, feed-in F = FFR; the separate retract feed RFF has no +slot in the shared expansion (retract reuses F).
    • bare MCALL → the G80 cancel sentinel +(WriteCannedCycleCancel(JsonObject, string)).
    +

    +The MCALL block itself must NOT execute the cycle (Sinumerik arms +only), so no Parsing.G8x section is written here — the armed +section rides the ModalCarrySyntax +CannedCycle tracked key to the following motion blocks. +Return plane: ReturnMode = G98 (previous-block Z); RTP has no +slot in the shared expansion — programs that park at RTP before the +first trigger get exactly RTP back, the corpus shape. +Fail-soft paths (consume + structured warning + no arm): non-literal +arguments (R-parameter args — cycle args bypass the P2 evaluator), +missing RFP / depth / peck values, and any callee outside the CYCLE8x +map (MCALL L123 modal subprogram calls are not simulated). +Pipeline placement: before CannedCycleResolveSyntax in +the Siemens Logic bundle. +

    +
    +
    + +
    +
    public class SiemensModalCycleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensModalCycleSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Arm from the corpus 9-arg CYCLE81 Operate form — +R = 327.9137 + 0.5, Z = DP, no immediate execution: +#BeforeBuild:

    +
    {
    +  "Parsing": {
    +    "MCALL": {
    +      "CycleName": "CYCLE81",
    +      "Args": ["500.", "327.9137", "0.5", "324.564", "", "", "0", "1", "0"]
    +    }
    +  }
    +}
    +

    #AfterBuild:

    +
    {
    +  "CannedCycle": {
    +    "Term": "G81",
    +    "ReturnMode": "G98",
    +    "Params": { "R": 328.4137, "Z": 324.564 }
    +  }
    +}
    +

    Bare MCALL cancels — the G80 sentinel stops the modal lookback: +#BeforeBuild:

    +
    {
    +  "Parsing": { "MCALL": { "Bare": true } }
    +}
    +

    #AfterBuild:

    +
    {
    +  "CannedCycle": { "Term": "G80" }
    +}
    +

    CYCLE83 chip-break variant routes to G73 with the first-peck Q: +#BeforeBuild:

    +
    {
    +  "Parsing": {
    +    "MCALL": {
    +      "CycleName": "CYCLE83",
    +      "Args": ["50", "0.4", "2", "-10", "", "", "5", "3", "0", "0", "1", "0"]
    +    }
    +  }
    +}
    +

    #AfterBuild:

    +
    {
    +  "CannedCycle": {
    +    "Term": "G73",
    +    "ReturnMode": "G98",
    +    "Params": { "R": 2.4, "Z": -10, "Q": 5 }
    +  }
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensModalCycleSyntax() + +

    + +

    Parameterless instance (no XML state).

    +
    +
    + +
    +
    public SiemensModalCycleSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensModalCycleSyntax(XElement) + +

    + +

    XML ctor (no child elements; reserved for forward compatibility).

    +
    +
    + +
    +
    public SiemensModalCycleSyntax(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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensPathSmoothingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensPathSmoothingSyntax.html new file mode 100644 index 00000000..9b2f1b51 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensPathSmoothingSyntax.html @@ -0,0 +1,590 @@ + + + + + Class SiemensPathSmoothingSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensPathSmoothingSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.LogicSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Records the Siemens path-control / smoothing modal registers into the +brand-invariant PathSmoothing section (fields per +ISiemensPathSmoothingDef): the G-code groups +G60/G64/G641/G642 (path control) and G601/G602 (exact-stop criterion) +from Flags, the bare modal words +FNORM / SOFT / BRISK / FFWON / FFWOF / COMPCAD / COMPON / COMPOF / +UPATH / SPATH (captured by the preset's +FlagSyntax word list), and the +Parsing.CYCLE832 call sub-object (captured by +SiemensCycleCallSyntax) whose first argument arms the +high-speed tolerance (0 / empty parentheses cancel it).

    +

    +Record-only — simulation does not alter the tool path (same contract +as the Fanuc G05.1 sibling FanucPathSmoothingSyntax, +which this class replaces in the Siemens preset: that one reads only +the Parsing["G05.1"] sub-object no Siemens capture produces). +IsEnabled is derived — true while a +CYCLE832 tolerance is armed or the path-control group sits on a +continuous-path mode (G64/G641/G642). +

    +

    +Modal behavior: a block touching any group starts from a clone of the +previous block's section, applies the touched groups and rewrites the +section; untouched blocks write nothing and +ModalCarrySyntax (whose +TrackedKeys already contain PathSmoothing) carries the +previous section forward. The stream's first block stamps a +conservative { IsEnabled: false } default — the actual +delivered state of a real control is machine-data dependent, so no +term is invented for it. +

    +
    +
    + +
    +
    public class SiemensPathSmoothingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensPathSmoothingSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Corpus header shape G60 G601 FNORM (reduced to this syntax's +flags) on a first block — three groups recorded, exact stop means +smoothing off: +#BeforeBuild:

    +
    { "Parsing": { "Flags": ["G60", "G601", "FNORM"] } }
    +

    #AfterBuild:

    +
    {
    +  "PathSmoothing": {
    +    "IsEnabled": false,
    +    "PathControl": "G60",
    +    "Term": "G60",
    +    "ExactStopCriterion": "G601",
    +    "FeedProfile": "FNORM"
    +  }
    +}
    +

    CYCLE832 arm on a block whose previous section holds the header +registers — tolerance/mode recorded, IsEnabled flips, untouched +groups inherit: +#Previous:

    +
    {
    +  "PathSmoothing": {
    +    "IsEnabled": false,
    +    "PathControl": "G60",
    +    "ExactStopCriterion": "G601",
    +    "FeedProfile": "FNORM",
    +    "Term": "G60"
    +  }
    +}
    +

    #BeforeBuild:

    +
    { "Parsing": { "CYCLE832": { "Args": ["0.05", "_ORI_FINISH", "0.8"] } } }
    +

    #AfterBuild:

    +
    {
    +  "PathSmoothing": {
    +    "IsEnabled": true,
    +    "PathControl": "G60",
    +    "ExactStopCriterion": "G601",
    +    "FeedProfile": "FNORM",
    +    "Term": "CYCLE832",
    +    "Tolerance": 0.05,
    +    "Mode": "_ORI_FINISH"
    +  }
    +}
    +

    CYCLE832 cancel (empty parentheses) — tolerance/mode removed; the +inherited continuous-path G642 keeps IsEnabled true (G64-family +blending itself never stopped): +#Previous:

    +
    {
    +  "PathSmoothing": {
    +    "IsEnabled": true,
    +    "PathControl": "G642",
    +    "Term": "CYCLE832",
    +    "Tolerance": 0.01,
    +    "Mode": "_FINISH"
    +  }
    +}
    +

    #BeforeBuild:

    +
    { "Parsing": { "CYCLE832": { "Args": [] } } }
    +

    #AfterBuild:

    +
    {
    +  "PathSmoothing": {
    +    "IsEnabled": true,
    +    "PathControl": "G642",
    +    "Term": "CYCLE832"
    +  }
    +}
    +

    Bare-word block SOFT FFWON (corpus shape) — auxiliary groups +update, Term unchanged (no path-mode change on this block): +#Previous:

    +
    {
    +  "PathSmoothing": { "IsEnabled": true, "PathControl": "G64", "Term": "G64" }
    +}
    +

    #BeforeBuild:

    +
    { "Parsing": { "Flags": ["SOFT", "FFWON"] } }
    +

    #AfterBuild:

    +
    {
    +  "PathSmoothing": {
    +    "IsEnabled": true,
    +    "PathControl": "G64",
    +    "Term": "G64",
    +    "AccelProfile": "SOFT",
    +    "FeedForward": "FFWON"
    +  }
    +}
    +

    Untouched first block — conservative default section only: +#BeforeBuild:

    +
    { "Parsing": { "X": 10 } }
    +

    #AfterBuild:

    +
    {
    +  "Parsing": { "X": 10 },
    +  "PathSmoothing": { "IsEnabled": false }
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensPathSmoothingSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public SiemensPathSmoothingSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensPathSmoothingSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public SiemensPathSmoothingSyntax(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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensPivotTransformationSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensPivotTransformationSyntax.html new file mode 100644 index 00000000..c7b0f035 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensPivotTransformationSyntax.html @@ -0,0 +1,560 @@ + + + + + Class SiemensPivotTransformationSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensPivotTransformationSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.LogicSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Siemens pivot gate over the shared engine +(PivotTransformUtil): writes the +PivotTransformSource entry on blocks +where commanded XYZ needs the Pn→MC kinematic rigid transform — +active TRAORI RTCP (SiemensTraoriSyntax's +ToolHeightCompensation.Term), an active swivel/tilt +(CYCLE800, or a mixed-dialect G68/G68.2 term), or a Dynamic chain +entry. The Siemens-specific exclusion: a plain geometric frame +(TRANS/ATRANS/ROT/AROT, +IsPlainGeometryFrame(string)) transforms +coordinates only and implies no physically positioned rotaries, so +it must not open the gate — a corpus TRANS X0 Y0 Z0 +reset would otherwise leave the modal term folding the pivot on +every later plain-mode block.

    +

    +The ISO/Fanuc sibling gate is +PivotTransformationSyntax; both write the identical +JSON vocabulary through the shared engine, and only one of them is +registered per brand pipeline. Same chain-position contract: after +all Pn-frame writers, so the PivotTransform entry lands last. +

    +
    +
    + +
    +
    public class SiemensPivotTransformationSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensPivotTransformationSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Real-kinematics cases below wire TestDeps.CodeKinematics +with the default chain code [O][Z][A][w];[O][Y][X][B][S][t] +— a table-A / head-B 5-axis machine (see +PivotTransformationSyntax's corpus notes for the +zero-offset chain caveats).

    +

    +Plain-mode skip — no tilt, no RTCP: untouched. +

    +#BeforeBuild: +
    {}
    +#AfterBuild: +
    {}
    +The Siemens-specific exclusion: an active programmable frame +(Term = "TRANS") with an indexed rotary — real kinematics +wired, yet the gate must not fold the pivot (a geometric frame does +not rotate the physical machine): +#BeforeBuild: +
    {
    +  "TiltTransform": { "Term": "TRANS", "X": 0, "Y": 0, "Z": 0 },
    +  "MachineCoordinateState": { "A": 45 }
    +}
    +#AfterBuild: +
    {
    +  "TiltTransform": { "Term": "TRANS", "X": 0, "Y": 0, "Z": 0 },
    +  "MachineCoordinateState": { "A": 45 }
    +}
    +Active TRAORI signalled by the ToolHeightCompensation term — the +TestDeps.Kinematics stub makes the engine's pivot matrix +collapse to identity; no Dynamic entry exists (stable rotary), so +the entry stays Static — the branch the Dynamic-only detection +would miss: +#BeforeBuild: +
    {
    +  "ToolHeightCompensation": { "Offset_mm": 50, "Term": "TRAORI", "OffsetId": 1 }
    +}
    +#AfterBuild: +
    {
    +  "ToolHeightCompensation": { "Offset_mm": 50, "Term": "TRAORI", "OffsetId": 1 },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "PivotTransform",
    +      "Kind": "Static",
    +      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
    +    }
    +  ]
    +}
    +Active CYCLE800 swivel with an indexed table angle — real +kinematics: the engine folds the table-A Rx(45°) rigid matrix, the +same math the ISO sibling produces for G68.2: +#BeforeBuild: +
    {
    +  "TiltTransform": { "Term": "CYCLE800" },
    +  "MachineCoordinateState": { "A": 45 }
    +}
    +#AfterBuild: +
    {
    +  "TiltTransform": { "Term": "CYCLE800" },
    +  "MachineCoordinateState": { "A": 45 },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "PivotTransform",
    +      "Kind": "Static",
    +      "Mat4d": [
    +        1, 0, 0, 0,
    +        0, 0.7071067811865475, -0.7071067811865475, 0,
    +        0, 0.7071067811865475, 0.7071067811865475, 0,
    +        0, 0, 0, 1
    +      ]
    +    }
    +  ]
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensPivotTransformationSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public SiemensPivotTransformationSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensPivotTransformationSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public SiemensPivotTransformationSyntax(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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensProgrammableFrameSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensProgrammableFrameSyntax.html new file mode 100644 index 00000000..b7ed6b8e --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensProgrammableFrameSyntax.html @@ -0,0 +1,696 @@ + + + + + Class SiemensProgrammableFrameSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensProgrammableFrameSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.LogicSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Siemens programmable frame (TRANS/ATRANS/ROT/AROT incl. +RPL=, plus the solid-angle forms ROTS/AROTS): consumes +the structured +Parsing.<keyword> sub-objects captured by +SiemensFrameStatementSyntax, accumulates the +programmable-frame matrix across blocks, and composes it into +ProgramToMcTransform as the shared +TransformSource entry — the same +Source CYCLE800 writes, so the two stay mutually exclusive via +AddOrReplaceTransform's in-place replacement (on a real +Sinumerik, CYCLE800 itself writes the programmable frame chain, so +single ownership mirrors the control).

    +

    +Semantics follow the Sinumerik programmable-frame rules (HardNc +reference: HardNcLine.ParseSiemensFrameTransform + +NcArgSiemensFrame): the absolute forms TRANS/ROT +reset the whole programmable frame and set only their own +component; the additive forms ATRANS/AROT compose onto +the current frame with the new operation applied first +(M = M_op · M_prev, row-vector convention — an AROT +after a TRANS rotates inside the translated frame). A bare +keyword (any of the four) resets the programmable frame entirely — +written as the shared inactive sentinel Term = "G69" plus an +identity chain entry (the same convention HardNc's CYCLE800 reset +uses). Multi-axis rotation in one statement applies the Sinumerik +RPY order (intrinsic Z → Y′ → X″, i.e. row-vector +Rx·Ry·Rz); RPL rotates about the active G17/G18/G19 +plane normal and composes after the axis angles. +

    +

    +The solid-angle forms ROTS/AROTS follow the Sinumerik +rules (Programming Manual Fundamentals 03/2010 §12.5, "ROTS and +AROTS behave in the same way as ROT and AROT"): at most two solid +angles orient a plane, composed first-named axis first with the +second rotation about the original (extrinsic) axis — the +pair X,Y keeps the new X axis in the old Z/X plane (row-vector +Rx·Ry), Y,Z keeps the new Y axis in the old X/Y plane +(Ry·Rz), Z,X keeps the new Z axis in the old Y/Z plane +(Rz·Rx). A single angle is identical to ROT/AROT; +RPL= alone rotates in the active plane. Three angles, or +RPL mixed with axis angles, fall outside the documented +grammar: the statement is left unapplied with a +SiemensFrame--SolidAngleInvalid warning plus the visible +Parsing--Unconsumed residue — never a guessed frame. +

    +

    +CROTS/SCALE/ASCALE/MIRROR/AMIRROR (zero corpus occurrences; +CROTS references the control's frame database which has no offline +counterpart, SCALE/MIRROR would inject non-rigid matrices whose +remaining breakages are the radius-compensation magnitude, the +program-space path length feeding durations, and the writeback Euler +decomposition) are consumed recognized-but-not-simulated with a +SiemensFrame--Unsupported warning and zero transform effect. +A structured keyword whose capture fell back to the verbatim +Statement shape, or whose value is an unevaluated variable +expression, is left in Parsing — the +VariableExpression--Unevaluated diagnostic plus the visible +Parsing--Unconsumed residue is the correct fail-soft (P2 +acceptance doctrine); the frame is not partially applied. +

    +

    +Must run after SiemensCycle800TiltSyntax (this +syntax owns the once-per-block TiltTransform modal +carry: it carries only when no earlier syntax authored the section +on this block) and before the coordinate-offset syntaxes, so +the frame entry lands ahead of +CoordinateOffset in the chain +(McXyz = ProgramXyz · M_frame · M_offset · … — the +programmable frame applies to program coordinates first, then the +settable G54 frame, matching the Sinumerik frame chain). +

    +
    +
    + +
    +
    public class SiemensProgrammableFrameSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensProgrammableFrameSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Bare cancel — programmable frame reset to the shared inactive +sentinel (identity entry overwrites any previously composed frame): +#BeforeBuild:

    +
    { "Parsing": { "ROT": { "Bare": true } } }
    +

    #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]
    +    }
    +  ]
    +}
    +

    Absolute translation — corpus reset idiom +(TRANS X10 Y20 Z-5 arrives structured from the Parsing +stage): +#BeforeBuild:

    +
    { "Parsing": { "TRANS": { "X": 10, "Y": 20, "Z": -5 } } }
    +

    #AfterBuild:

    +
    {
    +  "TiltTransform": { "Term": "TRANS", "X": 10, "Y": 20, "Z": -5 },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "TiltTransform",
    +      "Kind": "Static",
    +      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,20,-5,1]
    +    }
    +  ]
    +}
    +

    Additive rotation onto a previous translation — +M = Rx(30°) · T(10,0,0): the rotation applies first +(inside the translated frame), the translation column survives: +#Previous:

    +
    {
    +  "TiltTransform": { "Term": "TRANS", "X": 10 },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "TiltTransform",
    +      "Kind": "Static",
    +      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,0,0,1]
    +    }
    +  ]
    +}
    +

    #BeforeBuild:

    +
    { "Parsing": { "AROT": { "X": 30 } } }
    +

    #AfterBuild:

    +
    {
    +  "TiltTransform": { "Term": "AROT", "X": 30 },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "TiltTransform",
    +      "Kind": "Static",
    +      "Mat4d": [
    +        1, 0, 0, 0,
    +        0, 0.8660254037844387, 0.49999999999999994, 0,
    +        0, -0.49999999999999994, 0.8660254037844387, 0,
    +        10, 0, 0, 1
    +      ]
    +    }
    +  ]
    +}
    +

    In-plane rotation — no PlaneSelect section on the block, so +the default XY plane (Z normal) applies: +#BeforeBuild:

    +
    { "Parsing": { "ROT": { "RPL": 30 } } }
    +

    #AfterBuild:

    +
    {
    +  "TiltTransform": { "Term": "ROT", "RPL": 30 },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "TiltTransform",
    +      "Kind": "Static",
    +      "Mat4d": [
    +        0.8660254037844387, 0.49999999999999994, 0, 0,
    +        -0.49999999999999994, 0.8660254037844387, 0, 0,
    +        0, 0, 1, 0,
    +        0, 0, 0, 1
    +      ]
    +    }
    +  ]
    +}
    +

    Recognized-but-not-simulated keyword — consumed with a +SiemensFrame–Unsupported warning, zero transform effect +(the JSON shape shows only the consumption; no chain entry, no +section beyond the first-block default): +#BeforeBuild:

    +
    { "Parsing": { "SCALE": { "Statement": "X2 Y2" } } }
    +

    #AfterBuild:

    +
    { "TiltTransform": { "Term": "G69" } }
    +

    Solid-angle pair X,Y — ROTS X30 Y40 applies X first, then Y +about the original axis (row-vector Rx·Ry); the resulting +first row (the new X axis) has a zero Y component — the manual's +“the new X axis lies in the old Z/X plane”: +#BeforeBuild:

    +
    { "Parsing": { "ROTS": { "X": 30, "Y": 40 } } }
    +

    #AfterBuild:

    +
    {
    +  "TiltTransform": { "Term": "ROTS", "X": 30, "Y": 40 },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "TiltTransform",
    +      "Kind": "Static",
    +      "Mat4d": [
    +        0.766044443118978, 0, -0.6427876096865393, 0,
    +        0.32139380484326957, 0.8660254037844387, 0.38302222155948895, 0,
    +        0.5566703992264194, -0.49999999999999994, 0.6634139481689384, 0,
    +        0, 0, 0, 1
    +      ]
    +    }
    +  ]
    +}
    +

    Solid-angle pair Y,Z additively composed onto a previous +translation — M = (Ry(20°)·Rz(50°)) · T(10,0,0): the second +row (the new Y axis) has a zero Z component — “the new Y axis lies +in the old X/Y plane” — and the translation column survives: +#Previous:

    +
    {
    +  "TiltTransform": { "Term": "TRANS", "X": 10 },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "TiltTransform",
    +      "Kind": "Static",
    +      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 10,0,0,1]
    +    }
    +  ]
    +}
    +

    #BeforeBuild:

    +
    { "Parsing": { "AROTS": { "Y": 20, "Z": 50 } } }
    +

    #AfterBuild:

    +
    {
    +  "TiltTransform": { "Term": "AROTS", "Y": 20, "Z": 50 },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "TiltTransform",
    +      "Kind": "Static",
    +      "Mat4d": [
    +        0.6040227735550537, 0.7198463103929542, -0.3420201433256687, 0,
    +        -0.766044443118978, 0.6427876096865394, 0, 0,
    +        0.2198463103929542, 0.2620026302293849, 0.9396926207859084, 0,
    +        10, 0, 0, 1
    +      ]
    +    }
    +  ]
    +}
    +

    Three solid angles fall outside the documented grammar (“up to 2 +solid angles may be programmed”) — the statement is left unapplied +with a SiemensFrame–SolidAngleInvalid warning and the +residue stays visible for the Parsing–Unconsumed report: +#BeforeBuild:

    +
    { "Parsing": { "ROTS": { "X": 10, "Y": 20, "Z": 30 } } }
    +

    #AfterBuild:

    +
    {
    +  "Parsing": { "ROTS": { "X": 10, "Y": 20, "Z": 30 } },
    +  "TiltTransform": { "Term": "G69" }
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensProgrammableFrameSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public SiemensProgrammableFrameSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensProgrammableFrameSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public SiemensProgrammableFrameSyntax(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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensStopreSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensStopreSyntax.html new file mode 100644 index 00000000..102cea88 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensStopreSyntax.html @@ -0,0 +1,482 @@ + + + + + Class SiemensStopreSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensStopreSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.LogicSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Consumes the Siemens STOPRE flag (stop preprocessing — the +control's look-ahead buffer sync) from Flags +and records a non-modal block-root Stopre section. +STOPRE has no effect in offline simulation (there is no preprocessing +buffer to flush), so an Stopre–NoOp Unsupported Message is +emitted: recognized, intentionally not simulated, safe offline.

    +

    +Capture side: STOPRE is a bare word collected by the Siemens +preset's FlagSyntax word list. +

    +
    +
    + +
    +
    public class SiemensStopreSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensStopreSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    #BeforeBuild:

    +
    { "Parsing": { "Flags": ["STOPRE"] } }
    +

    #AfterBuild:

    +
    { "Stopre": { "Term": "STOPRE" } }
    + + + + +

    Constructors +

    + + + + +

    + SiemensStopreSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public SiemensStopreSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensStopreSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public SiemensStopreSyntax(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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensToolOffsetSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensToolOffsetSyntax.html new file mode 100644 index 00000000..343079c6 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensToolOffsetSyntax.html @@ -0,0 +1,668 @@ + + + + + Class SiemensToolOffsetSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensToolOffsetSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.LogicSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Siemens cutting-edge tool offset activation: consumes a standalone +D word (D1 activates edge 1 of the active tool, +D0 cancels compensation), resolves the effective length via +TryGetToolHeightOffset_mm(int, int, out double) +($TC_DP3, geometry + additive wear) for the (active tool, D) pair — +a pair without a $TC_DP row falls back to the generic +IToolOffsetConfig height for the tool number (with a +SiemensToolOffset–TcdpRowMissing configuration warning), so +an unfilled per-case table follows the ToolHouse-fed source instead +of silently machining with offset 0 — and writes +the same downstream state as the ISO sibling +ToolHeightOffsetSyntax: the +IToolHeightCompensationDef section (with +Term = “D”) plus the ToolHeightCompensation entry in the +ProgramToMcTransform chain — sharing +the transform Source keeps the two brands' compensation mutually +exclusive via AddOrReplaceTransform's in-place replacement.

    +

    +The active tool number comes from the block's (or previous block's) +ToolChange section; a string tool name resolves through +FindToolNumberByName(string). Modal +ownership follows the same yield protocol as the ISO sibling: blocks +without a D word re-resolve only when the previous section's +Term is ours ("D"); an ISO term (G43/G44/G49) leaves the +section to ToolHeightOffsetSyntax — real Siemens files +mix both dialects (G43H1 headers next to D1 blocks). +Must therefore be placed after ToolHeightOffsetSyntax +(and after ToolChangeSyntax) in the Logic bundle, and +before the brand pivot gate (SiemensPivotTransformationSyntax +in the Siemens list) so the pivot entry +stays at the chain tail. +

    +

    +Consuming Parsing.D here (Logic) intentionally precedes +RadiusCompensationSyntax (PostLogic): +on Siemens, D selects the cutting edge — it is not the Fanuc +G41 D5 radius argument, and radius state derives from the same +(T, D) edge ($TC_DP6; wiring the radius value is a follow-up). +

    +
    +
    + +
    +
    public class SiemensToolOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensToolOffsetSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    D2 with the active tool from the block's ToolChange section and +a table mapping (T7, D2) → 50 mm (SUT dep configured in the test). +Tool ≠ edge on purpose — the distinct Siemens feature is a two-key +(tool, edge) lookup, so a transposed (edge, tool) or default-index +resolve cannot pass. No ToolOrientation and no tilt entry, so +the translation lies along UnitZ: +#BeforeBuild:

    +
    {
    +  "Parsing": { "D": 2 },
    +  "ToolChange": { "ToolId": 7, "IsChange": false }
    +}
    +

    #AfterBuild:

    +
    {
    +  "ToolChange": { "ToolId": 7, "IsChange": false },
    +  "ToolHeightCompensation": {
    +    "Offset_mm": 50, "Term": "D", "OffsetId": 2
    +  },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "ToolHeightCompensation",
    +      "Kind": "Static",
    +      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,50,1]
    +    }
    +  ]
    +}
    +

    D0 cancel — sentinel section with Offset_mm = 0 and an identity +matrix resets any previously composed translation: +#BeforeBuild:

    +
    { "Parsing": { "D": 0 } }
    +

    #AfterBuild:

    +
    {
    +  "ToolHeightCompensation": {
    +    "Offset_mm": 0, "Term": "D", "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 D on the block but #Previous: carries an active D edge — +modal re-resolve against the current tool keeps the section and chain +entry per-block self-contained: +#Previous:

    +
    {
    +  "ToolChange": { "ToolId": 7, "IsChange": false },
    +  "ToolHeightCompensation": {
    +    "Offset_mm": 50, "Term": "D", "OffsetId": 2
    +  }
    +}
    +

    #BeforeBuild:

    +
    { "ToolChange": { "ToolId": 7, "IsChange": false } }
    +

    #AfterBuild:

    +
    {
    +  "ToolChange": { "ToolId": 7, "IsChange": false },
    +  "ToolHeightCompensation": {
    +    "Offset_mm": 50, "Term": "D", "OffsetId": 2
    +  },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "ToolHeightCompensation",
    +      "Kind": "Static",
    +      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,50,1]
    +    }
    +  ]
    +}
    +

    Previous modal belongs to ISO G43 — this syntax yields (no write at +all) so ToolHeightOffsetSyntax carries its own state: +#Previous:

    +
    {
    +  "ToolHeightCompensation": {
    +    "Offset_mm": 99.98, "Term": "G43", "OffsetId": 1
    +  }
    +}
    +

    #BeforeBuild:

    +
    { "Parsing": { "Flags": ["M03"] } }
    +

    #AfterBuild:

    +
    { "Parsing": { "Flags": ["M03"] } }
    +

    A (T7, D1) pair without a $TC_DP row falls back to the generic +tool-number-keyed table (SUT deps in the test: an empty +SiemensToolOffsetTable plus a generic table mapping offset 7 → +132.6 mm) and emits SiemensToolOffset–TcdpRowMissing: +#BeforeBuild:

    +
    {
    +  "Parsing": { "D": 1 },
    +  "ToolChange": { "ToolId": 7, "IsChange": false }
    +}
    +

    #AfterBuild:

    +
    {
    +  "ToolChange": { "ToolId": 7, "IsChange": false },
    +  "ToolHeightCompensation": {
    +    "Offset_mm": 132.6, "Term": "D", "OffsetId": 1
    +  },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "ToolHeightCompensation",
    +      "Kind": "Static",
    +      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,132.6,1]
    +    }
    +  ]
    +}
    +

    The generic table's NaN sentinel (ToolHouse refresh with an +unresolvable tool tip) degrades to offset 0 instead of poisoning the +transform chain (same deps shape, generic height = NaN): +#BeforeBuild:

    +
    {
    +  "Parsing": { "D": 1 },
    +  "ToolChange": { "ToolId": 7, "IsChange": false }
    +}
    +

    #AfterBuild:

    +
    {
    +  "ToolChange": { "ToolId": 7, "IsChange": false },
    +  "ToolHeightCompensation": {
    +    "Offset_mm": 0, "Term": "D", "OffsetId": 1
    +  },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "ToolHeightCompensation",
    +      "Kind": "Static",
    +      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
    +    }
    +  ]
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensToolOffsetSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public SiemensToolOffsetSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensToolOffsetSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public SiemensToolOffsetSyntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Source XML element.

    +
    +
    + + + + + + + + + + + + +

    Fields +

    + + + +

    + DTerm + +

    + +

    Term value marking the +section as owned by the Siemens D-edge activation.

    +
    +
    + +
    +
    public const string DTerm = "D"
    +
    + + + + +

    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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensTraoriSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensTraoriSyntax.html new file mode 100644 index 00000000..fc404a21 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.SiemensTraoriSyntax.html @@ -0,0 +1,637 @@ + + + + + Class SiemensTraoriSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensTraoriSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.LogicSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Siemens TRAORI/TRAFOOF (orientation transformation = RTCP): the +Siemens sibling of G43p4RtcpSyntax. While TRAORI is +active, the IToolHeightCompensationDef section carries +Term = “TRAORI” and the ToolHeightCompensation chain +entry becomes a tool-normal · offset translation at the block +endpoint ABC (MakeToolHeightMat(IMachineKinematics, Vec3d, double)), +tagged KindDynamic when the rotary +state changes across the block — the single signal that routes the +block to ClLinear per-step IK.

    +

    +Tool length ownership stays with the (T,D) machinery: on real +Sinumerik, TRAORI uses the active D edge's length. Activation adopts +the compensation the D edge (or a mixed-dialect ISO G43) has already +resolved — SiemensToolOffsetSyntax runs earlier in the +bundle, so an explicit D1 on any TRAORI-modal block first +resolves Term = "D" and this syntax re-takes the section with +the fresh Offset_mm. The adopted owner is recorded in +PriorTermKey; TRAFOOF hands the section back to it +(default "D"), because plain length compensation survives +TRAORI deactivation on the control — TRAFOOF only ends the +orientation-following. A TRAFOOF with no active TRAORI (the corpus' +ubiquitous defensive preamble) is consumed silently. +

    +

    +Must run after ToolHeightOffsetSyntax / +SiemensToolOffsetSyntax / the coordinate-offset +syntaxes (mirroring G43p4RtcpSyntax's Fanuc slot) and +before SiemensPivotTransformationSyntax, whose gate +recognizes the TRAORI term and folds the kinematic pivot. +Silently degrades to a plain UnitZ · offset translation when +IMachineKinematics is absent. +

    +
    +
    + +
    +
    public class SiemensTraoriSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensTraoriSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Activation with no prior compensation and no kinematics — the +section is taken with zero offset and the chain entry collapses to +identity (Static: no rotary change is observable on a single +block): +#BeforeBuild:

    +
    { "Parsing": { "Flags": ["TRAORI"] } }
    +

    #AfterBuild:

    +
    {
    +  "ToolHeightCompensation": { "Offset_mm": 0, "Term": "TRAORI", "OffsetId": 0 },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "ToolHeightCompensation",
    +      "Kind": "Static",
    +      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
    +    }
    +  ]
    +}
    +

    Activation adopting the D edge resolved earlier on the same block +(SiemensToolOffsetSyntax has already written +Term = “D” and its entry) — the section is re-taken with the +fresh offset and the owner recorded for the TRAFOOF hand-back: +#BeforeBuild:

    +
    {
    +  "Parsing": { "Flags": ["TRAORI"] },
    +  "ToolHeightCompensation": { "Offset_mm": 50, "Term": "D", "OffsetId": 2 },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "ToolHeightCompensation",
    +      "Kind": "Static",
    +      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,50,1]
    +    }
    +  ]
    +}
    +

    #AfterBuild:

    +
    {
    +  "ToolHeightCompensation": {
    +    "Offset_mm": 50, "Term": "TRAORI", "OffsetId": 2, "PriorTerm": "D"
    +  },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "ToolHeightCompensation",
    +      "Kind": "Static",
    +      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,50,1]
    +    }
    +  ]
    +}
    +

    Modal continuation — no flag on the block, the previous block +carries the TRAORI section; the snapshot (incl. the recorded owner) +is carried and the entry rebuilt: +#Previous:

    +
    {
    +  "ToolHeightCompensation": {
    +    "Offset_mm": 50, "Term": "TRAORI", "OffsetId": 2, "PriorTerm": "D"
    +  }
    +}
    +

    #BeforeBuild:

    +
    {}
    +

    #AfterBuild:

    +
    {
    +  "ToolHeightCompensation": {
    +    "Offset_mm": 50, "Term": "TRAORI", "OffsetId": 2, "PriorTerm": "D"
    +  },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "ToolHeightCompensation",
    +      "Kind": "Static",
    +      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,50,1]
    +    }
    +  ]
    +}
    +

    TRAFOOF hand-back — the section returns to the recorded owner +(“D”), the plain translation entry is rebuilt, and the D +modal re-resolve resumes on following blocks: +#Previous:

    +
    {
    +  "ToolHeightCompensation": {
    +    "Offset_mm": 50, "Term": "TRAORI", "OffsetId": 2, "PriorTerm": "D"
    +  }
    +}
    +

    #BeforeBuild:

    +
    { "Parsing": { "Flags": ["TRAFOOF"] } }
    +

    #AfterBuild:

    +
    {
    +  "ToolHeightCompensation": { "Offset_mm": 50, "Term": "D", "OffsetId": 2 },
    +  "ProgramToMcTransform": [
    +    {
    +      "Source": "ToolHeightCompensation",
    +      "Kind": "Static",
    +      "Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,50,1]
    +    }
    +  ]
    +}
    +

    Defensive TRAFOOF with no active TRAORI (corpus preamble idiom) — +consumed silently, nothing written: +#BeforeBuild:

    +
    { "Parsing": { "Flags": ["TRAFOOF"] } }
    +

    #AfterBuild:

    +
    {}
    + + + + +

    Constructors +

    + + + + +

    + SiemensTraoriSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public SiemensTraoriSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensTraoriSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public SiemensTraoriSyntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Source XML element.

    +
    +
    + + + + + + + + + + + + +

    Fields +

    + + + +

    + PriorTermKey + +

    + +

    Extra ToolHeightCompensation section key recording +which owner's compensation TRAORI adopted at activation +(“D” or an ISO term) — the term TRAFOOF hands the section +back to. Absent when TRAORI activated with no prior compensation +(hand-back then defaults to “D”, the native Siemens owner).

    +
    +
    + +
    +
    public const string PriorTermKey = "PriorTerm"
    +
    + + + + +

    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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.html index 013c4dd5..a97280cd 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.Siemens.html @@ -94,6 +94,48 @@

    Classes

    +
    +
    SiemensCircularMotionSyntax
    +

    Siemens variant of CircularMotionSyntax (replaces it in +the Siemens preset — do not run both): writes +McArc motion for G02/G03 blocks from +I/J/K center offsets or the Siemens signed radius CR= +(captured as Parsing.CR by an equals-form +FloatTagValueSyntax), with the helix +turn count from TURN= (Parsing.TURN).

    +

    +Differences from the Fanuc/ISO parent, per the corpus-driven plan: +

    • CR replaces R — same math + (ResolveCenterFromSignedRadius(Vec3d, Vec3d, int, bool, double); + negative CR selects the >180° arc), but a CR full circle + (start ≈ end on the plane) is invalid on Sinumerik and the chord + collapse would produce a NaN center — rejected with + Arc-CR--ClosedChord, params left visible.
    • TURN=N means N additional full circles: + AdditionalCircleNum = TURN + (closed ? 1 : 0)no −1 + (the legacy HardNc path treated TURN like Fanuc L and silently + undercounted Siemens helices by one turn; deliberately not ported). + The closed-loop +1 stacks on the same closure heuristic used when + TURN is absent, because the downstream angle wrap yields 0 rad for + closed arcs and the whole loop count must come from + AdditionalCircleNum.
    • No L and no K-as-pitch reading — Siemens L{n} is a + subprogram call and helix travel is endpoint + TURN driven.
    • Per-word absolute center: an I=AC(...) / + J=AC(...) / K=AC(...) wrapper (unwrapped by + SiemensAcIcSyntax into a + numeric Parsing value plus a PositioningOverride + entry) switches that one component from the default incremental + offset-from-start to an absolute center coordinate + (ResolveCenterFromMixedIjk(Vec3d, int, double, double, double, bool, bool, bool)); + components without an entry — and IC()-wrapped ones — + keep the incremental reading. Blocks without the section take the + legacy ResolveCenterFromIjk(Vec3d, int, double, double, double) + path byte-for-byte.
    + +

    +Must be placed before LinearMotionSyntax (shared +Group 01 motion slot). +

    +
    +
    SiemensCoordinateOffsetSyntax

    Siemens Sinumerik: resolves work coordinate offset from G54–G57 (ISO-compatible), @@ -101,6 +143,399 @@ G505–G599 (extended Siemens), and G500 (cancel — machine coordinate mode). Reads from Flags, looks up IsoCoordinateTable dependency, composes into ProgramToMcTransform.

    +
    +
    +
    +
    SiemensCutCompModeSyntax
    +

    Consumes the Siemens CUT3DC flag (3D circumferential cutter +compensation mode, used with TRAORI) from +Flags and records a non-modal block-root +CutCompMode section. The offline +RadiusCompensationSyntax only models +the 2D plane modes, so a SiemensCutComp–Unsupported warning +is emitted: a later G41/G42 in this program simulates +as plane compensation, not as the control's 3D surface-normal +offset — recognized, visibly not simulated, never a half-guess.

    +

    +Capture side: CUT3DC is a bare word collected by the Siemens +preset's FlagSyntax word list. +

    +
    +
    +
    +
    SiemensCycle800TiltSyntax
    +

    Siemens CYCLE800 (swivel cycle): resolves the tilted work plane from +the positional arguments captured by +SiemensCycleCallSyntax and composes it into +ProgramToMcTransform as the shared +TransformSource entry — the Siemens +sibling of IsoG68p2TiltSyntax its XmlDoc promises. +Unlike Fanuc G68.2 (plane only), CYCLE800 also positions the rotary +axes implicitly (the G53.1 half): with +IMachineKinematics wired, the tilt normal is solved to +machine ABC and written into +MachineCoordinateState, and +the block gets a non-modal rapid MotionEvent with +Term = “CYCLE800” (mirroring +G53p1RotaryPositionSyntax).

    +

    +Argument layout (HardNc reference NcArgCycle800): +CYCLE800(FR, TC, ST, MODE, X0, Y0, Z0, A, B, C, X1, Y1, Z1, DIR +[, FR_I, DMODE]) — 15- and 16-arg post variants both occur in +the corpus. MODE is bit-coded: bits 7-6 select the swivel +mode (00 axis-by-axis, 01 solid angle, 10 projection angle, +11 direct rotary), bit pairs 1-0/3-2/5-4 select each angle's axis +(01=X, 10=Y, 11=Z). The motion-convention matrix is +T(X1,Y1,Z1) · R · T(X0,Y0,Z0) (row-vector; the post-rotation +zero offset applies innermost). ST units digit 1 composes +additively onto the current programmable frame; FR/FR_I +retraction and DIR solution preference are recorded in the +section but not simulated (DIR = 0 suppresses the rotary +positioning, per the control's frame-only variant). +

    +

    +Cancel forms — bare CYCLE800, empty parentheses, the +single-argument CYCLE800(0), or swivel-data-record name +TC = "0" — reset the tilt to the shared inactive sentinel +(Term = "G69" + identity entry, HardNc's convention). An +in-between argument count (1–9 with a live TC) is treated as a +truncated/unmodeled capture, not a cancel — warning + visible +residue, so a mis-parsed call can never silently drop an active +swivel. The rotary axes are not re-positioned on cancel: the +retract/re-orient behavior depends on the machine's swivel data +record, which does not exist offline; corpus programs follow the +cancel with explicit G0 A.. C.. moves anyway. +

    +

    +Fail-soft: a non-numeric argument (machine-runtime variable) leaves +the Parsing.CYCLE800 residue visible and applies no transform +(Coord-Tilt--003); an IK failure keeps the euler tilt and +skips positioning (Coord-Tilt--004); a rotating CYCLE800 on a +machine without kinematics/rotary axes keeps the tilt and warns +(Coord-Tilt--005). +

    +

    +Must run before SiemensProgrammableFrameSyntax +(which owns the once-per-block TiltTransform modal +carry and composes additive AROT/ATRANS onto this cycle's fresh +matrix) and before the coordinate-offset syntaxes (chain order: +frame entry ahead of CoordinateOffset). +

    +
    +
    +
    +
    SiemensFixedPointReturnSyntax
    +

    Consumes the Siemens G74 (reference-point approach) / +G75 (fixed-point approach) statement captured into +Parsing.G74 / Parsing.G75 by the Siemens preset's +dedicated ParameterizedFlagSyntax +instance, and emits a one-shot machine-coordinate move for the +participating axes.

    +

    +Siemens semantics honored here: non-modal; only the axes written in +the block participate; the numeric axis value is a dummy +(conventionally 0) and is discarded; the motion happens in MACHINE +coordinates ignoring every active frame; the F word in the block does +not change the modal feed (the machine travels at its own rapid). +The frame bypass reuses the MachineCoordSelectSyntax +mechanism — write MachineCoordinateState +directly and back-derive ProgramXyz +through the inverse of the composed +ProgramToMcTransform — so a G54/G505 +offset or programmable frame shifts the recovered program coordinate, +never the machine target. +

    +

    +Target position: G74 (reference-point approach) reads the per-axis +machine reference from GetHomePosition(string) +(MD34010 on a Siemens table; 0 when the axis has no configured home). +G75 (fixed-point approach) reads the fixed-point table MD30600 +$MA_FIX_POINT_POS via +GetFixPointPosition(string), +falling back per axis to the same reference position when no fixed +point is configured — so machines whose fixed point differs from the +reference retract to the right place. Only fixed point 1 is modeled; +a FP= word in the block emits Coord-FixPoint--003 and +uses fixed point 1. Non-participating linear axes keep the previous +machine position; rotary axes participate only when written and +configured rotary (their target lands in the shared MC section, +wrapped shortest-path later by McAbcCyclicPathSyntax). +

    +

    +Placement: after ReferenceReturnSyntax (the G28 slot) — +behind every coordinate-offset / frame syntax so the composed +transform is complete for the ProgramXyz back-derivation, and before +McXyzSyntax / LinearMotionSyntax (the +stamped MotionEvent makes the motion syntaxes skip the +block; a G0/G1 word on the block is claimed into the modal +MotionState exactly like +MachineCoordSelectSyntax does). Without an +IHomeMcConfig dependency the statement stays in +Parsing and surfaces as unconsumed residue. +

    +
    +
    +
    +
    SiemensModalCycleSyntax
    +

    Maps Siemens MCALL CYCLE8x(…) modal drilling calls onto the +shared canned-cycle machinery — the “setup half” of the Fanuc +G66-style modal pattern; the “expansion half” needs no new code +because CannedCycleResolveSyntax's previous-block modal +lookback already re-triggers the armed cycle at every subsequent +block carrying X/Y words, exactly Sinumerik's MCALL semantic.

    +
    • MCALL CYCLE81/82(RTP,RFP,SDIS,DP,DPR[,DTB]) → an armed +CannedCycle section (Term G81/G82) with +Params.R = RFP + |SDIS|, Params.Z = DP (or +RFP − DPR), dwell P = DTB for G82.
    • MCALL CYCLE83(…,FDEP,FDPR,DAM,DTB,DTS,FRF,VARI,…) → +G83 (VARI≠0, full retract) or G73 (VARI=0, chip-break) with +Q = |RFP − FDEP| or |FDPR|. The FDEP/DAM decreasing +peck chain is approximated by that constant first-peck depth.
    • MCALL CYCLE85(…,DTB,FFR,RFF) → G89 (DTB>0, dwell) or +G85, feed-in F = FFR; the separate retract feed RFF has no +slot in the shared expansion (retract reuses F).
    • bare MCALL → the G80 cancel sentinel +(WriteCannedCycleCancel(JsonObject, string)).
    +

    +The MCALL block itself must NOT execute the cycle (Sinumerik arms +only), so no Parsing.G8x section is written here — the armed +section rides the ModalCarrySyntax +CannedCycle tracked key to the following motion blocks. +Return plane: ReturnMode = G98 (previous-block Z); RTP has no +slot in the shared expansion — programs that park at RTP before the +first trigger get exactly RTP back, the corpus shape. +Fail-soft paths (consume + structured warning + no arm): non-literal +arguments (R-parameter args — cycle args bypass the P2 evaluator), +missing RFP / depth / peck values, and any callee outside the CYCLE8x +map (MCALL L123 modal subprogram calls are not simulated). +Pipeline placement: before CannedCycleResolveSyntax in +the Siemens Logic bundle. +

    +
    +
    +
    +
    SiemensPathSmoothingSyntax
    +

    Records the Siemens path-control / smoothing modal registers into the +brand-invariant PathSmoothing section (fields per +ISiemensPathSmoothingDef): the G-code groups +G60/G64/G641/G642 (path control) and G601/G602 (exact-stop criterion) +from Flags, the bare modal words +FNORM / SOFT / BRISK / FFWON / FFWOF / COMPCAD / COMPON / COMPOF / +UPATH / SPATH (captured by the preset's +FlagSyntax word list), and the +Parsing.CYCLE832 call sub-object (captured by +SiemensCycleCallSyntax) whose first argument arms the +high-speed tolerance (0 / empty parentheses cancel it).

    +

    +Record-only — simulation does not alter the tool path (same contract +as the Fanuc G05.1 sibling FanucPathSmoothingSyntax, +which this class replaces in the Siemens preset: that one reads only +the Parsing["G05.1"] sub-object no Siemens capture produces). +IsEnabled is derived — true while a +CYCLE832 tolerance is armed or the path-control group sits on a +continuous-path mode (G64/G641/G642). +

    +

    +Modal behavior: a block touching any group starts from a clone of the +previous block's section, applies the touched groups and rewrites the +section; untouched blocks write nothing and +ModalCarrySyntax (whose +TrackedKeys already contain PathSmoothing) carries the +previous section forward. The stream's first block stamps a +conservative { IsEnabled: false } default — the actual +delivered state of a real control is machine-data dependent, so no +term is invented for it. +

    +
    +
    +
    +
    SiemensPivotTransformationSyntax
    +

    Siemens pivot gate over the shared engine +(PivotTransformUtil): writes the +PivotTransformSource entry on blocks +where commanded XYZ needs the Pn→MC kinematic rigid transform — +active TRAORI RTCP (SiemensTraoriSyntax's +ToolHeightCompensation.Term), an active swivel/tilt +(CYCLE800, or a mixed-dialect G68/G68.2 term), or a Dynamic chain +entry. The Siemens-specific exclusion: a plain geometric frame +(TRANS/ATRANS/ROT/AROT, +IsPlainGeometryFrame(string)) transforms +coordinates only and implies no physically positioned rotaries, so +it must not open the gate — a corpus TRANS X0 Y0 Z0 +reset would otherwise leave the modal term folding the pivot on +every later plain-mode block.

    +

    +The ISO/Fanuc sibling gate is +PivotTransformationSyntax; both write the identical +JSON vocabulary through the shared engine, and only one of them is +registered per brand pipeline. Same chain-position contract: after +all Pn-frame writers, so the PivotTransform entry lands last. +

    +
    +
    +
    +
    SiemensProgrammableFrameSyntax
    +

    Siemens programmable frame (TRANS/ATRANS/ROT/AROT incl. +RPL=, plus the solid-angle forms ROTS/AROTS): consumes +the structured +Parsing.<keyword> sub-objects captured by +SiemensFrameStatementSyntax, accumulates the +programmable-frame matrix across blocks, and composes it into +ProgramToMcTransform as the shared +TransformSource entry — the same +Source CYCLE800 writes, so the two stay mutually exclusive via +AddOrReplaceTransform's in-place replacement (on a real +Sinumerik, CYCLE800 itself writes the programmable frame chain, so +single ownership mirrors the control).

    +

    +Semantics follow the Sinumerik programmable-frame rules (HardNc +reference: HardNcLine.ParseSiemensFrameTransform + +NcArgSiemensFrame): the absolute forms TRANS/ROT +reset the whole programmable frame and set only their own +component; the additive forms ATRANS/AROT compose onto +the current frame with the new operation applied first +(M = M_op · M_prev, row-vector convention — an AROT +after a TRANS rotates inside the translated frame). A bare +keyword (any of the four) resets the programmable frame entirely — +written as the shared inactive sentinel Term = "G69" plus an +identity chain entry (the same convention HardNc's CYCLE800 reset +uses). Multi-axis rotation in one statement applies the Sinumerik +RPY order (intrinsic Z → Y′ → X″, i.e. row-vector +Rx·Ry·Rz); RPL rotates about the active G17/G18/G19 +plane normal and composes after the axis angles. +

    +

    +The solid-angle forms ROTS/AROTS follow the Sinumerik +rules (Programming Manual Fundamentals 03/2010 §12.5, "ROTS and +AROTS behave in the same way as ROT and AROT"): at most two solid +angles orient a plane, composed first-named axis first with the +second rotation about the original (extrinsic) axis — the +pair X,Y keeps the new X axis in the old Z/X plane (row-vector +Rx·Ry), Y,Z keeps the new Y axis in the old X/Y plane +(Ry·Rz), Z,X keeps the new Z axis in the old Y/Z plane +(Rz·Rx). A single angle is identical to ROT/AROT; +RPL= alone rotates in the active plane. Three angles, or +RPL mixed with axis angles, fall outside the documented +grammar: the statement is left unapplied with a +SiemensFrame--SolidAngleInvalid warning plus the visible +Parsing--Unconsumed residue — never a guessed frame. +

    +

    +CROTS/SCALE/ASCALE/MIRROR/AMIRROR (zero corpus occurrences; +CROTS references the control's frame database which has no offline +counterpart, SCALE/MIRROR would inject non-rigid matrices whose +remaining breakages are the radius-compensation magnitude, the +program-space path length feeding durations, and the writeback Euler +decomposition) are consumed recognized-but-not-simulated with a +SiemensFrame--Unsupported warning and zero transform effect. +A structured keyword whose capture fell back to the verbatim +Statement shape, or whose value is an unevaluated variable +expression, is left in Parsing — the +VariableExpression--Unevaluated diagnostic plus the visible +Parsing--Unconsumed residue is the correct fail-soft (P2 +acceptance doctrine); the frame is not partially applied. +

    +

    +Must run after SiemensCycle800TiltSyntax (this +syntax owns the once-per-block TiltTransform modal +carry: it carries only when no earlier syntax authored the section +on this block) and before the coordinate-offset syntaxes, so +the frame entry lands ahead of +CoordinateOffset in the chain +(McXyz = ProgramXyz · M_frame · M_offset · … — the +programmable frame applies to program coordinates first, then the +settable G54 frame, matching the Sinumerik frame chain). +

    +
    +
    +
    +
    SiemensStopreSyntax
    +

    Consumes the Siemens STOPRE flag (stop preprocessing — the +control's look-ahead buffer sync) from Flags +and records a non-modal block-root Stopre section. +STOPRE has no effect in offline simulation (there is no preprocessing +buffer to flush), so an Stopre–NoOp Unsupported Message is +emitted: recognized, intentionally not simulated, safe offline.

    +

    +Capture side: STOPRE is a bare word collected by the Siemens +preset's FlagSyntax word list. +

    +
    +
    +
    +
    SiemensToolOffsetSyntax
    +

    Siemens cutting-edge tool offset activation: consumes a standalone +D word (D1 activates edge 1 of the active tool, +D0 cancels compensation), resolves the effective length via +TryGetToolHeightOffset_mm(int, int, out double) +($TC_DP3, geometry + additive wear) for the (active tool, D) pair — +a pair without a $TC_DP row falls back to the generic +IToolOffsetConfig height for the tool number (with a +SiemensToolOffset–TcdpRowMissing configuration warning), so +an unfilled per-case table follows the ToolHouse-fed source instead +of silently machining with offset 0 — and writes +the same downstream state as the ISO sibling +ToolHeightOffsetSyntax: the +IToolHeightCompensationDef section (with +Term = “D”) plus the ToolHeightCompensation entry in the +ProgramToMcTransform chain — sharing +the transform Source keeps the two brands' compensation mutually +exclusive via AddOrReplaceTransform's in-place replacement.

    +

    +The active tool number comes from the block's (or previous block's) +ToolChange section; a string tool name resolves through +FindToolNumberByName(string). Modal +ownership follows the same yield protocol as the ISO sibling: blocks +without a D word re-resolve only when the previous section's +Term is ours ("D"); an ISO term (G43/G44/G49) leaves the +section to ToolHeightOffsetSyntax — real Siemens files +mix both dialects (G43H1 headers next to D1 blocks). +Must therefore be placed after ToolHeightOffsetSyntax +(and after ToolChangeSyntax) in the Logic bundle, and +before the brand pivot gate (SiemensPivotTransformationSyntax +in the Siemens list) so the pivot entry +stays at the chain tail. +

    +

    +Consuming Parsing.D here (Logic) intentionally precedes +RadiusCompensationSyntax (PostLogic): +on Siemens, D selects the cutting edge — it is not the Fanuc +G41 D5 radius argument, and radius state derives from the same +(T, D) edge ($TC_DP6; wiring the radius value is a follow-up). +

    +
    +
    +
    +
    SiemensTraoriSyntax
    +

    Siemens TRAORI/TRAFOOF (orientation transformation = RTCP): the +Siemens sibling of G43p4RtcpSyntax. While TRAORI is +active, the IToolHeightCompensationDef section carries +Term = “TRAORI” and the ToolHeightCompensation chain +entry becomes a tool-normal · offset translation at the block +endpoint ABC (MakeToolHeightMat(IMachineKinematics, Vec3d, double)), +tagged KindDynamic when the rotary +state changes across the block — the single signal that routes the +block to ClLinear per-step IK.

    +

    +Tool length ownership stays with the (T,D) machinery: on real +Sinumerik, TRAORI uses the active D edge's length. Activation adopts +the compensation the D edge (or a mixed-dialect ISO G43) has already +resolved — SiemensToolOffsetSyntax runs earlier in the +bundle, so an explicit D1 on any TRAORI-modal block first +resolves Term = "D" and this syntax re-takes the section with +the fresh Offset_mm. The adopted owner is recorded in +PriorTermKey; TRAFOOF hands the section back to it +(default "D"), because plain length compensation survives +TRAORI deactivation on the control — TRAFOOF only ends the +orientation-following. A TRAFOOF with no active TRAORI (the corpus' +ubiquitous defensive preamble) is consumed silently. +

    +

    +Must run after ToolHeightOffsetSyntax / +SiemensToolOffsetSyntax / the coordinate-offset +syntaxes (mirroring G43p4RtcpSyntax's Fanuc slot) and +before SiemensPivotTransformationSyntax, whose gate +recognizes the TRAORI term and folds the kinematic pivot. +Silently degrades to a plain UnitZ · offset translation when +IMachineKinematics is absent. +

    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 874eb14d..6c70fd43 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html @@ -6,7 +6,7 @@ - + @@ -97,12 +97,28 @@ Class SpindleSpeedSyntax
    Assembly
    HiMech.dll
  • -

    Consumes S (spindle speed) and M03/M04/M05 (spindle direction) +

    Consumes S (spindle speed) and spindle direction M-codes 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 +Direction is converted from M-codes to the conventional SpindleDirection enum at this layer.

    +

    +Direction M-codes: the ISO defaults M03 (CW) / M04 (CCW) / M05 (STOP) +always apply; a machine that starts/stops its spindle with custom +M-codes (e.g., ultrasonic M203/M205) declares them on an +ISpindleControlConfig dependency +(ControllerParameterTableBase), which this +syntax consults first — mapped flags are consumed like the ISO ones. +

    +

    +Fallback: an S > 0 with no direction ever issued is contradictory +(physics would silently never run). The build assumes CW and emits a +one-shot SpindleDirection--AssumedCw validation warning — once is +structural, not stateful: the stamped CW propagates modally, so later +blocks no longer lack a direction. An explicit M05 (STOP) is a real +direction and never triggers the fallback. +

    @@ -208,6 +224,24 @@ bidirectional round-tripping; downstream consumers gate on
    { "Parsing": { "Flags": ["M05"] } }

    #AfterBuild:

    { "SpindleSpeed": { "SpindleSpeed_rpm": 1500, "Direction": "STOP" } }
    +

    Custom direction M-code (test hardcodes an +ISpindleControlConfig dependency mapping M203 → CW) — +the mapped flag is consumed exactly like an ISO one: +#BeforeBuild:

    +
    { "Parsing": { "Flags": ["M203"], "S": 1670 } }
    +

    #AfterBuild:

    +
    { "SpindleSpeed": { "SpindleSpeed_rpm": 1670, "Direction": "CW" } }
    +

    S with no direction ever issued — fallback assumes CW (and emits the +one-shot SpindleDirection–AssumedCw validation warning): +#BeforeBuild:

    +
    { "Parsing": { "S": 1670 } }
    +

    #AfterBuild:

    +
    { "SpindleSpeed": { "SpindleSpeed_rpm": 1670, "Direction": "CW" } }
    +

    Explicit M05 alongside S — a real direction, fallback must not fire: +#BeforeBuild:

    +
    { "Parsing": { "Flags": ["M05"], "S": 500 } }
    +

    #AfterBuild:

    +
    { "SpindleSpeed": { "SpindleSpeed_rpm": 500, "Direction": "STOP" } }
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax.html index e327a0a3..9357ca2f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.TappingCycleSyntax.html @@ -370,6 +370,44 @@ after retract. Tests that the syntax dispatches on + + +

    + SupportedCodes + +

    + +

    Cycle codes this syntax consumes; defaults to G84 + G74. Brands where a +code means something else narrow the list — the Siemens preset keeps only +G84 because Siemens G74 is reference-point approach, not a tapping cycle +(its capture is likewise excluded from that preset's +CannedCycleCodes; narrowing here +keeps the two layers agreeing even if some future syntax writes a +Parsing.G74 section of its own).

    +
    +
    + +
    +
    public List<string> SupportedCodes { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    List<string>
    +
    +
    + + + + + + + +

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html index c441b905..32a20dd1 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html @@ -380,6 +380,44 @@ block's transform list, or + +

    + IsPlainGeometryFrame(string) + +

    + +

    True when mode is one of the +Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.PlainGeometryFrameTerms. Null-safe (null → false).

    +
    +
    + +
    +
    public static bool IsPlainGeometryFrame(string mode)
    +
    + +

    Parameters

    +
    +
    mode string
    +
    +
    + +

    Returns

    +
    +
    bool
    +
    +
    + + + + + + + + + + +

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ToolChangeMotionSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ToolChangeMotionSyntax.html new file mode 100644 index 00000000..33a6e18a --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ToolChangeMotionSyntax.html @@ -0,0 +1,532 @@ + + + + + Class ToolChangeMotionSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class ToolChangeMotionSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.LogicSyntaxs
    +
    Assembly
    HiMech.dll
    +
    + +

    Synthesizes the machine motion of a tool change: on a block whose +SectionName section carries +IsChangeKey = true AND whose tool number +actually differs from the previously equipped tool, overlays +IToolingMcConfig's per-axis tooling position onto the +current machine pose (NaN / missing axis = stays) and emits a one-item +rapid ICompoundMotionDef to that target — the axis travel +a real machine's M06 macro performs before the changer cycle runs. +Root ProgramXyz (and the moved rotary axes +in root MachineCoordinateState) +are overwritten for subsequent-block modal lookback, mirroring +HardNcLine's M06 handling (McXyz/McAbc_rad overlay + +RebuildProgramXyzByMc).

    +

    +A same-number tool call (M06 without an actual change) emits no motion — +the parity twin of HardNc's preT != T overlay gate. A block with +its own motion words folds them into the single rapid: the overlay +applies on top of the block's commanded position and the stamped +CompoundMotion makes LinearMotionSyntax skip +the block, so one contour covers both — the HardNc M06 branch shape. +Placement: the ReferenceReturnSyntax (G28) slot — after +the offset/frame syntaxes (the ProgramXyz back-derivation needs the +composed transform), before McXyzSyntax / +McAbcCyclicPathSyntax (root MC XYZ backfill; rotary +targets wrapped shortest-path by the cyclic tail-pass). +

    +

    +Programs that retract on their own (G75/G28/SUPA before M06 — every +healthy post) reach the tooling position before the M06 block, so the +synthesized move is zero-length and +CompoundMotionSemantic emits nothing. Only a +program that leaves the tool elsewhere (typically hand-edited) gets an +actual synthesized travel — and the machining steps along it surface +any material contact, plus the runtime's ToolChange--UnsafePose +diagnostic. +

    +
    +
    + +
    +
    public class ToolChangeMotionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    ToolChangeMotionSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    All cases run with a ToolingMcConfig +shaped like Default3Axis +(X/Y stay, Z moves to 0) unless stated otherwise, and leave the +ProgramToMcTransform chain at identity so ProgramXyz +equals MachineCoordinateState.

    +

    +M06 with an actual tool change (previously equipped tool 1, new tool +2) while the machine sits at (50,60,-20): Z retracts to 0, X/Y keep +the previous position, and the target lands in a one-item rapid +CompoundMotion plus root ProgramXyz for modal lookback: +

    +#Previous: +
    {
    +  "MachineCoordinateState": { "X": 50, "Y": 60, "Z": -20 },
    +  "ToolChange": { "ToolId": 1, "IsChange": true }
    +}
    +#BeforeBuild: +
    { "ToolChange": { "ToolId": 2, "IsChange": true, "Term": "M06" } }
    +#AfterBuild: +
    {
    +  "ToolChange": { "ToolId": 2, "IsChange": true, "Term": "M06" },
    +  "CompoundMotion": {
    +    "Term": "M06",
    +    "Items": [
    +      {
    +        "MotionEvent": { "Form": "McLinear", "IsRapid": true },
    +        "MachineCoordinateState": { "X": 50, "Y": 60, "Z": 0 }
    +      }
    +    ]
    +  },
    +  "ProgramXyz": { "X": 50, "Y": 60, "Z": 0 }
    +}
    +Same tool re-called (previous change equipped tool 5, M06 calls 5 +again) — no motion is synthesized, the block passes through +untouched: +#Previous: +
    {
    +  "MachineCoordinateState": { "X": 50, "Y": 60, "Z": -20 },
    +  "ToolChange": { "ToolId": 5, "IsChange": true }
    +}
    +#BeforeBuild: +
    { "ToolChange": { "ToolId": 5, "IsChange": true, "Term": "M06" } }
    +#AfterBuild: +
    { "ToolChange": { "ToolId": 5, "IsChange": true, "Term": "M06" } }
    +No IToolingMcConfig dependency — the syntax +early-returns (no motion source to read): +#Previous: +
    {
    +  "MachineCoordinateState": { "X": 50, "Y": 60, "Z": -20 },
    +  "ToolChange": { "ToolId": 1, "IsChange": true }
    +}
    +#BeforeBuild: +
    { "ToolChange": { "ToolId": 2, "IsChange": true, "Term": "M06" } }
    +#AfterBuild: +
    { "ToolChange": { "ToolId": 2, "IsChange": true, "Term": "M06" } }
    +Rotary tooling position: the config additionally sends B to 0 and the +machine declares B rotary; the previous modal B is 30°. The rotary +target rides in the same item and lands in root MC for modal carry +(wrapped shortest-path later by McAbcCyclicPathSyntax): +#Previous: +
    {
    +  "MachineCoordinateState": { "X": 50, "Y": 60, "Z": -20, "B": 30 },
    +  "ToolChange": { "ToolId": 1, "IsChange": true }
    +}
    +#BeforeBuild: +
    { "ToolChange": { "ToolId": 2, "IsChange": true, "Term": "M06" } }
    +#AfterBuild: +
    {
    +  "ToolChange": { "ToolId": 2, "IsChange": true, "Term": "M06" },
    +  "MachineCoordinateState": { "B": 0 },
    +  "CompoundMotion": {
    +    "Term": "M06",
    +    "Items": [
    +      {
    +        "MotionEvent": { "Form": "McLinear", "IsRapid": true },
    +        "MachineCoordinateState": { "X": 50, "Y": 60, "Z": 0, "B": 0 }
    +      }
    +    ]
    +  },
    +  "ProgramXyz": { "X": 50, "Y": 60, "Z": 0 }
    +}
    +Machine already at the tooling position (Z at 0) — the overlay target +equals the current pose, so no motion is synthesized: +#Previous: +
    {
    +  "MachineCoordinateState": { "X": 50, "Y": 60, "Z": 0 },
    +  "ToolChange": { "ToolId": 1, "IsChange": true }
    +}
    +#BeforeBuild: +
    { "ToolChange": { "ToolId": 2, "IsChange": true, "Term": "M06" } }
    +#AfterBuild: +
    { "ToolChange": { "ToolId": 2, "IsChange": true, "Term": "M06" } }
    + + + + +

    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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + 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 674d6250..ae1ffb45 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html @@ -6,7 +6,7 @@ - + @@ -105,6 +105,28 @@ Writes resolved state to a ToolChange section: 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.

    +

    +ToolId is an int for numeric calls (T5) and a string for +Siemens string tool calls (T="D8R1", captured by +SiemensToolCallSyntax); both +shapes carry modally. String names are resolved to tool numbers at the +semantic layer (ToolChangeSemantic) — this +syntax records the call verbatim. +

    +

    +The trigger is machine-configurable. A custom tool-change M-code +(Siemens MD22560 $MC_TOOL_CHANGE_M_CODE) is declared on the +controller parameter table +(IsToolChange) and reaches this +syntax already expanded to M06 by MCodeExpansionSyntax. +Turret/lathe machines where the T word itself performs the +change (Siemens MD22550 $MC_TOOL_CHANGE_MODE = 0) set +ToolWordTriggersChange; +the block then triggers with ToolWordTerm recorded as +TermKey. Without that config a bare T block stays +pre-selection only — magazine rotation is the PLC's business and moves +no feed axis. +

    @@ -211,6 +233,20 @@ place because CleanupParsing only runs on the M06 branch:
    { "Parsing": { "Flags": ["M06"] } }

    #AfterBuild:

    { "ToolChange": { "ToolId": 5, "IsChange": true, "Term": "M06" } }
    +

    Siemens string tool call + M06 — the name carries verbatim as a +string ToolId: +#BeforeBuild:

    +
    { "Parsing": { "Flags": ["M06"], "T": "D16R3Z6" } }
    +

    #AfterBuild:

    +
    { "ToolChange": { "ToolId": "D16R3Z6", "IsChange": true, "Term": "M06" } }
    +

    T alone under turret semantics (test hardcodes an +IToolChangeTriggerConfig dependency with +ToolWordTriggersChange = true) — the T word itself triggers the +change and Term records “T”: +#BeforeBuild:

    +
    { "Parsing": { "T": 9 } }
    +

    #AfterBuild:

    +
    { "ToolChange": { "ToolId": 9, "IsChange": true, "Term": "T" } }
    @@ -343,6 +379,37 @@ place because CleanupParsing only runs on the M06 branch: + +

    + ToolWordTerm + +

    + +

    TermKey value recorded when the T word itself triggered the change (ToolWordTriggersChange).

    +
    +
    + +
    +
    public const string ToolWordTerm = "T"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + +

    Properties

    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 f5f2db0e..98833d81 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.UnitModeSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.UnitModeSyntax.html @@ -6,7 +6,7 @@ - + @@ -103,12 +103,24 @@ section (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. +The code vocabulary is configurable per brand: InchCodes +/ MetricCodes default to ISO G20 / G21; the Siemens +preset uses G70+G700 / G710+G71 instead (G70/G71 switch geometry-word +interpretation only, G700/G710 also switch feedrate interpretation — +a distinction preserved via the verbatim Term +but irrelevant to this record-only syntax; both inch variants warn +identically). The first MetricCodes entry doubles as the +program-start default Term. Note Siemens G70/G71 must never be +added to ISO/Fanuc presets — on Fanuc lathes the same codes are +finishing/roughing cycles (same collision family as the documented +Siemens G74 exclusion). +

    +

    +The HiNC pipeline works exclusively in millimetres. When an inch code +is detected this syntax emits an Unit--InchNotSupported +Unsupported Error so upstream callers are forced to pre-convert the +NC program to metric — while still recording what the program said. +Metric codes are accepted as no-op confirmations of the default.

    @@ -209,6 +221,37 @@ the default. "Parsing": { "Flags": ["M03"] }, "Unit": { "Term": "G21", "System": "Metric" } } +

    Siemens metric confirmation (SUT configured with +InchCodes = [“G70”, “G700”], +MetricCodes = [“G710”, “G71”]) — corpus header shape +N1 G40 G17 G710 G94 G90 G64 reduced to the unit flag; the +verbatim code is recorded as Term, unrelated flags stay: +#BeforeBuild:

    +
    { "Parsing": { "Flags": ["G40", "G710", "G90"] } }
    +

    #AfterBuild:

    +
    {
    +  "Parsing": { "Flags": ["G40", "G90"] },
    +  "Unit": { "Term": "G710", "System": "Metric" }
    +}
    +

    Siemens inch code — recorded faithfully as Inch despite the +Unit–InchNotSupported diagnostic (record what the program +said, warn, don't silently coerce): +#BeforeBuild:

    +
    { "Parsing": { "Flags": ["G700"] } }
    +

    #AfterBuild:

    +
    { "Unit": { "Term": "G700", "System": "Inch" } }
    +

    Siemens no-flag block — modal inherit from the previous block's +section; program-start default would be the first +MetricCodes entry: +#Previous:

    +
    { "Unit": { "Term": "G710", "System": "Metric" } }
    +

    #BeforeBuild:

    +
    { "Parsing": { "X": 10 } }
    +

    #AfterBuild:

    +
    {
    +  "Parsing": { "X": 10 },
    +  "Unit": { "Term": "G710", "System": "Metric" }
    +}
    @@ -313,6 +356,74 @@ the default. + + +

    + InchCodes + +

    + +

    Codes that select the inch input system; each detection emits +Unit–InchNotSupported. Defaults to ISO G20; the Siemens +preset uses G70 + G700.

    +
    +
    + +
    +
    public List<string> InchCodes { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    List<string>
    +
    +
    + + + + + + + + + + +

    + MetricCodes + +

    + +

    Codes that select the metric input system. Defaults to ISO G21; the +Siemens preset uses G710 + G71. The first entry doubles as the +program-start default Term.

    +
    +
    + +
    +
    public List<string> MetricCodes { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    List<string>
    +
    +
    + + + + + + + +

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html index cac1dc54..95aad2bc 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.html @@ -175,6 +175,57 @@ Must be placed before MotionEvent first claims it.

    +

    +IsIjkAbsolute switches the I/J/K reading to absolute +center coordinates (Heidenhain DIN/ISO — the ISO twin of the +Klartext CC pole; the Heidenhain list sets it, every other brand +keeps the offset default). In that mode the center is modal: letters +not written in a block inherit the previous absolute pole +(AbsoluteIjkPoleKey, carried by the brand's +ModalCarrySyntax), a letter never +written falls back to the arc start's component, a letters-free +block that commands an endpoint continues the modal arc off the +pole (a flags-only block stays motionless), a G91 block reads +offsets again and breaks the pole chain, and the plane-normal letter +is a center coordinate — never the per-turn helix pitch. Behavior +mirrors HardNcLine.BuildArcNcArg + +ArcNcArg.GetCenterOrCenterOnBeginPlane (HiUniNc 3.1.152.2) +bit for bit. +

    + + +
    +
    CodedPositionUtil
    +

    Shared coded-position resolution for the write-stage consumers +(McAbcSyntax for rotary words, +IncrementalResolveSyntax for linear words): turns a +per-word PositioningOverride entry of the coded family +(CodedAbsolute / +CodedIncremental / +CodedShortest / +CodedPositiveOnly / +CodedNegativeOnly — stamped by +SiemensAcIcSyntax for +CAC()/CIC()/CDC()/CACP()/CACN()) +plus the evaluated position number into an axis coordinate via +IIndexingPositionConfig, and names the plain override +value the caller rewrites the entry to — so the +McAbcCyclicPathSyntax tail-pass and every other +downstream reader only ever see the established non-coded vocabulary.

    +

    +Failure semantics mirror the Siemens alarms as far as a simulator can: +an invalid position number (alarm 17510) or a missing table reports an +error diagnostic and resolves to "hold" — the caller writes the anchor +so the axis does not move. CIC(0) also resolves to hold, by +specification ("the indexing axis is not traversed") and silently. +A CIC from between two indexing positions advances to the n-th +next position in the programmed direction. On a cyclic indexing axis +the incremental sign becomes a directional +(PositiveOnly / +NegativeOnly) approach; increments spanning +more than one revolution reach the correct position but collapse the +extra full turns (the tail-pass windows cover one revolution). +

    @@ -210,6 +261,48 @@ G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain.

    + +
    +
    +
    DwellSyntax
    +

    Consumes the non-modal G4/G04 dwell sub-section captured by +G4Syntax +(Parsing.G4 / Parsing.G04) and emits a +CompoundMotion with a single Dwell item, +which Hi.NcParsers.Semantics.CompoundMotionSemanticUtil resolves into +an ActDelay of the dwell duration.

    +

    +Argument dialects are configured per brand preset: +

    + +

    +Because the capture layer owns the whole argument (the F/X/P word +lands inside the dwell sub-section, never in Parsing.F / +Parsing.X), a dwell block cannot poison the modal +Feedrate and its X-word cannot mint a ghost motion — +structural fixes for the G04 F60000 feed-poison and +G04 X0.5 ghost-motion hazards. +

    +

    +Spindle-revolution dwell needs the modal spindle speed: this syntax +must be placed after SpindleSpeedSyntax in the Logic +bundle so the block's own modal SpindleSpeed section is +already written. When no positive rpm is known the dwell is consumed +and recorded via an Unsupported Message (Dwell--SpindleRevUnresolved) +instead of being time-simulated — no act is emitted. +

    +

    +When several recognized argument prefixes appear on one block the +resolution priority is seconds → milliseconds → revolutions; every +recognized key is consumed either way. Unrecognized keys inside the +sub-section are left in place so they surface through +UnconsumedCheckSyntax. +

    @@ -334,6 +427,32 @@ within Term written by PositioningSyntax.

    +Per-word override: a block-root +PositioningOverride section (written by +SiemensAcIcSyntax for the +Siemens per-word coordinate functions) beats the modal +term for the listed axes on this block only: an +Incremental entry converts that word even +under G90, an Absolute entry skips it even +under G91 — as does, deliberately, every other non-Incremental value +(the rotary-family Shortest / +PositiveOnly / +NegativeOnly entries are absolute targets; +their swing resolution lives in McAbcCyclicPathSyntax, +not here). A coded-position entry +(CodedAbsolute / +CodedIncremental — Siemens +CAC()/CIC() on a linear indexing axis) carries an +indexing position number instead of a coordinate: the number +is resolved through IIndexingPositionConfig +via TryResolveCodedTarget(IIndexingPositionConfig, string, string, double, double, ISentenceCarrier, NcDiagnosticProgress, out double, out string), the word +is rewritten to the resolved absolute coordinate, and the entry to +Absolute; a failed resolve reports an error +and holds the last program position. Axes without an entry follow the +modal term unchanged, so brands that never write the section +(Fanuc/Heidenhain/...) keep the exact legacy behavior. +

    +

    WorkingPathList specifies which JSON paths contain axis values that need incremental-to-absolute conversion. Default: [["Parsing"], ["Parsing", "G28"]]. @@ -423,19 +542,72 @@ XYZ-only and XYZABC motion by checking whether rotary axis values are present in MachineCoordinateState.

    Must be placed after McAbcSyntax in the syntax chain. + +
    +
    +
    MCodeExpansionSyntax
    +

    Expands machine-declared M-codes (IMCodeDeclarationConfig +on the controller parameter table) into the canonical ISO flags the +regular consumers already understand: tool change → M06, spindle +direction → M03/M04/M05, coolant → +M07/M08/M09. Must run ahead of +SpindleSpeedSyntax, CoolantSyntax, and +ToolChangeSyntax — expanding early is what lets one +composite OEM code (e.g. M13 = spindle CW + flood coolant) feed +several downstream consumers without any of them fighting over who +removes the original flag. Same rewrite-into-shared-vocabulary pattern +as HeidenhainRadiusCompSyntax (RL/RR/R0 → +G41/G42/G40).

    +

    +Two deliberate boundaries keep the rewrite faithful. Declarations whose +sole content is a spindle direction +(IsSpindleDirectionOnly) are NOT expanded — +SpindleSpeedSyntax resolves them in place via +TryResolveDirection(string, out SpindleDirection), which keeps +legacy <SpindleMCode> configs bit-identical and avoids the +expansion product being re-translated by that same custom-first map +(e.g. a mirrored M03↔M04 remap would otherwise flip direction). +Expansion codes are inserted at the declared flag's own position, and a +code whose raw twin also appears un-declared elsewhere in the block is +not emitted — the block's textual order keeps deciding last-wins +conflicts exactly as it did before. +

    +

    +Declared-but-unmodeled behavior stays loud: a declaration carrying an +UnmodeledNote emits one +DeclaredMCode--UnmodeledEffects informational diagnostic per +occurrence — a declaration replaces the raw Parsing--Unconsumed +warning with an explanation, never with silence. A declaration with no +effects and no note consumes its code silently by explicit intent. +Undeclared codes are untouched and keep falling through to +UnconsumedCheckSyntax. +

    MachineCoordSelectSyntax
    -

    Handles G53 (machine coordinate selection) — non-modal, one-shot. +

    Handles 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.

    +If G91 (incremental) is active, the code is ignored per ISO standard.

    +

    +Defaults to ISO G53. Brands with additional one-shot +machine-coordinate codes widen SupportedCodes — the +Siemens preset adds G153 and SUPA (both suppress every +active frame for one block; in this pipeline all of those reduce to +"bypass the composed ProgramToMcTransform", +which the ProgramXyz back-derivation below already models). The +matched code is stamped verbatim into +Term for bidirectional source recovery. +Rotary words on the same block (e.g. SUPA G0 B0) are left to +McAbcSyntax — same behavior as ISO G53, where rotary +axes flow through the normal rotary path. +

    Must be placed before ProgramXyzSyntax in the -syntax chain. When G53 is active, this syntax consumes X/Y/Z from -Parsing and writes +syntax chain. When a supported code is active, this syntax consumes +X/Y/Z from Parsing and writes MachineCoordinateState directly, preventing ProgramXyzSyntax from processing them as program coordinates. @@ -461,6 +633,32 @@ 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. +

    +Per-word directional override: a block-root +PositioningOverride entry (stamped by +SiemensAcIcSyntax) valued +PositiveOnly (Siemens ACP()) or +NegativeOnly (ACN()) swaps that +axis's window for this block only: [anchor, anchor+360°) / +(anchor-360°, anchor] instead of the default ±180° — the approach +direction is forced even when it is the longer way around. A target +congruent with the anchor (within an ULP-scale epsilon) keeps the +anchor value verbatim — no move, never a spurious full turn, and no +deg→rad→deg drift. Shortest (DC()) +is the default window and needs no special path here. The override +is read from the current block only (it is one-shot, never carried — +deliberately unlike the modal RotaryWrap gate's one-step +previous fallback) and applies to the root MC stage only, not to +CompoundMotion items (G28/G74/G75 expansions capture +their words in sub-objects the stamping syntax never sees, so an +override can only ever describe a root word). Directional/shortest +entries keyed by an axis outside the modular set are reported as +Coord-McAbc--003 — the promise cannot be honored there and +silence would mis-read the program's intent; an entry with no anchor +to resolve against (first rotary value in the stream) is reported as +Coord-McAbc--004 and adopted unwrapped, matching the default +path. +

    @@ -493,6 +691,46 @@ unless the current section already has the value Values are stored in degrees (matching McAbcCyclicPathSyntax).

    +Per-word override: a block-root +PositioningOverride section (written by +SiemensAcIcSyntax for the +Siemens AC()/IC() coordinate functions) marks a rotary +word Incremental: the parsed value is then +added to the previous modal value of that axis (previous +MachineCoordinateState lookback, falling back to a value +already present in the current section, then 0) instead of being +written as an absolute angle. The accumulated raw degrees stay +monotonic across iterations — each per-block step is well inside the +±180° window, so the McAbcCyclicPathSyntax tail-pass +keeps it as net rotation instead of re-normalizing it away. An +Absolute entry (from AC()) matches +the default write and needs no special path — and so, deliberately, +do the rotary-family entries Shortest +(DC()) / PositiveOnly +(ACP()) / NegativeOnly +(ACN()): this syntax writes the raw absolute target and the +shortest/directional swing is resolved by the +McAbcCyclicPathSyntax tail-pass, which owns the wrap +math. Brands that never write the section keep the exact legacy +behavior. +

    +

    +Coded-position overrides (Siemens +CAC()/CIC()/CDC()/CACP()/CACN()) +carry an indexing position number instead of an angle: the +number is resolved through IIndexingPositionConfig via +TryResolveCodedTarget(IIndexingPositionConfig, string, string, double, double, ISentenceCarrier, NcDiagnosticProgress, out double, out string) and the override +entry is rewritten to the plain vocabulary +(Absolute / +Shortest / +PositiveOnly / +NegativeOnly — a cyclic CIC keeps +its programmed direction through the directional values) before the +tail-pass runs, so the tail-pass never sees a coded value. A failed +resolve (invalid number, missing table) reports an error and holds +the axis at its previous value. +

    +

    Must be placed before McXyzSyntax so syntaxes that need the current-block ABC to compute transforms (e.g. G43p4RtcpSyntax) can see it; and before @@ -582,36 +820,54 @@ G91 conversion, missing-axis fallback) before this syntax runs. Must be placed after CannedCycleResolveSyntax and before IncrementalResolveSyntax in the syntax chain.

    + +
    +
    +
    PivotTransformUtil
    +

    Shared engine for the brand pivot-gate syntaxes +(PivotTransformationSyntax — ISO/Fanuc family, +SiemensPivotTransformationSyntax — Siemens). +Each brand syntax owns only its gate (which modal terms mean +“commanded XYZ needs the Pn→MC kinematic rigid transform”); the +endpoint-ABC resolution and the PivotTransform chain entry +composition live here so every brand writes the identical JSON +vocabulary.

    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.

    +

    ISO/Fanuc-family pivot gate: writes the +PivotTransformSource entry +into ProgramToMcTransform on blocks +where the controller is interpreting commanded XYZ in a frame that +needs the Pn→MC kinematic rigid transform — namely active RTCP +(G43.4) or active tilted plane (G68/G68.2). On plain-mode blocks +(no RTCP, no tilted plane), the controller treats commanded XYZ as +machine-frame directly, so the indexed rotary angle is a positioning +value only and must not fold into the linear axes; this +syntax skips those blocks and leaves the chain at identity (or +whatever non-kinematic offsets earlier syntaxes contributed). +Brand variants with their own modal vocabulary gate the same shared +engine (PivotTransformUtil): Siemens TRAORI/CYCLE800 → +SiemensPivotTransformationSyntax; Heidenhain +M128/PLANE SPATIAL would follow the same pattern.

    -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. +Mirrors real Fanuc semantics: plain G43 offsets along the active +tilted-plane normal (or machine Z when no tilt is active), and +plain XYZ moves map directly to machine axis registers regardless +of indexed table/head rotary position. Only G43.4 follows the live +tool vector and only G68.2 redefines the work-plane orientation — +both of which this guard detects via the existing chain markers.

    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. +brand-specific coord offset syntaxes) so the guard sees the +finalised mode markers and the PivotTransform entry — when +emitted — 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 @@ -630,6 +886,64 @@ Downstream consumers (IsoG68RotationSyntax) call GetPlaneNormalDir(JsonObject) to read the resolved plane.

    +
    +
    +
    +
    PolarGCodeCheckSyntax
    +

    Warns on G-codes that Fanuc disallows during Polar Coordinate +Interpolation (G12.1), per the manual whitelist mirrored from HardNc +IsGCodePolarModeCompatible +(IncompatibleDiagId).

    +

    +Placed FIRST in the Logic bundle so the scan sees +Parsing Flags before the mode/plane/offset +syntaxes consume their codes — at the old in-place check position, +G17/G18/G19, G20/G21, G49, G53.1 and G68/G69 cancels had already been +eaten and passed silently. Polar-active detection needs no valve of its +own: the PREVIOUS block's +PolarInterpolationState is already +final (the whole Logic bundle ran for it) unless this block exits with +G13.1; a block entering with G12.1 is checked too. +

    +

    +Residual blind spot (documented): codes captured as Parsing sub-objects +by ParameterizedFlagSyntax in the Parsing bundle (G28, G43/G44, +G43.4, G05.1, G52, G54.1, G68/G68.2, canned cycles) never reach Flags +and stay outside the scan. They cannot corrupt the polar trajectory — +the plane normal is fixed by the polar pair — so the gap is +diagnostic-only, same as HardNc's own per-code parse-time check. +

    +
    +
    +
    +
    PolarInterpolationSyntax
    +

    Maintains the modal Polar Coordinate Interpolation valve section +(PolarInterpolationState) for Fanuc +G12.1/G13.1.

    +

    +On a G12.1 block: consumes the flag, reads the block's own X/C words as +the anchor (InitRxcz; the X word is a +diameter and is halved), converts the previous program position +(program X/Z + machine C angle) onto the polar hypothetical plane via +GetProgramPolarRxczByOrdinaryProgramXcz(Vec3d), and +writes both the state section and the entry +ProgramPolarRxcz position. +Mirrors HardNc HardNcLine case 12_100. +

    +

    +On a G13.1 block: consumes the flag and stops carrying the state — the +block itself is already Cartesian, matching HardNc case 13_100. +

    +

    +On other blocks: re-materializes the previous block's state section +(single-step lookback carry, the PositioningSyntax pattern), +and warns FanucPolar--IncompatibleGCode for G-codes outside the +Fanuc polar-mode whitelist (mirrors HardNc +IsGCodePolarModeCompatible). +

    +Must be placed before McAbcSyntax so the downstream +ProgramRxczSyntax can consume the hypothetical C word before +it is interpreted as a rotary machine axis.
    @@ -641,7 +955,11 @@ 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. +Siemens: the AC()/IC() per-word override rides on top of this modal +state — SiemensAcIcSyntax +writes a PositioningOverride section the +downstream consumers (IncrementalResolveSyntax, +McAbcSyntax) honor per axis.

    Does NOT convert incremental values — that is handled by @@ -699,16 +1017,50 @@ should read the Pro scanning for M30 in Flags directly.

    Must be placed before syntaxes that depend on the ProgramEnd section. + +
    +
    +
    ProgramRxczSyntax
    +

    Polar-mode sibling of ProgramXyzSyntax: while the +PolarInterpolationState valve section +is present, consumes the block's X/C/Z words as polar hypothetical-plane +coordinates (X = diameter, halved; C = hypothetical axis in mm) and writes:

    +
    1. ProgramPolarRxcz — the +anchor-relative polar position (G90/G91 resolved against the previous +block's position, mirroring HardNc NcGroup03.GetNcFromSyntax);
    2. ProgramXyz — the derived ordinary +program position (radius, previous program Y, Z), so the downstream +McXyzSyntax derives machine XYZ through the normal +transform chain — ProgramXyzSyntax itself naturally +no-ops because the axis words are already consumed;
    3. the machine C angle (degrees) into +MachineCoordinateState — +placed before McAbcSyntax, which then preserves the +value instead of treating C as a directly-commanded rotary word;
    4. on motion-programmed blocks, MotionState and a +MotionEvent with McPolarLinear +(G00/G01) or McPolarArc (G02/G03 with R or +I/J/K resolved on the hypothetical plane).
    +The G12.1 entry block is skipped (its position was anchored by +PolarInterpolationSyntax). Angle-branch resolution mirrors +HardNc: GetOrdinaryProgramXcz_rad(Vec3d, double, Vec3d) chained from +the previous machine C angle.
    ProgramStopSyntax
    -

    Consumes M00 (unconditional stop) and M01 (optional stop) from +

    Consumes the program-stop words in SupportedCodes +(default M00 unconditional / M01 optional) 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.

    +SupportedCodes is ordered by priority: when several +listed words share a block the first listed one wins and stamps +Term with its literal; every listed word is removed from the +block either way. A brand preset widens the list for its own +vocabulary (the Heidenhain STOP word — the +SupportedCodes precedent). +

    +

    Siblings with ProgramEndSyntax (M02/M30) which handles end-of-program, not in-program stops.

    @@ -781,7 +1133,7 @@ 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.) +SoftNc / HardNc divergence found on a five-axis sample program.)
  • RTCP using "current" — double-counts the rotary PivotTransform difference, so the inherited workpiece anchor @@ -823,12 +1175,28 @@ and other syntaxes that read or write rotary axis values.

  • SpindleSpeedSyntax
    -

    Consumes S (spindle speed) and M03/M04/M05 (spindle direction) +

    Consumes S (spindle speed) and spindle direction M-codes 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 +Direction is converted from M-codes to the conventional SpindleDirection enum at this layer.

    +

    +Direction M-codes: the ISO defaults M03 (CW) / M04 (CCW) / M05 (STOP) +always apply; a machine that starts/stops its spindle with custom +M-codes (e.g., ultrasonic M203/M205) declares them on an +ISpindleControlConfig dependency +(ControllerParameterTableBase), which this +syntax consults first — mapped flags are consumed like the ISO ones. +

    +

    +Fallback: an S > 0 with no direction ever issued is contradictory +(physics would silently never run). The build assumes CW and emits a +one-shot SpindleDirection--AssumedCw validation warning — once is +structural, not stateful: the stamped CW propagates modally, so later +blocks no longer lack a direction. An explicit M05 (STOP) is a real +direction and never triggers the fallback. +

    @@ -857,6 +1225,46 @@ Must be placed after ProgramToMcTransform composition.

    + +
    +
    +
    ToolChangeMotionSyntax
    +

    Synthesizes the machine motion of a tool change: on a block whose +SectionName section carries +IsChangeKey = true AND whose tool number +actually differs from the previously equipped tool, overlays +IToolingMcConfig's per-axis tooling position onto the +current machine pose (NaN / missing axis = stays) and emits a one-item +rapid ICompoundMotionDef to that target — the axis travel +a real machine's M06 macro performs before the changer cycle runs. +Root ProgramXyz (and the moved rotary axes +in root MachineCoordinateState) +are overwritten for subsequent-block modal lookback, mirroring +HardNcLine's M06 handling (McXyz/McAbc_rad overlay + +RebuildProgramXyzByMc).

    +

    +A same-number tool call (M06 without an actual change) emits no motion — +the parity twin of HardNc's preT != T overlay gate. A block with +its own motion words folds them into the single rapid: the overlay +applies on top of the block's commanded position and the stamped +CompoundMotion makes LinearMotionSyntax skip +the block, so one contour covers both — the HardNc M06 branch shape. +Placement: the ReferenceReturnSyntax (G28) slot — after +the offset/frame syntaxes (the ProgramXyz back-derivation needs the +composed transform), before McXyzSyntax / +McAbcCyclicPathSyntax (root MC XYZ backfill; rotary +targets wrapped shortest-path by the cyclic tail-pass). +

    +

    +Programs that retract on their own (G75/G28/SUPA before M06 — every +healthy post) reach the tooling position before the M06 block, so the +synthesized move is zero-length and +CompoundMotionSemantic emits nothing. Only a +program that leaves the tool elsewhere (typically hand-edited) gets an +actual synthesized travel — and the machining steps along it surface +any material contact, plus the runtime's ToolChange--UnsafePose +diagnostic. +

    @@ -869,6 +1277,28 @@ Writes resolved state to a ToolChange section: 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.

    +

    +ToolId is an int for numeric calls (T5) and a string for +Siemens string tool calls (T="D8R1", captured by +SiemensToolCallSyntax); both +shapes carry modally. String names are resolved to tool numbers at the +semantic layer (ToolChangeSemantic) — this +syntax records the call verbatim. +

    +

    +The trigger is machine-configurable. A custom tool-change M-code +(Siemens MD22560 $MC_TOOL_CHANGE_M_CODE) is declared on the +controller parameter table +(IsToolChange) and reaches this +syntax already expanded to M06 by MCodeExpansionSyntax. +Turret/lathe machines where the T word itself performs the +change (Siemens MD22550 $MC_TOOL_CHANGE_MODE = 0) set +ToolWordTriggersChange; +the block then triggers with ToolWordTerm recorded as +TermKey. Without that config a bare T block stays +pre-selection only — magazine rotation is the PLC's business and moves +no feed axis. +

    @@ -890,12 +1320,24 @@ section (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. +The code vocabulary is configurable per brand: InchCodes +/ MetricCodes default to ISO G20 / G21; the Siemens +preset uses G70+G700 / G710+G71 instead (G70/G71 switch geometry-word +interpretation only, G700/G710 also switch feedrate interpretation — +a distinction preserved via the verbatim Term +but irrelevant to this record-only syntax; both inch variants warn +identically). The first MetricCodes entry doubles as the +program-start default Term. Note Siemens G70/G71 must never be +added to ISO/Fanuc presets — on Fanuc lathes the same codes are +finishing/roughing cycles (same collision family as the documented +Siemens G74 exclusion). +

    +

    +The HiNC pipeline works exclusively in millimetres. When an inch code +is detected this syntax emits an Unit--InchNotSupported +Unsupported Error so upstream callers are forced to pre-convert the +NC program to metric — while still recording what the program said. +Metric codes are accepted as no-op confirmations of the default.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcCompositionGate.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcCompositionGate.html new file mode 100644 index 00000000..5f676b9e --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcCompositionGate.html @@ -0,0 +1,377 @@ + + + + + Class NcCompositionGate | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class NcCompositionGate +

    + +
    +
    Namespace
    Hi.NcParsers
    +
    Assembly
    HiMech.dll
    +
    + +

    License gate for the NC composition layer — the capability of registering +external (non-built-in) processing units into a SoftNcRunner +pipeline, and of executing NC-embedded C# scripts +(ActLineCsScript).

    +

    +The boundary: the script layer (calling the public API from your own +application code, e.g. session scripts) needs no extra license; the +composition layer (registering or replacing processing units inside +the interpretation pipeline — NcSyntaxList, +PipelineNcDependencyList, +NcSemanticList, +NcInitializationList, +Segmenter — or injecting per-line scripts into +it) requires NcComposition. +

    +

    +A unit is built-in when its concrete type lives in this library's +own assembly; anything else is external. Order, count, duplication +and constructor configuration of built-in units are unrestricted — the +gate never inspects the shape of the pipeline, only the identity of each +unit. +

    +

    +Degradation is silent and functional: without the license the built-in +dialects run unchanged; external units are skipped for the session and a +single Composition--NotLicensed diagnostic lists them. The decision +and its rejection record live in the native license module. +

    +
    +
    + +
    +
    public static class NcCompositionGate
    +
    + + + + +
    +
    Inheritance
    +
    + +
    NcCompositionGate
    +
    +
    + + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + + + + + + +

    Methods +

    + + + + +

    + CollectForeignUnits(SoftNcRunner, List<INcDependency>) + +

    + +

    Collects every external (non-built-in) processing unit reachable from +the given runner's five pipeline members: the syntax list (descending +into BundleSyntax nesting), the dependency list, the +semantic list, the initializer list, and the segmenter. +Pure inspection — nothing is licensed, mutated, or resolved here.

    +
    +
    + +
    +
    public static List<object> CollectForeignUnits(SoftNcRunner runner, List<INcDependency> resolvedNcDependencyList = null)
    +
    + +

    Parameters

    +
    +
    runner SoftNcRunner
    +

    Runner whose composed pipeline is inspected.

    +
    +
    resolvedNcDependencyList List<INcDependency>
    +

    Optional proxy-resolved +dependency list to inspect instead of the runner's raw +PipelineNcDependencyList (the session gate +passes EffectiveNcDependencyList +so the concrete proxied instances are judged, not the proxies).

    +
    +
    + +

    Returns

    +
    +
    List<object>
    +

    The external units, in pipeline order per member.

    +
    +
    + + + + + + + + + + + + + +

    + IsBuiltIn(Type) + +

    + +

    Whether the given concrete processing-unit type is built-in — i.e. +defined in this library's own assembly. External (customer-authored) +unit types return false regardless of their name.

    +
    +
    + +
    +
    public static bool IsBuiltIn(Type unitType)
    +
    + +

    Parameters

    +
    +
    unitType Type
    +

    Concrete type of a pipeline processing unit.

    +
    +
    + +

    Returns

    +
    +
    bool
    +

    True when the type is built-in.

    +
    +
    + + + + + + + + + + + + + +

    + IsEmbeddedScriptLicensed() + +

    + +

    Whether NC-embedded C# scripts +(ActLineCsScript — NC-comment markers, +CSV script columns, per-line script injection) may execute. Fresh +native license query for NcComposition; +callers on hot paths cache the answer per play.

    +
    +
    + +
    +
    public static bool IsEmbeddedScriptLicensed()
    +
    + + +

    Returns

    +
    +
    bool
    +
    +
    + + + + + + + + + + + + + +

    + PassComposition(IReadOnlyCollection<object>) + +

    + +

    Native decision point: pass when no external unit is present, or when +NcComposition is licensed. The rejection +(with the unit names) is recorded on the native side. A core.dll that +predates the gate fails closed for external units.

    +
    +
    + +
    +
    public static bool PassComposition(IReadOnlyCollection<object> foreignUnits)
    +
    + +

    Parameters

    +
    +
    foreignUnits IReadOnlyCollection<object>
    +

    External units collected by +CollectForeignUnits(SoftNcRunner, List<INcDependency>).

    +
    +
    + +

    Returns

    +
    +
    bool
    +

    True when the composed pipeline may run as-is.

    +
    +
    + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnostic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnostic.html index 0595efef..6a2789b1 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnostic.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnostic.html @@ -6,7 +6,7 @@ - + @@ -98,7 +98,17 @@ Class NcDiagnostic

    A structured diagnostic from the SoftNcRunner pipeline, -designed for IProgress<T> consumption.

    +designed for IProgress<T> consumption. Implements +IMessage so it shares the common message channel with +SimpleMessage, step diagnostics, and progress fractions, while +additionally carrying an NC-source SentenceCarrier anchor that +non-NC messages do not have.

    +

    +Also an ISentenceCarrier itself — GetSentence() and +SentenceIndex delegate to SentenceCarrier so a +diagnostic can be used directly anywhere a carrier is expected, without the +consumer unwrapping the inner anchor. +

    Id is composed as {Primary}-{Secondary}--{Abbrev} (e.g., Cycle-Peck--BadPeckQ, Syntax-Build--Exception). @@ -108,7 +118,7 @@ For irregular cases that don't fit the pattern, use a custom string.

    -
    public class NcDiagnostic
    +
    public class NcDiagnostic : IMessage, ISentenceCarrier, IGetSentence, ISentenceIndexed
    @@ -122,6 +132,15 @@ For irregular cases that don't fit the pattern, use a custom string. +
    +
    Implements
    +
    + + + + +
    +
    @@ -183,8 +202,60 @@ For irregular cases that don't fit the pattern, use a custom string. -

    - NcDiagnostic(NcDiagnosticSeverity, NcDiagnosticCategory, string, string, object, ISentenceCarrier) +

    + NcDiagnostic(Severity, Category, string, FormattableString, object, ISentenceCarrier) + +

    + +

    Creates a templated NcDiagnostic: the interpolated template and its values +are kept on Format / Args and Notification +becomes the culture-invariant English rendering. An interpolated string literal passed to +the string constructor is NOT captured here — call sites opt in through the +*Fmt methods on NcDiagnosticProgress.

    +
    +
    + +
    +
    public NcDiagnostic(Severity severity, Category category, string id, FormattableString notification, object detail = null, ISentenceCarrier sentenceCarrier = null)
    +
    + +

    Parameters

    +
    +
    severity Severity
    +

    Importance level — see Severity.

    +
    +
    category Category
    +

    Diagnostic category — see Category.

    +
    +
    id string
    +

    Structured diagnostic ID (see Id).

    +
    +
    notification FormattableString
    +

    Interpolated notification template.

    +
    +
    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.

    +
    +
    + + + + + + + + + + + + + + +

    + NcDiagnostic(Severity, Category, string, string, object, ISentenceCarrier)

    @@ -193,22 +264,78 @@ 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, ISentenceCarrier sentenceCarrier = null)
    +
    public NcDiagnostic(Severity severity, Category category, string id, string notification, object detail = null, ISentenceCarrier sentenceCarrier = null)

    Parameters

    -
    severity NcDiagnosticSeverity
    -

    Importance level — see NcDiagnosticSeverity.

    +
    severity Severity
    +

    Importance level — see Severity.

    -
    category NcDiagnosticCategory
    -

    Diagnostic category — see NcDiagnosticCategory.

    +
    category Category
    +

    Diagnostic category — see Category.

    id string

    Structured diagnostic ID (see Id).

    -
    text string
    -

    End-user friendly message text.

    +
    notification string
    +

    End-user friendly notification 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.

    +
    +
    + + + + + + + + + + + + + + +

    + NcDiagnostic(Severity, Category, string, string, string, object[], object, ISentenceCarrier) + +

    + +

    Creates an NcDiagnostic carrying an already-split template — used when +re-wrapping another IMessage whose format / args must survive (e.g. +AsMessageSink(ISentenceCarrier)) instead of re-interpolating.

    +
    +
    + +
    +
    public NcDiagnostic(Severity severity, Category category, string id, string notification, string format, object[] args, object detail = null, ISentenceCarrier sentenceCarrier = null)
    +
    + +

    Parameters

    +
    +
    severity Severity
    +

    Importance level — see Severity.

    +
    +
    category Category
    +

    Diagnostic category — see Category.

    +
    +
    id string
    +

    Structured diagnostic ID (see Id).

    +
    +
    notification string
    +

    Already-rendered notification text.

    +
    +
    format string
    +

    Composite-format template behind notification; null when untemplated.

    +
    +
    args object[]
    +

    Values interpolated into format; null when untemplated.

    detail object

    Optional detail data or exception. Null if not applicable.

    @@ -233,6 +360,38 @@ For irregular cases that don't fit the pattern, use a custom string. + + +

    + Args + +

    + +

    Values interpolated into Format; null when untemplated.

    +
    +
    + +
    +
    public object[] Args { get; }
    +
    + + + + + +

    Property Value

    +
    +
    object[]
    +
    +
    + + + + + + + +

    @@ -245,7 +404,7 @@ For irregular cases that don't fit the pattern, use a custom string.
    -
    public NcDiagnosticCategory Category { get; }
    +
    public Category Category { get; }
    @@ -254,7 +413,7 @@ For irregular cases that don't fit the pattern, use a custom string.

    Property Value

    -
    NcDiagnosticCategory
    +
    Category
    @@ -297,6 +456,39 @@ For irregular cases that don't fit the pattern, use a custom string. + + +

    + Format + +

    + +

    Composite-format template behind Notification; null when the diagnostic +was built from a plain string (untemplated).

    +
    +
    + +
    +
    public string Format { get; }
    +
    + + + + + +

    Property Value

    +
    +
    string
    +
    +
    + + + + + + + +

    @@ -305,7 +497,7 @@ For irregular cases that don't fit the pattern, use a custom string.

    Structured diagnostic ID for filtering and suppression. -Normally {Primary}-{Secondary}–{Serial:000}.

    +Normally {Primary}-{Secondary}–{Abbrev}.

    @@ -330,6 +522,38 @@ Normally {Primary}-{Secondary}–{Serial:000}.

    + + +

    + Notification + +

    + +

    End-user friendly notification text.

    +
    +
    + +
    +
    public string Notification { get; }
    +
    + + + + + +

    Property Value

    +
    +
    string
    +
    +
    + + + + + + + +

    @@ -366,6 +590,41 @@ messages (e.g., lifecycle start/done) that have no source block.

    + + +

    + SentenceIndex + +

    + +

    Execution-order ordinal of the anchored NC source block, delegated from +SentenceCarrier. Returns -1 (the “not in pipeline” +sentinel) for pipeline-level messages whose SentenceCarrier +is null.

    +
    +
    + +
    +
    public int SentenceIndex { get; }
    +
    + + + + + +

    Property Value

    +
    +
    int
    +
    +
    + + + + + + + +

    @@ -378,7 +637,7 @@ messages (e.g., lifecycle start/done) that have no source block.

    -
    public NcDiagnosticSeverity Severity { get; }
    +
    public Severity Severity { get; }
    @@ -387,39 +646,7 @@ messages (e.g., lifecycle start/done) that have no source block.

    Property Value

    -
    NcDiagnosticSeverity
    -
    -
    - - - - - - - - - - -

    - Text - -

    - -

    End-user friendly message text.

    -
    -
    - -
    -
    public string Text { get; }
    -
    - - - - - -

    Property Value

    -
    -
    string
    +
    Severity
    @@ -434,6 +661,279 @@ messages (e.g., lifecycle start/done) that have no source block.

    + + +

    + GetArgs() + +

    + +

    Gets the values interpolated into GetFormat(); null when +GetFormat() is null, possibly empty for a hole-less template. +Default interface method so external implementers are unaffected.

    +
    +
    + +
    +
    public object[] GetArgs()
    +
    + + +

    Returns

    +
    +
    object[]
    +

    The interpolation arguments, or null when untemplated.

    +
    +
    + + + + + + + + + + + + + +

    + GetCategory() + +

    + +

    Gets the classification — see Category.

    +
    +
    + +
    +
    public Category GetCategory()
    +
    + + +

    Returns

    +
    +
    Category
    +

    The category of this message.

    +
    +
    + + + + + + + + + + + + + +

    + GetDetail() + +

    + +

    Gets the optional detail payload or exception; null when not applicable.

    +
    +
    + +
    +
    public object GetDetail()
    +
    + + +

    Returns

    +
    +
    object
    +

    The detail object, or null.

    +
    +
    + + + + + + + + + + + + + +

    + GetFormat() + +

    + +

    Gets the composite-format template behind GetNotification() — a +{0}-style .NET format string — when this message was produced from an +interpolated template; null when the notification has no structured template. +Together with GetArgs() this lets a consumer re-render the message +in another language without losing the interpolated live values, while +GetNotification() stays the invariant English rendering. +Default interface method so external implementers are unaffected.

    +
    +
    + +
    +
    public string GetFormat()
    +
    + + +

    Returns

    +
    +
    string
    +

    The composite format string, or null when untemplated.

    +
    +
    + + + + + + + + + + + + + +

    + GetId() + +

    + +

    Gets the structured id used for filtering / suppression; may be null.

    +
    +
    + +
    +
    public string GetId()
    +
    + + +

    Returns

    +
    +
    string
    +

    The message id, or null when not applicable.

    +
    +
    + + + + + + + + + + + + + +

    + GetNotification() + +

    + +

    Gets the end-user friendly notification text.

    +
    +
    + +
    +
    public string GetNotification()
    +
    + + +

    Returns

    +
    +
    string
    +

    The notification text.

    +
    +
    + + + + + + + + + + + + + +

    + GetSentence() + +

    + +

    Returns the anchored NC source Sentence, delegated from +SentenceCarrier; null when there is no source block +(pipeline-level messages).

    +
    +
    + +
    +
    public Sentence GetSentence()
    +
    + + +

    Returns

    +
    +
    Sentence
    +
    +
    + + + + + + + + + + + + + +

    + GetSeverity() + +

    + +

    Gets the importance level — see Severity.

    +
    +
    + +
    +
    public Severity GetSeverity()
    +
    + + +

    Returns

    +
    +
    Severity
    +

    The severity of this message.

    +
    +
    + + + + + + + + + + +

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html index 353b25d9..ab97a8fd 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcDiagnosticProgress.html @@ -6,7 +6,7 @@ - + @@ -97,11 +97,19 @@ Class NcDiagnosticProgress
    Assembly
    HiMech.dll

    -

    Helper that emits NcDiagnostic records via an -IProgress<T> sink. Provides one method per -(NcDiagnosticCategory, NcDiagnosticSeverity) -pair, each with an optional Sentence overload locating -the issue in the NC source.

    +

    Helper that emits NcDiagnostic records — retaining them in +Diagnostics (their canonical home) and forwarding each to an +IProgress<T> of IMessage sink for live consumption. +Provides one method per (Category, Severity) pair, +each with an optional Sentence overload locating the issue in the NC source. +Each method has a *Fmt sibling taking a FormattableString that keeps +the interpolated template and values (Format / +Args) for client-side localization; the sibling must be opted +into by name — an interpolated string literal passed to the string method +binds to string and is not captured. +A caller that runs a bounded operation (an NC play, a writeback run) can wrap +it in BeginRepeatFold() so identical repeated diagnostics fold +into a first occurrence plus one counted summary instead of flooding the sink.

    @@ -190,24 +198,28 @@ the issue in the NC source.

    -

    - NcDiagnosticProgress(IProgress<object>) +

    + NcDiagnosticProgress(IProgress<IMessage>)

    -

    Creates a NcDiagnosticProgress that forwards every -reported NcDiagnostic to progress.

    +

    Creates a NcDiagnosticProgress that retains every reported +NcDiagnostic in Diagnostics and also forwards it to +shippingProgress for live consumption.

    -
    public NcDiagnosticProgress(IProgress<object> progress)
    +
    public NcDiagnosticProgress(IProgress<IMessage> shippingProgress)

    Parameters

    -
    progress IProgress<object>
    -

    Sink that receives each diagnostic as object.

    +
    shippingProgress IProgress<IMessage>
    +

    Sink that receives each diagnostic. An IProgress<T> of +object (e.g. the legacy SessionProgress0) is accepted here via +IProgress<T> contravariance, so existing call sites keep forwarding +diagnostics to the legacy message panel unchanged during the migration.

    @@ -222,10 +234,170 @@ reported NcDiagnostic +

    Properties +

    + + + + +

    + Diagnostics + +

    + +

    All diagnostics reported through this instance, in report order. This is the +canonical home for NC diagnostics — consumers read from here rather than from a +shared, mixed message collection.

    +
    +
    + +
    +
    public IReadOnlyList<NcDiagnostic> Diagnostics { get; }
    +
    + + + + + +

    Property Value

    +
    +
    IReadOnlyList<NcDiagnostic>
    +
    +
    + + + + + + + +

    Methods

    + + +

    + AsMessageSink(ISentenceCarrier) + +

    + +

    Returns an IProgress<T> of IMessage face over this sink: +each reported message is wrapped into an NcDiagnostic (an already-typed +NcDiagnostic passes through; sentenceCarrier anchors +the wrapped ones) and reported here. Lets sink-agnostic IMessage producers +(e.g. the HardNc parse pipeline) feed the NC-diagnostic home.

    +
    +
    + +
    +
    public IProgress<IMessage> AsMessageSink(ISentenceCarrier sentenceCarrier = null)
    +
    + +

    Parameters

    +
    +
    sentenceCarrier ISentenceCarrier
    +

    Optional NC-source anchor for the wrapped messages.

    +
    +
    + +

    Returns

    +
    +
    IProgress<IMessage>
    +
    +
    + + + + + + + + + + + + + +

    + BeginRepeatFold() + +

    + +

    Opens a repeat-fold window over this sink — production wraps each NC +play / writeback run in one window. While the window is open, the first +diagnostic of each (Id, +Notification) pair is appended as usual — +keeping its NC-source anchor, the position a reader jumps to — and +identical repeats are absorbed and only counted. Disposing the window +appends, for every pair that repeated, one summary diagnostic carrying +the original severity / category / id, a +[repeated Nx in this run, first at Sn=...] suffix and the last +occurrence's anchor. The window only ever appends, so incremental +readers (e.g. the webservice sinceIndex polling) never see an +already-delivered index change.

    +
    +
    + +
    +
    public IDisposable BeginRepeatFold()
    +
    + + +

    Returns

    +
    +
    IDisposable
    +
    +
    + + + + + + + +

    Remarks

    +

    A nested call returns a no-op scope — the outermost window wins. +Clear() during an open window also drops the window's +accumulation, so summaries never resurrect diagnostics from before the +clear. The fold key is exactly the (id, notification) pair: distinct +notifications under the same id stay separate entries, while repeats +matching on both fold even when their Detail +objects differ — absorbed repeats' details are not retained and the +summary carries a null detail.

    +
    + + + + + + +

    + Clear() + +

    + +

    Removes all diagnostics (e.g. on runtime / controller reset).

    +
    +
    + +
    +
    public void Clear()
    +
    + + + + + + + + + + + + +

    @@ -233,7 +405,7 @@ reported NcDiagnostic

    -

    Emits Configuration + Error located at sentenceCarrier.

    +

    Emits Configuration + Error located at sentenceCarrier.

    @@ -271,7 +443,7 @@ reported NcDiagnostic -

    Emits Configuration + Error (dependency/config missing, cannot proceed).

    +

    Emits Configuration + Error (dependency/config missing, cannot proceed).

    @@ -300,6 +472,80 @@ reported NcDiagnostic + + +

    + ConfigurationErrorFmt(ISentenceCarrier, string, FormattableString, object) + +

    + +

    Templated ConfigurationError(ISentenceCarrier, string, string, object) — keeps format + args for localization.

    +
    +
    + +
    +
    public void ConfigurationErrorFmt(ISentenceCarrier sentenceCarrier, string id, FormattableString text, object detail = null)
    +
    + +

    Parameters

    +
    +
    sentenceCarrier ISentenceCarrier
    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    detail object
    +
    +
    + + + + + + + + + + + + + + +

    + ConfigurationErrorFmt(string, FormattableString, object) + +

    + +

    Templated ConfigurationError(string, string, object) — keeps format + args for localization.

    +
    +
    + +
    +
    public void ConfigurationErrorFmt(string id, FormattableString text, object detail = null)
    +
    + +

    Parameters

    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    detail object
    +
    +
    + + + + + + + + + + + +

    @@ -307,7 +553,7 @@ reported NcDiagnostic

    -

    Emits Configuration + Message located at sentenceCarrier.

    +

    Emits Configuration + Message located at sentenceCarrier.

    @@ -343,7 +589,7 @@ reported NcDiagnostic -

    Emits Configuration + Message (dependency/config applied, informational event).

    +

    Emits Configuration + Message (dependency/config applied, informational event).

    @@ -370,6 +616,76 @@ reported NcDiagnostic + + +

    + ConfigurationMessageFmt(ISentenceCarrier, string, FormattableString) + +

    + +

    Templated ConfigurationMessage(ISentenceCarrier, string, string) — keeps format + args for localization.

    +
    +
    + +
    +
    public void ConfigurationMessageFmt(ISentenceCarrier sentenceCarrier, string id, FormattableString text)
    +
    + +

    Parameters

    +
    +
    sentenceCarrier ISentenceCarrier
    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    + + + + + + + + + + + + + + +

    + ConfigurationMessageFmt(string, FormattableString) + +

    + +

    Templated ConfigurationMessage(string, string) — keeps format + args for localization.

    +
    +
    + +
    +
    public void ConfigurationMessageFmt(string id, FormattableString text)
    +
    + +

    Parameters

    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    + + + + + + + + + + + +

    @@ -377,7 +693,7 @@ reported NcDiagnostic

    -

    Emits Configuration + Warning located at sentenceCarrier.

    +

    Emits Configuration + Warning located at sentenceCarrier.

    @@ -415,7 +731,7 @@ reported NcDiagnostic -

    Emits Configuration + Warning (dependency/config missing, using fallback).

    +

    Emits Configuration + Warning (dependency/config missing, using fallback).

    @@ -444,6 +760,80 @@ reported NcDiagnostic + + +

    + ConfigurationWarningFmt(ISentenceCarrier, string, FormattableString, object) + +

    + +

    Templated ConfigurationWarning(ISentenceCarrier, string, string, object) — keeps format + args for localization.

    +
    +
    + +
    +
    public void ConfigurationWarningFmt(ISentenceCarrier sentenceCarrier, string id, FormattableString text, object detail = null)
    +
    + +

    Parameters

    +
    +
    sentenceCarrier ISentenceCarrier
    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    detail object
    +
    +
    + + + + + + + + + + + + + + +

    + ConfigurationWarningFmt(string, FormattableString, object) + +

    + +

    Templated ConfigurationWarning(string, string, object) — keeps format + args for localization.

    +
    +
    + +
    +
    public void ConfigurationWarningFmt(string id, FormattableString text, object detail = null)
    +
    + +

    Parameters

    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    detail object
    +
    +
    + + + + + + + + + + + +

    @@ -484,7 +874,7 @@ reported NcDiagnostic

    -

    Emits System + Error located at sentenceCarrier.

    +

    Emits System + Error located at sentenceCarrier.

    @@ -522,7 +912,7 @@ reported NcDiagnostic -

    Emits System + Error (pipeline exception or unconsidered case).

    +

    Emits System + Error (pipeline exception or unconsidered case).

    @@ -551,6 +941,80 @@ reported NcDiagnostic + + +

    + SystemErrorFmt(ISentenceCarrier, string, FormattableString, object) + +

    + +

    Templated SystemError(ISentenceCarrier, string, string, object) — keeps format + args for localization.

    +
    +
    + +
    +
    public void SystemErrorFmt(ISentenceCarrier sentenceCarrier, string id, FormattableString text, object detail = null)
    +
    + +

    Parameters

    +
    +
    sentenceCarrier ISentenceCarrier
    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    detail object
    +
    +
    + + + + + + + + + + + + + + +

    + SystemErrorFmt(string, FormattableString, object) + +

    + +

    Templated SystemError(string, string, object) — keeps format + args for localization.

    +
    +
    + +
    +
    public void SystemErrorFmt(string id, FormattableString text, object detail = null)
    +
    + +

    Parameters

    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    detail object
    +
    +
    + + + + + + + + + + + +

    @@ -558,7 +1022,7 @@ reported NcDiagnostic

    -

    Emits System + Message located at sentenceCarrier.

    +

    Emits System + Message located at sentenceCarrier.

    @@ -594,7 +1058,7 @@ reported NcDiagnostic -

    Emits System + Message (pipeline lifecycle / informational).

    +

    Emits System + Message (pipeline lifecycle / informational).

    @@ -621,6 +1085,76 @@ reported NcDiagnostic + + +

    + SystemMessageFmt(ISentenceCarrier, string, FormattableString) + +

    + +

    Templated SystemMessage(ISentenceCarrier, string, string) — keeps format + args for localization.

    +
    +
    + +
    +
    public void SystemMessageFmt(ISentenceCarrier sentenceCarrier, string id, FormattableString text)
    +
    + +

    Parameters

    +
    +
    sentenceCarrier ISentenceCarrier
    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    + + + + + + + + + + + + + + +

    + SystemMessageFmt(string, FormattableString) + +

    + +

    Templated SystemMessage(string, string) — keeps format + args for localization.

    +
    +
    + +
    +
    public void SystemMessageFmt(string id, FormattableString text)
    +
    + +

    Parameters

    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    + + + + + + + + + + + +

    @@ -628,7 +1162,7 @@ reported NcDiagnostic

    -

    Emits Unsupported + Error located at sentenceCarrier.

    +

    Emits Unsupported + Error located at sentenceCarrier.

    @@ -666,7 +1200,7 @@ reported NcDiagnostic -

    Emits Unsupported + Error (recognized but unimplemented, likely matters).

    +

    Emits Unsupported + Error (recognized but unimplemented, likely matters).

    @@ -695,6 +1229,80 @@ reported NcDiagnostic + + +

    + UnsupportedErrorFmt(ISentenceCarrier, string, FormattableString, object) + +

    + +

    Templated UnsupportedError(ISentenceCarrier, string, string, object) — keeps format + args for localization.

    +
    +
    + +
    +
    public void UnsupportedErrorFmt(ISentenceCarrier sentenceCarrier, string id, FormattableString text, object detail = null)
    +
    + +

    Parameters

    +
    +
    sentenceCarrier ISentenceCarrier
    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    detail object
    +
    +
    + + + + + + + + + + + + + + +

    + UnsupportedErrorFmt(string, FormattableString, object) + +

    + +

    Templated UnsupportedError(string, string, object) — keeps format + args for localization.

    +
    +
    + +
    +
    public void UnsupportedErrorFmt(string id, FormattableString text, object detail = null)
    +
    + +

    Parameters

    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    detail object
    +
    +
    + + + + + + + + + + + +

    @@ -702,7 +1310,7 @@ reported NcDiagnostic

    -

    Emits Unsupported + Message located at sentenceCarrier.

    +

    Emits Unsupported + Message located at sentenceCarrier.

    @@ -740,7 +1348,7 @@ reported NcDiagnostic -

    Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).

    +

    Emits Unsupported + Message (recognized, intentionally not simulated, considered safe / no-op offline).

    @@ -769,6 +1377,80 @@ reported NcDiagnostic + + +

    + UnsupportedMessageFmt(ISentenceCarrier, string, FormattableString, object) + +

    + +

    Templated UnsupportedMessage(ISentenceCarrier, string, string, object) — keeps format + args for localization.

    +
    +
    + +
    +
    public void UnsupportedMessageFmt(ISentenceCarrier sentenceCarrier, string id, FormattableString text, object detail = null)
    +
    + +

    Parameters

    +
    +
    sentenceCarrier ISentenceCarrier
    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    detail object
    +
    +
    + + + + + + + + + + + + + + +

    + UnsupportedMessageFmt(string, FormattableString, object) + +

    + +

    Templated UnsupportedMessage(string, string, object) — keeps format + args for localization.

    +
    +
    + +
    +
    public void UnsupportedMessageFmt(string id, FormattableString text, object detail = null)
    +
    + +

    Parameters

    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    detail object
    +
    +
    + + + + + + + + + + + +

    @@ -776,7 +1458,7 @@ reported NcDiagnostic

    -

    Emits Unsupported + Warning located at sentenceCarrier.

    +

    Emits Unsupported + Warning located at sentenceCarrier.

    @@ -814,7 +1496,7 @@ reported NcDiagnostic -

    Emits Unsupported + Warning (recognized but unimplemented, likely harmless).

    +

    Emits Unsupported + Warning (recognized but unimplemented, likely harmless).

    @@ -843,6 +1525,80 @@ reported NcDiagnostic + + +

    + UnsupportedWarningFmt(ISentenceCarrier, string, FormattableString, object) + +

    + +

    Templated UnsupportedWarning(ISentenceCarrier, string, string, object) — keeps format + args for localization.

    +
    +
    + +
    +
    public void UnsupportedWarningFmt(ISentenceCarrier sentenceCarrier, string id, FormattableString text, object detail = null)
    +
    + +

    Parameters

    +
    +
    sentenceCarrier ISentenceCarrier
    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    detail object
    +
    +
    + + + + + + + + + + + + + + +

    + UnsupportedWarningFmt(string, FormattableString, object) + +

    + +

    Templated UnsupportedWarning(string, string, object) — keeps format + args for localization.

    +
    +
    + +
    +
    public void UnsupportedWarningFmt(string id, FormattableString text, object detail = null)
    +
    + +

    Parameters

    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    detail object
    +
    +
    + + + + + + + + + + + +

    @@ -850,7 +1606,7 @@ reported NcDiagnostic

    -

    Emits Validation + Error located at sentenceCarrier.

    +

    Emits Validation + Error located at sentenceCarrier.

    @@ -888,7 +1644,7 @@ reported NcDiagnostic -

    Emits Validation + Error (manufacturing/physics is unfeasible).

    +

    Emits Validation + Error (manufacturing/physics is unfeasible).

    @@ -917,6 +1673,80 @@ reported NcDiagnostic + + +

    + ValidationErrorFmt(ISentenceCarrier, string, FormattableString, object) + +

    + +

    Templated ValidationError(ISentenceCarrier, string, string, object) — keeps format + args for localization.

    +
    +
    + +
    +
    public void ValidationErrorFmt(ISentenceCarrier sentenceCarrier, string id, FormattableString text, object detail = null)
    +
    + +

    Parameters

    +
    +
    sentenceCarrier ISentenceCarrier
    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    detail object
    +
    +
    + + + + + + + + + + + + + + +

    + ValidationErrorFmt(string, FormattableString, object) + +

    + +

    Templated ValidationError(string, string, object) — keeps format + args for localization.

    +
    +
    + +
    +
    public void ValidationErrorFmt(string id, FormattableString text, object detail = null)
    +
    + +

    Parameters

    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    detail object
    +
    +
    + + + + + + + + + + + +

    @@ -924,7 +1754,7 @@ reported NcDiagnostic

    -

    Emits Validation + Warning located at sentenceCarrier.

    +

    Emits Validation + Warning located at sentenceCarrier.

    @@ -962,7 +1792,7 @@ reported NcDiagnostic -

    Emits Validation + Warning (manufacturing/physics may be unfeasible).

    +

    Emits Validation + Warning (manufacturing/physics may be unfeasible).

    @@ -991,6 +1821,148 @@ reported NcDiagnostic + + +

    + ValidationWarningFmt(ISentenceCarrier, string, FormattableString, object) + +

    + +

    Templated ValidationWarning(ISentenceCarrier, string, string, object) — keeps format + args for localization.

    +
    +
    + +
    +
    public void ValidationWarningFmt(ISentenceCarrier sentenceCarrier, string id, FormattableString text, object detail = null)
    +
    + +

    Parameters

    +
    +
    sentenceCarrier ISentenceCarrier
    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    detail object
    +
    +
    + + + + + + + + + + + + + + +

    + ValidationWarningFmt(string, FormattableString, object) + +

    + +

    Templated ValidationWarning(string, string, object) — keeps format + args for localization.

    +
    +
    + +
    +
    public void ValidationWarningFmt(string id, FormattableString text, object detail = null)
    +
    + +

    Parameters

    +
    +
    id string
    +
    +
    text FormattableString
    +
    +
    detail object
    +
    +
    + + + + + + + + + + + + +

    Events +

    + + + +

    + Cleared + +

    + +

    Raised after Clear() empties the collection.

    +
    +
    + +
    +
    public event Action Cleared
    +
    + + + + + + +

    Event Type

    +
    +
    Action
    +
    +
    + + + + + + + + +

    + MessageAdded + +

    + +

    Raised after a diagnostic has been appended. Carries the index it landed at in +Diagnostics and the appended diagnostic, so a consumer can place it and +reach nearby items by indexing into Diagnostics.

    +
    +
    + +
    +
    public event Action<int, NcDiagnostic> MessageAdded
    +
    + + + + + + +

    Event Type

    +
    +
    Action<int, NcDiagnostic>
    +
    +
    + + + + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcRunnerSuit.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcRunnerSuit.html new file mode 100644 index 00000000..f6a2d970 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.NcRunnerSuit.html @@ -0,0 +1,550 @@ + + + + + Class NcRunnerSuit | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class NcRunnerSuit +

    + +
    +
    Namespace
    Hi.NcParsers
    +
    Assembly
    HiMech.dll
    +
    + +

    A switchable “runner suit”: bundles the per-machine NC pipeline +(SoftNcRunner plus its optional side-file path +SoftNcRunnerFile) with the per-workpiece +PerCaseNcDependencyList the runner's +INcDependencyProxy placeholders resolve against. The suit is the +proxies' INcDependencyListHost, so the runner and its case data +switch together as one unit — load a different suit to switch the active +parser (NC or CSV) within a session.

    +

    +Read/Write only (pure IO, no own XxxFile identity pointer): the owning +project serializes the suit's two members flat in the project XML, +keeping the per-workpiece PerCaseNcDependencyList project-local +rather than a shared side file. +

    +
    +
    + +
    +
    public class NcRunnerSuit : IMakeXmlSource, INcDependencyListHost
    +
    + + + + +
    +
    Inheritance
    +
    + +
    NcRunnerSuit
    +
    +
    + +
    +
    Implements
    +
    + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + + + + +

    Constructors +

    + + + + +

    + NcRunnerSuit() + +

    + +

    Creates a default suit (Fanuc preset runner, empty per-case list).

    +
    +
    + +
    +
    public NcRunnerSuit()
    +
    + + + + + + + + + + + + + + + +

    + NcRunnerSuit(XElement, string, string, IProgress<IMessage>, object[]) + +

    + +

    Reconstructs a suit from a <NcRunnerSuit> element previously +produced by MakeXmlSource(string, string, bool). The runner unwraps an optional +SoftNcRunnerFile side-file ref (stamped back onto +SoftNcRunnerFile); the per-case list falls back to the legacy +element name NcDependencyList. Proxies are bound to this suit before +returning.

    +
    +
    + +
    +
    public NcRunnerSuit(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress, object[] res = null)
    +
    + +

    Parameters

    +
    +
    src XElement
    +
    +
    baseDirectory string
    +
    +
    relFile string
    +
    +
    progress IProgress<IMessage>
    +
    +
    res object[]
    +
    +
    + + + + + + + + + + + + +

    Properties +

    + + + + +

    + PerCaseNcDependencyList + +

    + +

    The case-specific dependencies (tool offsets, coordinate tables, +parameter tables, …) that proxies take from — never the runner's own +fixed list. A get-or-create proxy may also append the dependency it +makes here.

    +
    +
    + +
    +
    public List<INcDependency> PerCaseNcDependencyList { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    List<INcDependency>
    +
    +
    + + + + + + + + + + +

    + SoftNcRunner + +

    + +

    The per-machine NC pipeline. Plain auto-property: callers that (re)assign it +at construction or switch time call WireNcDependencyProxies() +explicitly once the per-case list is also in place (so proxy host binding +is not run prematurely against a stale list).

    +
    +
    + +
    +
    public SoftNcRunner SoftNcRunner { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    SoftNcRunner
    +
    +
    + + + + + + + + + + +

    + SoftNcRunnerFile + +

    + +

    Project-relative file path of the SoftNcRunner XML. When +non-null the runner is written to a sibling side file and referenced; +when null it is inlined. Mirrors MachiningEquipment.MachiningChainFile.

    +
    +
    + +
    +
    public string SoftNcRunnerFile { 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) + +

    + +

    Serializes the suit as <NcRunnerSuit> containing +<SoftNcRunner> (honouring SoftNcRunnerFile — +inline when null, side-file ref otherwise) and +<PerCaseNcDependencyList>. The owning project wraps this in its +own <NcRunnerSuit> slot and reloads it via +XFactory's GenByChild.

    +
    +
    + +
    +
    public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)
    +
    + +

    Parameters

    +
    +
    baseDirectory string
    +
    +
    relFile string
    +
    +
    exhibitionOnly bool
    +
    +
    + +

    Returns

    +
    +
    XElement
    +
    +
    + + + + + + + + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers NcRunnerSuit and chains Reg(XFactory) +for every pipeline component a suit may deserialize. Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + + +

    + WireNcDependencyProxies() + +

    + +

    Binds every INcDependencyProxy in SoftNcRunner's +pipeline list to THIS suit as host; a get-or-create proxy materializes its +data into PerCaseNcDependencyList. Idempotent. Call after +(re)assigning SoftNcRunner or PerCaseNcDependencyList.

    +
    +
    + +
    +
    public void WireNcDependencyProxies()
    +
    + + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + 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 8bedeff0..d766a767 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 @@ -6,7 +6,7 @@ - + @@ -99,6 +99,14 @@ Class TailCommentSyntax

    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.

    +

    +Line-aware on multi-line sentences (Heidenhain grouped / ~-continued +blocks): the marker-to-end-of-line strip applies per physical line, so a +; comment on one cycle-parameter line never swallows the following +lines. Stripped comment texts are joined into a single +Comment record. Single-line sentences behave exactly as +before. +

    @@ -192,6 +200,12 @@ Class TailCommentSyntax "UnparsedText": "G01 X100", "Comment": { "Symbol": ";", "Text": "mid comment" } } +

    #BeforeBuild.UnparsedText: MSG(“A;B”) ;note (with TailSymbol=";" — the ‘;’ inside the quoted string is not a comment start) +#AfterBuild:

    +
    {
    +  "UnparsedText": "MSG(\"A;B\")",
    +  "Comment": { "Symbol": ";", "Text": "note" }
    +}
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html index 04f8de38..d4500a5e 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.CommentSyntaxs.html @@ -105,6 +105,14 @@ the () symbol.

    TailCommentSyntax

    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.

    +

    +Line-aware on multi-line sentences (Heidenhain grouped / ~-continued +blocks): the marker-to-end-of-line strip applies per physical line, so a +; comment on one cycle-parameter line never swallows the following +lines. Stripped comment texts are joined into a single +Comment record. Single-line sentences behave exactly as +before. +

    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 index 2bbd0d0d..ca4a6512 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.FanucIfThenParsingSyntax.html @@ -112,7 +112,7 @@ 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 +GrabTagAssignment(ref string, IEnumerable<string>, string, IEnumerable<string>, ExpressionPrefixParser) 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 diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.html index d73910f1..5e449978 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Fanuc.html @@ -145,7 +145,7 @@ 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 +GrabTagAssignment(ref string, IEnumerable<string>, string, IEnumerable<string>, ExpressionPrefixParser) 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 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 1723fe0b..e1542776 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FlagSyntax.html @@ -261,6 +261,43 @@ The term Tag generally accomanys with variable value.

    + + +

    + AllowGluedFollower + +

    + +

    When true, a matched flag may be glued to a following letter +token: the trailing guard relaxes from \b to (?![0-9]), +so a post-processed klartext run like FMAXM03M08 still yields +FMAX (a digit follower keeps rejecting, so a flag never claims +the head of a longer numbered word). Default false preserves +the word-bounded match for every other brand list.

    +
    +
    + +
    +
    public bool AllowGluedFollower { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    bool
    +
    +
    + + + + + + + +

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html index 3aa2bbd1..63eedba2 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html @@ -143,6 +143,15 @@ Variable text (e.g. Q2, #1, [#1+#2]) remains as TagValueSyntax.TagList

    + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html index 69166381..dd55b4ed 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumSettingSyntax.html @@ -6,7 +6,7 @@ - + @@ -97,7 +97,9 @@ Class HeidenhainDatumSettingSyntax
    Assembly
    HiMech.dll
    -

    Heidenhain syntax of

    CYCL DEF 247 DATUM SETTING
    . +

    Heidenhain syntax of

    CYCL DEF 247 DATUM SETTING
    and its +DIN/ISO twin
    G247 Q339=+N
    (both spellings stamp the same +cycle-number record for the Logic-side datum-preset resolver).
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax.html index 8422e5f4..6c4ad0ad 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainDatumShiftSyntax.html @@ -6,7 +6,7 @@ - + @@ -97,7 +97,11 @@ Class HeidenhainDatumShiftSyntax
    Assembly
    HiMech.dll
    -

    Heidenhain syntax of

    CYCL DEF 7 DATUM SHIFT
    . +

    Heidenhain syntax of

    CYCL DEF 7 DATUM SHIFT
    and its +DIN/ISO twin
    G54
    WITH axis words (G54 X+50 Y+50 +shifts the datum, zero values cancel it — a declaration, never a +motion block; the bare G54 spelling stays on the Fanuc-style +work-offset select path).
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainMachiningCycleSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainMachiningCycleSyntax.html new file mode 100644 index 00000000..3114b40c --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainMachiningCycleSyntax.html @@ -0,0 +1,650 @@ + + + + + Class HeidenhainMachiningCycleSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class HeidenhainMachiningCycleSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs
    +
    Assembly
    HiMech.dll
    +
    + +

    Captures the body of a machining CYCL DEF (every cycle number +without a dedicated owner — the datum family 7/247 and the tolerance +family 32 keep their own syntaxes) into a structured +Parsing.MachiningCycle record: +{ Number, Title?, Params?, Args? }.

    +
    • Params — every Qnnn=value assignment in the head +and body lines. Literal values are stored as JSON numbers (via +ToFloat(string) — a string node would read +as an unevaluated variable downstream); Q-reference values stay +strings for the evaluator to substitute in place.
    • Q mirror — each captured assignment is also mirrored into +Parsing.Assignments (raw string RHS): on a real TNC the cycle +definition genuinely assigns those Q parameters, and pre-P4 corpus +behavior (each parameter line was its own sentence consumed by the +bare-assignment capture) already routed them into the volatile Q +store. The mirror keeps that store contract intact now that the +~-grouped sentence is claimed here first.
    • Title — the non-assignment remainder of the head line +(e.g. PLANFRAESEN).
    • Args — any other non-assignment body remainder, swept +into the record so residue (e.g. CYCL DEF 19.1 A90 B0 C105 +rotary words) can never leak into axis captures — the +PLANE-family precedent from P3.
    +The ISO mapping and the armed/modal bookkeeping happen in +HeidenhainCannedCycleSyntax. +Multi-line capture is covered by regular unit tests rather than the +conformance examples below (the conformance shorthand is single-line +only). +
    +
    + +
    +
    public class HeidenhainMachiningCycleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    HeidenhainMachiningCycleSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + + + + +

    Constructors +

    + + + + +

    + HeidenhainMachiningCycleSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public HeidenhainMachiningCycleSyntax()
    +
    + + + + + + + + + + + + + + + +

    + HeidenhainMachiningCycleSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public HeidenhainMachiningCycleSyntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Source XML element.

    +
    +
    + + + + + + + + + + + + +

    Fields +

    + + + +

    + ArgsKey + +

    + +

    Record key of the swept non-assignment remainder.

    +
    +
    + +
    +
    public const string ArgsKey = "Args"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + MachiningCycleKey + +

    + +

    JSON key of the record under Parsing.

    +
    +
    + +
    +
    public const string MachiningCycleKey = "MachiningCycle"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + NumberKey + +

    + +

    Record key of the cycle number.

    +
    +
    + +
    +
    public const string NumberKey = "Number"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + ParamsKey + +

    + +

    Record key of the captured Q-parameter map.

    +
    +
    + +
    +
    public const string ParamsKey = "Params"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + TitleKey + +

    + +

    Record key of the cycle title text.

    +
    +
    + +
    +
    public const string TitleKey = "Title"
    +
    + + + + +

    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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainMirrorCyclSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainMirrorCyclSyntax.html new file mode 100644 index 00000000..6f80aa51 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainMirrorCyclSyntax.html @@ -0,0 +1,611 @@ + + + + + Class HeidenhainMirrorCyclSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class HeidenhainMirrorCyclSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs
    +
    Assembly
    HiMech.dll
    +
    + +

    Structures the klartext CYCL DEF 8 MIRROR IMAGE cycle (grouped +8.0 MIRROR IMAGE / 8.1 X Y, or the single-line spelling) into +the same Parsing.MirrorImageKey +statement list its DIN/ISO twin G28 writes, so the shared +HeidenhainMirrorTransformSyntax +simulates both dialects through one code path. Runs after +HeidenhainCyclDefSyntax (which contributes +Parsing[“CYCL DEF”] = 8 + CyclHead) and ahead of +HeidenhainMachiningCycleSyntax, whose generic capture +would otherwise route the cycle to the unsupported-cycle path.

    +

    +The cycle body is the manual's bare axis letters (a bare 8.1 +cancels the mirror). A body carrying anything else — a valued word, +an unknown token — is not claimed at all: the block falls +through to the generic machining-cycle capture and its +HeidenhainCycl--Unsupported report, which is the correct +fail-soft. Claiming it would silently reduce to an empty axis list, +i.e. read a shape we do not understand as a mirror reset. +

    +
    +
    + +
    +
    public class HeidenhainMirrorCyclSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    HeidenhainMirrorCyclSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    The grouped two-axis form — the cycle keys are consumed and the +statement joins the shared list (block text stays authoritative for +round-trip emission): +#BeforeBuild:

    +
    {
    +  "UnparsedText": "X Y",
    +  "Parsing": { "CYCL DEF": 8, "CyclHead": "MIRROR IMAGE" }
    +}
    +

    #AfterBuild:

    +
    { "Parsing": { "MirrorImage": [ { "Axes": ["X", "Y"] } ] } }
    +

    A bare 8.1 line cancels the mirror — an empty axis list, the +same shape the ISO bare G28 records: +#BeforeBuild:

    +
    {
    +  "UnparsedText": "",
    +  "Parsing": { "CYCL DEF": 8, "CyclHead": "MIRROR IMAGE" }
    +}
    +

    #AfterBuild:

    +
    { "Parsing": { "MirrorImage": [ { "Axes": [] } ] } }
    +

    Single-line spelling — the axis line landed in CyclHead +instead of the body (the tolerance-cycle precedent): +#BeforeBuild:

    +
    { "Parsing": { "CYCL DEF": 8, "CyclHead": "X" } }
    +

    #AfterBuild:

    +
    { "Parsing": { "MirrorImage": [ { "Axes": ["X"] } ] } }
    +

    A rotary letter is recorded like any other and left for the Logic +gate to reject — the dialects must not disagree on scope: +#BeforeBuild:

    +
    {
    +  "UnparsedText": "C",
    +  "Parsing": { "CYCL DEF": 8, "CyclHead": "MIRROR IMAGE" }
    +}
    +

    #AfterBuild:

    +
    { "Parsing": { "MirrorImage": [ { "Axes": ["C"] } ] } }
    +

    A valued word is not the manual's mirror form: nothing is claimed, +so the generic machining-cycle capture still reports the cycle +unsupported instead of this syntax reading it as a reset: +#BeforeBuild:

    +
    {
    +  "UnparsedText": "X+0",
    +  "Parsing": { "CYCL DEF": 8, "CyclHead": "MIRROR IMAGE" }
    +}
    +

    #AfterBuild:

    +
    {
    +  "UnparsedText": "X+0",
    +  "Parsing": { "CYCL DEF": 8, "CyclHead": "MIRROR IMAGE" }
    +}
    +

    Another cycle number is none of this syntax's business: +#BeforeBuild:

    +
    {
    +  "UnparsedText": "T0.05",
    +  "Parsing": { "CYCL DEF": 32, "CyclHead": "TOLERANCE" }
    +}
    +

    #AfterBuild:

    +
    {
    +  "UnparsedText": "T0.05",
    +  "Parsing": { "CYCL DEF": 32, "CyclHead": "TOLERANCE" }
    +}
    + + + + +

    Constructors +

    + + + + +

    + HeidenhainMirrorCyclSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public HeidenhainMirrorCyclSyntax()
    +
    + + + + + + + + + + + + + + + +

    + HeidenhainMirrorCyclSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public HeidenhainMirrorCyclSyntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Source XML element.

    +
    +
    + + + + + + + + + + + + +

    Fields +

    + + + +

    + CyclNumber + +

    + +

    CYCL DEF number this syntax structures.

    +
    +
    + +
    +
    public const int CyclNumber = 8
    +
    + + + + +

    Field Value

    +
    +
    int
    +
    +
    + + + + + + + + + + +

    + TitleConst + +

    + +

    Title word of the cycle's .0 line.

    +
    +
    + +
    +
    public const string TitleConst = "MIRROR"
    +
    + + + + +

    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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainToleranceCyclSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainToleranceCyclSyntax.html new file mode 100644 index 00000000..6b97b7f6 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.HeidenhainToleranceCyclSyntax.html @@ -0,0 +1,541 @@ + + + + + Class HeidenhainToleranceCyclSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class HeidenhainToleranceCyclSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs
    +
    Assembly
    HiMech.dll
    +
    + +

    Structures the klartext CYCL DEF 32 TOLERANCE cycle (grouped +32.0 TOLERANCE / 32.1 T0.1 / 32.2 HSC-MODE:0 TA0.5 or the +single-line forms) into Parsing.TOLERANCE { T?, HscMode?, Ta? } +for HeidenhainPathSmoothingSyntax. +Runs after HeidenhainCyclDefSyntax (which contributes +Parsing[“CYCL DEF”] = 32 + CyclHead). A bare 32.0 line +(no T) is a tolerance reset and records Bare: true. The glued +corpus spelling 32.2HSC-MODE:0 leaves a digit-prefixed residue +after the CyclDef prefix strip — the HSC grab tolerates it.

    +
    +
    + +
    +
    public class HeidenhainToleranceCyclSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    HeidenhainToleranceCyclSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + + + + +

    Constructors +

    + + + + +

    + HeidenhainToleranceCyclSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public HeidenhainToleranceCyclSyntax()
    +
    + + + + + + + + + + + + + + + +

    + HeidenhainToleranceCyclSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public HeidenhainToleranceCyclSyntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Source XML element.

    +
    +
    + + + + + + + + + + + + +

    Fields +

    + + + +

    + CyclNumber + +

    + +

    CYCL DEF number this syntax structures.

    +
    +
    + +
    +
    public const int CyclNumber = 32
    +
    + + + + +

    Field Value

    +
    +
    int
    +
    +
    + + + + + + + + + + +

    + TitleConst + +

    + +

    Title word / Parsing record key.

    +
    +
    + +
    +
    public const string TitleConst = "TOLERANCE"
    +
    + + + + +

    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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.html index 97b3b6b5..a07f17d8 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.CyclDefSyntaxs.html @@ -96,12 +96,83 @@ Classes
    HeidenhainDatumSettingSyntax
    -

    Heidenhain syntax of

    CYCL DEF 247 DATUM SETTING
    . +

    Heidenhain syntax of

    CYCL DEF 247 DATUM SETTING
    and its +DIN/ISO twin
    G247 Q339=+N
    (both spellings stamp the same +cycle-number record for the Logic-side datum-preset resolver).
    HeidenhainDatumShiftSyntax
    -

    Heidenhain syntax of

    CYCL DEF 7 DATUM SHIFT
    . +

    Heidenhain syntax of

    CYCL DEF 7 DATUM SHIFT
    and its +DIN/ISO twin
    G54
    WITH axis words (G54 X+50 Y+50 +shifts the datum, zero values cancel it — a declaration, never a +motion block; the bare G54 spelling stays on the Fanuc-style +work-offset select path). +
    +
    +
    +
    HeidenhainMachiningCycleSyntax
    +

    Captures the body of a machining CYCL DEF (every cycle number +without a dedicated owner — the datum family 7/247 and the tolerance +family 32 keep their own syntaxes) into a structured +Parsing.MachiningCycle record: +{ Number, Title?, Params?, Args? }.

    +
    • Params — every Qnnn=value assignment in the head +and body lines. Literal values are stored as JSON numbers (via +ToFloat(string) — a string node would read +as an unevaluated variable downstream); Q-reference values stay +strings for the evaluator to substitute in place.
    • Q mirror — each captured assignment is also mirrored into +Parsing.Assignments (raw string RHS): on a real TNC the cycle +definition genuinely assigns those Q parameters, and pre-P4 corpus +behavior (each parameter line was its own sentence consumed by the +bare-assignment capture) already routed them into the volatile Q +store. The mirror keeps that store contract intact now that the +~-grouped sentence is claimed here first.
    • Title — the non-assignment remainder of the head line +(e.g. PLANFRAESEN).
    • Args — any other non-assignment body remainder, swept +into the record so residue (e.g. CYCL DEF 19.1 A90 B0 C105 +rotary words) can never leak into axis captures — the +PLANE-family precedent from P3.
    +The ISO mapping and the armed/modal bookkeeping happen in +HeidenhainCannedCycleSyntax. +Multi-line capture is covered by regular unit tests rather than the +conformance examples below (the conformance shorthand is single-line +only). +
    +
    +
    +
    HeidenhainMirrorCyclSyntax
    +

    Structures the klartext CYCL DEF 8 MIRROR IMAGE cycle (grouped +8.0 MIRROR IMAGE / 8.1 X Y, or the single-line spelling) into +the same Parsing.MirrorImageKey +statement list its DIN/ISO twin G28 writes, so the shared +HeidenhainMirrorTransformSyntax +simulates both dialects through one code path. Runs after +HeidenhainCyclDefSyntax (which contributes +Parsing[“CYCL DEF”] = 8 + CyclHead) and ahead of +HeidenhainMachiningCycleSyntax, whose generic capture +would otherwise route the cycle to the unsupported-cycle path.

    +

    +The cycle body is the manual's bare axis letters (a bare 8.1 +cancels the mirror). A body carrying anything else — a valued word, +an unknown token — is not claimed at all: the block falls +through to the generic machining-cycle capture and its +HeidenhainCycl--Unsupported report, which is the correct +fail-soft. Claiming it would silently reduce to an empty axis list, +i.e. read a shape we do not understand as a mirror reset. +

    +
    +
    +
    +
    HeidenhainToleranceCyclSyntax
    +

    Structures the klartext CYCL DEF 32 TOLERANCE cycle (grouped +32.0 TOLERANCE / 32.1 T0.1 / 32.2 HSC-MODE:0 TA0.5 or the +single-line forms) into Parsing.TOLERANCE { T?, HscMode?, Ta? } +for HeidenhainPathSmoothingSyntax. +Runs after HeidenhainCyclDefSyntax (which contributes +Parsing[“CYCL DEF”] = 32 + CyclHead). A bare 32.0 line +(no T) is a tolerance reset and records Bare: true. The glued +corpus spelling 32.2HSC-MODE:0 leaves a digit-prefixed residue +after the CyclDef prefix strip — the HSC grab tolerates it.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCSyntax.html new file mode 100644 index 00000000..acad9fd1 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCSyntax.html @@ -0,0 +1,559 @@ + + + + + Class HeidenhainCSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class HeidenhainCSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Heidenhain
    +
    Assembly
    HiMech.dll
    +
    + +

    Heidenhain circular-motion statement (C X+5.361 Y+23.064 DR-). +Mirrors HeidenhainLSyntax: endpoint axis words promote +to the Parsing root (shared Logic consumers), a “CArc”: true +statement marker (deliberately NOT the bare C key — that is a +rotary axis word which McAbcSyntax owns and +consumes on rotary machines) gates +HeidenhainCircularMotionSyntax, +the rotation direction lands in Parsing.DR ("-" = CW = +G02, "+" = CCW = G03) and radius-compensation words are +captured like on L statements. The word-boundary head guard rejects +CC/CT/CR/CP statements, and a value +follower rejects a leading rotary-axis word — a DIN/ISO block like +C-90. (modal C-axis positioning, the same mixed-dialect list) +is an axis coordinate for the root tag capture, never a klartext arc +statement head (klartext always separates the C head from its X/Y/DR +words, so a sign/digit/dot follower cannot be an arc statement).

    +
    +
    + +
    +
    public class HeidenhainCSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    HeidenhainCSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    #BeforeBuild.UnparsedText: C X+5.361 Y+23.064 DR- +#AfterBuild:

    +
    { "Parsing": { "CArc": true, "DR": "-", "X": 5.361, "Y": 23.064 } }
    +

    DIN/ISO rotary-axis positioning — the value follower keeps the head +gate shut; the block is left for the shared float tag capture: +#BeforeBuild.UnparsedText: C-90.0 +#AfterBuild:

    +
    { "UnparsedText": "C-90.0" }
    + + + + +

    Constructors +

    + + + + +

    + HeidenhainCSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public HeidenhainCSyntax()
    +
    + + + + + + + + + + + + + + + +

    + HeidenhainCSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public HeidenhainCSyntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Source XML element.

    +
    +
    + + + + + + + + + + + + +

    Fields +

    + + + +

    + DrKey + +

    + +

    Rotation-direction key on the Parsing root ("+" CCW / “-” CW).

    +
    +
    + +
    +
    public const string DrKey = "DR"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + StatementKey + +

    + +

    Statement-marker key on the Parsing root. Not the bare “C” — that +key is the rotary C axis word consumed by the shared McAbcSyntax.

    +
    +
    + +
    +
    public const string StatementKey = "CArc"
    +
    + + + + +

    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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + 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 23b8b0c4..379e7560 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 @@ -201,6 +201,27 @@ Class HeidenhainCallSyntax "CALL": { "Target": "LBL", "Name": "MyLabel", "REP": "3" } } } +

    #BeforeBuild.UnparsedText: CALL LBL “SLOW_FEED” (quotes are stripped from the captured name) +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "CALL": { "Target": "LBL", "Name": "SLOW_FEED" }
    +  }
    +}
    +

    #BeforeBuild.UnparsedText: L1,0 (the DIN/ISO call-once spelling — REP 0 is spelled by omission, keeping the evaluation's positive-literal REP rail authoritative) +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "CALL": { "Target": "LBL", "Name": "1" }
    +  }
    +}
    +

    #BeforeBuild.UnparsedText: L2,4 (the DIN/ISO program-section repeat — the count after the comma is the klartext REP) +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "CALL": { "Target": "LBL", "Name": "2", "REP": "4" }
    +  }
    +}
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCcSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCcSyntax.html new file mode 100644 index 00000000..1e965f64 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCcSyntax.html @@ -0,0 +1,515 @@ + + + + + Class HeidenhainCcSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class HeidenhainCcSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Heidenhain
    +
    Assembly
    HiMech.dll
    +
    + +

    Heidenhain circle-center statement (CC X+12.7 Y+12.7). The +coordinates land in the nested Parsing.CC record — deliberately +not on the Parsing root, where ProgramXyzSyntax +would mistake the center for a motion endpoint. The Logic-stage +HeidenhainCircleCenterSyntax +turns the record into the modal circle-center section consumed by the +arc syntax. Must run before HeidenhainCSyntax in the +bundle (the \b guard keeps a C statement from matching +CC and vice versa, but CC-first is the safe order).

    +
    +
    + +
    +
    public class HeidenhainCcSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    HeidenhainCcSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    #BeforeBuild.UnparsedText: CC X+12.7 Y+12.7 +#AfterBuild:

    +
    { "Parsing": { "CC": { "X": 12.7, "Y": 12.7 } } }
    + + + + +

    Constructors +

    + + + + +

    + HeidenhainCcSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public HeidenhainCcSyntax()
    +
    + + + + + + + + + + + + + + + +

    + HeidenhainCcSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public HeidenhainCcSyntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Source XML element.

    +
    +
    + + + + + + + + + + + + +

    Fields +

    + + + +

    + KeyConst + +

    + +

    Key of the nested center record on Parsing.

    +
    +
    + +
    +
    public const string KeyConst = "CC"
    +
    + + + + +

    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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclCallSyntax.html new file mode 100644 index 00000000..e80729f2 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCyclCallSyntax.html @@ -0,0 +1,623 @@ + + + + + Class HeidenhainCyclCallSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class HeidenhainCyclCallSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Heidenhain
    +
    Assembly
    HiMech.dll
    +
    + +

    Captures the klartext cycle-call statement into a +Parsing[“CYCL CALL”] record:

    +
    • CYCL CALL{ Bare: true }; any trailing M words +stay in the text for the shared flag captures.
    • CYCL CALL POS X±n Y±n Z±n …{ Pos: true } plus +the axis words grabbed into the record (never onto the +Parsing root: the POS coordinates are the call position — the +X/Y feed the ISO cycle section, while the pre-position Z must not be +mistaken for the hole-bottom Z slot). FMAX/F/M140 +words stay in the text for their own captures.
    +The call is consumed by +HeidenhainCannedCycleSyntax, +which converts the stored cycle definition into a direct ISO cycle +sub-section on this block. +
    +
    + +
    +
    public class HeidenhainCyclCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    HeidenhainCyclCallSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Bare call — trailing M words stay for the shared flag capture: +#BeforeBuild.UnparsedText: CYCL CALL M13 +#AfterBuild:

    +
    {
    +  "UnparsedText": "M13",
    +  "Parsing": { "CYCL CALL": { "Bare": true } }
    +}
    +

    Positional call — axis words land inside the record; FMAX stays: +#BeforeBuild.UnparsedText: CYCL CALL POS X-14 Y+25 Z+0 FMAX +#AfterBuild:

    +
    {
    +  "UnparsedText": "FMAX",
    +  "Parsing": { "CYCL CALL": { "Pos": true, "X": -14, "Y": 25, "Z": 0 } }
    +}
    + + + + +

    Constructors +

    + + + + +

    + HeidenhainCyclCallSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public HeidenhainCyclCallSyntax()
    +
    + + + + + + + + + + + + + + + +

    + HeidenhainCyclCallSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public HeidenhainCyclCallSyntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Source XML element.

    +
    +
    + + + + + + + + + + + + +

    Fields +

    + + + +

    + BareKey + +

    + +

    Record key marking the bare (positionless) call form.

    +
    +
    + +
    +
    public const string BareKey = "Bare"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + CyclCallKey + +

    + +

    JSON key of the call record under Parsing.

    +
    +
    + +
    +
    public const string CyclCallKey = "CYCL CALL"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + PatKey + +

    + +

    Record key marking the CYCL CALL PAT (pattern) form.

    +
    +
    + +
    +
    public const string PatKey = "Pat"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + PosKey + +

    + +

    Record key marking the CYCL CALL POS form.

    +
    +
    + +
    +
    public const string PosKey = "Pos"
    +
    + + + + +

    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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax.html index 5fdbb961..842551a0 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnAssignmentSyntax.html @@ -131,6 +131,9 @@ Extends
    Inherited Members
    + @@ -149,6 +152,9 @@ Extends TagAssignmentSyntax.TerminateWords
    + @@ -225,7 +231,13 @@ Extends

    Initializes a new instance with default settings.

    +
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnFeatureSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnFeatureSyntax.html new file mode 100644 index 00000000..22442407 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainFnFeatureSyntax.html @@ -0,0 +1,489 @@ + + + + + Class HeidenhainFnFeatureSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class HeidenhainFnFeatureSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Heidenhain
    +
    Assembly
    HiMech.dll
    +
    + +

    Structured skip for the Heidenhain FN opcodes the simulation does not +implement (FN 14 error display, FN 16 print, FN 18 +SYSREAD, table/pallet opcodes …): the whole statement is consumed and a +single HeidenhainFn–Unsupported warning names the opcode. Two +opcode families pass through untouched: FN 0-5 belong to +HeidenhainFnAssignmentSyntax (which runs earlier), and the +jump family FN 9-12 belongs to +HeidenhainGotoParsingSyntax (also earlier) — the +pass-through here is the malformed-jump safety net: a jump line the +owner's grammar rejects surfaces as visible residue instead of a +fabricated skip.

    +

    +Claiming the statement here is load-bearing, not cosmetic: an FN 18 line +like FN18: SYSREAD Q94= ID50 NR11 contains a Q94= token +that the bare Q-assignment capture (later in the Parsing bundle) would +otherwise grab, storing the garbage string ID50 into Q94. The +target parameter must instead stay vacant so dependent expressions fail +soft (VariableExpression--Unevaluated) — no fabricated values. +

    +
    +
    + +
    +
    public class HeidenhainFnFeatureSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    HeidenhainFnFeatureSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    #BeforeBuild.UnparsedText: FN18: SYSREAD Q94= ID50 NR11 +#AfterBuild:

    +
    {}
    + + + + +

    Constructors +

    + + + + +

    + HeidenhainFnFeatureSyntax() + +

    + +

    Default constructor.

    +
    +
    + +
    +
    public HeidenhainFnFeatureSyntax()
    +
    + + + + + + + + + + + + + + + +

    + HeidenhainFnFeatureSyntax(XElement) + +

    + +

    Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.

    +
    +
    + +
    +
    public HeidenhainFnFeatureSyntax(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 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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainGotoParsingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainGotoParsingSyntax.html new file mode 100644 index 00000000..0adfd312 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainGotoParsingSyntax.html @@ -0,0 +1,571 @@ + + + + + Class HeidenhainGotoParsingSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class HeidenhainGotoParsingSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Heidenhain
    +
    Assembly
    HiMech.dll
    +
    + +

    Captures the Heidenhain FN 9–12 conditional jump statement whole into +Parsing.HeidenhainGoto. All four opcodes share one phrase shape +(FN n: IF <value> <comparator> <value> GOTO LBL +<label>); both the spaced standard spelling and the +compressed post spelling (FN12:IF+Q94 LT+1GOTOLBL"SLOW_FEED" — +glued opcode head, glued value/target run, quoted name label) are +recognised.

    +

    +Pre-normalisation happens here, per the P2 expression-grammar +decision (the Heidenhain dialect deliberately has no comparison +layer): the comparator spelling collapses to the shared comparison +words (EQUEQ), and the two operands are captured as +separate values — a pure numeric literal is typed numeric at capture +(the P0 GetParsedDouble-string-trap discipline), a Q reference +stays a string for +VariableEvaluatorSyntax's pass-2 +substitution. The comparison and the label redirect happen in +HeidenhainGotoSyntax. +

    +

    +Placement: whole-statement owner right after +HeidenhainCallSyntax — before +HeidenhainLblSyntax (whose definition regex already +excludes the GOTO LBL spellings, but the jump owner claiming +the full line first keeps the exclusion a backstop rather than a +load-bearing gate) and before HeidenhainFnFeatureSyntax +(whose FN 9–12 pass-through remains the malformed-jump safety net: a +line this regex rejects surfaces as visible residue, never a +fabricated skip). +

    +
    +
    + +
    +
    public class HeidenhainGotoParsingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    HeidenhainGotoParsingSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Spaced standard spelling — the literal operand is typed numeric at +capture, the Q operand stays a string for the evaluator: +#BeforeBuild.UnparsedText: FN 12: IF +Q1 LT +5 GOTO LBL 5 +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "HeidenhainGoto": {
    +      "Term": "FN12",
    +      "Op": "LT",
    +      "Lhs": "+Q1",
    +      "Rhs": 5,
    +      "Label": "5"
    +    }
    +  }
    +}
    +

    Compressed post spelling (TongTai turbine form) — glued opcode head, +glued value/target run, quoted name label (quotes stripped): +#BeforeBuild.UnparsedText: FN12:IF+Q94 LT+1GOTOLBL"SLOW_FEED" +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "HeidenhainGoto": {
    +      "Term": "FN12",
    +      "Op": "LT",
    +      "Lhs": "+Q94",
    +      "Rhs": 1,
    +      "Label": "SLOW_FEED"
    +    }
    +  }
    +}
    +

    FN 9 — the klartext EQU spelling normalises to the shared +EQ comparison word: +#BeforeBuild.UnparsedText: FN 9: IF +Q1 EQU +Q3 GOTO LBL “END_MK” +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "HeidenhainGoto": {
    +      "Term": "FN9",
    +      "Op": "EQ",
    +      "Lhs": "+Q1",
    +      "Rhs": "+Q3",
    +      "Label": "END_MK"
    +    }
    +  }
    +}
    +

    FN 10 not-equal jump to a numeric label: +#BeforeBuild.UnparsedText: FN 10: IF +Q5 NE +0 GOTO LBL 3 +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "HeidenhainGoto": {
    +      "Term": "FN10",
    +      "Op": "NE",
    +      "Lhs": "+Q5",
    +      "Rhs": 0,
    +      "Label": "3"
    +    }
    +  }
    +}
    +

    FN 11 greater-than jump: +#BeforeBuild.UnparsedText: FN 11: IF +Q2 GT +400 GOTO LBL 99 +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "HeidenhainGoto": {
    +      "Term": "FN11",
    +      "Op": "GT",
    +      "Lhs": "+Q2",
    +      "Rhs": 400,
    +      "Label": "99"
    +    }
    +  }
    +}
    + + + + +

    Constructors +

    + + + + +

    + HeidenhainGotoParsingSyntax() + +

    + +

    Parameterless instance (no XML state).

    +
    +
    + +
    +
    public HeidenhainGotoParsingSyntax()
    +
    + + + + + + + + + + + + + + + +

    + HeidenhainGotoParsingSyntax(XElement) + +

    + +

    XML ctor (no child elements; reserved for forward compatibility).

    +
    +
    + +
    +
    public HeidenhainGotoParsingSyntax(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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + 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 eff4f0e5..0bf347a7 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 @@ - + @@ -98,10 +98,39 @@ Class 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).

    +L — spaced (L X+10) or glued directly to an axis/F word +(LX+153.933Y+4.196A-77.516, the dominant shape of post-processed +turbine files) — writes the Parsing.L = true statement marker, +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). LN/LP/LBL +lines are excluded by the gate's lookahead: a glued axis letter only +counts when followed by a sign, digit, dot or Q variable, so the B of +LBL (followed by another L) never matches. Glued M words +(LM09) are accepted — stripping the L exposes the M word for +the numbered-flag syntax; the richer LM140/LM128 +statements never reach this gate because their dedicated owners run +earlier in the Heidenhain Parsing bundle.

    +

    +Axis words land on the root of Parsing +(not nested under L) so the shared Logic consumers — +ProgramXyzSyntax, +McAbcSyntax, +MachineCoordSelectSyntax, +IncrementalResolveSyntax — read them without +per-brand path configuration. The L marker is consumed by +HeidenhainMotionModeSyntax which +maps the statement (plus a one-shot FMAX flag) onto the shared +G00/G01 motion-mode vocabulary. +

    +

    +The radius-compensation words RL/RR/R0 are +captured as boolean records on the Parsing root; the Logic-stage +HeidenhainRadiusCompSyntax maps +them onto the shared G41/G42/G40 vocabulary consumed by the radius +compensation pass. +

    @@ -188,14 +217,30 @@ parsed as floats via { "Parsing": { - "L": { "X": 10, "Y": 20, "Z": -5 } + "L": true, "X": 10, "Y": 20, "Z": -5 } }

    #BeforeBuild.UnparsedText: L A+45 B-15 #AfterBuild:

    {
       "Parsing": {
    -    "L": { "A": 45, "B": -15 }
    +    "L": true, "A": 45, "B": -15
    +  }
    +}
    +

    #BeforeBuild.UnparsedText: LX+153.933Y+4.196Z+387.616A-77.516C-10.365 +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "L": true, "X": 153.933, "Y": 4.196, "Z": 387.616,
    +    "A": -77.516, "C": -10.365
    +  }
    +}
    +

    #BeforeBuild.UnparsedText: LZ+387.616R0FMAX +#AfterBuild:

    +
    {
    +  "UnparsedText": "FMAX",
    +  "Parsing": {
    +    "L": true, "Z": 387.616, "R0": true
       }
     }
    @@ -266,6 +311,74 @@ parsed as floats via
    Fields + + + + +

    + CompWords + +

    + +

    Radius-compensation words captured as boolean Parsing-root records.

    +
    +
    + +
    +
    public static readonly string[] CompWords
    +
    + + + + +

    Field Value

    +
    +
    string[]
    +
    +
    + + + + + + + + + + +

    + StatementKey + +

    + +

    Key of the statement marker written to the root of +Parsing (“L”: true); consumed by +HeidenhainMotionModeSyntax.

    +
    +
    + +
    +
    public const string StatementKey = "L"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + +

    Properties

    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 f77c8100..89cfc39b 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 @@ -6,7 +6,7 @@ - + @@ -100,6 +100,13 @@ Class 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.

    +

    +Only a DEFINITION is captured: CALL LBL (any spacing) and the +FN 9–12 jump spellings (GOTO LBL n, glued GOTOLBL) are +excluded — this syntax doubles as the label-scan probe of the P4 call +machinery, where mistaking a jump line (or the call line itself) for +a definition splices the wrong program section. +

    @@ -203,6 +210,25 @@ LBL 0 is reserved for end of subprogram.

    "LBL": { "Name": "0" } } } +

    #BeforeBuild.UnparsedText: LBL “SLOW_FEED” (quotes are stripped from the captured name) +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "LBL": { "Name": "SLOW_FEED" }
    +  }
    +}
    +

    #BeforeBuild.UnparsedText: FN 12: IF +Q1 LT +5 GOTO LBL 5 (a jump target, not a definition — the line is left whole for the FN jump family) +#AfterBuild:

    +
    {
    +  "UnparsedText": "FN 12: IF +Q1 LT +5 GOTO LBL 5"
    +}
    +

    #BeforeBuild.UnparsedText: G98 L1 (the DIN/ISO definition twin — the G98/L pair is claimed together, so no G98 flag leaks to the numbered-flag capture) +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "LBL": { "Name": "1" }
    +  }
    +}
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainM128Syntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainM128Syntax.html new file mode 100644 index 00000000..27d771e9 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainM128Syntax.html @@ -0,0 +1,533 @@ + + + + + Class HeidenhainM128Syntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class HeidenhainM128Syntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Heidenhain
    +
    Assembly
    HiMech.dll
    +
    + +

    Captures the klartext M128 word (RTCP on) together with its +optional feed-limit argument (M128 F6000.) into +Parsing.M128 { F? }. Must run before the shared F +tag-value syntax — the F belongs to M128 (feed limit for compensating +movements), and letting it reach the Parsing root would pollute the +modal feedrate (HardNc has exactly this defect). Accepted spellings: +the leading/glued L statement (LM128, mirroring the M140 +sibling), the fully glued M128F6000, and a Q-parameter feed +limit (M128 FQ8, 1.H corpus) captured as the string token for +the evaluator pass to resolve. M129 (RTCP off) carries no +argument and stays on the shared numbered-flag path.

    +
    +
    + +
    +
    public class HeidenhainM128Syntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    HeidenhainM128Syntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Bare form — the Bare marker keeps the record from being swept +by intermediate CleanupParsing passes (empty objects are +pruned; Siemens frame-statement precedent): +#BeforeBuild.UnparsedText: M128 +#AfterBuild:

    +
    { "Parsing": { "M128": { "Bare": true } } }
    +

    With feed-limit argument (trailing-dot corpus form): +#BeforeBuild.UnparsedText: M128 F6000. +#AfterBuild:

    +
    { "Parsing": { "M128": { "F": 6000 } } }
    +

    Glued L statement + fully glued feed limit: +#BeforeBuild.UnparsedText: LM128F6000 +#AfterBuild:

    +
    { "Parsing": { "M128": { "F": 6000 } } }
    +

    Q-parameter feed limit (kept as the raw token; the evaluator pass +substitutes it when the Q value is known): +#BeforeBuild.UnparsedText: M128 FQ8 +#AfterBuild:

    +
    { "Parsing": { "M128": { "F": "Q8" } } }
    + + + + +

    Constructors +

    + + + + +

    + HeidenhainM128Syntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public HeidenhainM128Syntax()
    +
    + + + + + + + + + + + + + + + +

    + HeidenhainM128Syntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public HeidenhainM128Syntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Source XML element.

    +
    +
    + + + + + + + + + + + + +

    Fields +

    + + + +

    + KeyConst + +

    + +

    Key of the record written to Parsing.

    +
    +
    + +
    +
    public const string KeyConst = "M128"
    +
    + + + + +

    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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainM140Syntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainM140Syntax.html new file mode 100644 index 00000000..4801b68d --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainM140Syntax.html @@ -0,0 +1,520 @@ + + + + + Class HeidenhainM140Syntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class HeidenhainM140Syntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Heidenhain
    +
    Assembly
    HiMech.dll
    +
    + +

    Captures the klartext M140 MB tool-axis retract statement into +Parsing.M140 { MB, F? }. MB MAX retracts to the traverse +limit (recorded as the string “MAX”); MB+n retracts by +n mm along the tool axis. Handles the corpus forms +M140 MB+50 F6000, L M140 MB MAX (M word carried on an L +statement) and the glued LM140 MB MAX (TongTai post). Must run +before HeidenhainLSyntax (it claims the whole +retract statement including a leading L) and before the shared +F tag-value syntax (the F is the retract feed).

    +
    +
    + +
    +
    public class HeidenhainM140Syntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    HeidenhainM140Syntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Distance form with retract feed: +#BeforeBuild.UnparsedText: M140 MB+50 F6000 +#AfterBuild:

    +
    { "Parsing": { "M140": { "MB": 50, "F": 6000 } } }
    +

    Glued L + MAX form (retract to the traverse limit): +#BeforeBuild.UnparsedText: LM140 MB MAX +#AfterBuild:

    +
    { "Parsing": { "M140": { "MB": "MAX" } } }
    + + + + +

    Constructors +

    + + + + +

    + HeidenhainM140Syntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public HeidenhainM140Syntax()
    +
    + + + + + + + + + + + + + + + +

    + HeidenhainM140Syntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public HeidenhainM140Syntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Source XML element.

    +
    +
    + + + + + + + + + + + + +

    Fields +

    + + + +

    + KeyConst + +

    + +

    Key of the record written to Parsing.

    +
    +
    + +
    +
    public const string KeyConst = "M140"
    +
    + + + + +

    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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainMirrorImageSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainMirrorImageSyntax.html new file mode 100644 index 00000000..53d307da --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainMirrorImageSyntax.html @@ -0,0 +1,648 @@ + + + + + Class HeidenhainMirrorImageSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class HeidenhainMirrorImageSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Heidenhain
    +
    Assembly
    HiMech.dll
    +
    + +

    Heidenhain DIN/ISO G28 = MIRROR IMAGE (the CYCL DEF 8 twin; +basic course 62192: G28 X flips the X sign about the current +datum, G28 X Y flips both, bare G28 resets) — the exact +opposite of the Fanuc reference-point return the shared +G28Syntax would read it as. Claims the +whole statement (code plus trailing axis words) ahead of the generic +kit and records each statement under +Parsing.MirrorImageKey for the Logic-stage +HeidenhainMirrorTransformSyntax, +which simulates the mirror as a +ProgramToMcTransform entry.

    +

    +Axis words are the manual's bare letters; a glued numeric or +Q-variable follower (G28 X0 Y0 — the Fanuc idiom a mislabeled +.I file could carry — or G28 XQ1) is claimed too so the +value can never fall through to the root tag captures as a ghost +coordinate, and the statement is stamped ValuedKey so +the Logic stage keeps it recognized-but-not-simulated (mirroring on +the Fanuc-shaped form would wreck a mislabeled reference-return +file). A bare axis letter glued to another word (G28 CC…) +stops the claim run — the leftover surfaces through the residue +sentinels instead of being guessed at. +

    +
    +
    + +
    +
    public class HeidenhainMirrorImageSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    HeidenhainMirrorImageSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Course 62192 single-axis form — statement claimed whole and recorded +for the Logic-stage transform writer: +#BeforeBuild.UnparsedText: G28 X +#AfterBuild:

    +
    { "Parsing": { "MirrorImage": [ { "Axes": ["X"] } ] } }
    +

    Two-axis form: +#BeforeBuild.UnparsedText: G28 X Y +#AfterBuild:

    +
    { "Parsing": { "MirrorImage": [ { "Axes": ["X", "Y"] } ] } }
    +

    Bare reset form — an empty axis list: +#BeforeBuild.UnparsedText: G28 +#AfterBuild:

    +
    { "Parsing": { "MirrorImage": [ { "Axes": [] } ] } }
    +

    Other words on the block survive the surgical claim: +#BeforeBuild.UnparsedText: G90 G28 X +#AfterBuild:

    +
    {
    +  "UnparsedText": "G90",
    +  "Parsing": { "MirrorImage": [ { "Axes": ["X"] } ] }
    +}
    +

    The Fanuc-shaped valued idiom — axis values are claimed with their +words so no ghost coordinate reaches the root tag captures, and the +statement carries the Valued stamp that keeps the Logic stage +from arming a mirror off it: +#BeforeBuild.UnparsedText: G91 G28 X0 Y0 Z0 +#AfterBuild:

    +
    {
    +  "UnparsedText": "G91",
    +  "Parsing": {
    +    "MirrorImage": [ { "Axes": ["X", "Y", "Z"], "Valued": true } ]
    +  }
    +}
    +

    Digit follower keeps the gate shut (not a G28 word): +#BeforeBuild.UnparsedText: G284 X +#AfterBuild:

    +
    { "UnparsedText": "G284 X" }
    +

    A glued Q-variable follower is claimed with its word — unclaimed it +would parse cleanly through the root tag captures (a silent ghost +coordinate, invisible even to the residue sentinels): +#BeforeBuild.UnparsedText: G91 G28 XQ1 +#AfterBuild:

    +
    {
    +  "UnparsedText": "G91",
    +  "Parsing": { "MirrorImage": [ { "Axes": ["X"], "Valued": true } ] }
    +}
    +

    Multiple G28 statements on one block are each claimed and recorded in +source order (the Logic stage applies them sequentially — each +statement replaces the mirror set): +#BeforeBuild.UnparsedText: G28 X G28 Y +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "MirrorImage": [ { "Axes": ["X"] }, { "Axes": ["Y"] } ]
    +  }
    +}
    + + + + +

    Constructors +

    + + + + +

    + HeidenhainMirrorImageSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public HeidenhainMirrorImageSyntax()
    +
    + + + + + + + + + + + + + + + +

    + HeidenhainMirrorImageSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public HeidenhainMirrorImageSyntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Source XML element.

    +
    +
    + + + + + + + + + + + + +

    Fields +

    + + + +

    + AxesKey + +

    + +

    Per-statement key: the axis letters, in source order (empty = bare reset).

    +
    +
    + +
    +
    public const string AxesKey = "Axes"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + MirrorImageKey + +

    + +

    Key of the statement list this syntax records under Parsing: +a JsonArray with one entry per claimed G28 statement, +in source order. Consumed by +HeidenhainMirrorTransformSyntax.

    +
    +
    + +
    +
    public const string MirrorImageKey = "MirrorImage"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + ValuedKey + +

    + +

    Per-statement key: present (true) when any axis word carried a +glued value — the Fanuc-shaped idiom the Logic stage must not arm a +mirror off.

    +
    +
    + +
    +
    public const string ValuedKey = "Valued"
    +
    + + + + +

    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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + 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 f00349ce..69613557 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 @@ -6,7 +6,7 @@ - + @@ -97,13 +97,21 @@ Class HeidenhainPlaneSyntax
    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]
    • -
    +

    Syntax for the Heidenhain PLANE statement family. Fully structured +(simulated by the Logic-stage tilt consumer):

    +
    • PLANE RESET [STAY|MOVE|TURN]
    • PLANE SPATIAL SPA SPB SPC [SEQ±] [COORD ROT|TABLE ROT] +[MOVE [DIST..] [F..]|TURN|STAY]
    +Recognized (captured with the same option set, simulated as +recognized-but-not-simulated by the Logic consumer): +
    • PLANE PROJECTED PROPR PROMIN ROT ...
    • PLANE VECTOR BX BY BZ NX NY NZ ... (corpus: 1.H)
    • PLANE EULER/POINTS/RELATIV/AXIAL ... — the mode word is +captured and the unmodeled argument text is swept verbatim into the +record's Args so no token can leak to the shared tag captures +(e.g. a PLANE AXIAL B+45 B word must never become a rotary +axis move).
    +Must run before the shared F tag-value syntax: the F of +MOVE DIST100 F8000 is the repositioning feed and would +otherwise pollute the modal feedrate (house.H corpus form; HardNc has +exactly this defect).
    @@ -208,11 +216,58 @@ Handles:

    } } } -

    #BeforeBuild.UnparsedText: PLANE RESET +

    #BeforeBuild.UnparsedText: PLANE RESET STAY #AfterBuild:

    {
       "Parsing": {
    -    "PLANE": { "Mode": "RESET" }
    +    "PLANE": { "Mode": "RESET", "Positioning": "STAY" }
    +  }
    +}
    +

    The house.H MOVE form — DIST is glued to its value and the F is the +repositioning feed (claimed here, kept out of the modal feedrate): +#BeforeBuild.UnparsedText: PLANE SPATIAL SPA+0 SPB-45 SPC+0 MOVE DIST100 F8000 COORD ROT +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "PLANE": {
    +      "Mode": "SPATIAL",
    +      "SPA": 0, "SPB": -45, "SPC": 0,
    +      "Rot": "COORD", "Positioning": "MOVE",
    +      "DIST": 100, "F": 8000
    +    }
    +  }
    +}
    +

    The TongTai turbine form — SEQ- glued to TABLE: +#BeforeBuild.UnparsedText: PLANE SPATIAL SPA-77.516 SPB+0 SPC-10.365 STAY SEQ-TABLE ROT +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "PLANE": {
    +      "Mode": "SPATIAL",
    +      "SPA": -77.516, "SPB": 0, "SPC": -10.365,
    +      "SEQ": "-", "Rot": "TABLE", "Positioning": "STAY"
    +    }
    +  }
    +}
    +

    PLANE VECTOR (1.H corpus form) — base and normal vectors captured: +#BeforeBuild.UnparsedText: PLANE VECTOR BX1 BY0 BZ0 NX0 NY0 NZ1 STAY SEQ+ TABLE ROT +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "PLANE": {
    +      "Mode": "VECTOR",
    +      "BX": 1, "BY": 0, "BZ": 0, "NX": 0, "NY": 0, "NZ": 1,
    +      "SEQ": "+", "Rot": "TABLE", "Positioning": "STAY"
    +    }
    +  }
    +}
    +

    Unmodeled mode — the argument text is swept into Args so no +token leaks: +#BeforeBuild.UnparsedText: PLANE AXIAL B+45 TURN +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "PLANE": { "Mode": "AXIAL", "Positioning": "TURN", "Args": "B+45" }
       }
     }
    @@ -288,6 +343,130 @@ Handles:

    +

    + ArgsKey + +

    + +

    Record key holding the swept argument text of unmodeled PLANE modes.

    +
    +
    + +
    +
    public const string ArgsKey = "Args"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + KeyConst + +

    + +

    Key of the record written to Parsing.

    +
    +
    + +
    +
    public const string KeyConst = "PLANE"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + ModeKey + +

    + +

    Record key for the mode word (SPATIAL/RESET/VECTOR/...).

    +
    +
    + +
    +
    public const string ModeKey = "Mode"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + PositioningKey + +

    + +

    Record key for the positioning word (“MOVE”/“TURN”/“STAY”).

    +
    +
    + +
    +
    public const string PositioningKey = "Positioning"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + +

    ProjectedTagList @@ -320,6 +499,68 @@ PROPR: projection angle, PROMIN: minimum angle, ROT: rotation of tilted plane. + RotKey + +

    + +

    Record key for the rotation strategy (“COORD” or “TABLE”).

    +
    +
    + +
    +
    public const string RotKey = "Rot"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + SeqKey + +

    + +

    Record key for the SEQ solution preference ("+" or "-").

    +
    +
    + +
    +
    public const string SeqKey = "SEQ"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + +

    SpatialTagList @@ -350,6 +591,70 @@ PROPR: projection angle, PROMIN: minimum angle, ROT: rotation of tilted plane. + UnmodeledModeList + +

    + +

    PLANE modes captured as recognized-but-unmodeled: the mode word is +recorded and the remaining argument text is swept into +ArgsKey.

    +
    +
    + +
    +
    public static readonly string[] UnmodeledModeList
    +
    + + + + +

    Field Value

    +
    +
    string[]
    +
    +
    + + + + + + + + + + +

    + VectorTagList + +

    + +

    Base-vector and normal-vector tags for PLANE VECTOR command.

    +
    +
    + +
    +
    public static readonly string[] VectorTagList
    +
    + + + + +

    Field Value

    +
    +
    string[]
    +
    +
    + + + + + + + + +

    Properties

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainTcpmSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainTcpmSyntax.html new file mode 100644 index 00000000..c058c944 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainTcpmSyntax.html @@ -0,0 +1,586 @@ + + + + + Class HeidenhainTcpmSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class HeidenhainTcpmSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Heidenhain
    +
    Assembly
    HiMech.dll
    +
    + +

    Captures the modern-TNC RTCP statement pair into Parsing.TCPM: +FUNCTION TCPM [args] (RTCP on — the M128 successor) and +FUNCTION RESET TCPM (RTCP off). The behavior-tuning argument +words (F TCP / F CONT / AXIS POS / AXIS SPAT / PATHCTRL AXIS / +PATHCTRL VECTOR) are corpus-zero and swept verbatim into the +record's Args — recognized-but-not-simulated (the Logic RTCP +consumer warns); activation/deactivation itself is simulated. Must +run before the shared F tag-value syntax so an argument like +F TCP can never be misread as a feed word.

    +
    +
    + +
    +
    public class HeidenhainTcpmSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    HeidenhainTcpmSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Bare activation: +#BeforeBuild.UnparsedText: FUNCTION TCPM +#AfterBuild:

    +
    { "Parsing": { "TCPM": { "Bare": true } } }
    +

    Activation with behavior arguments (recorded, not simulated): +#BeforeBuild.UnparsedText: FUNCTION TCPM F TCP AXIS POS PATHCTRL AXIS +#AfterBuild:

    +
    { "Parsing": { "TCPM": { "Args": "F TCP AXIS POS PATHCTRL AXIS" } } }
    +

    Deactivation: +#BeforeBuild.UnparsedText: FUNCTION RESET TCPM +#AfterBuild:

    +
    { "Parsing": { "TCPM": { "Reset": true } } }
    + + + + +

    Constructors +

    + + + + +

    + HeidenhainTcpmSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public HeidenhainTcpmSyntax()
    +
    + + + + + + + + + + + + + + + +

    + HeidenhainTcpmSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public HeidenhainTcpmSyntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Source XML element.

    +
    +
    + + + + + + + + + + + + +

    Fields +

    + + + +

    + ArgsKey + +

    + +

    Record key holding the swept behavior-argument text.

    +
    +
    + +
    +
    public const string ArgsKey = "Args"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + KeyConst + +

    + +

    Key of the record written to Parsing.

    +
    +
    + +
    +
    public const string KeyConst = "TCPM"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + ResetKey + +

    + +

    Record key marking the FUNCTION RESET TCPM (off) form.

    +
    +
    + +
    +
    public const string ResetKey = "Reset"
    +
    + + + + +

    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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainTildeTrimSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainTildeTrimSyntax.html new file mode 100644 index 00000000..b280c3fd --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainTildeTrimSyntax.html @@ -0,0 +1,481 @@ + + + + + Class HeidenhainTildeTrimSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class HeidenhainTildeTrimSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Heidenhain
    +
    Assembly
    HiMech.dll
    +
    + +

    Strips the TNC ~ line-continuation markers from a grouped +sentence's UnparsedText. The raw BlockText +keeps them (write-back authority); parsing only needs the joined lines. +Both corpus spellings are removed — "… ;STRATEGIE ~" (space +before, line tail) and "DATUM SETTING~" (glued). Placed at the +head of the Parsing bundle, before the comment strippers, so a trailing +~ after a ; comment never lands in the recorded comment +text.

    +
    +
    + +
    +
    public class HeidenhainTildeTrimSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    HeidenhainTildeTrimSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    #BeforeBuild.UnparsedText: CYCL DEF 247 DATUM SETTING~ +#AfterBuild:

    +
    {
    +  "UnparsedText": "CYCL DEF 247 DATUM SETTING"
    +}
    + + + + +

    Constructors +

    + + + + +

    + HeidenhainTildeTrimSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public HeidenhainTildeTrimSyntax()
    +
    + + + + + + + + + + + + + + + +

    + HeidenhainTildeTrimSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public HeidenhainTildeTrimSyntax(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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + 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 d20402a5..33f256a7 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Heidenhain.html @@ -97,11 +97,61 @@ Classes
    HeidenhainBlkFormSyntax

    Syntax for Heidenhain BLK FORM command (workpiece blank definition).

    +
    +
    +
    +
    HeidenhainCSyntax
    +

    Heidenhain circular-motion statement (C X+5.361 Y+23.064 DR-). +Mirrors HeidenhainLSyntax: endpoint axis words promote +to the Parsing root (shared Logic consumers), a “CArc”: true +statement marker (deliberately NOT the bare C key — that is a +rotary axis word which McAbcSyntax owns and +consumes on rotary machines) gates +HeidenhainCircularMotionSyntax, +the rotation direction lands in Parsing.DR ("-" = CW = +G02, "+" = CCW = G03) and radius-compensation words are +captured like on L statements. The word-boundary head guard rejects +CC/CT/CR/CP statements, and a value +follower rejects a leading rotary-axis word — a DIN/ISO block like +C-90. (modal C-axis positioning, the same mixed-dialect list) +is an axis coordinate for the root tag capture, never a klartext arc +statement head (klartext always separates the C head from its X/Y/DR +words, so a sign/digit/dot follower cannot be an arc statement).

    HeidenhainCallSyntax

    Syntax for Heidenhain CALL commands (CALL PGM and CALL LBL).

    +
    +
    +
    +
    HeidenhainCcSyntax
    +

    Heidenhain circle-center statement (CC X+12.7 Y+12.7). The +coordinates land in the nested Parsing.CC record — deliberately +not on the Parsing root, where ProgramXyzSyntax +would mistake the center for a motion endpoint. The Logic-stage +HeidenhainCircleCenterSyntax +turns the record into the modal circle-center section consumed by the +arc syntax. Must run before HeidenhainCSyntax in the +bundle (the \b guard keeps a C statement from matching +CC and vice versa, but CC-first is the safe order).

    +
    +
    +
    +
    HeidenhainCyclCallSyntax
    +

    Captures the klartext cycle-call statement into a +Parsing[“CYCL CALL”] record:

    +
    • CYCL CALL{ Bare: true }; any trailing M words +stay in the text for the shared flag captures.
    • CYCL CALL POS X±n Y±n Z±n …{ Pos: true } plus +the axis words grabbed into the record (never onto the +Parsing root: the POS coordinates are the call position — the +X/Y feed the ISO cycle section, while the pre-position Z must not be +mistaken for the hole-bottom Z slot). FMAX/F/M140 +words stay in the text for their own captures.
    +The call is consumed by +HeidenhainCannedCycleSyntax, +which converts the stored cycle definition into a direct ISO cycle +sub-section on this block.
    @@ -113,15 +163,101 @@ Classes
    HeidenhainFnAssignmentSyntax

    Heidenhain FN variable assignment syntax. Extends TagAssignmentSyntax with FN opcode prefix.

    +
    +
    +
    +
    HeidenhainFnFeatureSyntax
    +

    Structured skip for the Heidenhain FN opcodes the simulation does not +implement (FN 14 error display, FN 16 print, FN 18 +SYSREAD, table/pallet opcodes …): the whole statement is consumed and a +single HeidenhainFn–Unsupported warning names the opcode. Two +opcode families pass through untouched: FN 0-5 belong to +HeidenhainFnAssignmentSyntax (which runs earlier), and the +jump family FN 9-12 belongs to +HeidenhainGotoParsingSyntax (also earlier) — the +pass-through here is the malformed-jump safety net: a jump line the +owner's grammar rejects surfaces as visible residue instead of a +fabricated skip.

    +

    +Claiming the statement here is load-bearing, not cosmetic: an FN 18 line +like FN18: SYSREAD Q94= ID50 NR11 contains a Q94= token +that the bare Q-assignment capture (later in the Parsing bundle) would +otherwise grab, storing the garbage string ID50 into Q94. The +target parameter must instead stay vacant so dependent expressions fail +soft (VariableExpression--Unevaluated) — no fabricated values. +

    +
    +
    +
    +
    HeidenhainGotoParsingSyntax
    +

    Captures the Heidenhain FN 9–12 conditional jump statement whole into +Parsing.HeidenhainGoto. All four opcodes share one phrase shape +(FN n: IF <value> <comparator> <value> GOTO LBL +<label>); both the spaced standard spelling and the +compressed post spelling (FN12:IF+Q94 LT+1GOTOLBL"SLOW_FEED" — +glued opcode head, glued value/target run, quoted name label) are +recognised.

    +

    +Pre-normalisation happens here, per the P2 expression-grammar +decision (the Heidenhain dialect deliberately has no comparison +layer): the comparator spelling collapses to the shared comparison +words (EQUEQ), and the two operands are captured as +separate values — a pure numeric literal is typed numeric at capture +(the P0 GetParsedDouble-string-trap discipline), a Q reference +stays a string for +VariableEvaluatorSyntax's pass-2 +substitution. The comparison and the label redirect happen in +HeidenhainGotoSyntax. +

    +

    +Placement: whole-statement owner right after +HeidenhainCallSyntax — before +HeidenhainLblSyntax (whose definition regex already +excludes the GOTO LBL spellings, but the jump owner claiming +the full line first keeps the exclusion a backstop rather than a +load-bearing gate) and before HeidenhainFnFeatureSyntax +(whose FN 9–12 pass-through remains the malformed-jump safety net: a +line this regex rejects surfaces as visible residue, never a +fabricated skip). +

    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).

    +L — spaced (L X+10) or glued directly to an axis/F word +(LX+153.933Y+4.196A-77.516, the dominant shape of post-processed +turbine files) — writes the Parsing.L = true statement marker, +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). LN/LP/LBL +lines are excluded by the gate's lookahead: a glued axis letter only +counts when followed by a sign, digit, dot or Q variable, so the B of +LBL (followed by another L) never matches. Glued M words +(LM09) are accepted — stripping the L exposes the M word for +the numbered-flag syntax; the richer LM140/LM128 +statements never reach this gate because their dedicated owners run +earlier in the Heidenhain Parsing bundle.

    +

    +Axis words land on the root of Parsing +(not nested under L) so the shared Logic consumers — +ProgramXyzSyntax, +McAbcSyntax, +MachineCoordSelectSyntax, +IncrementalResolveSyntax — read them without +per-brand path configuration. The L marker is consumed by +HeidenhainMotionModeSyntax which +maps the statement (plus a one-shot FMAX flag) onto the shared +G00/G01 motion-mode vocabulary. +

    +

    +The radius-compensation words RL/RR/R0 are +captured as boolean records on the Parsing root; the Logic-stage +HeidenhainRadiusCompSyntax maps +them onto the shared G41/G42/G40 vocabulary consumed by the radius +compensation pass. +

    @@ -129,22 +265,117 @@ parsed as floats via +
    HeidenhainM128Syntax
    +

    Captures the klartext M128 word (RTCP on) together with its +optional feed-limit argument (M128 F6000.) into +Parsing.M128 { F? }. Must run before the shared F +tag-value syntax — the F belongs to M128 (feed limit for compensating +movements), and letting it reach the Parsing root would pollute the +modal feedrate (HardNc has exactly this defect). Accepted spellings: +the leading/glued L statement (LM128, mirroring the M140 +sibling), the fully glued M128F6000, and a Q-parameter feed +limit (M128 FQ8, 1.H corpus) captured as the string token for +the evaluator pass to resolve. M129 (RTCP off) carries no +argument and stays on the shared numbered-flag path.

    +
    +
    +
    +
    HeidenhainM140Syntax
    +

    Captures the klartext M140 MB tool-axis retract statement into +Parsing.M140 { MB, F? }. MB MAX retracts to the traverse +limit (recorded as the string “MAX”); MB+n retracts by +n mm along the tool axis. Handles the corpus forms +M140 MB+50 F6000, L M140 MB MAX (M word carried on an L +statement) and the glued LM140 MB MAX (TongTai post). Must run +before HeidenhainLSyntax (it claims the whole +retract statement including a leading L) and before the shared +F tag-value syntax (the F is the retract feed).

    +
    +
    +
    +
    HeidenhainMirrorImageSyntax
    +

    Heidenhain DIN/ISO G28 = MIRROR IMAGE (the CYCL DEF 8 twin; +basic course 62192: G28 X flips the X sign about the current +datum, G28 X Y flips both, bare G28 resets) — the exact +opposite of the Fanuc reference-point return the shared +G28Syntax would read it as. Claims the +whole statement (code plus trailing axis words) ahead of the generic +kit and records each statement under +Parsing.MirrorImageKey for the Logic-stage +HeidenhainMirrorTransformSyntax, +which simulates the mirror as a +ProgramToMcTransform entry.

    +

    +Axis words are the manual's bare letters; a glued numeric or +Q-variable follower (G28 X0 Y0 — the Fanuc idiom a mislabeled +.I file could carry — or G28 XQ1) is claimed too so the +value can never fall through to the root tag captures as a ghost +coordinate, and the statement is stamped ValuedKey so +the Logic stage keeps it recognized-but-not-simulated (mirroring on +the Fanuc-shaped form would wreck a mislabeled reference-return +file). A bare axis letter glued to another word (G28 CC…) +stops the claim run — the leftover surfaces through the residue +sentinels instead of being guessed at. +

    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]
    • -
    +

    Syntax for the Heidenhain PLANE statement family. Fully structured +(simulated by the Logic-stage tilt consumer):

    +
    • PLANE RESET [STAY|MOVE|TURN]
    • PLANE SPATIAL SPA SPB SPC [SEQ±] [COORD ROT|TABLE ROT] +[MOVE [DIST..] [F..]|TURN|STAY]
    +Recognized (captured with the same option set, simulated as +recognized-but-not-simulated by the Logic consumer): +
    • PLANE PROJECTED PROPR PROMIN ROT ...
    • PLANE VECTOR BX BY BZ NX NY NZ ... (corpus: 1.H)
    • PLANE EULER/POINTS/RELATIV/AXIAL ... — the mode word is +captured and the unmodeled argument text is swept verbatim into the +record's Args so no token can leak to the shared tag captures +(e.g. a PLANE AXIAL B+45 B word must never become a rotary +axis move).
    +Must run before the shared F tag-value syntax: the F of +MOVE DIST100 F8000 is the repositioning feed and would +otherwise pollute the modal feedrate (house.H corpus form; HardNc has +exactly this defect).
    HeidenhainProgramSyntax

    Syntax for Heidenhain BEGIN PGM and END PGM commands.

    +
    +
    +
    +
    HeidenhainTcpmSyntax
    +

    Captures the modern-TNC RTCP statement pair into Parsing.TCPM: +FUNCTION TCPM [args] (RTCP on — the M128 successor) and +FUNCTION RESET TCPM (RTCP off). The behavior-tuning argument +words (F TCP / F CONT / AXIS POS / AXIS SPAT / PATHCTRL AXIS / +PATHCTRL VECTOR) are corpus-zero and swept verbatim into the +record's Args — recognized-but-not-simulated (the Logic RTCP +consumer warns); activation/deactivation itself is simulated. Must +run before the shared F tag-value syntax so an argument like +F TCP can never be misread as a feed word.

    +
    +
    +
    +
    HeidenhainTildeTrimSyntax
    +

    Strips the TNC ~ line-continuation markers from a grouped +sentence's UnparsedText. The raw BlockText +keeps them (write-back authority); parsing only needs the joined lines. +Both corpus spellings are removed — "… ;STRATEGIE ~" (space +before, line tail) and "DATUM SETTING~" (glued). Placed at the +head of the Parsing bundle, before the comment strippers, so a trailing +~ after a ; comment never lands in the recorded comment +text.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax.html index 106a74a7..6cc834fc 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.IntegerTagValueSyntax.html @@ -143,6 +143,15 @@ Variable text (e.g. Q2, #1, [#1+#2]) remains as TagValueSyntax.TagList
    + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax.html index 0c281b85..00a4b5ff 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.NamedVarAssignmentSyntax.html @@ -181,19 +181,33 @@ rather than {prefix}{digits}.

    +

    Examples

    +

    #BeforeBuild.UnparsedText: _X_HOME=500.0 +#AfterBuild:

    +
    {
    +  "Parsing": { "Assignments": { "_X_HOME": "500.0" } }
    +}
    +

    #BeforeBuild.UnparsedText: _A=5 X=100 (the RHS stops at the next assignment-looking token; single-letter X= is not an identifier here and is left for the tag-value syntaxes) +#AfterBuild:

    +
    {
    +  "UnparsedText": "X=100",
    +  "Parsing": { "Assignments": { "_A": "5" } }
    +}
    +

    Remarks

    • Siemens GUD: _X_HOME = 100, _MY_VAR = R1 + R2
    • Siemens LUD: DEF REAL MY_LOCAL; MY_LOCAL = 50
    -Unlike TagAssignmentSyntax which handles -{prefix}{digits} variables (e.g., #1, R1, Q5), -this class handles multi-character identifier variables. -Identifiers must be at least 2 characters to avoid overlap with -single-letter axis tags (X, Y, Z, etc.). -

    -Ordering: Must be placed before TagAssignmentSyntax -in syntax lists so that multi-char identifiers (e.g., _X_HOME) are consumed -before {prefix}{digits} patterns (e.g., R1) attempt to match. -

    +Unlike TagAssignmentSyntax which captures only the numbered +{prefix}{digits} family (#1, R1, Q5), this identifier grammar is broader +and also matches letter+digits tokens such as R1. The overlap is +benign by construction: both assignment syntaxes route to the same +Parsing.Assignments subtree with the same JSON shape, and a preset +must give both the same TerminateWords; their RHS boundary rules are +likewise aligned (any following token= stops the expression). A +token captured by either therefore lands as the exact same JSON, so the +relative ordering of the two syntaxes does not affect output. +Identifiers must be at least 2 characters so single-letter axis addresses +(X=100) stay with the tag-value syntaxes.
    @@ -220,7 +234,9 @@ keywords, and an identifier regex pattern.

    Parameters

    categoryPath IEnumerable<string>
    -

    JSON path under Parsing where assignments are written.

    +

    JSON path under Parsing where assignments are written. +Pass null to use DefaultCategoryPath (Parsing.Assignments). +Pass an empty collection only if assignments should land at the Parsing root.

    terminateWords IEnumerable<string>

    Optional keywords that end the right-hand expression.

    @@ -284,7 +300,11 @@ keywords, and an identifier regex pattern.

    -

    Default identifier regex (at least 2 characters; first char letter or underscore). +

    Default identifier regex (at least 2 characters; first char letter or +underscore). The 2-character minimum keeps single-letter axis addresses +(X=100) with the tag-value syntaxes. Letter+digits tokens (R1) +also match — that overlap with TagAssignmentSyntax is +benign by construction (see the class remarks). Used when IdentPattern is not overridden.

    @@ -346,6 +366,42 @@ Used when + +

    + DefaultCategoryPath + +

    + +

    Default CategoryPath assigned when the caller passes null +(or omits the <CategoryPath> element in saved XML). +Routes assignment outputs into Parsing.Assignments — the same subtree +as DefaultCategoryPath — so variable-reading +syntaxes can target a single well-defined location.

    +
    +
    + +
    +
    public static IReadOnlyList<string> DefaultCategoryPath { get; }
    +
    + + + + + +

    Property Value

    +
    +
    IReadOnlyList<string>
    +
    +
    + + + + + + + +

    @@ -411,6 +467,44 @@ Default: [A-Za-z_]\w+ (at least 2 characters).

    + + +

    + RhsDialect + +

    + +

    Expression grammar delimiting the RHS (parser-delimited capture): +when set, the longest valid expression prefix ends the RHS — +superseding TerminateWords on matches where a prefix +parses. Default None keeps the +legacy lexical boundary. Must stay in sync with the value on +RhsDialect in the same preset +(the P0 behavior-alignment contract).

    +
    +
    + +
    +
    public NcExpressionDialect RhsDialect { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    NcExpressionDialect
    +
    +
    + + + + + + + +

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensCallStatementSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensCallStatementSyntax.html new file mode 100644 index 00000000..e5fa215f --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensCallStatementSyntax.html @@ -0,0 +1,575 @@ + + + + + Class SiemensCallStatementSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensCallStatementSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Captures a whole-line Siemens subprogram-call statement into +Parsing.SiemensCall for +SiemensSubProgramCallSyntax to +resolve (inline the file) or safe-skip (structured warning, zero +motion). Two shapes are owned:

    +
    • Parenthesized call, any identifier — +HQ_FC(1,50,75,160), L_39(0.000,0.000), +HH_ROBOT(2){ "Name": "HQ_FC", "Args": ["1","50",…] }. +The argument grammar (complete quoted runs admitted, quote-aware comma +split) is SiemensCycleCallSyntax's, reused verbatim.
    • Bare-word callL9810, L_ZYM91, +HH_ROBOTOFF, with an optional repeat count L123 P3 → +{ "Name": "L123", "P": 3 }. Restricted to L-leading or +underscore-bearing identifiers on purpose: this syntax runs ahead of +FlagSyntax and a generic bare-identifier capture would +steal TRAORI-class words before their consumers ever saw them — the +same underscore heuristic NamedIdentPattern +blessed for assignments (corpus named entities all carry an +underscore; controller vocabulary never does). On real Sinumerik any +bare identifier can be a by-name call; widening further is a +corpus-driven follow-up.
    +

    +Placement: last of the dedicated statement owners and still before +SiemensQuotedStatementSyntax — quoted arguments must +reach this capture (paired quotes ride inside the args body; a line +whose quotes do not pair falls through whole to the quarantine). +ExcludedNames keeps this catch-all from re-owning +statements that belong elsewhere (default: WRITE stays with +the quoted-statement quarantine; control-flow words are reserved for +their future syntaxes). Whole-line anchored: a call mixed with other +tokens (L9810 M8) does not match and stays visible in the +unparsed warning. +

    +
    +
    + +
    +
    public class SiemensCallStatementSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensCallStatementSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    OEM cycle call with positional args: +#BeforeBuild.UnparsedText: HQ_FC(1,50,75,160) +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "SiemensCall": { "Name": "HQ_FC", "Args": ["1", "50", "75", "160"] }
    +  }
    +}
    +

    Bare L-number call (Renishaw style): +#BeforeBuild.UnparsedText: L9810 +#AfterBuild:

    +
    {
    +  "Parsing": { "SiemensCall": { "Name": "L9810" } }
    +}
    +

    L-call with repeat count: +#BeforeBuild.UnparsedText: L123 P3 +#AfterBuild:

    +
    {
    +  "Parsing": { "SiemensCall": { "Name": "L123", "P": 3 } }
    +}
    +

    Underscore-bearing bare identifier (OEM switch subprogram): +#BeforeBuild.UnparsedText: HH_ROBOTOFF +#AfterBuild:

    +
    {
    +  "Parsing": { "SiemensCall": { "Name": "HH_ROBOTOFF" } }
    +}
    +

    A plain bare identifier (no L prefix, no underscore) is NOT a call +shape here — left for the flag word table and the visible unparsed +warning: +#BeforeBuild.UnparsedText: TOFRAME +#AfterBuild:

    +
    {
    +  "UnparsedText": "TOFRAME"
    +}
    +

    An excluded name falls through whole (WRITE belongs to the +quoted-statement quarantine): +#BeforeBuild.UnparsedText: WRITE(VAR,“file”,“text”) +#AfterBuild:

    +
    {
    +  "UnparsedText": "WRITE(VAR,\"file\",\"text\")"
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensCallStatementSyntax() + +

    + +

    Parameterless instance with default settings.

    +
    +
    + +
    +
    public SiemensCallStatementSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensCallStatementSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public SiemensCallStatementSyntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Source XML element.

    +
    +
    + + + + + + + + + + + + +

    Properties +

    + + + + +

    + ExcludedNames + +

    + +

    Identifiers this catch-all must never treat as a call — matched +case-insensitively against the callee name. See the class remarks +for the default rationale.

    +
    +
    + +
    +
    public List<string> ExcludedNames { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    List<string>
    +
    +
    + + + + + + + + + + +

    + 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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensCycleCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensCycleCallSyntax.html new file mode 100644 index 00000000..0ade7abb --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensCycleCallSyntax.html @@ -0,0 +1,650 @@ + + + + + Class SiemensCycleCallSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensCycleCallSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Captures whitelisted Siemens cycle calls of the shape +NAME(arg1,arg2,…) (or the bare NAME form) from the +unparsed line text into a Parsing.NAME sub-object holding the +verbatim positional argument strings: +CYCLE832(0.05,_ORI_FINISH,0.8) → +Parsing.CYCLE832 = { “Args”: [“0.05”, “_ORI_FINISH”, “0.8”] }. +Empty slots (,,) stay as empty strings; NAME() yields an +empty Args array; a bare NAME yields +{ “Bare”: true } (a marker — empty sub-objects would be swept +by intermediate CleanupParsing calls before the consumer runs). +A brand Logic syntax consumes the sub-object +(e.g. SiemensPathSmoothingSyntax +for CYCLE832, +SiemensCycle800TiltSyntax for +CYCLE800).

    +

    +Strictly whitelist-based (CycleNames, default +CYCLE832 + CYCLE800) — a generic WORD(args) +capture would eat OEM/unknown calls (HQ_FC(...), +L_39(...)) whose safe-skip handling is a separate work item, +and every unlisted call deliberately stays whole in +UnparsedText for the visible +UnparsedText--Remaining warning. +

    +

    +Must be placed early in the Parsing bundle — before the assignment +and tag-value syntaxes: argument tokens standing after ( or +, (_ORI_FINISH, or axis-letter shapes like V1) +would otherwise be shredded by +NamedVarAssignmentSyntax / tag-value captures. +Quoted arguments are supported for CYCLE800's swivel-data-record +name (CYCLE800(1,"TC1",…)): the args body admits complete +"…" runs (which may hide ) or ,) and the +comma split is quote-aware; quotes are kept verbatim in the captured +arg string so the consumer distinguishes "0" (name) from +0 (number). A line whose quotes do not pair falls through +whole to SiemensQuotedStatementSyntax's quarantine. +

    +
    +
    + +
    +
    public class SiemensCycleCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensCycleCallSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Full arm call with an identifier argument: +#BeforeBuild.UnparsedText: CYCLE832(0.05,_ORI_FINISH,0.8) +#AfterBuild:

    +
    {
    +  "Parsing": { "CYCLE832": { "Args": ["0.05", "_ORI_FINISH", "0.8"] } }
    +}
    +

    Cancel form with empty parentheses: +#BeforeBuild.UnparsedText: CYCLE832() +#AfterBuild:

    +
    {
    +  "Parsing": { "CYCLE832": { "Args": [] } }
    +}
    +

    Leading-dot tolerance and numeric mode (older post shape), mixed line: +#BeforeBuild.UnparsedText: N21 CYCLE832(.03,1,1) +#AfterBuild:

    +
    {
    +  "UnparsedText": "N21",
    +  "Parsing": { "CYCLE832": { "Args": [".03", "1", "1"] } }
    +}
    +

    CYCLE800 with a quoted swivel-data-record name — the quoted run is +one argument (quotes preserved for the consumer) and the remaining +positional args split normally: +#BeforeBuild.UnparsedText: CYCLE800(1,“R_DATA”,0,57,0,0,0,20.0116,4.5217,0,0,0,0,-1,0) +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "CYCLE800": {
    +      "Args": [
    +        "1", "\"R_DATA\"", "0", "57", "0", "0", "0",
    +        "20.0116", "4.5217", "0", "0", "0", "0", "-1", "0"
    +      ]
    +    }
    +  }
    +}
    +

    A comma inside the quoted name does not split — the quoted run stays +one argument (the reason the split is quote-aware at all): +#BeforeBuild.UnparsedText: CYCLE800(1,“A,B”,0,57) +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "CYCLE800": { "Args": ["1", "\"A,B\"", "0", "57"] }
    +  }
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensCycleCallSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public SiemensCycleCallSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensCycleCallSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public SiemensCycleCallSyntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Source XML element.

    +
    +
    + + + + + + + + + + + + +

    Fields +

    + + + +

    + ArgsKey + +

    + +

    Sub-object key holding the verbatim positional argument strings.

    +
    +
    + +
    +
    public const string ArgsKey = "Args"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + BareKey + +

    + +

    Marker key for the bare (parenthesis-less) call form — keeps the +sub-object non-empty so CleanupParsing sweeps by earlier +Logic syntaxes cannot drop the signal.

    +
    +
    + +
    +
    public const string BareKey = "Bare"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + +

    Properties +

    + + + + +

    + CycleNames + +

    + +

    Cycle names this syntax captures. Whitelist only — every unlisted +call stays whole in UnparsedText (see class remarks).

    +
    +
    + +
    +
    public List<string> CycleNames { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    List<string>
    +
    +
    + + + + + + + + + + +

    + 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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensDefStatementSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensDefStatementSyntax.html new file mode 100644 index 00000000..6c292994 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensDefStatementSyntax.html @@ -0,0 +1,500 @@ + + + + + Class SiemensDefStatementSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensDefStatementSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Consumes Sinumerik variable declarations +(DEF REAL _X_HOME=155.5, _SAFE_Z / DEF INT N_ST=3) and +lowers each declared name into Parsing.Assignments: initialised +names carry their initialiser expression text (the Evaluation bundle +resolves and routes it into Vars.Named like any named +assignment), bare names carry “0” — Sinumerik default-initialises +numeric types to zero, so a later G0 Z=_SAFE_Z reads 0 instead of +failing vacant.

    +

    +Must run before NamedVarAssignmentSyntax in +the Parsing bundle: on a DEF line that syntax would capture +_X_HOME=155.5 but strand DEF REAL (and the comma list) as +unparsed residue. Initialiser expressions are delimited by the +SiemensExpressionParser longest-valid-prefix rule, so +parenthesised arithmetic and whitespace survive; a non-numeric type or +unparsable initialiser leaves the whole statement untouched (visible as +residue) rather than half-consuming it. +

    +

    +BOOL/CHAR initialise to 0 like INT; STRING +declarations are not lowered (string values have no numeric store) — +the statement is consumed whole so it cannot shed ghost tokens. The +declaration itself leaves no Parsing record: the lowered Assignments +entries carry the entire semantic payload, and an inert record would +only re-surface as an Unconsumed residue. +

    +
    +
    + +
    +
    public class SiemensDefStatementSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensDefStatementSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    #BeforeBuild.UnparsedText: DEF REAL _X_HOME=155.5, _SAFE_Z +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "Assignments": { "_X_HOME": "155.5", "_SAFE_Z": "0" }
    +  }
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensDefStatementSyntax() + +

    + +

    Default constructor.

    +
    +
    + +
    +
    public SiemensDefStatementSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensDefStatementSyntax(XElement) + +

    + +

    Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise.

    +
    +
    + +
    +
    public SiemensDefStatementSyntax(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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensFrameStatementSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensFrameStatementSyntax.html new file mode 100644 index 00000000..2aeafea3 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensFrameStatementSyntax.html @@ -0,0 +1,668 @@ + + + + + Class SiemensFrameStatementSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensFrameStatementSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Captures a whole Siemens frame statement (TRANS/ATRANS/ROT/AROT/ +ROTS/AROTS/CROTS/SCALE/ASCALE/MIRROR/AMIRROR, bare or with +arguments) into a Parsing.<keyword> sub-object. +Sinumerik requires frame instructions in a block of their own, so +the whole remaining line belongs to the statement.

    +

    +The consumed keywords (TRANS/ATRANS/ROT/AROT/ROTS/AROTS — see +SiemensProgrammableFrameSyntax) +are captured structured: each argument token becomes a +sub-key — glued axis words (X0, Y90.) and equals forms +(RPL=45, Z=R5) both supported. Literal values are +stored as JSON numbers; non-literal right-hand sides stay strings so +VariableEvaluatorSyntax resolves them +in the Evaluation stage (AROT Z=R5 → +Parsing.AROT = { "Z": "R5" }). A token outside the modeled +grammar makes the whole statement fall back to the verbatim +StatementKey capture — never a half-consumed line. +

    +

    +The remaining keywords (CROTS/SCALE/ASCALE/MIRROR/AMIRROR +— zero corpus occurrences, no simulation) keep the verbatim +{ "Statement": "<args>" } quarantine; the Logic consumer +reports them as recognized-but-not-simulated. Either way the axis +words are kept out of reach of the quote/context-blind tag-value +syntaxes below, which would otherwise mint them into +Parsing.X/Y/Z and let ProgramXyzSyntax +turn a frame statement into a very real ghost rapid. +Deferred-but-unmodeled must mean "no transform yet", never +"extra motion". +

    +

    +Must be placed early in the Parsing bundle — after +BlockSkipSyntax, before every assignment / tag-value +syntax (the ROT RPL=45 shape would otherwise feed +NamedVarAssignmentSyntax). +

    +
    +
    + +
    +
    public class SiemensFrameStatementSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensFrameStatementSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Translation with arguments — structured capture, literal axis words +become JSON numbers: +#BeforeBuild.UnparsedText: TRANS X0 Y0 Z0 +#AfterBuild:

    +
    {
    +  "Parsing": { "TRANS": { "X": 0, "Y": 0, "Z": 0 } }
    +}
    +

    Bare cancel form — marker instead of an empty sub-object (empty +sub-objects would be swept by intermediate CleanupParsing +calls, silently dropping the cancel signal): +#BeforeBuild.UnparsedText: ROT +#AfterBuild:

    +
    {
    +  "Parsing": { "ROT": { "Bare": true } }
    +}
    +

    Additive rotation — corpus shape: +#BeforeBuild.UnparsedText: AROT Y90. +#AfterBuild:

    +
    {
    +  "Parsing": { "AROT": { "Y": 90 } }
    +}
    +

    In-plane rotation via the equals form: +#BeforeBuild.UnparsedText: ROT RPL=45 +#AfterBuild:

    +
    {
    +  "Parsing": { "ROT": { "RPL": 45 } }
    +}
    +

    Non-literal right-hand side stays a string for the Evaluation-stage +variable evaluator: +#BeforeBuild.UnparsedText: AROT Z=R5 +#AfterBuild:

    +
    {
    +  "Parsing": { "AROT": { "Z": "R5" } }
    +}
    +

    Unmodeled keyword keeps the verbatim quarantine (record-only): +#BeforeBuild.UnparsedText: SCALE X2 Y2 +#AfterBuild:

    +
    {
    +  "Parsing": { "SCALE": { "Statement": "X2 Y2" } }
    +}
    +

    A token outside the modeled grammar (here an unknown key) makes the +whole statement fall back to the verbatim capture — no axis is +half-consumed and the residue stays visible: +#BeforeBuild.UnparsedText: TRANS X10 CFINE=2 +#AfterBuild:

    +
    {
    +  "Parsing": { "TRANS": { "Statement": "X10 CFINE=2" } }
    +}
    +

    Solid-angle rotation — structured like the plain rotation family +(the pair orients a plane; the Logic consumer owns the pair math): +#BeforeBuild.UnparsedText: ROTS X30 Y40 +#AfterBuild:

    +
    {
    +  "Parsing": { "ROTS": { "X": 30, "Y": 40 } }
    +}
    +

    CROTS (database-frame reference, not simulated) is captured +but stays on the verbatim quarantine: +#BeforeBuild.UnparsedText: CROTS X30 Y40 +#AfterBuild:

    +
    {
    +  "Parsing": { "CROTS": { "Statement": "X30 Y40" } }
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensFrameStatementSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public SiemensFrameStatementSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensFrameStatementSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public SiemensFrameStatementSyntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Source XML element.

    +
    +
    + + + + + + + + + + + + +

    Fields +

    + + + +

    + BareKey + +

    + +

    Marker key for the bare (argument-less, i.e. cancel) form — keeps +the sub-object non-empty so intermediate CleanupParsing +sweeps cannot drop the signal.

    +
    +
    + +
    +
    public const string BareKey = "Bare"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + StatementKey + +

    + +

    Sub-object key holding the verbatim statement arguments (fallback / record-only shape).

    +
    +
    + +
    +
    public const string StatementKey = "Statement"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + StructuredKeywords + +

    + +

    Keywords whose arguments are captured structured (axis sub-keys) +because SiemensProgrammableFrameSyntax +consumes them. The remaining Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensFrameStatementSyntax.FrameRegex keywords stay +on the verbatim StatementKey capture (record-only).

    +
    +
    + +
    +
    public static readonly string[] StructuredKeywords
    +
    + + + + +

    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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensGotoParsingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensGotoParsingSyntax.html new file mode 100644 index 00000000..2c457a2f --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensGotoParsingSyntax.html @@ -0,0 +1,532 @@ + + + + + Class SiemensGotoParsingSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensGotoParsingSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Captures Siemens GOTOF/GOTOB jump statements whole into +Parsing.SiemensGoto. Four forms are recognised, mirroring the +Fanuc phrase-level split (IF ... GOTO is one phrase, not an IF +composed with a GOTO):

    +
    • GOTOF <label> / GOTOB <label> — + unconditional forward / backward jump.
    • IF <cond> GOTOF <label> / + IF <cond> GOTOB <label> — the Sinumerik + single-line conditional jump (no brackets around the condition).
    +

    +Placement: inside the whole-statement owner group, after +SiemensRepeatParsingSyntax and before +SiemensIfParsingSyntax — the IF-jump forms carry a +strictly longer prefix than the block IF <cond> phrase, +so this owner must win first (the block-IF owner also refuses +GOTOF/GOTOB tails defensively). Must run before the assignment +syntaxes: IF R1==1 GOTOF LBL1 would otherwise be shredded by +the assignment capture (its LHS grammar matches R1 and the +first = of ==). +

    +

    +The label is captured as written (LBL1, MARKE_A, or an +N<num> block number — both are legal Sinumerik jump +targets). The condition string is left for +VariableEvaluatorSyntax's pass-2 tree +walk; SiemensGotoSyntax +consumes the section. +

    +
    +
    + +
    +
    public class SiemensGotoParsingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensGotoParsingSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Bare forward jump: +#BeforeBuild.UnparsedText: GOTOF LBL1 +#AfterBuild:

    +
    {
    +  "Parsing": { "SiemensGoto": { "Term": "GOTOF", "Label": "LBL1" } }
    +}
    +

    Bare backward jump to an underscore label: +#BeforeBuild.UnparsedText: GOTOB MARKE_A +#AfterBuild:

    +
    {
    +  "Parsing": { "SiemensGoto": { "Term": "GOTOB", "Label": "MARKE_A" } }
    +}
    +

    Single-line conditional forward jump — the condition keeps its +Sinumerik spelling for the evaluator: +#BeforeBuild.UnparsedText: IF R1==1 GOTOF LBL2 +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "SiemensGoto": {
    +      "Term": "IF...GOTOF",
    +      "Label": "LBL2",
    +      "Condition": "R1==1"
    +    }
    +  }
    +}
    +

    Conditional backward jump with a comparison condition: +#BeforeBuild.UnparsedText: IF R10<5 GOTOB START_MK +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "SiemensGoto": {
    +      "Term": "IF...GOTOB",
    +      "Label": "START_MK",
    +      "Condition": "R10<5"
    +    }
    +  }
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensGotoParsingSyntax() + +

    + +

    Parameterless instance (no XML state).

    +
    +
    + +
    +
    public SiemensGotoParsingSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensGotoParsingSyntax(XElement) + +

    + +

    XML ctor (no child elements; reserved for forward compatibility).

    +
    +
    + +
    +
    public SiemensGotoParsingSyntax(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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensIfParsingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensIfParsingSyntax.html new file mode 100644 index 00000000..550caf64 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensIfParsingSyntax.html @@ -0,0 +1,518 @@ + + + + + Class SiemensIfParsingSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensIfParsingSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Captures the Siemens block-conditional phrases whole into +Parsing.SiemensIf: IF <cond> (no brackets on +Sinumerik), ELSE, ENDIF. The single-line jump form +(IF <cond> GOTOF <label>) belongs to +SiemensGotoParsingSyntax, which runs immediately before +this owner; a GOTOF/GOTOB tail is additionally refused here so an +ordering drift degrades to a visible unparsed warning instead of a +silently mis-captured block-IF (the Fanuc (?!GOTO\b) +precedent).

    +

    +Placement: whole-statement owner group, before the assignment +syntaxes — a condition like R1==1 would otherwise be shredded +by the assignment capture (LHS grammar matches R1 plus the +first =). The condition string is left for +VariableEvaluatorSyntax's pass-2 walk; +SiemensIfSyntax consumes the +section and decides the branch. +

    +
    +
    + +
    +
    public class SiemensIfParsingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensIfParsingSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Block-conditional entry — the condition keeps its Sinumerik spelling: +#BeforeBuild.UnparsedText: IF R1==1 +#AfterBuild:

    +
    {
    +  "Parsing": { "SiemensIf": { "Term": "IF", "Condition": "R1==1" } }
    +}
    +

    Alternative branch separator: +#BeforeBuild.UnparsedText: ELSE +#AfterBuild:

    +
    {
    +  "Parsing": { "SiemensIf": { "Term": "ELSE" } }
    +}
    +

    Terminator: +#BeforeBuild.UnparsedText: ENDIF +#AfterBuild:

    +
    {
    +  "Parsing": { "SiemensIf": { "Term": "ENDIF" } }
    +}
    +

    A single-line jump is NOT captured here — it belongs to the GOTO +owner (this pin guards the ordering-drift defence): +#BeforeBuild.UnparsedText: IF R1==1 GOTOF LBL1 +#AfterBuild:

    +
    {
    +  "UnparsedText": "IF R1==1 GOTOF LBL1"
    +}
    +

    The glued parenthesised spelling is owned too — the parenthesised +condition goes to the evaluator verbatim: +#BeforeBuild.UnparsedText: IF(R1==1) +#AfterBuild:

    +
    {
    +  "Parsing": { "SiemensIf": { "Term": "IF", "Condition": "(R1==1)" } }
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensIfParsingSyntax() + +

    + +

    Parameterless instance (no XML state).

    +
    +
    + +
    +
    public SiemensIfParsingSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensIfParsingSyntax(XElement) + +

    + +

    XML ctor (no child elements; reserved for forward compatibility).

    +
    +
    + +
    +
    public SiemensIfParsingSyntax(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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensLabelSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensLabelSyntax.html new file mode 100644 index 00000000..ba933dea --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensLabelSyntax.html @@ -0,0 +1,508 @@ + + + + + Class SiemensLabelSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensLabelSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Consumes a Siemens label at block start (LBL1: — identifier +followed by a colon, optionally after the N head index) into a +block-root SiemensLabel record. Labels are passive jump +targets: in the normal flow the record is pure bookkeeping (no motion, +no state), while SiemensRepeatSyntax +uses this same syntax as its LabelScanUtil +probe and matches candidates on SiemensLabel.Name. Writing the +record at the block root (not under Parsing) keeps the passive +token out of UnconsumedCheckSyntax's +audit without needing a Logic-layer consumer — mirroring how +SiemensDefStatementSyntax leaves no Parsing.Def +entry behind.

    +

    +Anchored at the start of the remaining unparsed text, so a label +buried mid-line is not captured (Sinumerik allows one label per block, +at block start). Text after the colon stays in +UnparsedText for the rest of the +pipeline — LBL1: G1 X0 executes its trailing motion normally. +The probe usage requires this syntax to stay self-sufficient: it reads +only UnparsedText and never touches the dependency list. +

    +
    +
    + +
    +
    public class SiemensLabelSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensLabelSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Plain label line (trailing whitespace tolerated): +#BeforeBuild.UnparsedText: LBL1: +#AfterBuild:

    +
    {
    +  "SiemensLabel": { "Name": "LBL1" }
    +}
    +

    Label with trailing code — the remainder stays for the pipeline: +#BeforeBuild.UnparsedText: MARK_A: G1 X0 +#AfterBuild:

    +
    {
    +  "UnparsedText": "G1 X0",
    +  "SiemensLabel": { "Name": "MARK_A" }
    +}
    +

    A colon further into the line is not a label — nothing is captured: +#BeforeBuild.UnparsedText: G1 X0 LBL1: +#AfterBuild:

    +
    {
    +  "UnparsedText": "G1 X0 LBL1:"
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensLabelSyntax() + +

    + +

    Parameterless instance (no XML state).

    +
    +
    + +
    +
    public SiemensLabelSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensLabelSyntax(XElement) + +

    + +

    XML ctor (no child elements; reserved for forward compatibility).

    +
    +
    + +
    +
    public SiemensLabelSyntax(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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensLoopParsingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensLoopParsingSyntax.html new file mode 100644 index 00000000..962bd59c --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensLoopParsingSyntax.html @@ -0,0 +1,554 @@ + + + + + Class SiemensLoopParsingSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensLoopParsingSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Captures the Siemens loop-construct phrases whole, one Parsing +section per construct family:

    +
    • WHILE <cond> / ENDWHILE → + Parsing.SiemensWhile.
    • FOR <var> = <start> TO <end> / + ENDFORParsing.SiemensFor. The start expression is + stored as a single-entry Init map keyed by the variable name + — the evaluator's pass-2 tree walk rewrites values only, never + keys, so the loop variable's name survives even when it collides + with a set named variable. Literal start/end bounds are written as + numeric JSON values directly (writer decides the node type); + expressions stay strings for the evaluator.
    • bare REPEAT / UNTIL <cond> → + Parsing.SiemensRepeatUntil. Only the label-less form is + taken — REPEAT LBL1 ... is the P4 section repeat owned by + SiemensRepeatParsingSyntax, which runs earlier in the + statement group.
    • LOOP / ENDLOOPParsing.SiemensLoop.
    +

    +Placement: whole-statement owner group, after +SiemensGotoParsingSyntax / SiemensIfParsingSyntax +and before the assignment syntaxes — FOR R1=0 TO 10 would +otherwise be shredded by the assignment capture (R1=0 is a +legal assignment shape and the TO 10 tail strands). +SiemensLoopSyntax consumes all +four sections against its shared loop-frame stack. +

    +
    +
    + +
    +
    public class SiemensLoopParsingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensLoopParsingSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Pre-test loop entry — the condition keeps its Sinumerik spelling: +#BeforeBuild.UnparsedText: WHILE R1<=5 +#AfterBuild:

    +
    {
    +  "Parsing": { "SiemensWhile": { "Term": "WHILE", "Condition": "R1<=5" } }
    +}
    +

    Pre-test loop terminator: +#BeforeBuild.UnparsedText: ENDWHILE +#AfterBuild:

    +
    {
    +  "Parsing": { "SiemensWhile": { "Term": "ENDWHILE" } }
    +}
    +

    Counting loop with literal bounds — literals are written numeric: +#BeforeBuild.UnparsedText: FOR R1 = 0 TO 10 +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "SiemensFor": {
    +      "Term": "FOR",
    +      "Init": { "R1": 0 },
    +      "End": 10
    +    }
    +  }
    +}
    +

    Counting loop with expression bounds — expressions stay strings for +the evaluator: +#BeforeBuild.UnparsedText: FOR R2=R5 TO R6+1 +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "SiemensFor": {
    +      "Term": "FOR",
    +      "Init": { "R2": "R5" },
    +      "End": "R6+1"
    +    }
    +  }
    +}
    +

    Post-test loop entry (bare form only — the labelled REPEAT is the P4 +section repeat): +#BeforeBuild.UnparsedText: REPEAT +#AfterBuild:

    +
    {
    +  "Parsing": { "SiemensRepeatUntil": { "Term": "REPEAT" } }
    +}
    +

    Post-test loop exit condition: +#BeforeBuild.UnparsedText: UNTIL R3>100 +#AfterBuild:

    +
    {
    +  "Parsing": { "SiemensRepeatUntil": { "Term": "UNTIL", "Condition": "R3>100" } }
    +}
    +

    Endless loop entry: +#BeforeBuild.UnparsedText: LOOP +#AfterBuild:

    +
    {
    +  "Parsing": { "SiemensLoop": { "Term": "LOOP" } }
    +}
    +

    Endless loop terminator: +#BeforeBuild.UnparsedText: ENDLOOP +#AfterBuild:

    +
    {
    +  "Parsing": { "SiemensLoop": { "Term": "ENDLOOP" } }
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensLoopParsingSyntax() + +

    + +

    Parameterless instance (no XML state).

    +
    +
    + +
    +
    public SiemensLoopParsingSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensLoopParsingSyntax(XElement) + +

    + +

    XML ctor (no child elements; reserved for forward compatibility).

    +
    +
    + +
    +
    public SiemensLoopParsingSyntax(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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensMcallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensMcallSyntax.html new file mode 100644 index 00000000..b05099be --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensMcallSyntax.html @@ -0,0 +1,548 @@ + + + + + Class SiemensMcallSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensMcallSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Captures a Siemens MCALL modal-call statement whole into a +Parsing.MCALL sub-object: +MCALL CYCLE81(500.,327.9137,0.5,324.564,,,0,1,0) → +{ “CycleName”: “CYCLE81”, “Args”: ["500.", …] }; a bare +MCALL (modal cancel) → { “Bare”: true }; a +parenthesis-less callee (MCALL L123) keeps +CycleName without Args. The Logic consumer +(SiemensModalCycleSyntax) maps the +supported CYCLE8x family onto the shared canned-cycle modal +machinery and warns on everything else.

    +

    +Whole-statement owner: MCALL lines are standalone in the corpus, and +owning the full statement keeps the cycle's positional arguments away +from the assignment / tag-value syntaxes (same shredding hazard as +SiemensCycleCallSyntax, whose argument grammar — +including complete quoted runs — is reused verbatim). Must run +before SiemensCycleCallSyntax: a whitelisted cycle name +after MCALL would otherwise be captured bare-of-context and +strand the MCALLL word. A line mixing MCALL with other tokens +does not match and falls through whole to the visible unparsed +warning. +

    +
    +
    + +
    +
    public class SiemensMcallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensMcallSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Modal drilling-cycle arm (Operate 9-arg extension form): +#BeforeBuild.UnparsedText: MCALL CYCLE81(500.,327.9137,0.5,324.564,,,0,1,0) +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "MCALL": {
    +      "CycleName": "CYCLE81",
    +      "Args": ["500.", "327.9137", "0.5", "324.564", "", "", "0", "1", "0"]
    +    }
    +  }
    +}
    +

    Bare cancel: +#BeforeBuild.UnparsedText: MCALL +#AfterBuild:

    +
    {
    +  "Parsing": { "MCALL": { "Bare": true } }
    +}
    +

    Parenthesis-less callee (recorded; the Logic consumer warns): +#BeforeBuild.UnparsedText: MCALL L123 +#AfterBuild:

    +
    {
    +  "Parsing": { "MCALL": { "CycleName": "L123" } }
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensMcallSyntax() + +

    + +

    Parameterless instance (no XML state).

    +
    +
    + +
    +
    public SiemensMcallSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensMcallSyntax(XElement) + +

    + +

    XML ctor (no child elements; reserved for forward compatibility).

    +
    +
    + +
    +
    public SiemensMcallSyntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Root element named XName.

    +
    +
    + + + + + + + + + + + + +

    Fields +

    + + + +

    + CycleNameKey + +

    + +

    Sub-object key holding the modal callee's name.

    +
    +
    + +
    +
    public const string CycleNameKey = "CycleName"
    +
    + + + + +

    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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensMsgSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensMsgSyntax.html new file mode 100644 index 00000000..a3550f4c --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensMsgSyntax.html @@ -0,0 +1,512 @@ + + + + + Class SiemensMsgSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensMsgSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Consumes a Siemens MSG(“text”) operator display call (or the +bare MSG() clear form) from the unparsed line text into a +block-root Msg section, and surfaces the text as a +Msg–Display system message.

    +

    +Must be placed before every assignment / tag-value / flag +syntax in the Parsing bundle (right after +TailCommentSyntax / +BlockSkipSyntax): the quoted argument routinely +contains NC-shaped tokens (MSG("TOOL=5"), MSG("G54 OK"), +MSG("T20 R8.000 CR:2.500")) which the quote-blind consumers +downstream would otherwise shred into ghost assignments, flags, or +axis words. Consuming the whole call here removes that hazard +structurally — the planned fix recorded on +NcSyntaxUtil's assignment RHS-boundary notes. +

    +

    +Only the two literal forms are consumed: MSG("...") and +MSG(). Non-literal arguments (string concatenation +MSG("A"<<R1), variable interpolation) are deliberately +left whole in UnparsedText for the +visible UnparsedText--Remaining warning — half-eating them +would silently lose content. +

    +
    +
    + +
    +
    public class SiemensMsgSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensMsgSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Plain display message — whole call consumed, text recorded: +#BeforeBuild.UnparsedText: MSG(“ROUGHING”) +#AfterBuild:

    +
    {
    +  "Msg": { "Text": "ROUGHING" }
    +}
    +

    Bare clear form — section recorded without Text: +#BeforeBuild.UnparsedText: MSG() +#AfterBuild:

    +
    {
    +  "Msg": {}
    +}
    +

    Mixed line — the surrounding motion words stay parseable; quoted +NC-shaped tokens (TOOL=5) never reach the assignment syntaxes: +#BeforeBuild.UnparsedText: G01 X10 MSG(“TOOL=5”) +#AfterBuild:

    +
    {
    +  "UnparsedText": "G01 X10",
    +  "Msg": { "Text": "TOOL=5" }
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensMsgSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public SiemensMsgSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensMsgSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public SiemensMsgSyntax(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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensProcSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensProcSyntax.html new file mode 100644 index 00000000..42703de4 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensProcSyntax.html @@ -0,0 +1,501 @@ + + + + + Class SiemensProcSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensProcSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Consumes a Siemens PROC subprogram declaration header +(PROC MY_SUB, PROC CONTOUR(REAL X, INT N) SAVE DISPLOF) +whole into a block-root SiemensProc record. The header +carries no executable state for the simulation — parameter binding to +caller arguments is a later work item — but leaving it unparsed would +shred the parameter list into ghost axis words the moment the +tag-value syntaxes run, so the whole statement is owned here. The +verbatim remainder after the name is preserved on +Statement for cache-dump readers. Writes at +the block root (no Parsing entry) following the +SiemensDefStatementSyntax precedent — a record with no +Logic consumer must not land in the +UnconsumedCheckSyntax audit tree.

    +

    +Anchored at statement start: Sinumerik requires PROC to be the +first statement of a subprogram file, so a mid-line PROC is +left alone (visible unparsed warning). +

    +
    +
    + +
    +
    public class SiemensProcSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensProcSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    Bare declaration: +#BeforeBuild.UnparsedText: PROC MY_SUB +#AfterBuild:

    +
    {
    +  "SiemensProc": { "Name": "MY_SUB" }
    +}
    +

    Declaration with parameter list and attributes — remainder kept verbatim: +#BeforeBuild.UnparsedText: PROC CONTOUR(REAL LENGTH, INT COUNT) SAVE DISPLOF +#AfterBuild:

    +
    {
    +  "SiemensProc": {
    +    "Name": "CONTOUR",
    +    "Statement": "(REAL LENGTH, INT COUNT) SAVE DISPLOF"
    +  }
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensProcSyntax() + +

    + +

    Parameterless instance (no XML state).

    +
    +
    + +
    +
    public SiemensProcSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensProcSyntax(XElement) + +

    + +

    XML ctor (no child elements; reserved for forward compatibility).

    +
    +
    + +
    +
    public SiemensProcSyntax(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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensQuotedStatementSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensQuotedStatementSyntax.html new file mode 100644 index 00000000..5490cefd --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensQuotedStatementSyntax.html @@ -0,0 +1,576 @@ + + + + + Class SiemensQuotedStatementSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensQuotedStatementSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Quote guard: any line text still carrying a double quote after the +literal-form consumers (SiemensMsgSyntax, +SiemensToolCallSyntax, SiemensCycleCallSyntax) +have run is quarantined whole into +Parsing.QuotedStatement = { “Statement”: “<verbatim>” } — +WRITE(ERROR,“CUTTIME”,“T5 X100”), string-concatenation +MSG("..."<<R1), quoted-argument cycles not yet whitelisted.

    +

    +Every quote-blind syntax below (flags, numbered flags, tag values, +assignments) opens a token boundary at the quote→letter transition, +so without this guard the string contents get minted into REAL parser +state: "G54" inside a WRITE argument silently switches the +active work offset, "T5 X100" mints a ghost tool call plus a +ghost motion. Quarantining keeps the whole statement visible as one +Parsing--Unconsumed entry (QuotedStatement.Statement) +with zero state changes — the same deferred-not-corrupted contract as +SiemensFrameStatementSyntax. Proper consumers (WRITE, +CYCLE800 quoted args) replace this guard per statement family later. +

    +

    +Trade-off, deliberate: on an exotic mixed block the guard also takes +the co-resident plain words (a motion word sharing the block with an +unconsumed quoted call goes into the quarantine too). Losing them is +visible in the warning text; minting false state would be silent — +never trade the first for the second. Corpus quoted statements +(WRITE, non-literal MSG) are standalone blocks. +

    +
    +
    + +
    +
    public class SiemensQuotedStatementSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensQuotedStatementSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    WRITE with quoted arguments — quarantined whole; nothing reaches the +tag-value syntaxes: +#BeforeBuild.UnparsedText: WRITE(ERROR,“CUTTIME”,“T5 X100”) +#AfterBuild:

    +
    {
    +  "Parsing": { "QuotedStatement": { "Statement": "WRITE(ERROR,\"CUTTIME\",\"T5 X100\")" } }
    +}
    +

    Non-literal MSG (string concatenation) — the literal-form +SiemensMsgSyntax deliberately skipped it, so the guard +takes it: +#BeforeBuild.UnparsedText: MSG(“G54 REACHED”<<R1) +#AfterBuild:

    +
    {
    +  "Parsing": { "QuotedStatement": { "Statement": "MSG(\"G54 REACHED\"<<R1)" } }
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensQuotedStatementSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public SiemensQuotedStatementSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensQuotedStatementSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public SiemensQuotedStatementSyntax(XElement src)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    Source XML element.

    +
    +
    + + + + + + + + + + + + +

    Fields +

    + + + +

    + SectionKey + +

    + +

    Parsing key the quarantined statement is stored under.

    +
    +
    + +
    +
    public const string SectionKey = "QuotedStatement"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + StatementKey + +

    + +

    Sub-object key holding the verbatim statement text.

    +
    +
    + +
    +
    public const string StatementKey = "Statement"
    +
    + + + + +

    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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensRepeatParsingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensRepeatParsingSyntax.html new file mode 100644 index 00000000..f96b25dd --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensRepeatParsingSyntax.html @@ -0,0 +1,505 @@ + + + + + Class SiemensRepeatParsingSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensRepeatParsingSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Captures a Siemens REPEAT statement whole into +Parsing.SiemensRepeat: REPEAT LBL1 LBL0 → +{ “Start”: “LBL1”, “End”: “LBL0” }, with an optional trailing +repetition count (P=3 or P3). The Evaluation consumer +(SiemensRepeatSyntax) re-runs +the label-bounded section. The single-label form +(REPEAT LBL1 — repeat from the label back to the REPEAT line) +is captured with End absent; the consumer currently warns it +unsupported (corpus count: zero).

    +

    +Whole-statement owner, anchored at statement start — mixing REPEAT +with other tokens on one block does not match and falls through whole +to the visible unparsed warning. The end-label alternative refuses a +P+digits word so REPEAT LBL1 P3 reads as +start-label + count, not as an end label named P3. +

    +
    +
    + +
    +
    public class SiemensRepeatParsingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensRepeatParsingSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    The corpus shape — two labels, no count: +#BeforeBuild.UnparsedText: REPEAT LBL1 LBL0 +#AfterBuild:

    +
    {
    +  "Parsing": { "SiemensRepeat": { "Start": "LBL1", "End": "LBL0" } }
    +}
    +

    Two labels with a repetition count: +#BeforeBuild.UnparsedText: REPEAT MARK_A MARK_B P=3 +#AfterBuild:

    +
    {
    +  "Parsing": {
    +    "SiemensRepeat": { "Start": "MARK_A", "End": "MARK_B", "P": 3 }
    +  }
    +}
    +

    Single-label form with a P-count — P3 is the count, not an end +label: +#BeforeBuild.UnparsedText: REPEAT LBL1 P3 +#AfterBuild:

    +
    {
    +  "Parsing": { "SiemensRepeat": { "Start": "LBL1", "P": 3 } }
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensRepeatParsingSyntax() + +

    + +

    Parameterless instance (no XML state).

    +
    +
    + +
    +
    public SiemensRepeatParsingSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensRepeatParsingSyntax(XElement) + +

    + +

    XML ctor (no child elements; reserved for forward compatibility).

    +
    +
    + +
    +
    public SiemensRepeatParsingSyntax(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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensToolCallSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensToolCallSyntax.html new file mode 100644 index 00000000..a2670a42 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensToolCallSyntax.html @@ -0,0 +1,505 @@ + + + + + Class SiemensToolCallSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class SiemensToolCallSyntax +

    + +
    +
    Namespace
    Hi.NcParsers.ParsingSyntaxs.Siemens
    +
    Assembly
    HiMech.dll
    +
    + +

    Consumes the Siemens string tool call T=“name” from the +unparsed line text into Parsing.T as a string value +(quotes stripped). Numeric concatenated calls (T5) stay with +the preset's IntegerTagValueSyntax; +ToolChangeSyntax accepts either shape.

    +

    +Must be placed before every tag-value syntax in the Parsing +bundle: tool names routinely contain NC-shaped tokens +(T="D16R3Z6" — quote-blind consumers would mint ghost +Parsing.D/Parsing.Z entries out of the name; +(?<=[0-9]) and quote→letter \b boundaries in +RegexFlagPrefix both open inside the string). +Same structural-consumption rationale as +SiemensMsgSyntax. +

    +

    +A second T="..." behind a ; comment +(T="M6LWXD-1301";T="M6LWX", real corpus shape) never reaches +this syntax — the quote-aware +TailCommentSyntax runs earlier and strips +it. Tool names are matched verbatim, including non-ASCII bytes from +legacy code pages. +

    +
    +
    + +
    +
    public class SiemensToolCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    SiemensToolCallSyntax
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + +

    Examples

    +

    String tool name with embedded NC-shaped tokens — consumed whole, +no ghost D/Z entries: +#BeforeBuild.UnparsedText: T=“D16R3Z6” +#AfterBuild:

    +
    {
    +  "Parsing": { "T": "D16R3Z6" }
    +}
    +

    Mixed line — surrounding words stay for later syntaxes: +#BeforeBuild.UnparsedText: T=“6V” M6 +#AfterBuild:

    +
    {
    +  "UnparsedText": "M6",
    +  "Parsing": { "T": "6V" }
    +}
    + + + + +

    Constructors +

    + + + + +

    + SiemensToolCallSyntax() + +

    + +

    Initializes a new instance with default settings.

    +
    +
    + +
    +
    public SiemensToolCallSyntax()
    +
    + + + + + + + + + + + + + + + +

    + SiemensToolCallSyntax(XElement) + +

    + +

    Initializes a new instance by deserializing from the given XML element.

    +
    +
    + +
    +
    public SiemensToolCallSyntax(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<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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.html new file mode 100644 index 00000000..41b7d46f --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.Siemens.html @@ -0,0 +1,530 @@ + + + + + Namespace Hi.NcParsers.ParsingSyntaxs.Siemens | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + +

    Namespace Hi.NcParsers.ParsingSyntaxs.Siemens

    +
    +
    +
    + +

    +Classes +

    +
    +
    SiemensCallStatementSyntax
    +

    Captures a whole-line Siemens subprogram-call statement into +Parsing.SiemensCall for +SiemensSubProgramCallSyntax to +resolve (inline the file) or safe-skip (structured warning, zero +motion). Two shapes are owned:

    +
    • Parenthesized call, any identifier — +HQ_FC(1,50,75,160), L_39(0.000,0.000), +HH_ROBOT(2){ "Name": "HQ_FC", "Args": ["1","50",…] }. +The argument grammar (complete quoted runs admitted, quote-aware comma +split) is SiemensCycleCallSyntax's, reused verbatim.
    • Bare-word callL9810, L_ZYM91, +HH_ROBOTOFF, with an optional repeat count L123 P3 → +{ "Name": "L123", "P": 3 }. Restricted to L-leading or +underscore-bearing identifiers on purpose: this syntax runs ahead of +FlagSyntax and a generic bare-identifier capture would +steal TRAORI-class words before their consumers ever saw them — the +same underscore heuristic NamedIdentPattern +blessed for assignments (corpus named entities all carry an +underscore; controller vocabulary never does). On real Sinumerik any +bare identifier can be a by-name call; widening further is a +corpus-driven follow-up.
    +

    +Placement: last of the dedicated statement owners and still before +SiemensQuotedStatementSyntax — quoted arguments must +reach this capture (paired quotes ride inside the args body; a line +whose quotes do not pair falls through whole to the quarantine). +ExcludedNames keeps this catch-all from re-owning +statements that belong elsewhere (default: WRITE stays with +the quoted-statement quarantine; control-flow words are reserved for +their future syntaxes). Whole-line anchored: a call mixed with other +tokens (L9810 M8) does not match and stays visible in the +unparsed warning. +

    +
    +
    +
    +
    SiemensCycleCallSyntax
    +

    Captures whitelisted Siemens cycle calls of the shape +NAME(arg1,arg2,…) (or the bare NAME form) from the +unparsed line text into a Parsing.NAME sub-object holding the +verbatim positional argument strings: +CYCLE832(0.05,_ORI_FINISH,0.8) → +Parsing.CYCLE832 = { “Args”: [“0.05”, “_ORI_FINISH”, “0.8”] }. +Empty slots (,,) stay as empty strings; NAME() yields an +empty Args array; a bare NAME yields +{ “Bare”: true } (a marker — empty sub-objects would be swept +by intermediate CleanupParsing calls before the consumer runs). +A brand Logic syntax consumes the sub-object +(e.g. SiemensPathSmoothingSyntax +for CYCLE832, +SiemensCycle800TiltSyntax for +CYCLE800).

    +

    +Strictly whitelist-based (CycleNames, default +CYCLE832 + CYCLE800) — a generic WORD(args) +capture would eat OEM/unknown calls (HQ_FC(...), +L_39(...)) whose safe-skip handling is a separate work item, +and every unlisted call deliberately stays whole in +UnparsedText for the visible +UnparsedText--Remaining warning. +

    +

    +Must be placed early in the Parsing bundle — before the assignment +and tag-value syntaxes: argument tokens standing after ( or +, (_ORI_FINISH, or axis-letter shapes like V1) +would otherwise be shredded by +NamedVarAssignmentSyntax / tag-value captures. +Quoted arguments are supported for CYCLE800's swivel-data-record +name (CYCLE800(1,"TC1",…)): the args body admits complete +"…" runs (which may hide ) or ,) and the +comma split is quote-aware; quotes are kept verbatim in the captured +arg string so the consumer distinguishes "0" (name) from +0 (number). A line whose quotes do not pair falls through +whole to SiemensQuotedStatementSyntax's quarantine. +

    +
    +
    +
    +
    SiemensDefStatementSyntax
    +

    Consumes Sinumerik variable declarations +(DEF REAL _X_HOME=155.5, _SAFE_Z / DEF INT N_ST=3) and +lowers each declared name into Parsing.Assignments: initialised +names carry their initialiser expression text (the Evaluation bundle +resolves and routes it into Vars.Named like any named +assignment), bare names carry “0” — Sinumerik default-initialises +numeric types to zero, so a later G0 Z=_SAFE_Z reads 0 instead of +failing vacant.

    +

    +Must run before NamedVarAssignmentSyntax in +the Parsing bundle: on a DEF line that syntax would capture +_X_HOME=155.5 but strand DEF REAL (and the comma list) as +unparsed residue. Initialiser expressions are delimited by the +SiemensExpressionParser longest-valid-prefix rule, so +parenthesised arithmetic and whitespace survive; a non-numeric type or +unparsable initialiser leaves the whole statement untouched (visible as +residue) rather than half-consuming it. +

    +

    +BOOL/CHAR initialise to 0 like INT; STRING +declarations are not lowered (string values have no numeric store) — +the statement is consumed whole so it cannot shed ghost tokens. The +declaration itself leaves no Parsing record: the lowered Assignments +entries carry the entire semantic payload, and an inert record would +only re-surface as an Unconsumed residue. +

    +
    +
    +
    +
    SiemensFrameStatementSyntax
    +

    Captures a whole Siemens frame statement (TRANS/ATRANS/ROT/AROT/ +ROTS/AROTS/CROTS/SCALE/ASCALE/MIRROR/AMIRROR, bare or with +arguments) into a Parsing.<keyword> sub-object. +Sinumerik requires frame instructions in a block of their own, so +the whole remaining line belongs to the statement.

    +

    +The consumed keywords (TRANS/ATRANS/ROT/AROT/ROTS/AROTS — see +SiemensProgrammableFrameSyntax) +are captured structured: each argument token becomes a +sub-key — glued axis words (X0, Y90.) and equals forms +(RPL=45, Z=R5) both supported. Literal values are +stored as JSON numbers; non-literal right-hand sides stay strings so +VariableEvaluatorSyntax resolves them +in the Evaluation stage (AROT Z=R5 → +Parsing.AROT = { "Z": "R5" }). A token outside the modeled +grammar makes the whole statement fall back to the verbatim +StatementKey capture — never a half-consumed line. +

    +

    +The remaining keywords (CROTS/SCALE/ASCALE/MIRROR/AMIRROR +— zero corpus occurrences, no simulation) keep the verbatim +{ "Statement": "<args>" } quarantine; the Logic consumer +reports them as recognized-but-not-simulated. Either way the axis +words are kept out of reach of the quote/context-blind tag-value +syntaxes below, which would otherwise mint them into +Parsing.X/Y/Z and let ProgramXyzSyntax +turn a frame statement into a very real ghost rapid. +Deferred-but-unmodeled must mean "no transform yet", never +"extra motion". +

    +

    +Must be placed early in the Parsing bundle — after +BlockSkipSyntax, before every assignment / tag-value +syntax (the ROT RPL=45 shape would otherwise feed +NamedVarAssignmentSyntax). +

    +
    +
    +
    +
    SiemensGotoParsingSyntax
    +

    Captures Siemens GOTOF/GOTOB jump statements whole into +Parsing.SiemensGoto. Four forms are recognised, mirroring the +Fanuc phrase-level split (IF ... GOTO is one phrase, not an IF +composed with a GOTO):

    +
    • GOTOF <label> / GOTOB <label> — + unconditional forward / backward jump.
    • IF <cond> GOTOF <label> / + IF <cond> GOTOB <label> — the Sinumerik + single-line conditional jump (no brackets around the condition).
    +

    +Placement: inside the whole-statement owner group, after +SiemensRepeatParsingSyntax and before +SiemensIfParsingSyntax — the IF-jump forms carry a +strictly longer prefix than the block IF <cond> phrase, +so this owner must win first (the block-IF owner also refuses +GOTOF/GOTOB tails defensively). Must run before the assignment +syntaxes: IF R1==1 GOTOF LBL1 would otherwise be shredded by +the assignment capture (its LHS grammar matches R1 and the +first = of ==). +

    +

    +The label is captured as written (LBL1, MARKE_A, or an +N<num> block number — both are legal Sinumerik jump +targets). The condition string is left for +VariableEvaluatorSyntax's pass-2 tree +walk; SiemensGotoSyntax +consumes the section. +

    +
    +
    +
    +
    SiemensIfParsingSyntax
    +

    Captures the Siemens block-conditional phrases whole into +Parsing.SiemensIf: IF <cond> (no brackets on +Sinumerik), ELSE, ENDIF. The single-line jump form +(IF <cond> GOTOF <label>) belongs to +SiemensGotoParsingSyntax, which runs immediately before +this owner; a GOTOF/GOTOB tail is additionally refused here so an +ordering drift degrades to a visible unparsed warning instead of a +silently mis-captured block-IF (the Fanuc (?!GOTO\b) +precedent).

    +

    +Placement: whole-statement owner group, before the assignment +syntaxes — a condition like R1==1 would otherwise be shredded +by the assignment capture (LHS grammar matches R1 plus the +first =). The condition string is left for +VariableEvaluatorSyntax's pass-2 walk; +SiemensIfSyntax consumes the +section and decides the branch. +

    +
    +
    +
    +
    SiemensLabelSyntax
    +

    Consumes a Siemens label at block start (LBL1: — identifier +followed by a colon, optionally after the N head index) into a +block-root SiemensLabel record. Labels are passive jump +targets: in the normal flow the record is pure bookkeeping (no motion, +no state), while SiemensRepeatSyntax +uses this same syntax as its LabelScanUtil +probe and matches candidates on SiemensLabel.Name. Writing the +record at the block root (not under Parsing) keeps the passive +token out of UnconsumedCheckSyntax's +audit without needing a Logic-layer consumer — mirroring how +SiemensDefStatementSyntax leaves no Parsing.Def +entry behind.

    +

    +Anchored at the start of the remaining unparsed text, so a label +buried mid-line is not captured (Sinumerik allows one label per block, +at block start). Text after the colon stays in +UnparsedText for the rest of the +pipeline — LBL1: G1 X0 executes its trailing motion normally. +The probe usage requires this syntax to stay self-sufficient: it reads +only UnparsedText and never touches the dependency list. +

    +
    +
    +
    +
    SiemensLoopParsingSyntax
    +

    Captures the Siemens loop-construct phrases whole, one Parsing +section per construct family:

    +
    • WHILE <cond> / ENDWHILE → + Parsing.SiemensWhile.
    • FOR <var> = <start> TO <end> / + ENDFORParsing.SiemensFor. The start expression is + stored as a single-entry Init map keyed by the variable name + — the evaluator's pass-2 tree walk rewrites values only, never + keys, so the loop variable's name survives even when it collides + with a set named variable. Literal start/end bounds are written as + numeric JSON values directly (writer decides the node type); + expressions stay strings for the evaluator.
    • bare REPEAT / UNTIL <cond> → + Parsing.SiemensRepeatUntil. Only the label-less form is + taken — REPEAT LBL1 ... is the P4 section repeat owned by + SiemensRepeatParsingSyntax, which runs earlier in the + statement group.
    • LOOP / ENDLOOPParsing.SiemensLoop.
    +

    +Placement: whole-statement owner group, after +SiemensGotoParsingSyntax / SiemensIfParsingSyntax +and before the assignment syntaxes — FOR R1=0 TO 10 would +otherwise be shredded by the assignment capture (R1=0 is a +legal assignment shape and the TO 10 tail strands). +SiemensLoopSyntax consumes all +four sections against its shared loop-frame stack. +

    +
    +
    +
    +
    SiemensMcallSyntax
    +

    Captures a Siemens MCALL modal-call statement whole into a +Parsing.MCALL sub-object: +MCALL CYCLE81(500.,327.9137,0.5,324.564,,,0,1,0) → +{ “CycleName”: “CYCLE81”, “Args”: ["500.", …] }; a bare +MCALL (modal cancel) → { “Bare”: true }; a +parenthesis-less callee (MCALL L123) keeps +CycleName without Args. The Logic consumer +(SiemensModalCycleSyntax) maps the +supported CYCLE8x family onto the shared canned-cycle modal +machinery and warns on everything else.

    +

    +Whole-statement owner: MCALL lines are standalone in the corpus, and +owning the full statement keeps the cycle's positional arguments away +from the assignment / tag-value syntaxes (same shredding hazard as +SiemensCycleCallSyntax, whose argument grammar — +including complete quoted runs — is reused verbatim). Must run +before SiemensCycleCallSyntax: a whitelisted cycle name +after MCALL would otherwise be captured bare-of-context and +strand the MCALLL word. A line mixing MCALL with other tokens +does not match and falls through whole to the visible unparsed +warning. +

    +
    +
    +
    +
    SiemensMsgSyntax
    +

    Consumes a Siemens MSG(“text”) operator display call (or the +bare MSG() clear form) from the unparsed line text into a +block-root Msg section, and surfaces the text as a +Msg–Display system message.

    +

    +Must be placed before every assignment / tag-value / flag +syntax in the Parsing bundle (right after +TailCommentSyntax / +BlockSkipSyntax): the quoted argument routinely +contains NC-shaped tokens (MSG("TOOL=5"), MSG("G54 OK"), +MSG("T20 R8.000 CR:2.500")) which the quote-blind consumers +downstream would otherwise shred into ghost assignments, flags, or +axis words. Consuming the whole call here removes that hazard +structurally — the planned fix recorded on +NcSyntaxUtil's assignment RHS-boundary notes. +

    +

    +Only the two literal forms are consumed: MSG("...") and +MSG(). Non-literal arguments (string concatenation +MSG("A"<<R1), variable interpolation) are deliberately +left whole in UnparsedText for the +visible UnparsedText--Remaining warning — half-eating them +would silently lose content. +

    +
    +
    +
    +
    SiemensProcSyntax
    +

    Consumes a Siemens PROC subprogram declaration header +(PROC MY_SUB, PROC CONTOUR(REAL X, INT N) SAVE DISPLOF) +whole into a block-root SiemensProc record. The header +carries no executable state for the simulation — parameter binding to +caller arguments is a later work item — but leaving it unparsed would +shred the parameter list into ghost axis words the moment the +tag-value syntaxes run, so the whole statement is owned here. The +verbatim remainder after the name is preserved on +Statement for cache-dump readers. Writes at +the block root (no Parsing entry) following the +SiemensDefStatementSyntax precedent — a record with no +Logic consumer must not land in the +UnconsumedCheckSyntax audit tree.

    +

    +Anchored at statement start: Sinumerik requires PROC to be the +first statement of a subprogram file, so a mid-line PROC is +left alone (visible unparsed warning). +

    +
    +
    +
    +
    SiemensQuotedStatementSyntax
    +

    Quote guard: any line text still carrying a double quote after the +literal-form consumers (SiemensMsgSyntax, +SiemensToolCallSyntax, SiemensCycleCallSyntax) +have run is quarantined whole into +Parsing.QuotedStatement = { “Statement”: “<verbatim>” } — +WRITE(ERROR,“CUTTIME”,“T5 X100”), string-concatenation +MSG("..."<<R1), quoted-argument cycles not yet whitelisted.

    +

    +Every quote-blind syntax below (flags, numbered flags, tag values, +assignments) opens a token boundary at the quote→letter transition, +so without this guard the string contents get minted into REAL parser +state: "G54" inside a WRITE argument silently switches the +active work offset, "T5 X100" mints a ghost tool call plus a +ghost motion. Quarantining keeps the whole statement visible as one +Parsing--Unconsumed entry (QuotedStatement.Statement) +with zero state changes — the same deferred-not-corrupted contract as +SiemensFrameStatementSyntax. Proper consumers (WRITE, +CYCLE800 quoted args) replace this guard per statement family later. +

    +

    +Trade-off, deliberate: on an exotic mixed block the guard also takes +the co-resident plain words (a motion word sharing the block with an +unconsumed quoted call goes into the quarantine too). Losing them is +visible in the warning text; minting false state would be silent — +never trade the first for the second. Corpus quoted statements +(WRITE, non-literal MSG) are standalone blocks. +

    +
    +
    +
    +
    SiemensRepeatParsingSyntax
    +

    Captures a Siemens REPEAT statement whole into +Parsing.SiemensRepeat: REPEAT LBL1 LBL0 → +{ “Start”: “LBL1”, “End”: “LBL0” }, with an optional trailing +repetition count (P=3 or P3). The Evaluation consumer +(SiemensRepeatSyntax) re-runs +the label-bounded section. The single-label form +(REPEAT LBL1 — repeat from the label back to the REPEAT line) +is captured with End absent; the consumer currently warns it +unsupported (corpus count: zero).

    +

    +Whole-statement owner, anchored at statement start — mixing REPEAT +with other tokens on one block does not match and falls through whole +to the visible unparsed warning. The end-label alternative refuses a +P+digits word so REPEAT LBL1 P3 reads as +start-label + count, not as an end label named P3. +

    +
    +
    +
    +
    SiemensToolCallSyntax
    +

    Consumes the Siemens string tool call T=“name” from the +unparsed line text into Parsing.T as a string value +(quotes stripped). Numeric concatenated calls (T5) stay with +the preset's IntegerTagValueSyntax; +ToolChangeSyntax accepts either shape.

    +

    +Must be placed before every tag-value syntax in the Parsing +bundle: tool names routinely contain NC-shaped tokens +(T="D16R3Z6" — quote-blind consumers would mint ghost +Parsing.D/Parsing.Z entries out of the name; +(?<=[0-9]) and quote→letter \b boundaries in +RegexFlagPrefix both open inside the string). +Same structural-consumption rationale as +SiemensMsgSyntax. +

    +

    +A second T="..." behind a ; comment +(T="M6LWXD-1301";T="M6LWX", real corpus shape) never reaches +this syntax — the quote-aware +TailCommentSyntax runs earlier and strips +it. Tool names are matched verbatim, including non-ASCII bytes from +legacy code pages. +

    +
    +
    + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html index df7a5fbd..a36b75dd 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TagAssignmentSyntax.html @@ -187,12 +187,44 @@ this class handles explicit assignment statements.

    +

    Examples

    +

    #BeforeBuild.UnparsedText: #100=5.0 (Fanuc, VarPrefix="#", TagList=[]) +#AfterBuild:

    +
    {
    +  "Parsing": { "Assignments": { "#100": "5.0" } }
    +}
    +

    #BeforeBuild.UnparsedText: R1=100.5 (Siemens, VarPrefix=“R”, TagList=[]) +#AfterBuild:

    +
    {
    +  "Parsing": { "Assignments": { "R1": "100.5" } }
    +}
    +

    #BeforeBuild.UnparsedText: R1=5 _A=6 (mixed line — R1's RHS stops at the next assignment-looking token; the named assignment is left for NamedVarAssignmentSyntax) +#AfterBuild:

    +
    {
    +  "UnparsedText": "_A=6",
    +  "Parsing": { "Assignments": { "R1": "5" } }
    +}
    +

    Remarks

    • Fanuc: #1 = 100, #100 = [#1 + #2]
    • Siemens: R1 = 100, R1 = R2 + R3
    • Heidenhain: via derived HeidenhainFnAssignmentSyntax which adds FN prefix handling
    -Wraps GrabTagAssignment(ref string, IEnumerable<string>, string, IEnumerable<string>) as an INcSyntax. +Wraps GrabTagAssignment(ref string, IEnumerable<string>, string, IEnumerable<string>, ExpressionPrefixParser) as an INcSyntax. +

    +Captures only the numbered {prefix}{digits} family; symbolic +identifiers (e.g. _X_HOME) are the job of +NamedVarAssignmentSyntax, whose broader identifier grammar +also matches letter+digits tokens such as R1. That overlap is +benign by construction: both route to the same Parsing.Assignments +subtree with the same JSON shape (Assignments.<tag> = +"<expr>"), share the same RHS boundary rule, and a preset must +give both the same TerminateWords — so a token captured by either +lands identically and the two syntaxes' relative order does not affect +output. A controller with only numbered variables (Fanuc #) uses +this syntax alone; NamedVarAssignmentSyntax cannot capture +#-prefixed tokens. +

    @@ -273,6 +305,45 @@ collection only if assignments should land at the Parsing root.

    +

    Fields +

    + + + +

    + AssignmentsKey + +

    + +

    Parsing sub-object key holding captured assignments — the +shared landing spot of TagAssignmentSyntax, +NamedVarAssignmentSyntax and +SiemensDefStatementSyntax, and the read +surface of the Evaluation-stage variable readers.

    +
    +
    + +
    +
    public const string AssignmentsKey = "Assignments"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + +

    Properties

    @@ -376,6 +447,45 @@ variable-reading syntaxes can target a single well-defined subtree.

    + + +

    + RhsDialect + +

    + +

    Expression grammar delimiting the RHS (parser-delimited capture): +when set, the longest valid expression prefix ends the RHS — +superseding TerminateWords on matches where a prefix +parses — so spaced arithmetic and a following non-expression word +split correctly. Default None +keeps the legacy lexical boundary. Presets that set this on one +assignment syntax must set it on NamedVarAssignmentSyntax +too (the P0 behavior-alignment contract).

    +
    +
    + +
    +
    public NcExpressionDialect RhsDialect { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    NcExpressionDialect
    +
    +
    + + + + + + + +

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TagValueSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TagValueSyntax.html index 8f3c18a6..280b3d3f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TagValueSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.TagValueSyntax.html @@ -6,7 +6,7 @@ - + @@ -97,10 +97,14 @@ Class TagValueSyntax
    Assembly
    HiMech.dll

    -

    Concatenated tag-value syntax (no = sign). +

    Concatenated tag-value syntax (no = sign), glued by default. ex. -Heidenhain: L X Q2 Y33.4 FQ1 -ISO: X100.3Y3.3

    +Heidenhain: L X+Q2 Y33.4 FQ1 +ISO: X100.3Y3.3 +With AllowEqualsForm also the Siemens address=value form: +Siemens: X=100 Z=R63+150 +With AllowSpacedValue also the detached spelling: +Heidenhain: L Z-22.5 F 20000

    @@ -189,6 +193,19 @@ ISO: X100.3Y3.3

    +

    Examples

    +

    #BeforeBuild.UnparsedText: G01 X100.3Y3.3 (with TagList=[“X”,“Y”,“Z”], VariableTag="#") +#AfterBuild:

    +
    {
    +  "UnparsedText": "G01",
    +  "Parsing": { "X": "100.3", "Y": "3.3" }
    +}
    +

    #BeforeBuild.UnparsedText: X=100 Y50 (same TagList, with AllowEqualsForm=true — Siemens address=value and concatenated forms mix on one block) +#AfterBuild:

    +
    {
    +  "Parsing": { "X": "100", "Y": "50" }
    +}
    + @@ -273,6 +290,78 @@ variable-tag pattern.

    + + +

    + AllowEqualsForm + +

    + +

    When true, also accepts the Siemens address=value form (X=100, +Z=R63+150, F=R103) via GrabTagEqualsValue(ref string, IEnumerable<string>, ExpressionPrefixParser), +in addition to the concatenated form. Default false — Fanuc/ISO/Heidenhain +presets keep the concatenated-only grammar.

    +
    +
    + +
    +
    public bool AllowEqualsForm { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    bool
    +
    +
    + + + + + + + + + + +

    + AllowSpacedValue + +

    + +

    When true, whitespace may separate a tag from its value +(F 20000 — the Heidenhain detached feed word; a real post +family writes 103 such lines in one file). The value grammar must +still match right after the whitespace run, so F MAX or +F X+10 stay unclaimed. Default false — every other brand +keeps the glued-only grammar.

    +
    +
    + +
    +
    public bool AllowSpacedValue { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    bool
    +
    +
    + + + + + + + +

    @@ -337,6 +426,44 @@ variable-tag pattern.

    + + +

    + RhsDialect + +

    + +

    Expression grammar delimiting the equals-form RHS (parser-delimited +capture): the longest valid expression prefix after = is the +value, so spaced arithmetic (Z=R63 + 150) and balanced call +parentheses survive while a glued following word stays unparsed. +Default None keeps the legacy +non-whitespace-run capture. Only meaningful with +AllowEqualsForm.

    +
    +
    + +
    +
    public NcExpressionDialect RhsDialect { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    NcExpressionDialect
    +
    +
    + + + + + + + +

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html index 406d8526..9426e47c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.ParsingSyntaxs.html @@ -198,10 +198,14 @@ this class handles explicit assignment statements.

    TagValueSyntax
    -

    Concatenated tag-value syntax (no = sign). +

    Concatenated tag-value syntax (no = sign), glued by default. ex. -Heidenhain: L X Q2 Y33.4 FQ1 -ISO: X100.3Y3.3

    +Heidenhain: L X+Q2 Y33.4 FQ1 +ISO: X100.3Y3.3 +With AllowEqualsForm also the Siemens address=value form: +Siemens: X=100 Z=R63+150 +With AllowSpacedValue also the detached spelling: +Heidenhain: L Z-22.5 F 20000

    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 cc9c6803..4c53636d 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 @@ - + @@ -102,7 +102,14 @@ 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 +inside the cloned section. For each key in MergeKeys, a +block that DID write its own (partial) section additionally receives the +previous block's remaining entries — the block's own values win, only +missing keys are filled — so a partially-written modal section (e.g. an +XYZ-only motion block's +MachineCoordinateState, +which lacks the rotary axes) does not break the carry chain for the keys +it did not write. 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.

    @@ -403,6 +410,50 @@ before the intermediate block's PostLogic ModalCarry has run.

    + + +

    + MergeKeys + +

    + +

    Section keys whose carry is per-KEY, not just per-section: when the +current block already has the section, entries it did not write are +filled from the previous block's section (own values win; +AddedByKey is never copied as data). +Opt-in and deliberately separate from TrackedKeys — +stack-like sections (CallStack, WhileFrames) must NOT +be merged: a popped frame would be resurrected. Today only +MachineCoordinateState +qualifies: its writers are per-axis (an XYZ motion block writes only +X/Y/Z), and without the merge the modal rotary values die at every +partially-written section, forcing downstream modal lookbacks into +unbounded EnumerateBack() walks +(progress-dependent slowdown once executed pieces freeze).

    +
    +
    + +
    +
    public List<string> MergeKeys { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    List<string>
    +
    +
    + + + + + + + +

    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 60c1df04..2a1df2dd 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html @@ -192,6 +192,88 @@ replaced with a

    +

    Examples

    +

    Cartesian G41 begin block (tool radius 5 via the D1 offset row): no +intersection — the position offsets perpendicular to the segment, +left of travel (+X move → +Y), and the compensated machine +coordinate plus the motion-section MotionProgramXyz are written: +#Previous:

    +
    { "MachineCoordinateState": { "X": 0, "Y": 0, "Z": 0 } }
    +

    #BeforeBuild:

    +
    {
    +  "Parsing": { "G41": { "D": 1 } },
    +  "ProgramXyz": { "X": 10, "Y": 0, "Z": 0 },
    +  "MotionEvent": { "Form": "McLinear" }
    +}
    +

    #AfterBuild:

    +
    {
    +  "ProgramXyz": { "X": 10, "Y": 0, "Z": 0 },
    +  "MotionEvent": { "Form": "McLinear", "MotionProgramXyz": { "X": 10, "Y": 5, "Z": 0 } },
    +  "RadiusCompensation": { "Side": "Left", "Term": "G41", "OffsetId": 1, "Radius_mm": 5 },
    +  "MachineCoordinateState": { "X": 10, "Y": 5, "Z": 0 }
    +}
    +

    Polar continuation with parallel rays (the G12.1 branch): the +compensated central position offsets left of the +C travel +(−5 on the radius axis), ProgramPolarRxcz stays NOMINAL, and +the machine coordinate is re-derived from the compensated central — +radius √(35²+20²), C chained from the previous (compensated) angle: +#Previous:

    +
    {
    +  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
    +  "ProgramPolarRxcz": { "X": 40, "Y": 10, "Z": 0 },
    +  "RadiusCompensation": { "Side": "Left", "Term": "G41", "OffsetId": 1, "Radius_mm": 5 },
    +  "CompensatedCentral": { "X": 35, "Y": 10, "Z": 0 },
    +  "MachineCoordinateState": { "C": 15.945395900922854, "X": 36.40054944640259, "Y": 0, "Z": 0 }
    +}
    +

    #BeforeBuild:

    +
    {
    +  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
    +  "ProgramPolarRxcz": { "X": 40, "Y": 20, "Z": 0 },
    +  "ProgramXyz": { "X": 44.721359549995796, "Y": 0, "Z": 0 },
    +  "MachineCoordinateState": { "C": 26.565051177077986, "X": 44.721359549995796, "Y": 0, "Z": 0 },
    +  "MotionState": { "Term": "G01" },
    +  "MotionEvent": { "Form": "McPolarLinear" }
    +}
    +

    #AfterBuild:

    +
    {
    +  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
    +  "ProgramPolarRxcz": { "X": 40, "Y": 20, "Z": 0 },
    +  "ProgramXyz": { "X": 44.721359549995796, "Y": 0, "Z": 0 },
    +  "MachineCoordinateState": { "C": 29.744881296942225, "X": 40.311288741492746, "Y": 0, "Z": 0 },
    +  "MotionState": { "Term": "G01" },
    +  "MotionEvent": { "Form": "McPolarLinear" },
    +  "RadiusCompensation": { "Side": "Left", "Term": "G41", "OffsetId": 1, "Radius_mm": 5 },
    +  "CompensatedCentral": { "X": 35, "Y": 20, "Z": 0 }
    +}
    +

    A bare G40 inside polar mode inherits the previous block's +(compensated) machine coordinate — the Cartesian McLinear on it is +the modal fallthrough, not real motion, so it counts as bare: +#Previous:

    +
    {
    +  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
    +  "ProgramPolarRxcz": { "X": 40, "Y": 20, "Z": 0 },
    +  "RadiusCompensation": { "Side": "Left", "Term": "G41", "OffsetId": 1, "Radius_mm": 5 },
    +  "MachineCoordinateState": { "C": 29.744881296942225, "X": 40.311288741492746, "Y": 0, "Z": 0 }
    +}
    +

    #BeforeBuild:

    +
    {
    +  "Parsing": { "Flags": ["G40"] },
    +  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
    +  "ProgramPolarRxcz": { "X": 40, "Y": 20, "Z": 0 },
    +  "MachineCoordinateState": { "C": 26.565051177077986, "X": 44.721359549995796, "Y": 0, "Z": 0 },
    +  "MotionState": { "Term": "G01" },
    +  "MotionEvent": { "Form": "McLinear" }
    +}
    +

    #AfterBuild:

    +
    {
    +  "PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
    +  "ProgramPolarRxcz": { "X": 40, "Y": 20, "Z": 0 },
    +  "MachineCoordinateState": { "C": 29.744881296942225, "X": 40.311288741492746, "Y": 0, "Z": 0 },
    +  "MotionState": { "Term": "G01" },
    +  "MotionEvent": { "Form": "McLinear" },
    +  "RadiusCompensation": { "Side": "None", "Term": "G40", "OffsetId": 1 }
    +}
    + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.html index 1033954b..08196fd1 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.PostLogicSyntaxs.html @@ -101,7 +101,14 @@ 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 +inside the cloned section. For each key in MergeKeys, a +block that DID write its own (partial) section additionally receives the +previous block's remaining entries — the block's own values win, only +missing keys are filled — so a partially-written modal section (e.g. an +XYZ-only motion block's +MachineCoordinateState, +which lacks the rotary axes) does not break the carry chain for the keys +it did not write. 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.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Segmenters.HeidenhainSegmenter.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Segmenters.HeidenhainSegmenter.html index 91d41e45..07ab375e 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Segmenters.HeidenhainSegmenter.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Segmenters.HeidenhainSegmenter.html @@ -6,7 +6,7 @@ - + @@ -99,6 +99,26 @@ Class HeidenhainSegmenter

    Heidenhain NC block builder. Also support single line NC block.

    +

    +Two grouping rules produce multi-line Sentences: +

    • Trailing ~ continuation (modern TNC cycle +definitions): a line whose last visible character is ~ +continues on the next physical line; the chain ends at the first +line without a trailing ~. Both corpus spellings are +accepted — "… ;STRATEGIE ~" (space before, after a trailing +comment) and "DATUM SETTING~" (glued). Continuation lines +carry no klartext block number. Configurable via +JoinTildeContinuations (default on — files using +~ are simply mis-simulated without it, so legacy XML without +the attribute also gets the join).
    • Repeated command head (Hi.NcParsers.Segmenters.HeidenhainSegmenter.BlockKeywordList, +default CYCL DEF): consecutive lines sharing the same +CYCL DEF n head group into one sentence +(7.0/7.1/… style).
    +The ~ characters stay in the raw BlockText +(write-back authority); the Parsing bundle strips them from +UnparsedText via +HeidenhainTildeTrimSyntax. +
    @@ -217,6 +237,42 @@ Also support single line NC block.

    + + +

    + JoinTildeContinuations + +

    + +

    Joins lines ending with the TNC ~ continuation character into +one sentence. On by default; an XML source without the attribute also +defaults to on — the join is a capability fix (house.H-style cycle +definitions are unparsable without it), not a behavioral contract a +legacy project could depend on.

    +
    +
    + +
    +
    public bool JoinTildeContinuations { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    bool
    +
    +
    + + + + + + + +

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Segmenters.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Segmenters.html index 30ac2e0e..bcd2d5ac 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Segmenters.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Segmenters.html @@ -98,6 +98,26 @@ Classes
    HeidenhainSegmenter

    Heidenhain NC block builder. Also support single line NC block.

    +

    +Two grouping rules produce multi-line Sentences: +

    • Trailing ~ continuation (modern TNC cycle +definitions): a line whose last visible character is ~ +continues on the next physical line; the chain ends at the first +line without a trailing ~. Both corpus spellings are +accepted — "… ;STRATEGIE ~" (space before, after a trailing +comment) and "DATUM SETTING~" (glued). Continuation lines +carry no klartext block number. Configurable via +JoinTildeContinuations (default on — files using +~ are simply mis-simulated without it, so legacy XML without +the attribute also gets the join).
    • Repeated command head (Hi.NcParsers.Segmenters.HeidenhainSegmenter.BlockKeywordList, +default CYCL DEF): consecutive lines sharing the same +CYCL DEF n head group into one sentence +(7.0/7.1/… style).
    +The ~ characters stay in the raw BlockText +(write-back authority); the Parsing bundle strips them from +UnparsedText via +HeidenhainTildeTrimSyntax. +
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.ClLinearMotionSemantic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.ClLinearMcMotionSemantic.html similarity index 83% rename from App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.ClLinearMotionSemantic.html rename to App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.ClLinearMcMotionSemantic.html index 75608889..a534aaa1 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.ClLinearMotionSemantic.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.ClLinearMcMotionSemantic.html @@ -2,9 +2,9 @@ - Class ClLinearMotionSemantic | HiAPI-C# 2025 + Class ClLinearMcMotionSemantic | HiAPI-C# 2025 - + @@ -84,12 +84,12 @@

    -
    +
    -

    -Class ClLinearMotionSemantic +

    +Class ClLinearMcMotionSemantic

    @@ -100,7 +100,7 @@ Class 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.

    +producing ActClLinearMcXyzabcContour.

    The CL (cutter location) endpoints are derived from MC endpoints via forward kinematics, then interpolated linearly. The MC path is @@ -110,7 +110,7 @@ non-linear because the tool orientation changes during the move.

    -
    public class ClLinearMotionSemantic : INcSemantic, IMakeXmlSource
    +
    public class ClLinearMcMotionSemantic : INcSemantic, IMakeXmlSource
    @@ -120,7 +120,7 @@ non-linear because the tool orientation changes during the move.
    Inheritance
    -
    ClLinearMotionSemantic
    +
    ClLinearMcMotionSemantic
    @@ -193,9 +193,9 @@ non-linear because the tool orientation changes during the move. - + -

    +

    DisplayName

    @@ -225,9 +225,9 @@ non-linear because the tool orientation changes during the move. - + -

    +

    XName

    @@ -261,9 +261,9 @@ non-linear because the tool orientation changes during the move. - + -

    +

    MakeXmlSource(string, string, bool)

    @@ -303,7 +303,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.

    @@ -312,9 +312,9 @@ Since the folder can be moving with the configuration file.

    - + -

    +

    Reg(XFactory)

    @@ -346,9 +346,9 @@ Since the folder can be moving with the configuration file.

    - + -

    +

    Resolve(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.McLinearMotionSemantic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.McLinearMotionSemantic.html index 8e520536..8b9893eb 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.McLinearMotionSemantic.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.McLinearMotionSemantic.html @@ -6,7 +6,7 @@ - + @@ -101,9 +101,14 @@ Class McLinearMotionSemantic ActFeedrate/ActRapid + ActMcXyzLinearContour or ActMcXyzabcLinearContour.

    -Discriminates by checking whether rotary axis values (A/B/C) are present -in MachineCoordinateState: -

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.McPolarArcMotionSemantic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.McPolarArcMotionSemantic.html new file mode 100644 index 00000000..4c5ed661 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.McPolarArcMotionSemantic.html @@ -0,0 +1,427 @@ + + + + + Class McPolarArcMotionSemantic | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class McPolarArcMotionSemantic +

    + +
    +
    Namespace
    Hi.NcParsers.Semantics
    +
    Assembly
    HiMech.dll
    +
    + +

    Resolves McPolarArc motion into +ActFeedrate + ActMcPolarSpiralContour.

    +

    +The arc geometry (center, direction, additional circles) was resolved by +ProgramRxczSyntax on the polar hypothetical plane in central +(anchor-origin) coordinates; this semantic computes the plane arc length +via ActMcPolarSpiralContour's shared spiral derivative, +takes duration = length / feedrate (mirroring HardNc +NcProc.GetActSpiralMcXyzContour), and emits the polar spiral act +whose per-step polar→machine conversion chains the C-axis branch. +

    +

    +When RadiusCompensationSyntax compensated +the block (marked by CompensatedEndCentral +in the motion section), the act structure mirrors HardNc +NcProc.GetActsFromArcCommand: an optional +ActMcPolarLinearContour bridge onto the offset circle +(transient begin), the spiral between the compensated endpoints around the +NOMINAL center, and an optional bridge off it (transient end) — the polar +twin of HardNc GetActMcContourByLinearProgramPos. +

    +
    +
    + +
    +
    public class McPolarArcMotionSemantic : INcSemantic, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    McPolarArcMotionSemantic
    +
    +
    + +
    +
    Implements
    +
    + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + + + + +

    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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + + +

    + Resolve(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +

    + +

    Resolve the syntaxPieceNode into a sequence of IAct. +May also mutate SyntaxPiece.JsonObject for downstream semantics.

    +
    +
    + +
    +
    public IEnumerable<IAct> Resolve(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> dependencyList, NcDiagnosticProgress ncDiagnosticProgress)
    +
    + +

    Parameters

    +
    +
    syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
    +
    +
    dependencyList List<INcDependency>
    +
    +
    ncDiagnosticProgress NcDiagnosticProgress
    +
    +
    + +

    Returns

    +
    +
    IEnumerable<IAct>
    +
    +
    + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.McPolarLinearMotionSemantic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.McPolarLinearMotionSemantic.html new file mode 100644 index 00000000..ee818d9a --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.McPolarLinearMotionSemantic.html @@ -0,0 +1,421 @@ + + + + + Class McPolarLinearMotionSemantic | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class McPolarLinearMotionSemantic +

    + +
    +
    Namespace
    Hi.NcParsers.Semantics
    +
    Assembly
    HiMech.dll
    +
    + +

    Resolves McPolarLinear motion into +ActFeedrate + ActMcPolarLinearContour.

    +

    +Reads the anchor-relative polar positions written by +ProgramRxczSyntax (begin from the previous block, end from +the current block) and hands the central (anchor-origin) pair to the act, +mirroring HardNc NcProc.GetActMcPolarLinearContour. Duration +mirrors HardNc GetTimeCostByPolarLinearContour, including the +C-axis speed clamp on the hypothetical component — the ceiling comes +from the rotary rate bucket +(IRapidFeedrateConfig), the same number the +legacy import fills from HardNcEnv's MaxRotarySpeedABC. +

    +Rapid polar events (G00 while G12.1 is active — disallowed by Fanuc and +warned at parse time) resolve to no act, matching HardNc. +
    +
    + +
    +
    public class McPolarLinearMotionSemantic : INcSemantic, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    McPolarLinearMotionSemantic
    +
    +
    + +
    +
    Implements
    +
    + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + + + + +

    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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + + +

    + Resolve(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +

    + +

    Resolve the syntaxPieceNode into a sequence of IAct. +May also mutate SyntaxPiece.JsonObject for downstream semantics.

    +
    +
    + +
    +
    public IEnumerable<IAct> Resolve(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> dependencyList, NcDiagnosticProgress ncDiagnosticProgress)
    +
    + +

    Parameters

    +
    +
    syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
    +
    +
    dependencyList List<INcDependency>
    +
    +
    ncDiagnosticProgress NcDiagnosticProgress
    +
    +
    + +

    Returns

    +
    +
    IEnumerable<IAct>
    +
    +
    + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.ToolChangeSemantic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.ToolChangeSemantic.html index 8e746fcd..7984565e 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.ToolChangeSemantic.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.ToolChangeSemantic.html @@ -6,7 +6,7 @@ - + @@ -98,9 +98,23 @@ Class ToolChangeSemantic

    Resolves SectionName section into -ActToolingStep (when M06 is present) or -ActToolingTeleport (T-code only, no M06). +ActToolingStep when a change trigger is present +(IsChangeKey = true); a T-code-only +(pre-selection) block produces no act — magazine pre-rotation is PLC +work with no axis or spindle effect. The axis travel to the tooling +position is NOT emitted here: ToolChangeMotionSyntax +stamps it as a CompoundMotion at the syntax stage, and +this semantic is ordered after CompoundMotionSemantic so +the ActToolingStep lands at the tooling position. Reads ToolingTime for the change duration.

    +

    +A string ToolId (Siemens T="name" call) is resolved to a +tool number through +FindToolNumberByName(string) +— the act chain (ActToolingStep, tool-house lookup) is +int-keyed. An unresolvable name emits a +ToolChange--NameUnresolved warning and produces no act. +

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.ToolingTeleportSemantic.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.ToolingTeleportSemantic.html new file mode 100644 index 00000000..4b9bb9f3 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.ToolingTeleportSemantic.html @@ -0,0 +1,419 @@ + + + + + Class ToolingTeleportSemantic | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class ToolingTeleportSemantic +

    + +
    +
    Namespace
    Hi.NcParsers.Semantics
    +
    Assembly
    HiMech.dll
    +
    + +

    Resolves the SectionName section into +ActToolingTeleport: the tool is equipped without the +machining-step operation (collision detection, volume removal) that +ToolChangeSemantic's ActToolingStep runs at +the chain's current pose. For pipelines whose source carries no machine +tool-change position: in CSV (recorded telemetry) the tool jumps to its +recorded position rather than running a modelled tool-changer cycle; in +CLSF the cutter-location stream has no machine coordinates at all, and a +step would stamp a cut at the not-yet-positioned device pose (identity = +the workpiece program zero). Fires only when +IsChangeKey is set (the block's tool id +differs from the previous one), so a long run of same-tool blocks emits a +single teleport.

    +
    +
    + +
    +
    public class ToolingTeleportSemantic : INcSemantic, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    ToolingTeleportSemantic
    +
    +
    + +
    +
    Implements
    +
    + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + + + + +

    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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + + +

    + Resolve(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +

    + +

    Resolve the syntaxPieceNode into a sequence of IAct. +May also mutate SyntaxPiece.JsonObject for downstream semantics.

    +
    +
    + +
    +
    public IEnumerable<IAct> Resolve(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> dependencyList, NcDiagnosticProgress ncDiagnosticProgress)
    +
    + +

    Parameters

    +
    +
    syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
    +
    +
    dependencyList List<INcDependency>
    +
    +
    ncDiagnosticProgress NcDiagnosticProgress
    +
    +
    + +

    Returns

    +
    +
    IEnumerable<IAct>
    +
    +
    + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.html index 38a7ed82..f09202b1 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Semantics.html @@ -95,11 +95,11 @@ Classes
    -
    ClLinearMotionSemantic
    +
    ClLinearMcMotionSemantic

    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.

    +producing ActClLinearMcXyzabcContour.

    The CL (cutter location) endpoints are derived from MC endpoints via forward kinematics, then interpolated linearly. The MC path is @@ -174,11 +174,60 @@ Reads arc center, plane normal, and direction from the ActFeedrate/ActRapid + ActMcXyzLinearContour or ActMcXyzabcLinearContour.

    -Discriminates by checking whether rotary axis values (A/B/C) are present -in MachineCoordinateState: -

    +
    +
    +
    McPolarArcMotionSemantic
    +

    Resolves McPolarArc motion into +ActFeedrate + ActMcPolarSpiralContour.

    +

    +The arc geometry (center, direction, additional circles) was resolved by +ProgramRxczSyntax on the polar hypothetical plane in central +(anchor-origin) coordinates; this semantic computes the plane arc length +via ActMcPolarSpiralContour's shared spiral derivative, +takes duration = length / feedrate (mirroring HardNc +NcProc.GetActSpiralMcXyzContour), and emits the polar spiral act +whose per-step polar→machine conversion chains the C-axis branch. +

    +

    +When RadiusCompensationSyntax compensated +the block (marked by CompensatedEndCentral +in the motion section), the act structure mirrors HardNc +NcProc.GetActsFromArcCommand: an optional +ActMcPolarLinearContour bridge onto the offset circle +(transient begin), the spiral between the compensated endpoints around the +NOMINAL center, and an optional bridge off it (transient end) — the polar +twin of HardNc GetActMcContourByLinearProgramPos. +

    +
    +
    +
    +
    McPolarLinearMotionSemantic
    +

    Resolves McPolarLinear motion into +ActFeedrate + ActMcPolarLinearContour.

    +

    +Reads the anchor-relative polar positions written by +ProgramRxczSyntax (begin from the previous block, end from +the current block) and hands the central (anchor-origin) pair to the act, +mirroring HardNc NcProc.GetActMcPolarLinearContour. Duration +mirrors HardNc GetTimeCostByPolarLinearContour, including the +C-axis speed clamp on the hypothetical component — the ceiling comes +from the rotary rate bucket +(IRapidFeedrateConfig), the same number the +legacy import fills from HardNcEnv's MaxRotarySpeedABC. +

    +Rapid polar events (G00 while G12.1 is active — disallowed by Fanuc and +warned at parse time) resolve to no act, matching HardNc.
    @@ -199,9 +248,40 @@ Does not emit any IAct; o
    ToolChangeSemantic

    Resolves SectionName section into -ActToolingStep (when M06 is present) or -ActToolingTeleport (T-code only, no M06). +ActToolingStep when a change trigger is present +(IsChangeKey = true); a T-code-only +(pre-selection) block produces no act — magazine pre-rotation is PLC +work with no axis or spindle effect. The axis travel to the tooling +position is NOT emitted here: ToolChangeMotionSyntax +stamps it as a CompoundMotion at the syntax stage, and +this semantic is ordered after CompoundMotionSemantic so +the ActToolingStep lands at the tooling position. Reads ToolingTime for the change duration.

    +

    +A string ToolId (Siemens T="name" call) is resolved to a +tool number through +FindToolNumberByName(string) +— the act chain (ActToolingStep, tool-house lookup) is +int-keyed. An unresolvable name emits a +ToolChange--NameUnresolved warning and produces no act. +

    +
    +
    +
    +
    ToolingTeleportSemantic
    +

    Resolves the SectionName section into +ActToolingTeleport: the tool is equipped without the +machining-step operation (collision detection, volume removal) that +ToolChangeSemantic's ActToolingStep runs at +the chain's current pose. For pipelines whose source carries no machine +tool-change position: in CSV (recorded telemetry) the tool jumps to its +recorded position rather than running a modelled tool-changer cycle; in +CLSF the cutter-location stream has no machine coordinates at all, and a +step would stamp a cut at the not-yet-positioned device pose (identity = +the workpiece program zero). Fires only when +IsChangeKey is set (the block's tool id +differs from the previous one), so a long run of same-tool blocks emits a +single teleport.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html index 97b9facf..0d44dd0d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.SoftNcRunner.html @@ -102,7 +102,7 @@ Class SoftNcRunner
    -
    public class SoftNcRunner : IControlRunner, IMakeXmlSource
    +
    public class SoftNcRunner : INcRunner, IMakeXmlSource
    @@ -119,7 +119,7 @@ Class SoftNcRunner
    Implements
    - +
    @@ -214,20 +214,20 @@ Class SoftNcRunner -

    - SoftNcRunner(XElement, string, string, IProgress<object>, object[]) +

    + SoftNcRunner(XElement, string, string, IProgress<IMessage>, object[])

    Reconstructs a SoftNcRunner from a project XML element. -Each pipeline list (NcDependencyList, Segmenter, +Each pipeline list (PipelineNcDependencyList, Segmenter, NcInitializationList, NcSyntaxList, NcSemanticList) is rehydrated via XFactory.

    -
    public SoftNcRunner(XElement src, string baseDirectory, string relFile, IProgress<object> progress, object[] res = null)
    +
    public SoftNcRunner(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress, object[] res = null)

    Parameters

    @@ -241,7 +241,7 @@ Each pipeline list (string

    Project file path relative to baseDirectory.

    -
    progress IProgress<object>
    +
    progress IProgress<IMessage>

    Diagnostic sink propagated to nested factories.

    res object[]
    @@ -363,39 +363,6 @@ Each pipeline list ( - -

    - NcDependencyList - -

    - -

    External configuration providers consumed by syntaxes/semantics -(machine axes, tool offsets, coordinate tables, block-skip flags, etc.).

    -
    -
    - -
    -
    public List<INcDependency> NcDependencyList { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    List<INcDependency>
    -
    -
    - - - - - - - -

    @@ -494,6 +461,41 @@ Each pipeline list ( + +

    + PipelineNcDependencyList + +

    + +

    External configuration providers consumed by syntaxes/semantics +(machine axes, tool offsets, coordinate tables, block-skip flags, etc.). +May contain INcDependencyProxy placeholders — see +GetEffectiveNcDependencyList().

    +
    +
    + +
    +
    public List<INcDependency> PipelineNcDependencyList { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    List<INcDependency>
    +
    +
    + + + + + + + +

    @@ -638,7 +640,7 @@ Each pipeline list (

    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 +PipelineNcDependencyList (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 @@ -648,6 +650,14 @@ orientation; its GetEffectiveNcDependencyList(), so a proxied parameter table +resolves to the host's materialized instance — call this only after the +proxies' host is wired. The NcKinematicsDependency, by +contrast, is a runner-level pipeline dependency and is appended to the +runner's own PipelineNcDependencyList below. +

    @@ -712,40 +722,38 @@ and within a bundle slot the bundle's SyntaxList order.

    -

    - FromLegacyNcEnvXml(XElement, IMachiningChain) +

    + FromLegacyNcEnvXml(XElement)

    -

    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. +

    Creates a SoftNcRunner brand preset from legacy +HardNcEnv XML, picked by the CncBrand element. The returned +runner carries proxy placeholders for both per-case data and the +(Fanuc-family) parameter table, so machine config and per-case values are +not populated here — the owning project wires the proxies to its +host, then calls PopulateLegacyMachineConfig(XElement, List<INcDependency>), +ConfigureByMachiningChain(IMachiningChain), and +PopulateLegacyPerCaseData(XElement, List<INcDependency>) against the resolved host tables. Remove this region when HardNcEnv is fully replaced.

    -
    public static SoftNcRunner FromLegacyNcEnvXml(XElement ncEnvXml, IMachiningChain chain = null)
    +
    public static SoftNcRunner FromLegacyNcEnvXml(XElement ncEnvXml)

    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.

    +

    An unconfigured brand-preset SoftNcRunner.

    @@ -759,10 +767,55 @@ Remove this region when HardNcEnv is fully replaced.

    + + +

    + GetEffectiveNcDependencyList() + +

    + +

    Resolves every INcDependencyProxy in +PipelineNcDependencyList to the concrete dependency it stands in +for (via GetNcDependency()), leaving every +non-proxy entry in place. Order is preserved, so downstream +OfType<T>().FirstOrDefault() lookups behave exactly as for a +proxy-free runner; entries a proxy resolves to null are dropped.

    +

    +Proxies must have their host wired +(InitNcDependencyHost(INcDependencyListHost)) before this is +called. RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) resolves the list once per session +and caches it on NcRunnerSessionState, so each +proxy maps to a single stable instance for the whole session and every +pipeline stage sees the same dependencies. +

    +
    +
    + +
    +
    public List<INcDependency> GetEffectiveNcDependencyList()
    +
    + + +

    Returns

    +
    +
    List<INcDependency>
    +
    +
    + + + + + + + + + + + -

    - GetSourcedActEntrysFromNode(LazyLinkedListNode<SyntaxPiece>, NcDiagnosticProgress, CancellationToken) +

    + GetSourcedActEntrysFromNode(LazyLinkedListNode<SyntaxPiece>, NcDiagnosticProgress, List<INcDependency>, CancellationToken)

    @@ -775,7 +828,7 @@ updates the source
    -
    public IEnumerable<SourcedActEntry> GetSourcedActEntrysFromNode(LazyLinkedListNode<SyntaxPiece> startNode, NcDiagnosticProgress ncDiagnosticProgress, CancellationToken cancellationToken)
    +
    public IEnumerable<SourcedActEntry> GetSourcedActEntrysFromNode(LazyLinkedListNode<SyntaxPiece> startNode, NcDiagnosticProgress ncDiagnosticProgress, List<INcDependency> ncDependencyList, CancellationToken cancellationToken)

    Parameters

    @@ -785,6 +838,10 @@ updates the source
    ncDiagnosticProgress NcDiagnosticProgress

    Sink for semantic exceptions.

    +
    +
    ncDependencyList List<INcDependency>
    +

    Proxy-resolved dependency list (see +GetEffectiveNcDependencyList()) handed to each semantic's Resolve.

    cancellationToken CancellationToken

    Cancellation token (checked between blocks).

    @@ -858,6 +915,92 @@ Since the folder can be moving with the configuration file.

    + + +

    + PopulateLegacyMachineConfig(XElement, List<INcDependency>) + +

    + +

    Populates legacy machine config — home position, tooling pose/time, rapid +rates, and stroke limits — from a legacy HardNcEnv XML element onto +targetDeps. Split out of FromLegacyNcEnvXml(XElement) +so it runs against the proxy-resolved host list +(GetEffectiveNcDependencyList()) after the parameter-table +proxy has materialized its host table — the Fanuc-family parameter table +(which implements IHomeMcConfig / IRapidFeedrateConfig / +IStrokeLimitConfig) is no longer a concrete entry on the runner. +No-op for configs with no matching provider.

    +
    +
    + +
    +
    public static void PopulateLegacyMachineConfig(XElement ncEnvXml, List<INcDependency> targetDeps)
    +
    + +

    Parameters

    +
    +
    ncEnvXml XElement
    +

    The inner XML element of the legacy HardNcEnv.

    +
    +
    targetDeps List<INcDependency>
    +

    The proxy-resolved dependency list holding the machine-config providers.

    +
    +
    + + + + + + + + + + + + + + +

    + PopulateLegacyPerCaseData(XElement, List<INcDependency>) + +

    + +

    Populates the legacy per-case tables — tool offsets, work coordinate +offsets, and (Heidenhain) datum preset/shift tables — from a legacy +HardNcEnv XML element into targetDeps. Split out +of FromLegacyNcEnvXml(XElement) so the per-case values land on the +owning project's PerCaseNcDependencyList +(where its proxies have materialized the real tables), not on the shared +runner. No-op when targetDeps has no matching table.

    +
    +
    + +
    +
    public static void PopulateLegacyPerCaseData(XElement ncEnvXml, List<INcDependency> targetDeps)
    +
    + +

    Parameters

    +
    +
    ncEnvXml XElement
    +

    The inner XML element of the legacy HardNcEnv.

    +
    +
    targetDeps List<INcDependency>
    +

    The host dependency list holding the materialized per-case tables.

    +
    +
    + + + + + + + + + + + +

    @@ -894,36 +1037,40 @@ boot paths.

    - + -

    - RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) +

    + RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken)

    -

    Runs raw Control lines and yields source sentence and Act pairs.

    +

    Runs raw NC program lines and yields source sentence and Act pairs.

    -
    public IEnumerable<SourcedActEntry> RunControlLines(string relFilePath, IEnumerable<string> lines, MachiningSession machiningSession, SessionProgress sessionProgress, CancellationToken cancellationToken)
    +
    public IEnumerable<SourcedActEntry> RunNcLines(string relFilePath, IEnumerable<string> lines, MachiningSession machiningSession, StepDiagnosticProgress stepDiagnosticProgress, NcDiagnosticProgress ncDiagnosticProgress, CancellationToken cancellationToken)

    Parameters

    relFilePath string
    -

    The relative path of the control file

    +

    The relative path of the NC program file

    lines IEnumerable<string>
    -

    The enumerable collection of command (control code) lines

    +

    The enumerable collection of NC program lines

    machiningSession MachiningSession

    Session-scoped state shared across multiple -RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls (e.g. lazy-initialized pipeline state, +RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) calls (e.g. lazy-initialized pipeline state, file-index counter).

    -
    sessionProgress SessionProgress
    -
    +
    stepDiagnosticProgress StepDiagnosticProgress
    +

    Step-anchored IMessage-channel sink.

    +
    +
    ncDiagnosticProgress NcDiagnosticProgress
    +

    NC-pipeline diagnostic sink, threaded in as an input so the runner stays host-agnostic (the caller injects it; the production caller passes the service-scoped instance, standalone tests pass their own).

    +
    cancellationToken CancellationToken

    Cancellation token to cancel the operation

    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 13377a1d..6fe360f5 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.BundleSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.BundleSyntax.html @@ -283,8 +283,8 @@ If the INcSyntax -

    - BundleSyntax(XElement, string, string, IProgress<object>) +

    + BundleSyntax(XElement, string, string, IProgress<IMessage>)

    @@ -293,7 +293,7 @@ If the INcSyntax
    -
    public BundleSyntax(XElement src, string baseDirectory, string relFile, IProgress<object> progress)
    +
    public BundleSyntax(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress)

    Parameters

    @@ -304,7 +304,7 @@ If the INcSyntax
    relFile string
    -
    progress IProgress<object>
    +
    progress IProgress<IMessage>
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.ExpressionPrefixParser.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.ExpressionPrefixParser.html new file mode 100644 index 00000000..3f932e53 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.ExpressionPrefixParser.html @@ -0,0 +1,187 @@ + + + + + Delegate ExpressionPrefixParser | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Delegate ExpressionPrefixParser +

    + +
    +
    Namespace
    Hi.NcParsers.Syntaxs
    +
    Assembly
    HiMech.dll
    +
    + +

    Longest-valid-prefix expression parse over source: +returns true with consumedLength set to the +number of leading characters forming a valid expression (the grammar +decides where a captured RHS ends), or false when not even a +prefix parses. Capture syntaxes take this as an optional hook so the +assignment/tag grammars stay decoupled from any concrete expression +parser (see NcExpressionDialectUtil.TryParsePrefix).

    +
    +
    + +
    +
    public delegate bool ExpressionPrefixParser(string source, out int consumedLength)
    +
    + +

    Parameters

    +
    +
    source string
    +
    Longest-valid-prefix expression parse over source: returns true with consumedLength set to the number of leading characters forming a valid expression (the grammar decides where a captured RHS ends), or false when not even a prefix parses. Capture syntaxes take this as an optional hook so the assignment/tag grammars stay decoupled from any concrete expression parser (see NcExpressionDialectUtil.TryParsePrefix).
    +
    consumedLength int
    +
    Longest-valid-prefix expression parse over source: returns true with consumedLength set to the number of leading characters forming a valid expression (the grammar decides where a captured RHS ends), or false when not even a prefix parses. Capture syntaxes take this as an optional hook so the assignment/tag grammars stay decoupled from any concrete expression parser (see NcExpressionDialectUtil.TryParsePrefix).
    +
    + +

    Returns

    +
    +
    bool
    +
    Longest-valid-prefix expression parse over source: returns true with consumedLength set to the number of leading characters forming a valid expression (the grammar decides where a captured RHS ends), or false when not even a prefix parses. Capture syntaxes take this as an optional hook so the assignment/tag grammars stay decoupled from any concrete expression parser (see NcExpressionDialectUtil.TryParsePrefix).
    +
    + + + + + + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.GenericSyntaxKit.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.GenericSyntaxKit.html index bdbaf25c..b971a630 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.GenericSyntaxKit.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.GenericSyntaxKit.html @@ -216,6 +216,41 @@ Contains syntax definitions for common G codes used across multiple NC systems.< + + +

    + CannedCycleCodes + +

    + +

    Cycle codes captured by CannedCycleSyntax. Defaults to +CannedCycleCodes; brands whose vocabulary +conflicts override it (e.g. Siemens excludes G74 — reference-point +return there, not a tapping cycle).

    +
    +
    + +
    +
    public List<string> CannedCycleCodes { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    List<string>
    +
    +
    + + + + + + + +

    @@ -253,6 +288,78 @@ Terminates at G/M only.

    + + +

    + DwellCodes + +

    + +

    Dwell codes captured by G4Syntax. Both spellings by +default — real programs write G04 as often as G4, and +the un-captured spelling used to fall through to the flag/axis +syntaxes (where a Fanuc G04 X0.5 dwell time became a ghost +X motion word).

    +
    +
    + +
    +
    public List<string> DwellCodes { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    List<string>
    +
    +
    + + + + + + + + + + +

    + DwellParamPrefixes + +

    + +

    Argument prefixes captured into the dwell sub-section by +G4Syntax. Default covers the Fanuc-family dialect +(X/U seconds, P milliseconds, plus the legacy +S spindle-revolutions capture); the Siemens preset overrides +with F (seconds) + S (revolutions).

    +
    +
    + +
    +
    public List<string> DwellParamPrefixes { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    List<string>
    +
    +
    + + + + + + + +

    @@ -365,7 +472,10 @@ truncate scope before H and lose the offset id.

    -

    G4 Dwell/Pause syntax.

    +

    G4 Dwell/Pause syntax. Captures DwellCodes plus their +DwellParamPrefixes arguments into a +Parsing.G4/Parsing.G04 sub-section, consumed by +DwellSyntax.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html index 1283950a..c48a55e3 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html @@ -227,7 +227,9 @@ Class HeidenhainSyntaxUtil -

    Feed-word capture as a float tag using VarTag.

    +

    Feed-word capture as a float tag using VarTag. Spaced +values are accepted (F 20000 — a real post family writes the +feed word detached; glued stays the default for every other brand).

    @@ -259,7 +261,12 @@ Class HeidenhainSyntaxUtil -

    Flags written under Flags for rapid-feed modes.

    +

    Flags written under Flags for the rapid-feed +modes. Glued followers are allowed so the turbine post's +FMAXM03M08 run still yields FMAX. The STOP +word deliberately lives on its own word-bounded instance in the +bundle below — under the glued option a quoted tool name like +TOOL CALL “STOPFEN” would lose its STOP head to this list.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.NcSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.NcSyntaxUtil.html index 6ecae16d..d02d9e02 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.NcSyntaxUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.NcSyntaxUtil.html @@ -229,8 +229,8 @@ Class NcSyntaxUtil -

    - GrabTagAssignment(ref string, IEnumerable<string>, string, IEnumerable<string>) +

    + GrabTagAssignment(ref string, IEnumerable<string>, string, IEnumerable<string>, ExpressionPrefixParser)

    @@ -243,7 +243,7 @@ Fanuc: #1=#2+#3

    -
    public static List<TagValue> GrabTagAssignment(ref string unparsedText, IEnumerable<string> targetTags, string varPrefix, IEnumerable<string> terminateWords = null)
    +
    public static List<TagValue> GrabTagAssignment(ref string unparsedText, IEnumerable<string> targetTags, string varPrefix, IEnumerable<string> terminateWords = null, ExpressionPrefixParser rhsPrefixParser = null)

    Parameters

    @@ -260,6 +260,15 @@ Fanuc: #1=#2+#3

    terminateWords IEnumerable<string>

    words that terminate expression (e.g., F, G, M, S). These are different from varPrefix - they signal end of expression, not variables.

    +
    +
    rhsPrefixParser ExpressionPrefixParser
    +

    Optional longest-valid-prefix expression +parser (see ExpressionPrefixParser). When provided and a +prefix parses, it supersedes both the lexical boundary and the +terminateWords cut for that match — the grammar +itself ends the RHS (R26=R64-14/2 R23=2, +Z=R63 + 150 X100); the lexical machinery remains the per-match +fallback when no prefix parses.

    @@ -280,26 +289,91 @@ These are different from varPrefix - they signal end of expression, not variable + + +

    + GrabTagEqualsValue(ref string, IEnumerable<string>, ExpressionPrefixParser) + +

    + +

    Get tag values written in the Siemens address=value form +(an explicit = between a single-letter tag and its value). +ex. +Siemens: X=100, Z=R63+150, C=R61, F=R103, Z=_Z_HOME

    +
    +
    + +
    +
    public static List<TagValue> GrabTagEqualsValue(ref string unparsedText, IEnumerable<string> targetTags, ExpressionPrefixParser rhsPrefixParser = null)
    +
    + +

    Parameters

    +
    +
    unparsedText string
    +

    The NC text to parse and modify.

    +
    +
    targetTags IEnumerable<string>
    +

    candidate target tags to extract values for

    +
    +
    rhsPrefixParser ExpressionPrefixParser
    +

    Optional longest-valid-prefix expression +parser delimiting each RHS (see ExpressionPrefixParser).

    +
    +
    + +

    Returns

    +
    +
    List<TagValue>
    +

    List of extracted tag values.

    +
    +
    + + + + + + + +

    Remarks

    +

    Without rhsPrefixParser, the value is captured as +the following non-whitespace run, so arithmetic expressions without +embedded spaces (R63+150) and named-variable references +(_Z_HOME) survive as strings for the evaluation stage; numeric +literals are typed later by the caller's converter +(e.g. ToFloat(string)). +With rhsPrefixParser (parser-delimited capture), +the value is the longest valid expression prefix after the = — +spaced arithmetic (R63 + 150), balanced call parentheses +(DC(47.296)) and glued following words (X=100Y50) all +delimit correctly; the lexical \S+ run stays as the per-match +fallback when no prefix parses.

    +
    + + + + -

    - GrabTagValue(ref string, IEnumerable<string>, string) +

    + GrabTagValue(ref string, IEnumerable<string>, string, bool)

    Get tag values. -Concatenated tag-value syntax (no = sign). -The syntax is for assignment with space or no separation. +Concatenated tag-value syntax (no = sign), glued by default: +the value must follow the tag immediately. Pass +allowSpacedValue to also accept whitespace +between tag and value (the Heidenhain detached feed word). ex. -Heidenhain: L X Q2 Y33.4 FQ1 -Heidenhain: L X Q2 Y33.4 F+Q1 +Heidenhain: L X+10 Y33.4 FQ1 +Heidenhain (allowSpacedValue): L Z-22.5 F 20000 ISO: X100.3Y3.3 Fanuc Macro: X[#1+#2] Y[#1*2+100]

    -
    public static List<TagValue> GrabTagValue(ref string unparsedText, IEnumerable<string> targetTags, string varPrefix)
    +
    public static List<TagValue> GrabTagValue(ref string unparsedText, IEnumerable<string> targetTags, string varPrefix, bool allowSpacedValue = false)

    Parameters

    @@ -312,6 +386,13 @@ Fanuc Macro: X[#1+#2] Y[#1*2+100]

    varPrefix string

    variable index code prefix. ex. Fanuc # for #123; Heidenhain Q for Q123.

    +
    +
    allowSpacedValue bool
    +

    when true, whitespace may separate a +tag from its value (F 20000); the value grammar must still +match right after the run, so F MAX or F X+10 stay +unclaimed. Default false keeps the glued-only grammar every other +brand pins.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SiemensSyntaxUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SiemensSyntaxUtil.html index 15b85334..38557922 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SiemensSyntaxUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SiemensSyntaxUtil.html @@ -154,6 +154,57 @@ Class SiemensSyntaxUtil +

    + NamedIdentPattern + +

    + +

    Identifier grammar for Siemens named-assignment LHS capture +(IdentPattern override). +Four alternatives: $ system variables with an optional +literal index list ($P_UIFR[5,Z,TR], $AC_TIME); +underscore-leading names (_X_HOME); names containing an +underscore (HH_ROBOTON, L_39); and one-letter+digits +words (H1=21 auxiliary functions; also re-matches R63, +the P0-blessed benign overlap with TagAssignmentSyntax +— both sides carry the same TerminateWords and RhsDialect). +Deliberately narrower than +DefaultIdentPattern: a +multi-letter letters+digits run must NOT match, or a fully-glued +block like G90X0Y=R63 is swallowed whole as +Assignments.G90X0Y before the flag/axis syntaxes can +token-split it (real-corpus bug); the one-letter+digits alternative +cannot fire inside it (no letter+digits run sits directly +before the =). The corpus' named variables all carry an +underscore; a hypothetical underscore-free DEF name is still +lowered correctly because SiemensDefStatementSyntax +owns DEF lines, but its later re-assignments would not be captured — +corpus-driven trade-off.

    +
    +
    + +
    +
    public const string NamedIdentPattern = "\\$\\w+(?:\\[[^\\]=]*\\])?|_\\w+|[A-Za-z]\\w*_\\w*|[A-Za-z]\\d+"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + + +

    VarTag @@ -227,7 +278,14 @@ Class SiemensSyntaxUtil

    -

    Common Siemens transform / frame flags under Flags.

    +

    Common Siemens bare-word flags under Flags: +RTCP codes (TRAORI/TRAFOOF — consumed by +SiemensTraoriSyntax), +SUPA (consumed by MachineCoordSelectSyntax), +STOPRE (consumed by SiemensStopreSyntax), +RET (consumed by SiemensSubProgramReturnSyntax) and the +path-control modal words consumed by +SiemensPathSmoothingSyntax.

    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 914cdad7..62a32bc1 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.SyntaxPiece.html @@ -238,6 +238,40 @@ to store typed values at parse time. + + +

    + IsFrozen + +

    + +

    True when the parse result is held as a frozen UTF-8 snapshot instead +of a live JsonObject graph — see +Freeze().

    +
    +
    + +
    +
    public bool IsFrozen { get; }
    +
    + + + + + +

    Property Value

    +
    +
    bool
    +
    +
    + + + + + + + +

    @@ -246,6 +280,19 @@ to store typed values at parse time.

    Structured parse result built by syntax passes.

    +

    +While the piece is live (the default), this is the one mutable +JsonObject every pipeline stage +reads and writes. After Freeze(), the getter re-parses the +frozen UTF-8 snapshot and returns a FRESH object on every call — treat +it as a read-only snapshot: mutations land on the transient copy and +are lost, and two calls return different object references. All +mutating consumers run before the freeze boundary (see +Freeze()), so downstream readers (NC optimization, +writeback composition, GUI JSON panels) see identical content either +way. Setting this property replaces the live object and discards any +frozen snapshot. +

    @@ -309,14 +356,27 @@ to store typed values at parse time. -

    0-based ordinal in NC execution order. Stamped at piece construction -time by GetSyntaxPieces(ISegmenter, List<INcDependency>, 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.

    +

    0-based, session-globally unique ordinal in NC execution order. +Stamped at piece construction time by +GetSyntaxPieces(ISegmenter, List<INcDependency>, IEnumerable<IndexedFileLine>, int, NcDiagnosticProgress, CancellationToken) from the session's +SentenceIndexCounterDependency: +each piece allocates the next counter value as the lazy pipeline +materializes it, so values are strictly increasing along the executed +stream — subprogram / macro bodies inlined by +SubProgramCallSyntax and friends interleave correctly between +host blocks, including nested calls. Useful as a cross-process +alignment key (messages, ClStripPos, MachiningStep) — unlike the +(FileIndex, LineIndex) source order, it reflects execution order.

    +

    +Values are NOT contiguous per file: eager label scans +(LabelScanUtil / RewindToLine) number the whole +re-segmented file and discard the pre-label prefix, leaving gaps. +Never negative — -1 stays reserved as the "not in pipeline" +sentinel on downstream carriers. When the counter dependency is +absent (legacy XML preset), numbering falls back to the caller's +contiguous begin-index sequence, which can double-book across +inline boundaries. +

    Required at construction: the index is identity, not optional metadata. Read-only after construction; the pipeline guarantees one stamping per @@ -350,6 +410,49 @@ piece at the wrapping chokepoint. + + +

    + Freeze() + +

    + +

    Replaces the live JsonObject graph with its compact +UTF-8 serialization (~13× smaller live-memory footprint per retained +piece), keeping the piece readable through the JsonObject +getter via on-demand re-parse. Uses +CompactNanOptions — the exact leaf encoding of +ToLeafCompactJsonString(JsonNode, JsonSerializerOptions) — so the JSON projection +of a frozen piece is byte-identical to the live one (NaN / Infinity +serialize as quoted literal strings; explicit nulls survive).

    +

    +Call only after every mutating consumer of this piece has run — the +session pipeline freezes a piece once it left the executing window +(its semantics completed plus a lag margin; see +MachiningProcs.NcRunnerSessionState). Idempotent; a piece with a +null JsonObject stays null. Thread-safe against +concurrent readers: they observe either the live graph or the frozen +snapshot, never a torn state. +

    +
    +
    + +
    +
    public void Freeze()
    +
    + + + + + + + + + + + + +

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.TransformationUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.TransformationUtil.html index 371108cd..3de7659c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.TransformationUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.TransformationUtil.html @@ -107,7 +107,7 @@ block, applicable to any interpolated point along the contour.
  • ClLinearMotionSemantic); do not apply it to +(ClLinearMcMotionSemantic); do not apply it to interpolated ProgramXyz.
  • Both kinds carry a real Mat4d so composition stays a pure matrix product — no entry has a missing matrix. Use HasDynamicEntry(JsonObject) to detect @@ -484,6 +484,91 @@ the endpoint-semantic contract.

    + + +

    + GetComposedTransformAtAbc(JsonObject, Vec3d, Vec3d, IMachineKinematics, double) + +

    + +

    Composes the chain into the Mat4d valid at an INTERPOLATED contour +point whose rotary state is stepAbc_rad, by +rebuilding every KindDynamic entry at that rotary state +while keeping every KindStatic entry's stored snapshot. +The per-step dual of GetComposedTransform(JsonObject), which is +endpoint-only when the chain carries a Dynamic entry.

    +
    +
    + +
    +
    public static Mat4d GetComposedTransformAtAbc(JsonObject json, Vec3d stepAbc_rad, Vec3d endpointAbc_rad, IMachineKinematics kinematics, double toolHeightOffset_mm)
    +
    + +

    Parameters

    +
    +
    json JsonObject
    +

    The block's JSON sections carrying the chain.

    +
    +
    stepAbc_rad Vec3d
    +

    The interpolated point's MC rotary state in +radians (NaN axes are treated as 0, mirroring +ResolveEndpointAbc(LazyLinkedListNode<SyntaxPiece>, IMachineAxisConfig)).

    +
    +
    endpointAbc_rad Vec3d
    +

    The block-endpoint MC rotary state in +radians — the state the stored Dynamic snapshots were built at.

    +
    +
    kinematics IMachineKinematics
    +

    The machine kinematics; null keeps every +stored snapshot.

    +
    +
    toolHeightOffset_mm double
    +

    The block's +ToolHeightCompensation offset in mm (the value its +Dynamic height entry was built with).

    +
    +
    + +

    Returns

    +
    +
    Mat4d
    +
    +
    + + + + + + + +

    Remarks

    +

    Rebuild rules, per Dynamic entry source:

    + +With a null kinematics every entry keeps its +stored snapshot, collapsing to GetComposedTransform(JsonObject) — +correct for the only kinematics-less Dynamic corner (the +G43p4RtcpSyntax UnitZ height fallback, +whose matrix does not depend on ABC). +
    + + + +

    @@ -580,10 +665,39 @@ a Pn-frame point, but expressed as a reusable Mat4d so the chain stays a pure matrix product (no per-point IK call inside GetComposedTransform(JsonObject)).

    +The pre-pivot anchor is the machine-zero attacher point +McToPn(0).Point as a pure translation — the same +origin anchor HardNc keeps in +HardNcEnv.AttacherAtMcZeroOnTableCoordinate. Program-frame +vectors already point along the Pn (table-buckle) axes, so only +K(0)'s translation may enter the anchor. Folding the full +K(0) (its linear part encodes per-axis motion sense — a +workpiece-side linear axis contributes a negated row) +would flip those axes' program components before the IK; on a +machine whose Z rides the table (e.g. the B-x7000 WAC chain, +table branch Base→Z→B→W) that mirrored every program Z +and, at B≈180°, threw the resolved MC off by twice the +pivot-to-attacher distance (~3.5 m). +

    +

    +Requiring machine files to be modelled the other way instead — +workpiece-side axes negative, which makes K(0)'s linear part +the identity and the two constructions equivalent — was evaluated as +an alternative to this fix and deliberately rejected. +IMachineKinematics resolves either axis direction, so a +file that positions correctly through +PnToMc(DVec3d, out DVec3d) has to position correctly +through this transform as well; a precondition enforced here and +nowhere else would only make one consumer diverge from the kinematics +on files every other consumer accepts. The modelling convention +governs how MC values read against the machine panel, and belongs to +a check on the data when it loads — never to this matrix. +

    +

    Constructed by probing McToPn(DVec3d) at the four standard basis points (origin + XYZ unit vectors) at the -target ABC to derive K(abc), and similarly at ABC=0 to derive -K(0); returns K(0) · K(abc).GetInverse(). Topology- +target ABC to derive K(abc); returns +T(McToPn(0).Point) · K(abc).GetInverse(). Topology- agnostic — works for any affine kinematic chain regardless of axis order. Legacy PnToMc(DVec3d, out DVec3d) remains the reference oracle. @@ -619,6 +733,57 @@ reference oracle. + + +

    + MakePivotTransformMat(IMachineKinematics, Vec3d, Mat4d) + +

    + +

    Variant anchored to an arbitrary pre-pivot frame: builds the +PivotTransformSource Mat4d +preFrameToPn · K(abc)⁻¹ that maps a point of the chain's +accumulated pre-pivot frame directly to MC at the block's endpoint +ABC. The two-parameter overload is this variant specialised to the +NC pipeline's machine-zero program frame +(preFrameToPn = T(McToPn(0).Point), translation only — see +its remarks for why K(0)'s linear part must stay out); the +CLSF pipeline passes its workpiece→Pn fixture-topology matrix +instead, so the pivot entry absorbs the workpiece placement +together with the kinematics.

    +
    +
    + +
    +
    public static Mat4d MakePivotTransformMat(IMachineKinematics kinematics, Vec3d abc_rad, Mat4d preFrameToPn)
    +
    + +

    Parameters

    +
    +
    kinematics IMachineKinematics
    +
    +
    abc_rad Vec3d
    +
    +
    preFrameToPn Mat4d
    +
    +
    + +

    Returns

    +
    +
    Mat4d
    +
    +
    + + + + + + + + + + +

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.html index 67fc88e7..9790c693 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.Syntaxs.html @@ -166,7 +166,7 @@ block, applicable to any interpolated point along the contour.
  • ClLinearMotionSemantic); do not apply it to +(ClLinearMcMotionSemantic); do not apply it to interpolated ProgramXyz.
  • Both kinds carry a real Mat4d so composition stays a pure matrix product — no entry has a missing matrix. Use HasDynamicEntry(JsonObject) to detect @@ -199,6 +199,20 @@ without producing actions.

    In-situ syntax: mutates the JsonObject of the given node in-place without changing the node count. Most parsing and logic syntaxes implement this interface.

    +
    + +

    +Delegates +

    +
    +
    ExpressionPrefixParser
    +

    Longest-valid-prefix expression parse over source: +returns true with consumedLength set to the +number of leading characters forming a valid expression (the grammar +decides where a captured RHS ends), or false when not even a +prefix parses. Capture syntaxes take this as an optional hook so the +assignment/tag grammars stay decoupled from any concrete expression +parser (see NcExpressionDialectUtil.TryParsePrefix).

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.html b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.html index 9a666310..5a2d6627 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.html @@ -95,18 +95,71 @@ 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.

    +
    ControllerPresetWriter
    +

    Writes the built-in brand controller presets out as standalone +SoftNcRunner resource files.

    +

    +A controller resource file is one serialized SoftNcRunner — the +whole pipeline (dependencies, segmenter, initializers, syntaxes, semantics) +that decides how a brand's NC code is interpreted. The shipped copies live +under Resource/Controller/ so the Object Management Load +browser starts populated; they are regenerable snapshots, not the source of +truth — the brand properties on SoftNcRunner are. +

    +

    +Writing needs no XFactory registration. Reading a file back +does: call Reg(XFactory) first, otherwise +XFactory.GenListSkippingUnloadable drops every unregistered pipeline +entry and hands back a silently hollow runner. +

    +
    +
    +
    +
    NcCompositionGate
    +

    License gate for the NC composition layer — the capability of registering +external (non-built-in) processing units into a SoftNcRunner +pipeline, and of executing NC-embedded C# scripts +(ActLineCsScript).

    +

    +The boundary: the script layer (calling the public API from your own +application code, e.g. session scripts) needs no extra license; the +composition layer (registering or replacing processing units inside +the interpretation pipeline — NcSyntaxList, +PipelineNcDependencyList, +NcSemanticList, +NcInitializationList, +Segmenter — or injecting per-line scripts into +it) requires NcComposition. +

    +

    +A unit is built-in when its concrete type lives in this library's +own assembly; anything else is external. Order, count, duplication +and constructor configuration of built-in units are unrestricted — the +gate never inspects the shape of the pipeline, only the identity of each +unit. +

    +

    +Degradation is silent and functional: without the license the built-in +dialects run unchanged; external units are skipped for the session and a +single Composition--NotLicensed diagnostic lists them. The decision +and its rejection record live in the native license module. +

    NcDiagnostic

    A structured diagnostic from the SoftNcRunner pipeline, -designed for IProgress<T> consumption.

    +designed for IProgress<T> consumption. Implements +IMessage so it shares the common message channel with +SimpleMessage, step diagnostics, and progress fractions, while +additionally carrying an NC-source SentenceCarrier anchor that +non-NC messages do not have.

    +

    +Also an ISentenceCarrier itself — GetSentence() and +SentenceIndex delegate to SentenceCarrier so a +diagnostic can be used directly anywhere a carrier is expected, without the +consumer unwrapping the inner anchor. +

    Id is composed as {Primary}-{Secondary}--{Abbrev} (e.g., Cycle-Peck--BadPeckQ, Syntax-Build--Exception). @@ -116,11 +169,37 @@ For irregular cases that don't fit the pattern, use a custom string.

    NcDiagnosticProgress
    -

    Helper that emits NcDiagnostic records via an -IProgress<T> sink. Provides one method per -(NcDiagnosticCategory, NcDiagnosticSeverity) -pair, each with an optional Sentence overload locating -the issue in the NC source.

    +

    Helper that emits NcDiagnostic records — retaining them in +Diagnostics (their canonical home) and forwarding each to an +IProgress<T> of IMessage sink for live consumption. +Provides one method per (Category, Severity) pair, +each with an optional Sentence overload locating the issue in the NC source. +Each method has a *Fmt sibling taking a FormattableString that keeps +the interpolated template and values (Format / +Args) for client-side localization; the sibling must be opted +into by name — an interpolated string literal passed to the string method +binds to string and is not captured. +A caller that runs a bounded operation (an NC play, a writeback run) can wrap +it in BeginRepeatFold() so identical repeated diagnostics fold +into a first occurrence plus one counted summary instead of flooding the sink.

    +
    +
    +
    +
    NcRunnerSuit
    +

    A switchable “runner suit”: bundles the per-machine NC pipeline +(SoftNcRunner plus its optional side-file path +SoftNcRunnerFile) with the per-workpiece +PerCaseNcDependencyList the runner's +INcDependencyProxy placeholders resolve against. The suit is the +proxies' INcDependencyListHost, so the runner and its case data +switch together as one unit — load a different suit to switch the active +parser (NC or CSV) within a session.

    +

    +Read/Write only (pure IO, no own XxxFile identity pointer): the owning +project serializes the suit's two members flat in the project XML, +keeping the per-workpiece PerCaseNcDependencyList project-local +rather than a shared side file. +

    @@ -163,21 +242,20 @@ needing two separate references.

    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)) +MachiningStep, etc.) when the (FileIndex, LineIndex) source order is not enough because SubProgram inline reorders blocks relative to -(FileIndex, LineIndex).

    +source order.

    ISessionResettable

    Marker for objects that hold session-scoped runtime state which must be -cleared when RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) initializes a new +cleared when RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) initializes a new session pipeline (the state.IsInitialized == false edge).

    Implementers may live on either chain: INcDependency or INcSyntax. SoftNcRunner scans -NcDependencyList and +PipelineNcDependencyList and NcSyntaxList on the session-init edge and calls OnSessionReset() on every match.

    @@ -188,22 +266,6 @@ retained-but-volatile state on a controller power cycle (e.g., Fanuc Session-reset clears state whose lifetime is one pipeline pass (iteration counters, file-index allocators, etc.).

    -
    -
    -

    -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).

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActActualDateTime.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActActualDateTime.html new file mode 100644 index 00000000..df55d180 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActActualDateTime.html @@ -0,0 +1,320 @@ + + + + + Class ActActualDateTime | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class ActActualDateTime +

    + +
    +
    Namespace
    Hi.Numerical.Acts
    +
    Assembly
    HiMech.dll
    +
    + +

    Represents an action that records the absolute controller timestamp +(wall-clock DateTime) for a machine step. Parallel to +ActActualTimecode: that act carries the run-relative timecode +(a TimeSpan), this one preserves the raw calendar instant so +the date is not lost — converting between the two is the mapping anchor's +job, done once at the boundary.

    +
    +
    + +
    +
    public class ActActualDateTime : IActMachineStep, IAct
    +
    + + + + +
    +
    Inheritance
    +
    + +
    ActActualDateTime
    +
    +
    + +
    +
    Implements
    +
    + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + + + + +

    Constructors +

    + + + + +

    + ActActualDateTime(DateTime) + +

    + +

    Initializes a new instance of the ActActualDateTime class.

    +
    +
    + +
    +
    public ActActualDateTime(DateTime actualDateTime)
    +
    + +

    Parameters

    +
    +
    actualDateTime DateTime
    +

    The absolute controller timestamp for the machine step.

    +
    +
    + + + + + + + + + + + + +

    Properties +

    + + + + +

    + ActualDateTime + +

    + +

    Gets or sets the absolute controller timestamp for the machine step.

    +
    +
    + +
    +
    public DateTime ActualDateTime { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    DateTime
    +
    +
    + + + + + + + + +

    Methods +

    + + + + +

    + ToString() + +

    + +

    Returns a string that represents the current object.

    +
    +
    + +
    +
    public override string ToString()
    +
    + + +

    Returns

    +
    +
    string
    +

    A string that represents the current object.

    +
    +
    + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActActualTime.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActActualTimecode.html similarity index 87% rename from App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActActualTime.html rename to App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActActualTimecode.html index d0482483..f83658af 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActActualTime.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActActualTimecode.html @@ -2,9 +2,9 @@ - Class ActActualTime | HiAPI-C# 2025 + Class ActActualTimecode | HiAPI-C# 2025 - + @@ -84,12 +84,12 @@
    -
    +
    -

    -Class ActActualTime +

    +Class ActActualTimecode

    @@ -102,7 +102,7 @@ Class ActActualTime
    -
    public class ActActualTime : IActMachineStep, IAct
    +
    public class ActActualTimecode : IActMachineStep, IAct
    @@ -112,7 +112,7 @@ Class ActActualTime
    Inheritance
    -
    ActActualTime
    +
    ActActualTimecode
    @@ -182,19 +182,19 @@ Class ActActualTime - + -

    - ActActualTime(TimeSpan) +

    + ActActualTimecode(TimeSpan)

    -

    Initializes a new instance of the ActActualTime class.

    +

    Initializes a new instance of the ActActualTimecode class.

    -
    public ActActualTime(TimeSpan actualTime)
    +
    public ActActualTimecode(TimeSpan actualTime)

    Parameters

    @@ -219,10 +219,10 @@ Class ActActualTime - + -

    - ActualTime +

    + ActualTimecode

    @@ -231,7 +231,7 @@ Class ActActualTime
    -
    public TimeSpan ActualTime { get; set; }
    +
    public TimeSpan ActualTimecode { get; set; }
    @@ -255,9 +255,9 @@ Class ActActualTime - + -

    +

    ToString()

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActClArcMcXyzabcContour.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActClArcMcXyzabcContour.html new file mode 100644 index 00000000..08b33510 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActClArcMcXyzabcContour.html @@ -0,0 +1,528 @@ + + + + + Class ActClArcMcXyzabcContour | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class ActClArcMcXyzabcContour +

    + +
    +
    Namespace
    Hi.Numerical.Acts
    +
    Assembly
    HiMech.dll
    +
    + +

    Arc twin of ActClLinearMcXyzabcContour: a circular cutter +location path realized on machine coordinates. The arc is interpolated in +CL space (true arc via At(double), including tilting +normals) and every resampled step is inverse-solved through +PnToMc(DVec3d, out DVec3d).

    +
    +
    + +
    +
    public class ActClArcMcXyzabcContour : IActDuration, IActMcXyzabcContour, IAct
    +
    + + + + +
    +
    Inheritance
    +
    + +
    ActClArcMcXyzabcContour
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + + +

    Remarks

    +

    Differences from the linear twin:

    +
    • The step normal comes from the arc geometry itself +(At(double)), not from a forward-kinematic probe of +interpolated ABC — the CL source is the truth for tool orientation.
    • Rotary unwrap anchoring chains step-to-step (each solved ABC is +anchored to the previous step's) because the ABC path of an arc is not +linear; the first step anchors to McSeq.pre.
    +The arc geometry must already be expressed in the kinematic Pn frame +(workpiece→Pn transform applied by the emitting semantic). +
    + + +

    Constructors +

    + + + + +

    + ActClArcMcXyzabcContour(ClCircleArc, SeqPair<DVec3d>, double, TimeSpan, IMachineKinematics) + +

    + +

    Initializes a new instance of the ActClArcMcXyzabcContour class.

    +
    +
    + +
    +
    public ActClArcMcXyzabcContour(ClCircleArc clArcOnPn, SeqPair<DVec3d> mcSeq, double controllerToolOffset, TimeSpan duration, IMachineKinematics coordinateConverter)
    +
    + +

    Parameters

    +
    +
    clArcOnPn ClCircleArc
    +

    Circular CL path in the kinematic Pn frame

    +
    +
    mcSeq SeqPair<DVec3d>
    +

    Machine coordinate endpoint pair (rotary in radians)

    +
    +
    controllerToolOffset double
    +

    The tool's attacher→tip length

    +
    +
    duration TimeSpan
    +

    Duration of the contour movement

    +
    +
    coordinateConverter IMachineKinematics
    +

    Coordinate converter for transformation

    +
    +
    + + + + + + + + + + + + +

    Properties +

    + + + + +

    + ActDuration + +

    + +

    Gets or sets the duration of the action.

    +
    +
    + +
    +
    public TimeSpan ActDuration { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    TimeSpan
    +
    +
    + + + + +

    Remarks

    +

    The duration represents:

    +
      +
    • The time required to complete the action
    • +
    • Should be positive and finite
    • +
    • Zero duration indicates an instantaneous action
    • +
    • Used for scheduling and timing calculations
    • +
    +
    + + + + + + +

    + ClArcOnPn + +

    + +

    The circular CL path in the kinematic Pn frame; its points are tool +tip positions and its normals tool axis directions.

    +
    +
    + +
    +
    public ClCircleArc ClArcOnPn { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    ClCircleArc
    +
    +
    + + + + + + + + + + +

    + ControllerToolOffset + +

    + +

    The active tool's attacher→tip length; reconstructs the attacher +position from a CL tip point.

    +
    +
    + +
    +
    public double ControllerToolOffset { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    double
    +
    +
    + + + + + + + + + + +

    + CoordinateConverter + +

    + +

    Coordinate converter.

    +
    +
    + +
    +
    public IMachineKinematics CoordinateConverter { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    IMachineKinematics
    +
    +
    + + + + + + + + + + +

    + McSeq + +

    + +

    Machine-coordinate endpoints (begin/end); rotary components in +radians. Used for the step count estimate and as the unwrap anchor of +the first resampled step.

    +
    +
    + +
    +
    public SeqPair<DVec3d> McSeq { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    SeqPair<DVec3d>
    +
    +
    + + + + + + + + +

    Methods +

    + + + + +

    + GetActMcXyzabcSteps(IMachiningMotionResolution, double, Action<object>) + +

    + +

    Gets the machine XYZABC steps for this contour.

    +
    +
    + +
    +
    public IEnumerable<ActMcXyzabcStep> GetActMcXyzabcSteps(IMachiningMotionResolution ncResolution, double spindleBuckleToToolTipLength, Action<object> coordinateConversionFailedAction)
    +
    + +

    Parameters

    +
    +
    ncResolution IMachiningMotionResolution
    +

    The machining motion resolution to use for step generation.

    +
    +
    spindleBuckleToToolTipLength double
    +

    The length from spindle buckle to tool tip, used for computing step numbers.

    +
    +
    coordinateConversionFailedAction Action<object>
    +

    Called when attacher NP to MC conversion fails; the argument is the failed DVec3d (attacher NP).

    +
    +
    + +

    Returns

    +
    +
    IEnumerable<ActMcXyzabcStep>
    +

    A collection of machine XYZABC steps.

    +
    +
    + + + + + + + + + + + + + +

    + ToString() + +

    + +

    Returns a string that represents the current object.

    +
    +
    + +
    +
    public override string ToString()
    +
    + + +

    Returns

    +
    +
    string
    +

    A string that represents the current object.

    +
    +
    + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActClDerivedMcXyzabcContour.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActClLinearMcXyzabcContour.html similarity index 79% rename from App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActClDerivedMcXyzabcContour.html rename to App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActClLinearMcXyzabcContour.html index 90bc2b74..e3ad4fa3 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActClDerivedMcXyzabcContour.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActClLinearMcXyzabcContour.html @@ -2,9 +2,9 @@ - Class ActClDerivedMcXyzabcContour | HiAPI-C# 2025 + Class ActClLinearMcXyzabcContour | HiAPI-C# 2025 - + @@ -84,12 +84,12 @@
    -
    +
    -

    -Class ActClDerivedMcXyzabcContour +

    +Class ActClLinearMcXyzabcContour

    @@ -103,7 +103,7 @@ This class handles synchronized linear interpolation of tool position and orient
    -
    public class ActClDerivedMcXyzabcContour : IActDuration, IActMcXyzabcContour, IAct
    +
    public class ActClLinearMcXyzabcContour : IActDuration, IActMcXyzabcContour, IAct
    @@ -113,7 +113,7 @@ This class handles synchronized linear interpolation of tool position and orient
    Inheritance
    -
    ActClDerivedMcXyzabcContour
    +
    ActClLinearMcXyzabcContour
    @@ -178,7 +178,7 @@ This class handles synchronized linear interpolation of tool position and orient -

    Remarks

    +

    Remarks

    This class is used for:

    • Complex 5-axis machining movements
    • @@ -199,19 +199,19 @@ This class handles synchronized linear interpolation of tool position and orient - + -

      - ActClDerivedMcXyzabcContour(SeqPair<DVec3d>, SeqPair<Vec3d>, double, TimeSpan, IMachineKinematics) +

      + ActClLinearMcXyzabcContour(SeqPair<DVec3d>, SeqPair<Vec3d>, double, TimeSpan, IMachineKinematics)

      -

      Initializes a new instance of the ActClDerivedMcXyzabcContour class.

      +

      Initializes a new instance of the ActClLinearMcXyzabcContour class.

      -
      public ActClDerivedMcXyzabcContour(SeqPair<DVec3d> mcSeq, SeqPair<Vec3d> controllerClPointSeq, double controllerToolOffset, TimeSpan duration, IMachineKinematics coordinateConverter)
      +
      public ActClLinearMcXyzabcContour(SeqPair<DVec3d> mcSeq, SeqPair<Vec3d> controllerClPointSeq, double controllerToolOffset, TimeSpan duration, IMachineKinematics coordinateConverter)

      Parameters

      @@ -248,9 +248,9 @@ This class handles synchronized linear interpolation of tool position and orient - + -

      +

      ActDuration

      @@ -276,7 +276,7 @@ This class handles synchronized linear interpolation of tool position and orient -

      Remarks

      +

      Remarks

      The duration represents:

      • The time required to complete the action
      • @@ -289,9 +289,9 @@ This class handles synchronized linear interpolation of tool position and orient - + -

        +

        ControllerClPointSeq

        @@ -324,9 +324,9 @@ Linearly interpolated during motion resolution.

        - + -

        +

        ControllerToolOffset

        @@ -357,9 +357,9 @@ Used to reconstruct attacher position from controller CL.

        - + -

        +

        CoordinateConverter

        @@ -389,9 +389,9 @@ Used to reconstruct attacher position from controller CL.

        - + -

        +

        McSeq

        @@ -418,7 +418,7 @@ The Normal property represents ABC angles in radians.

        -

        Remarks

        +

        Remarks

        Contains:

        • Start and end positions in machine coordinates
        • @@ -434,9 +434,9 @@ The Normal property represents ABC angles in radians.

          - + -

          +

          GetActMcXyzabcSteps(IMachiningMotionResolution, double, Action<object>)

          @@ -479,9 +479,9 @@ The Normal property represents ABC angles in radians.

          - + -

          +

          ToString()

          diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActMcPolarLinearContour.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActMcPolarLinearContour.html index 3d9bf97d..3d47c742 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActMcPolarLinearContour.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActMcPolarLinearContour.html @@ -185,8 +185,8 @@ Class ActMcPolarLinearContour -

          - ActMcPolarLinearContour(DVec3d, SeqPair<Vec3d>, TimeSpan, double) +

          + ActMcPolarLinearContour(DVec3d, SeqPair<Vec3d>, TimeSpan, double, PolarModeDirEnum)

          @@ -195,7 +195,7 @@ Class ActMcPolarLinearContour
          -
          public ActMcPolarLinearContour(DVec3d preMcXyzabc_rad, SeqPair<Vec3d> programPolarXczSeq, TimeSpan duration, double zCoordinateOffset)
          +
          public ActMcPolarLinearContour(DVec3d preMcXyzabc_rad, SeqPair<Vec3d> programPolarXczSeq, TimeSpan duration, double zCoordinateOffset, PolarModeDirEnum polarDir = PolarModeDirEnum.XC)

          Parameters

          @@ -210,7 +210,10 @@ Class ActMcPolarLinearContour

          Duration of the contour movement

          zCoordinateOffset double
          -

          Z-coordinate offset

          +

          Depth-axis (plane normal) offset

          +
          +
          polarDir PolarModeDirEnum
          +

          Polar axis pair (default XC)

          @@ -270,6 +273,39 @@ Class ActMcPolarLinearContour + + +

          + PolarDir + +

          + +

          The polar axis pair mapping the triple-space steps onto machine +axes (XC unless the machine runs G12.1 on YA/ZB).

          +
          +
          + +
          +
          public PolarModeDirEnum PolarDir { get; }
          +
          + + + + + +

          Property Value

          +
          +
          PolarModeDirEnum
          +
          +
          + + + + + + + +

          diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActMcPolarSpiralContour.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActMcPolarSpiralContour.html new file mode 100644 index 00000000..2e1df704 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActMcPolarSpiralContour.html @@ -0,0 +1,614 @@ + + + + + Class ActMcPolarSpiralContour | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          + +
          + +
          +
          +
          +
          +
          Table of Contents
          + +
          +
          + +
          +
          +
          + +
          +
          + + + +
          + +
          + + + +

          +Class ActMcPolarSpiralContour +

          + +
          +
          Namespace
          Hi.Numerical.Acts
          +
          Assembly
          HiMech.dll
          +
          + +

          Circular (arc/helix) contour on the polar hypothetical plane while +Polar Coordinate Interpolation (Fanuc G12.1) is active.

          +

          +The arc geometry lives entirely in central polar Rxcz coordinates +(X = radius-direction linear axis mm, Y = hypothetical rotary-substitute +axis mm, Z = real Z mm, origin on the rotary center) — the same spiral +math as ActMcXyzSpiralContour. Each sampled point is then +converted to machine coordinates the way +ActMcPolarLinearContour does: radius drives machine X, the +atan2 angle drives the machine C axis with the branch chained from +the previous step (GetNoInterpolationOrdinaryProgramXcz_rad(Vec3d, double, Vec3d)), +machine Y/A/B stay frozen at the previous position, and Z carries the +coordinate/tool-height offset. +

          +The chaining state is local to each enumeration, so the act can be +re-enumerated safely and arcs crossing the ±180° branch (or spanning +multiple turns via AdditionalCircleNum) stay continuous — +unlike the HardNc per-point unresolved atan2, whose machine C +jumps by one cycle at the branch cut (same physical pose). + +Known divergence: per-step machine X is the raw polar radius and machine +Y stays frozen — coordinate-offset X/Y components are NOT applied +(only Z carries an offset), consistent with +ActMcPolarLinearContour and the turn-mill assumption that +machine X ≡ radius. HardNc is internally inconsistent here: its polar +arc steps run the full transform chain (G5x X/Y included) while +its polar linear steps use the raw radius like this act. + +
          +
          + +
          +
          public class ActMcPolarSpiralContour : IActDuration, IActMcXyzabcContour, IAct
          +
          + + + + +
          +
          Inheritance
          +
          + +
          ActMcPolarSpiralContour
          +
          +
          + +
          +
          Implements
          +
          + + + +
          +
          + + +
          +
          Inherited Members
          +
          + + + + + + +
          + +
          +
          Extension Methods
          +
          + + + + + + + +
          + + + + + +

          Constructors +

          + + + + +

          + ActMcPolarSpiralContour(DVec3d, Vec3d, Vec3d, Vec3d, Vec3d, int, TimeSpan, double, PolarModeDirEnum) + +

          + +

          Initializes a new instance of the ActMcPolarSpiralContour class.

          +
          +
          + +
          +
          public ActMcPolarSpiralContour(DVec3d preMcXyzabc_rad, Vec3d programPolarBegin, Vec3d programPolarEnd, Vec3d programPolarCenterOnBeginPlane, Vec3d centerNormal, int additionalCircleNum, TimeSpan duration, double zCoordinateOffset, PolarModeDirEnum polarDir = PolarModeDirEnum.XC)
          +
          + +

          Parameters

          +
          +
          preMcXyzabc_rad DVec3d
          +

          Previous machine XYZ-ABC coordinates in radians

          +
          +
          programPolarBegin Vec3d
          +

          Arc begin in central polar Rxcz (mm)

          +
          +
          programPolarEnd Vec3d
          +

          Arc end in central polar Rxcz (mm)

          +
          +
          programPolarCenterOnBeginPlane Vec3d
          +

          Arc center on the begin plane, central polar Rxcz (mm)

          +
          +
          centerNormal Vec3d
          +

          Plane normal with rotation sign

          +
          +
          additionalCircleNum int
          +

          Number of additional full circles

          +
          +
          duration TimeSpan
          +

          Duration of the contour movement

          +
          +
          zCoordinateOffset double
          +

          Depth-axis (plane normal) offset

          +
          +
          polarDir PolarModeDirEnum
          +

          Polar axis pair (default XC)

          +
          +
          + + + + + + + + + + + + +

          Properties +

          + + + + +

          + ActDuration + +

          + +

          Gets or sets the duration of the action.

          +
          +
          + +
          +
          public TimeSpan ActDuration { get; set; }
          +
          + + + + + +

          Property Value

          +
          +
          TimeSpan
          +
          +
          + + + + +

          Remarks

          +

          The duration represents:

          +
            +
          • The time required to complete the action
          • +
          • Should be positive and finite
          • +
          • Zero duration indicates an instantaneous action
          • +
          • Used for scheduling and timing calculations
          • +
          +
          + + + + + + +

          + AdditionalCircleNum + +

          + +

          Number of additional full circles (helix).

          +
          +
          + +
          +
          public int AdditionalCircleNum { get; set; }
          +
          + + + + + +

          Property Value

          +
          +
          int
          +
          +
          + + + + + + + + + + +

          + CenterNormal + +

          + +

          Plane normal with rotation sign (XC pair → (0,0,±1)).

          +
          +
          + +
          +
          public Vec3d CenterNormal { get; set; }
          +
          + + + + + +

          Property Value

          +
          +
          Vec3d
          +
          +
          + + + + + + + + + + +

          + PolarDir + +

          + +

          The polar axis pair mapping the triple-space steps onto machine +axes (XC unless the machine runs G12.1 on YA/ZB).

          +
          +
          + +
          +
          public PolarModeDirEnum PolarDir { get; }
          +
          + + + + + +

          Property Value

          +
          +
          PolarModeDirEnum
          +
          +
          + + + + + + + + + + +

          + ProgramPolarBegin + +

          + +

          Arc begin in central polar Rxcz coordinates (mm).

          +
          +
          + +
          +
          public Vec3d ProgramPolarBegin { get; set; }
          +
          + + + + + +

          Property Value

          +
          +
          Vec3d
          +
          +
          + + + + + + + + + + +

          + ProgramPolarCenterOnBeginPlane + +

          + +

          Arc center on the begin plane, central polar Rxcz (mm).

          +
          +
          + +
          +
          public Vec3d ProgramPolarCenterOnBeginPlane { get; set; }
          +
          + + + + + +

          Property Value

          +
          +
          Vec3d
          +
          +
          + + + + + + + + + + +

          + ProgramPolarEnd + +

          + +

          Arc end in central polar Rxcz coordinates (mm).

          +
          +
          + +
          +
          public Vec3d ProgramPolarEnd { get; set; }
          +
          + + + + + +

          Property Value

          +
          +
          Vec3d
          +
          +
          + + + + + + + + +

          Methods +

          + + + + +

          + GetActMcXyzabcSteps(IMachiningMotionResolution, double, Action<object>) + +

          + +

          Gets the machine XYZABC steps for this contour.

          +
          +
          + +
          +
          public IEnumerable<ActMcXyzabcStep> GetActMcXyzabcSteps(IMachiningMotionResolution ncResolution, double spindleBuckleToToolTipLength, Action<object> coordinateConversionFailedAction)
          +
          + +

          Parameters

          +
          +
          ncResolution IMachiningMotionResolution
          +

          The machining motion resolution to use for step generation.

          +
          +
          spindleBuckleToToolTipLength double
          +

          The length from spindle buckle to tool tip, used for computing step numbers.

          +
          +
          coordinateConversionFailedAction Action<object>
          +

          Called when attacher NP to MC conversion fails; the argument is the failed DVec3d (attacher NP).

          +
          +
          + +

          Returns

          +
          +
          IEnumerable<ActMcXyzabcStep>
          +

          A collection of machine XYZABC steps.

          +
          +
          + + + + + + + + + + + + + +

          + ToString() + +

          + +

          Returns a string that represents the current object.

          +
          +
          + +
          +
          public override string ToString()
          +
          + + +

          Returns

          +
          +
          string
          +

          A string that represents the current object.

          +
          +
          + + + + + + + + + + + + +
          + +
          +
          + + +
          + +
          + +
          +
          + +
          + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.LsStl.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActMcXyzabcTeleport.html similarity index 69% rename from App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.LsStl.html rename to App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActMcXyzabcTeleport.html index 925adf0d..62af3605 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Cbtr.LsStl.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ActMcXyzabcTeleport.html @@ -2,11 +2,11 @@ - Class LsStl | HiAPI-C# 2025 + Class ActMcXyzabcTeleport | HiAPI-C# 2025 - + - + @@ -84,26 +84,29 @@

        -
        +
        -

        -Class LsStl +

        +Class ActMcXyzabcTeleport

        -
        Namespace
        Hi.Cbtr
        -
        Assembly
        HiCbtr.dll
        +
        Namespace
        Hi.Numerical.Acts
        +
        Assembly
        HiMech.dll
        -

        Linear Sweptable Stl.

        +

        Instant machine-coordinate reposition — the MC counterpart of +ActClTeleport: the chain pose is set without a machining +step, so no time accumulates and no material-removal step is recorded. +Emitted for CLSF FROM / first-motion blocks when the runner drives +an MC machine.

        -
        [Obsolete]
        -public class LsStl : IDisposable
        +
        public class ActMcXyzabcTeleport : IAct
        @@ -113,14 +116,14 @@ public class LsStl : IDisposable
        Inheritance
        -
        LsStl
        +
        ActMcXyzabcTeleport
        Implements
        - +
        @@ -146,9 +149,6 @@ public class LsStl : IDisposable -
        @@ -185,26 +185,52 @@ public class LsStl : IDisposable - + -

        - LsStl(NativeStl) +

        + ActMcXyzabcTeleport()

        -

        Initializes a new instance of the LsStl class.

        +

        Ctor.

        -
        public LsStl(NativeStl nativeStl)
        +
        public ActMcXyzabcTeleport()
        +
        + + + + + + + + + + + + + + + +

        + ActMcXyzabcTeleport(DVec3d) + +

        + +

        Ctor.

        +
        +
        + +
        +
        public ActMcXyzabcTeleport(DVec3d mcXyzabc)

        Parameters

        -
        nativeStl NativeStl
        -

        The native STL to create a linear sweepable STL from.

        -
        +
        mcXyzabc DVec3d
        +
        @@ -222,19 +248,20 @@ public class LsStl : IDisposable - + -

        - LsStlPtr +

        + McXyzabc

        -

        Gets or sets the native pointer to the linear sweepable STL.

        +

        Target machine coordinate; Normal is ABC in +radians (NaN for axes the chain does not have).

        -
        public nint LsStlPtr { get; set; }
        +
        public DVec3d McXyzabc { get; set; }
        @@ -243,7 +270,7 @@ public class LsStl : IDisposable

        Property Value

        -
        nint
        +
        DVec3d
        @@ -258,52 +285,26 @@ public class LsStl : IDisposable - + -

        - Dispose() +

        + ToString()

        -

        Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

        +

        Returns a string that represents the current object.

        -
        public void Dispose()
        +
        public override string ToString()
        - - - - - - - - - - - - - -

        - Dispose(bool) - -

        - -

        Releases the unmanaged resources used by the LsStl and optionally releases the managed resources.

        -
        -
        - -
        -
        protected virtual void Dispose(bool disposing)
        -
        - -

        Parameters

        +

        Returns

        -
        disposing bool
        -

        true to release both managed and unmanaged resources; false to release only unmanaged resources.

        +
        string
        +

        A string that represents the current object.

        @@ -318,34 +319,6 @@ public class LsStl : IDisposable - - -

        - ~LsStl() - -

        - -

        Finalizes an instance of the LsStl class.

        -
        -
        - -
        -
        protected ~LsStl()
        -
        - - - - - - - - - - - - - -
        diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ArcRadialClosure.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ArcRadialClosure.html new file mode 100644 index 00000000..8fc45a66 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.ArcRadialClosure.html @@ -0,0 +1,341 @@ + + + + + Class ArcRadialClosure | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class ArcRadialClosure +

        + +
        +
        Namespace
        Hi.Numerical.Acts
        +
        Assembly
        HiMech.dll
        +
        + +

        Classifies the radial closure of an arc motion — how far the arc's +endpoint sits off the circle its center defines, measured as the gap +between the begin radius and the end radius on the arc plane. +A genuine arc closes (gap 0). The simulation accepts any gap and runs +the block as a spiral whose radius blends linearly +(ActMcXyzSpiralContour), but real controls check this +closure and refuse the block once the gap passes their arc tolerance +(e.g. Heidenhain error 5824 once MP7431 — typically around 0.016 mm — +is exceeded). A program can therefore simulate cleanly and still stop +on the machine; the diagnostics built from this class exist to close +that gap.

        +
        +
        + +
        +
        public static class ArcRadialClosure
        +
        + + + + +
        +
        Inheritance
        +
        + +
        ArcRadialClosure
        +
        +
        + + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + + + + + + +

        Fields +

        + + + +

        + AdviceThreshold_mm + +

        + +

        Advice threshold: half of TypicalControllerTolerance_mm. +A gap past this consumes a substantial share of the tolerance budget +and deserves attention even though a control still accepts it.

        +
        +
        + +
        +
        public const double AdviceThreshold_mm = 0.008
        +
        + + + + +

        Field Value

        +
        +
        double
        +
        +
        + + + + + + + + + + +

        + DiagnosticId + +

        + +

        Diagnostic id shared by the SoftNc and HardNc arc gates.

        +
        +
        + +
        +
        public const string DiagnosticId = "Arc-EndpointOffRadius"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + TypicalControllerTolerance_mm + +

        + +

        The arc tolerance a typical control enforces before refusing the +block (e.g. the Heidenhain MP7431 family default).

        +
        +
        + +
        +
        public const double TypicalControllerTolerance_mm = 0.016
        +
        + + + + +

        Field Value

        +
        +
        double
        +
        +
        + + + + + + + + + +

        Methods +

        + + + + +

        + TryDescribe(double, double, out string, out Dictionary<string, object>) + +

        + +

        Classifies the begin/end radius pair of an arc. Returns false for a +closing arc (gap within AdviceThreshold_mm) and for +degenerate radii; returns true with a constant notification +text and a value-carrying detail +when the gap deserves a validation warning.

        +
        +
        + +
        +
        public static bool TryDescribe(double beginRadius_mm, double endRadius_mm, out string text, out Dictionary<string, object> detail)
        +
        + +

        Parameters

        +
        +
        beginRadius_mm double
        +

        Begin-point radius about the center, on the arc plane.

        +
        +
        endRadius_mm double
        +

        End-point radius about the center, on the arc plane.

        +
        +
        text string
        +

        Constant notification text (fold-stable), or null.

        +
        +
        detail Dictionary<string, object>
        +

        Measured radii and gap, or null.

        +
        +
        + +

        Returns

        +
        +
        bool
        +
        +
        + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.StateActRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.StateActRunner.html index dbb2b863..df73533a 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.StateActRunner.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.StateActRunner.html @@ -178,21 +178,56 @@ Class StateActRunner - + -

        - ActualTime +

        + ActualDateTime + +

        + +

        Absolute controller timestamp (wall-clock DateTime) of the +step, kept alongside ActualTimecode so the calendar date is +not lost. null if not set.

        +
        +
        + +
        +
        public DateTime? ActualDateTime { get; set; }
        +
        + + + + + +

        Property Value

        +
        +
        DateTime?
        +
        +
        + + + + + + + + + + +

        + ActualTimecode

        Actual accumulated worked time. Actual Program time. +Actual End Timecode. null if not set.

        -
        public TimeSpan? ActualTime { get; set; }
        +
        public TimeSpan? ActualTimecode { get; set; }
        @@ -277,6 +312,40 @@ null if not set.

        + + +

        + EndTimecode + +

        + +

        Ideal accumulated worked time by simulation. +Ideal Program time. +The value includes last action duration.

        +
        +
        + +
        +
        public TimeSpan EndTimecode { get; set; }
        +
        + + + + + +

        Property Value

        +
        +
        TimeSpan
        +
        +
        + + + + + + + +

        @@ -377,40 +446,6 @@ null if not set.

        - - -

        - ProgramTime - -

        - -

        Ideal accumulated worked time by simulation. -Ideal Program time. -The value includes last action duration.

        -
        -
        - -
        -
        public TimeSpan ProgramTime { get; set; }
        -
        - - - - - -

        Property Value

        -
        -
        TimeSpan
        -
        -
        - - - - - - - -

        diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.html index 80521c88..13f5e425 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Acts.html @@ -95,7 +95,17 @@ Classes

        -
        ActActualTime
        +
        ActActualDateTime
        +

        Represents an action that records the absolute controller timestamp +(wall-clock DateTime) for a machine step. Parallel to +ActActualTimecode: that act carries the run-relative timecode +(a TimeSpan), this one preserves the raw calendar instant so +the date is not lost — converting between the two is the mapping anchor's +job, done once at the boundary.

        +
        +
        +
        +
        ActActualTimecode

        Represents an action that sets the actual time for a machine step.

        @@ -105,14 +115,23 @@ Classes
        -
        ActClDerivedMcXyzabcContour
        -

        Represents a combined linear movement in both cutter location and machine coordinates. -This class handles synchronized linear interpolation of tool position and orientation.

        +
        ActClArcMcXyzabcContour
        +

        Arc twin of ActClLinearMcXyzabcContour: a circular cutter +location path realized on machine coordinates. The arc is interpolated in +CL space (true arc via At(double), including tilting +normals) and every resampled step is inverse-solved through +PnToMc(DVec3d, out DVec3d).

        ActClLinear

        Represents a linear cutter location movement action.

        +
        +
        +
        +
        ActClLinearMcXyzabcContour
        +

        Represents a combined linear movement in both cutter location and machine coordinates. +This class handles synchronized linear interpolation of tool position and orientation.

        @@ -181,6 +200,38 @@ Used to explicitly mark operations that should be bypassed.

        ActMcPolarLinearContour

        Polar MCZ linear contour.

        +
        +
        +
        +
        ActMcPolarSpiralContour
        +

        Circular (arc/helix) contour on the polar hypothetical plane while +Polar Coordinate Interpolation (Fanuc G12.1) is active.

        +

        +The arc geometry lives entirely in central polar Rxcz coordinates +(X = radius-direction linear axis mm, Y = hypothetical rotary-substitute +axis mm, Z = real Z mm, origin on the rotary center) — the same spiral +math as ActMcXyzSpiralContour. Each sampled point is then +converted to machine coordinates the way +ActMcPolarLinearContour does: radius drives machine X, the +atan2 angle drives the machine C axis with the branch chained from +the previous step (GetNoInterpolationOrdinaryProgramXcz_rad(Vec3d, double, Vec3d)), +machine Y/A/B stay frozen at the previous position, and Z carries the +coordinate/tool-height offset. +

        +The chaining state is local to each enumeration, so the act can be +re-enumerated safely and arcs crossing the ±180° branch (or spanning +multiple turns via AdditionalCircleNum) stay continuous — +unlike the HardNc per-point unresolved atan2, whose machine C +jumps by one cycle at the branch cut (same physical pose). + +Known divergence: per-step machine X is the raw polar radius and machine +Y stays frozen — coordinate-offset X/Y components are NOT applied +(only Z carries an offset), consistent with +ActMcPolarLinearContour and the turn-mill assumption that +machine X ≡ radius. HardNc is internally inconsistent here: its polar +arc steps run the full transform chain (G5x X/Y included) while +its polar linear steps use the raw radius like this act. +
        @@ -208,6 +259,15 @@ This class handles complex tool movements with both position and orientation con
        ActMcXyzabcStep

        Action of Machine coordinate XYCABC Step.

        +
        +
        +
        +
        ActMcXyzabcTeleport
        +

        Instant machine-coordinate reposition — the MC counterpart of +ActClTeleport: the chain pose is set without a machining +step, so no time accumulates and no material-removal step is recorded. +Emitted for CLSF FROM / first-motion blocks when the runner drives +an MC machine.

        @@ -250,6 +310,21 @@ to orient the tool before lateral shift.

        ActUtil

        Provides utility methods for numerical control actions.

        +
        +
        +
        +
        ArcRadialClosure
        +

        Classifies the radial closure of an arc motion — how far the arc's +endpoint sits off the circle its center defines, measured as the gap +between the begin radius and the end radius on the arc plane. +A genuine arc closes (gap 0). The simulation accepts any gap and runs +the block as a spiral whose radius blends linearly +(ActMcXyzSpiralContour), but real controls check this +closure and refuse the block once the gap passes their arc tolerance +(e.g. Heidenhain error 5824 once MP7431 — typically around 0.016 mm — +is exceeded). A program can therefore simulate cleanly and still stop +on the machine; the diagnostics built from this class exist to close +that gap.

        diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Args.PolarPairDef.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Args.PolarPairDef.html new file mode 100644 index 00000000..17597dfc --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Args.PolarPairDef.html @@ -0,0 +1,809 @@ + + + + + Class PolarPairDef | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class PolarPairDef +

        + +
        +
        Namespace
        Hi.Numerical.Args
        +
        Assembly
        HiMech.dll
        +
        + +

        Axis mapping of a Polar Coordinate Interpolation pair +(PolarModeDirEnum): which program/machine axes carry the +radius, the plane depth, and the rotation.

        +

        +The polar math itself runs in "triple space" — the Rxcz vector +(linear/radius, hypothetical, depth) with the plane normal fixed at the +third component — and is pair-independent; this definition maps the +triple's ends onto real axes: NC words on the way in, machine +coordinates on the way out. The plane normal equals the rotary's +rotation axis (C about Z, A about X, B about Y), so +NormalIndex doubles as the ABC component of the angle. +

        +

        +The lathe diameter-programming convention (the radius word arrives +doubled) applies to the X axis only, i.e. the XC pair — mirroring +HardNc PolarEntry, which halves X unconditionally. HardNc's own +YA/ZB slots are dead code (never selected); its +ProgramOrthogonalPlaneNormal table carried swapped normals for +them, corrected alongside this implementation. +

        +
        +
        + +
        +
        public sealed class PolarPairDef
        +
        + + + + +
        +
        Inheritance
        +
        + +
        PolarPairDef
        +
        +
        + + + +
        +
        Inherited Members
        +
        + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        Fields +

        + + + +

        + XC + +

        + +

        X linear + C rotary about Z (the standard turn-mill pair).

        +
        +
        + +
        +
        public static readonly PolarPairDef XC
        +
        + + + + +

        Field Value

        +
        +
        PolarPairDef
        +
        +
        + + + + + + + + + + +

        + YA + +

        + +

        Y linear + A rotary about X.

        +
        +
        + +
        +
        public static readonly PolarPairDef YA
        +
        + + + + +

        Field Value

        +
        +
        PolarPairDef
        +
        +
        + + + + + + + + + + +

        + ZB + +

        + +

        Z linear + B rotary about Y.

        +
        +
        + +
        +
        public static readonly PolarPairDef ZB
        +
        + + + + +

        Field Value

        +
        +
        PolarPairDef
        +
        +
        + + + + + + + + + +

        Properties +

        + + + + +

        + DepthWord + +

        + +

        NC word of the depth (normal-axis) coordinate.

        +
        +
        + +
        +
        public string DepthWord { get; }
        +
        + + + + + +

        Property Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + Dir + +

        + +

        The Dir string stored in the polar state section.

        +
        +
        + +
        +
        public string Dir { get; }
        +
        + + + + + +

        Property Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + IsDiameterProgrammed + +

        + +

        Whether the radius word arrives as a diameter (halved on +parse) — the lathe X convention, XC only.

        +
        +
        + +
        +
        public bool IsDiameterProgrammed { get; }
        +
        + + + + + +

        Property Value

        +
        +
        bool
        +
        +
        + + + + + + + + + + +

        + KeepIndex + +

        + +

        Axis index untouched by the polar pair (frozen in acts).

        +
        +
        + +
        +
        public int KeepIndex { get; }
        +
        + + + + + +

        Property Value

        +
        +
        int
        +
        +
        + + + + + + + + + + +

        + LinearIndex + +

        + +

        Axis index (0/1/2 = X/Y/Z) carrying the radius.

        +
        +
        + +
        +
        public int LinearIndex { get; }
        +
        + + + + + +

        Property Value

        +
        +
        int
        +
        +
        + + + + + + + + + + +

        + LinearWord + +

        + +

        NC word of the radius coordinate (“X”/“Y”/“Z”).

        +
        +
        + +
        +
        public string LinearWord { get; }
        +
        + + + + + +

        Property Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + Mode + +

        + +

        The pair this definition describes.

        +
        +
        + +
        +
        public PolarModeDirEnum Mode { get; }
        +
        + + + + + +

        Property Value

        +
        +
        PolarModeDirEnum
        +
        +
        + + + + + + + + + + +

        + NormalIndex + +

        + +

        Axis index of the plane normal = the rotation axis; also +the depth axis and the ABC component of the machine angle.

        +
        +
        + +
        +
        public int NormalIndex { get; }
        +
        + + + + + +

        Property Value

        +
        +
        int
        +
        +
        + + + + + + + + + + +

        + RotaryAxis + +

        + +

        Machine rotary letter (“A”/“B”/“C”) — also the NC word of +the hypothetical coordinate and the per-axis config key.

        +
        +
        + +
        +
        public string RotaryAxis { get; }
        +
        + + + + + +

        Property Value

        +
        +
        string
        +
        +
        + + + + + + + + +

        Methods +

        + + + + +

        + ComposeAbc(double, Vec3d) + +

        + +

        Composes a machine ABC vector: the pair's rotary component set to +angle_rad, the others inherited from +baseAbc_rad.

        +
        +
        + +
        +
        public Vec3d ComposeAbc(double angle_rad, Vec3d baseAbc_rad)
        +
        + +

        Parameters

        +
        +
        angle_rad double
        +
        +
        baseAbc_rad Vec3d
        +
        +
        + +

        Returns

        +
        +
        Vec3d
        +
        +
        + + + + + + + + + + + + + +

        + ComposePoint(double, double, Vec3d) + +

        + +

        Composes a program/machine point from triple-space values: radius on +the linear axis, depth on the normal axis, the keep axis inherited +from basePoint.

        +
        +
        + +
        +
        public Vec3d ComposePoint(double radius, double depth, Vec3d basePoint)
        +
        + +

        Parameters

        +
        +
        radius double
        +
        +
        depth double
        +
        +
        basePoint Vec3d
        +
        +
        + +

        Returns

        +
        +
        Vec3d
        +
        +
        + + + + + + + + + + + + + +

        + FromDir(string) + +

        + +

        Resolves a pair from its Dir string (“XC”/“YA”/“ZB”); +unknown values fall back to XC.

        +
        +
        + +
        +
        public static PolarPairDef FromDir(string dir)
        +
        + +

        Parameters

        +
        +
        dir string
        +
        +
        + +

        Returns

        +
        +
        PolarPairDef
        +
        +
        + + + + + + + + + + + + + +

        + FromMode(PolarModeDirEnum) + +

        + +

        Resolves a pair from its PolarModeDirEnum.

        +
        +
        + +
        +
        public static PolarPairDef FromMode(PolarModeDirEnum mode)
        +
        + +

        Parameters

        +
        +
        mode PolarModeDirEnum
        +
        +
        + +

        Returns

        +
        +
        PolarPairDef
        +
        +
        + + + + + + + + + + + + + +

        + GetRotary_rad(Vec3d) + +

        + +

        The pair's rotary component of a machine ABC vector.

        +
        +
        + +
        +
        public double GetRotary_rad(Vec3d abc_rad)
        +
        + +

        Parameters

        +
        +
        abc_rad Vec3d
        +
        +
        + +

        Returns

        +
        +
        double
        +
        +
        + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Args.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Args.html index d2fec849..5085fcfd 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Args.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Args.html @@ -91,6 +91,33 @@
        +

        +Classes +

        +
        +
        PolarPairDef
        +

        Axis mapping of a Polar Coordinate Interpolation pair +(PolarModeDirEnum): which program/machine axes carry the +radius, the plane depth, and the rotation.

        +

        +The polar math itself runs in "triple space" — the Rxcz vector +(linear/radius, hypothetical, depth) with the plane normal fixed at the +third component — and is pair-independent; this definition maps the +triple's ends onto real axes: NC words on the way in, machine +coordinates on the way out. The plane normal equals the rotary's +rotation axis (C about Z, A about X, B about Y), so +NormalIndex doubles as the ABC component of the angle. +

        +

        +The lathe diameter-programming convention (the radius word arrives +doubled) applies to the X axis only, i.e. the XC pair — mirroring +HardNc PolarEntry, which halves X unconditionally. HardNc's own +YA/ZB slots are dead code (never selected); its +ProgramOrthogonalPlaneNormal table carried swapped normals for +them, corrected alongside this implementation. +

        +
        +

        Enums

        diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClArcMcMotionSemantic.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClArcMcMotionSemantic.html new file mode 100644 index 00000000..32306ad4 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClArcMcMotionSemantic.html @@ -0,0 +1,419 @@ + + + + + Class ClArcMcMotionSemantic | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class ClArcMcMotionSemantic +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        MC-machine counterpart of the ClArc branch of +ClMotionSemantic: builds the workpiece-frame +ClCircleArc from ClArcEvent, +transforms it into the kinematic Pn frame (the workpiece→Pn transform +wired on ProgramZeroToPnProvider), +and emits ActClArcMcXyzabcContour — a true CL-space arc +with per-step inverse kinematics. Endpoint machine coordinates come from +MachineCoordinateState (this block, solved by +ClToMcTransformSyntax + McXyzSyntax) and the +previous block's modal state. +Feedrate/rapid timing mirrors ClMotionSemantic; like the +RTCP linear semantic, a feed move without a usable feedrate drops the +motion (with a validation warning) instead of emitting zero duration.

        +
        +
        + +
        +
        public class ClArcMcMotionSemantic : INcSemantic, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        ClArcMcMotionSemantic
        +
        +
        + +
        +
        Implements
        +
        + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + + +

        + Resolve(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +

        + +

        Resolve the syntaxPieceNode into a sequence of IAct. +May also mutate SyntaxPiece.JsonObject for downstream semantics.

        +
        +
        + +
        +
        public IEnumerable<IAct> Resolve(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> dependencyList, NcDiagnosticProgress ncDiagnosticProgress)
        +
        + +

        Parameters

        +
        +
        syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
        +
        +
        dependencyList List<INcDependency>
        +
        +
        ncDiagnosticProgress NcDiagnosticProgress
        +
        +
        + +

        Returns

        +
        +
        IEnumerable<IAct>
        +
        +
        + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClMotionSemantic.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClMotionSemantic.html new file mode 100644 index 00000000..7a6cd149 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClMotionSemantic.html @@ -0,0 +1,422 @@ + + + + + Class ClMotionSemantic | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class ClMotionSemantic +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Resolves the pure-CL motion forms into cutter-location acts that drive a +ClMillingDevice chain directly — no machine coordinates involved: +ClTeleportActClTeleport, +ClLinearActClLinear, +ClArcActClArc. Feed moves also +emit ActFeedrate (from the modal Feedrate section); +rapid moves emit ActRapid at +RapidFeedrate_mmdmin. Durations are +path-length / effective feedrate.

        +

        +Contrast with ClLinearMcMotionSemantic, which handles the +RTCP form ClLinear of the NC pipeline by +deriving CL from machine coordinates — this semantic is its CL-source +counterpart and reads endpoints from +CutterLocationState instead. +

        +
        +
        + +
        +
        public class ClMotionSemantic : INcSemantic, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        ClMotionSemantic
        +
        +
        + +
        +
        Implements
        +
        + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + + +

        + Resolve(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +

        + +

        Resolve the syntaxPieceNode into a sequence of IAct. +May also mutate SyntaxPiece.JsonObject for downstream semantics.

        +
        +
        + +
        +
        public IEnumerable<IAct> Resolve(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> dependencyList, NcDiagnosticProgress ncDiagnosticProgress)
        +
        + +

        Parameters

        +
        +
        syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
        +
        +
        dependencyList List<INcDependency>
        +
        +
        ncDiagnosticProgress NcDiagnosticProgress
        +
        +
        + +

        Returns

        +
        +
        IEnumerable<IAct>
        +
        +
        + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClMotionValveSemantic.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClMotionValveSemantic.html new file mode 100644 index 00000000..347e99ba --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClMotionValveSemantic.html @@ -0,0 +1,553 @@ + + + + + Class ClMotionValveSemantic | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class ClMotionValveSemantic +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Valve that routes each block to exactly one motion-semantic family, so +the leaves keep a single duty and never need cross-guards:

        + +The semantic-side counterpart of BundleSyntax composition: +children are serialized nested under group elements and reconstructed via +XFactory. +
        +
        + +
        +
        public class ClMotionValveSemantic : INcSemantic, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        ClMotionValveSemantic
        +
        +
        + +
        +
        Implements
        +
        + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        Constructors +

        + + + + +

        + ClMotionValveSemantic() + +

        + +

        Creates the valve with the default CL and MC semantic lists.

        +
        +
        + +
        +
        public ClMotionValveSemantic()
        +
        + + + + + + + + + + + + + + + +

        + ClMotionValveSemantic(XElement, string, string, IProgress<IMessage>) + +

        + +

        Loads nested semantic lists from XML.

        +
        +
        + +
        +
        public ClMotionValveSemantic(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress)
        +
        + +

        Parameters

        +
        +
        src XElement
        +
        +
        baseDirectory string
        +
        +
        relFile string
        +
        +
        progress IProgress<IMessage>
        +
        +
        + + + + + + + + + + + + +

        Properties +

        + + + + +

        + ClSemanticList + +

        + +

        Semantics for blocks without machine coordinates (pure CL).

        +
        +
        + +
        +
        public List<INcSemantic> ClSemanticList { get; }
        +
        + + + + + +

        Property Value

        +
        +
        List<INcSemantic>
        +
        +
        + + + + + + + + + + +

        + DisplayName + +

        + +

        The process name shown on UI.

        +
        +
        + +
        +
        public string DisplayName { get; }
        +
        + + + + + +

        Property Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + McSemanticList + +

        + +

        Semantics for blocks carrying a machine-coordinate endpoint.

        +
        +
        + +
        +
        public List<INcSemantic> McSemanticList { get; }
        +
        + + + + + +

        Property Value

        +
        +
        List<INcSemantic>
        +
        +
        + + + + + + + + + + +

        + 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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + + +

        + Resolve(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +

        + +

        Resolve the syntaxPieceNode into a sequence of IAct. +May also mutate SyntaxPiece.JsonObject for downstream semantics.

        +
        +
        + +
        +
        public IEnumerable<IAct> Resolve(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> dependencyList, NcDiagnosticProgress ncDiagnosticProgress)
        +
        + +

        Parameters

        +
        +
        syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
        +
        +
        dependencyList List<INcDependency>
        +
        +
        ncDiagnosticProgress NcDiagnosticProgress
        +
        +
        + +

        Returns

        +
        +
        IEnumerable<IAct>
        +
        +
        + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClTeleportMcMotionSemantic.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClTeleportMcMotionSemantic.html new file mode 100644 index 00000000..b6c3c8e2 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClTeleportMcMotionSemantic.html @@ -0,0 +1,413 @@ + + + + + Class ClTeleportMcMotionSemantic | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class ClTeleportMcMotionSemantic +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        MC-machine counterpart of the ClTeleport branch +of ClMotionSemantic: emits an instant +ActMcXyzabcTeleport from the block's +MachineCoordinateState endpoint solved by +ClToMcTransformSyntax + McXyzSyntax. Mirrors the +pure-CL teleport semantics — +no machining step, no time accumulation.

        +
        +
        + +
        +
        public class ClTeleportMcMotionSemantic : INcSemantic, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        ClTeleportMcMotionSemantic
        +
        +
        + +
        +
        Implements
        +
        + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + + +

        + Resolve(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +

        + +

        Resolve the syntaxPieceNode into a sequence of IAct. +May also mutate SyntaxPiece.JsonObject for downstream semantics.

        +
        +
        + +
        +
        public IEnumerable<IAct> Resolve(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> dependencyList, NcDiagnosticProgress ncDiagnosticProgress)
        +
        + +

        Parameters

        +
        +
        syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
        +
        +
        dependencyList List<INcDependency>
        +
        +
        ncDiagnosticProgress NcDiagnosticProgress
        +
        +
        + +

        Returns

        +
        +
        IEnumerable<IAct>
        +
        +
        + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClToMcTransformSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClToMcTransformSyntax.html new file mode 100644 index 00000000..dab9c9de --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClToMcTransformSyntax.html @@ -0,0 +1,444 @@ + + + + + Class ClToMcTransformSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class ClToMcTransformSyntax +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Endpoint inverse kinematics for driving an MC machine from CLSF input, +expressed in the NC pipeline's transform vocabulary: when the pipeline's +NcKinematicsDependency resolves to a live solver (the +machining chain is an IXyzabcChain), each pure-CL motion block +gets

        + +Without a solver (pure-CL ClMillingDevice project) this syntax is +inert and the pipeline stays pure CL. +

        +Entry Kind follows the block's posture: when the solved rotary +endpoint cyclically equals the previous block's modal state the entries +are KindStatic (contour-valid), else +KindDynamic (endpoint snapshot; path +interpolation stays in CL space with per-step IK in +ActClLinearMcXyzabcContour / +ActClArcMcXyzabcContour). A +ClLinear block whose finished chain has no +Dynamic entry downgrades to McLinear — the same +HasDynamicEntry(JsonObject) dispatch the NC +pipeline uses, where MC-linear and CL-linear tip paths coincide and +per-step IK is unnecessary. +

        +

        +When the endpoint cannot be solved (e.g. a tilted normal on a 3-axis +machine) the block's MotionEvent (and arc payload) is removed +together with its ProgramXyz and transform chain — so +McXyzSyntax composes nothing and the modal MC lookback +skips the unreachable block — and a validation error anchors to the CLSF +line; the machine holds position over the bad block. +

        +
        +
        + +
        +
        public class ClToMcTransformSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        ClToMcTransformSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfKeys.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfKeys.html new file mode 100644 index 00000000..328bf610 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfKeys.html @@ -0,0 +1,1150 @@ + + + + + Class ClsfKeys | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class ClsfKeys +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        JSON section names and keys specific to the NX-CL (CLSF) pipeline. +General sections shared with the NC/CSV pipelines +(MotionEvent, Feedrate, SpindleSpeed, Coolant, +ToolChange) keep their contracts from +Hi.NcParsers.Keywords / +ToolChangeSyntax.

        +
        +
        + +
        +
        public static class ClsfKeys
        +
        + + + + +
        +
        Inheritance
        +
        + +
        ClsfKeys
        +
        +
        + + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + + + + + + +

        Fields +

        + + + +

        + ActiveTool + +

        + +

        Modal section — the currently loaded tool id +(ToolIdKey), +written by RecordToToolingSyntax on every LOAD/TOOL +block and carried onto every subsequent block by the modal carry — +unlike the one-shot ToolChange section (whose IsChange +flag must not repeat), so per-block readers +(ClToMcTransformSyntax tool-offset resolution) get O(1) +access instead of a backward walk to the distant LOAD block.

        +
        +
        + +
        +
        public const string ActiveTool = "ActiveTool"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + AxisI + +

        + +

        Arc axis X component (unit vector).

        +
        +
        + +
        +
        public const string AxisI = "AxisI"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + AxisJ + +

        + +

        Arc axis Y component (unit vector).

        +
        +
        + +
        +
        public const string AxisJ = "AxisJ"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + AxisK + +

        + +

        Arc axis Z component (unit vector).

        +
        +
        + +
        +
        public const string AxisK = "AxisK"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + CenterX + +

        + +

        Arc center X in mm.

        +
        +
        + +
        +
        public const string CenterX = "CenterX"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + CenterY + +

        + +

        Arc center Y in mm.

        +
        +
        + +
        +
        public const string CenterY = "CenterY"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + CenterZ + +

        + +

        Arc center Z in mm.

        +
        +
        + +
        +
        public const string CenterZ = "CenterZ"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + ClArcEvent + +

        + +

        One-shot event on the GOTO block that closes a circle record — the +arc geometry ClMotionSemantic resolves together with the +begin/end cutter locations. Same keys as ClCircleEvent.

        +
        +
        + +
        +
        public const string ClArcEvent = "ClArcEvent"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + ClCircleEvent + +

        + +

        One-shot event — a CIRCLE/MOVARC record, already +transformed to workpiece coordinates (NX axis negation applied). +The next GOTO consumes it into a ClArcEvent. +Keys: CenterX/CenterY/CenterZ, +AxisI/AxisJ/AxisK, +Radius, Turns.

        +
        +
        + +
        +
        public const string ClCircleEvent = "ClCircleEvent"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + ClRapidEvent + +

        + +

        One-shot event — a standalone RAPID record. The next GOTO's +backward walk turns it into MotionEvent.IsRapid; a passed +motion or feedrate event cancels it (legacy CL parser behavior).

        +
        +
        + +
        +
        public const string ClRapidEvent = "ClRapidEvent"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + ClsfToolData + +

        + +

        Modal section — the latest TLDATA/MILL tool geometry, kept for +ClsfToolBuildSemantic to materialize a tool on +LOAD/TOOL when the tool house has no entry for the id. +Keys: D, R0, Rr, +Rz, TaperAngle_deg, +TipAngle_deg, H.

        +
        +
        + +
        +
        public const string ClsfToolData = "ClsfToolData"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + CutterLocationState + +

        + +

        Modal section — the current cutter location in workpiece coordinates +(post-Msys): point X/Y/Z +in mm and unit normal I/J/K. +Written by RecordToClMotionSyntax on each GOTO block and +carried onto every block by the pipeline's modal carry.

        +
        +
        + +
        +
        public const string CutterLocationState = "CutterLocationState"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + D + +

        + +

        Tool diameter in mm.

        +
        +
        + +
        +
        public const string D = "D"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + FeedrateEvent + +

        + +

        One-shot event — a FEDRAT record. Marks the rapid-cancel +boundary for the ClRapidEvent backward walk (the modal +Feedrate section itself is carried onto every block, so it +cannot serve as the boundary).

        +
        +
        + +
        +
        public const string FeedrateEvent = "FeedrateEvent"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + H + +

        + +

        Flute height (CLSF LENGTH field) in mm.

        +
        +
        + +
        +
        public const string H = "H"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + I + +

        + +

        Cutter-axis normal X component (unit vector).

        +
        +
        + +
        +
        public const string I = "I"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + J + +

        + +

        Cutter-axis normal Y component (unit vector).

        +
        +
        + +
        +
        public const string J = "J"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + K + +

        + +

        Cutter-axis normal Z component (unit vector).

        +
        +
        + +
        +
        public const string K = "K"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + Matrix + +

        + +

        The 16-element matrix array inside Msys.

        +
        +
        + +
        +
        public const string Matrix = "Matrix"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + Msys + +

        + +

        Modal section — the CLSF MSYS transform. Holds the +Matrix key with a 16-element row-major matrix array +(rows = rotation rows then translation, matching +Mat4d row-vector convention); wrapped in an +object because the modal carry only carries object sections. Absent +means identity.

        +
        +
        + +
        +
        public const string Msys = "Msys"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + R0 + +

        + +

        Corner (lower) radius in mm.

        +
        +
        + +
        +
        public const string R0 = "R0"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + Radius + +

        + +

        Arc radius in mm as declared by the record (informational — +the resolved ClCircleArc +derives radii from the geometry).

        +
        +
        + +
        +
        public const string Radius = "Radius"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + Rr + +

        + +

        Corner-center to tool-axis distance in mm (optional).

        +
        +
        + +
        +
        public const string Rr = "Rr"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + Rz + +

        + +

        Tip to corner-center height in mm (optional).

        +
        +
        + +
        +
        public const string Rz = "Rz"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + TaperAngle_deg + +

        + +

        Taper angle (side, above the corner) in degrees.

        +
        +
        + +
        +
        public const string TaperAngle_deg = "TaperAngle_deg"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + TipAngle_deg + +

        + +

        Tip angle (below the corner) in degrees.

        +
        +
        + +
        +
        public const string TipAngle_deg = "TipAngle_deg"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + Turns + +

        + +

        Full-circle count included in the sweep (CLSF TIMES,n).

        +
        +
        + +
        +
        public const string Turns = "Turns"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + X + +

        + +

        Cutter-location point X in mm.

        +
        +
        + +
        +
        public const string X = "X"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + Y + +

        + +

        Cutter-location point Y in mm.

        +
        +
        + +
        +
        public const string Y = "Y"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + Z + +

        + +

        Cutter-location point Z in mm.

        +
        +
        + +
        +
        public const string Z = "Z"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfRecordCleanupSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfRecordCleanupSyntax.html new file mode 100644 index 00000000..750a965a --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfRecordCleanupSyntax.html @@ -0,0 +1,411 @@ + + + + + Class ClsfRecordCleanupSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class ClsfRecordCleanupSyntax +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Inspection-stage tail of the CLSF record chain. A record that survived +every RecordTo* syntax is dispatched here:

        +
        • words in ExcludedWords — intentional +skips (PAINT, TOOL PATH, …), consumed silently;
        • UNITSMM is the pipeline's native unit (silent); +anything else keeps running but warns that coordinates are not +converted;
        • SET_WORKPIECE — reported as ignored (the workpiece is +project-level configuration, not runner input);
        • anything else — ClsfRecord--Unconsumed validation +warning.
        +Must run after every other RecordTo* syntax. +
        +
        + +
        +
        public class ClsfRecordCleanupSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        ClsfRecordCleanupSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfRecordSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfRecordSyntax.html new file mode 100644 index 00000000..0b5e2afb --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfRecordSyntax.html @@ -0,0 +1,569 @@ + + + + + Class ClsfRecordSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class ClsfRecordSyntax +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Per-record CLSF parsing syntax. Normalizes the block text (strips +$$ comments, joins $ continuation lines), splits it into the +record word and its comma-separated parameters, and stamps them into +JsonObject under ClsfRecordKey for +the downstream RecordTo* syntaxes to consume. Numeric parameters +are pre-typed to double.

        +

        +The word is everything before the first / with whitespace runs +collapsed — multi-word heads (TOOL PATH) and hyphenated records +without parameters (END-OF-PATH) are single words, fixing the +legacy parser's first-token-only dispatch. +

        +
        +
        + +
        +
        public class ClsfRecordSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        ClsfRecordSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + +

        Examples

        +

        A GOTO record — word and typed parameters extracted, text fully consumed: +#BeforeBuild:

        +
        { "UnparsedText": "GOTO/10.5,20.25,3.5 $$ approach" }
        +

        #AfterBuild:

        +
        { "ClsfRecord": { "Word": "GOTO", "Params": [10.5, 20.25, 3.5] } }
        +

        A multi-word head with a text parameter: +#BeforeBuild:

        +
        { "UnparsedText": "TOOL PATH/S1,TOOL,MILL_D10" }
        +

        #AfterBuild:

        +
        { "ClsfRecord": { "Word": "TOOL PATH", "Params": ["S1", "TOOL", "MILL_D10"] } }
        +

        A record without parameters: +#BeforeBuild:

        +
        { "UnparsedText": "END-OF-PATH" }
        +

        #AfterBuild:

        +
        { "ClsfRecord": { "Word": "END-OF-PATH", "Params": [] } }
        + + + + +

        Fields +

        + + + +

        + ClsfRecordKey + +

        + +

        JSON property name under which the parsed record is stored.

        +
        +
        + +
        +
        public const string ClsfRecordKey = "ClsfRecord"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + ParamsKey + +

        + +

        Key of the parameter array inside the ClsfRecordKey section.

        +
        +
        + +
        +
        public const string ParamsKey = "Params"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + WordKey + +

        + +

        Key of the record word inside the ClsfRecordKey section.

        +
        +
        + +
        +
        public const string WordKey = "Word"
        +
        + + + + +

        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<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.

        +
        + + + + + + +

        + Normalize(string) + +

        + +

        Strips the $$ comment of every physical line, removes the +trailing $ continuation characters, and joins the lines into +one single-line record text.

        +
        +
        + +
        +
        public static string Normalize(string blockText)
        +
        + +

        Parameters

        +
        +
        blockText string
        +

        Raw (possibly multi-line) CLSF block text.

        +
        +
        + +

        Returns

        +
        +
        string
        +

        The joined single-line record text; empty for comment-only blocks.

        +
        +
        + + + + + + + + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfRunnerConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfRunnerConfig.html new file mode 100644 index 00000000..8861bf78 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfRunnerConfig.html @@ -0,0 +1,683 @@ + + + + + Class ClsfRunnerConfig | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class ClsfRunnerConfig +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Configuration dependency for the NX-CL (CLSF) runner: the rapid traverse +rate (a CLSF has no machine axes, so RAPID timing needs an assumed +rate), the tool-creation policy, and the intentionally skipped record +words. Also serves as the pipeline's IRapidFeedrateConfig so +the machine-coordinate motion semantics reused from the NC pipeline +(McLinearMotionSemantic, ClLinearMcMotionSemantic) time +rapids from the same assumed rates — axis-uniform: every linear axis gets +RapidFeedrate_mmdmin, every rotary axis +RotaryRapidFeedrate_degdmin.

        +
        +
        + +
        +
        public class ClsfRunnerConfig : IRapidFeedrateConfig, INcDependency, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        ClsfRunnerConfig
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        Constructors +

        + + + + +

        + ClsfRunnerConfig() + +

        + +

        Creates a config with default values.

        +
        +
        + +
        +
        public ClsfRunnerConfig()
        +
        + + + + + + + + + + + + + + + +

        + ClsfRunnerConfig(XElement) + +

        + +

        Reconstructs a config from its XML element.

        +
        +
        + +
        +
        public ClsfRunnerConfig(XElement src)
        +
        + +

        Parameters

        +
        +
        src XElement
        +

        XML element previously produced by MakeXmlSource(string, string, bool).

        +
        +
        + + + + + + + + + + + + +

        Properties +

        + + + + +

        + ExcludedWords + +

        + +

        Record words consumed silently as intentional skips (matched +case-insensitively; multi-word heads like TOOL PATH included).

        +
        +
        + +
        +
        public List<string> ExcludedWords { get; set; }
        +
        + + + + + +

        Property Value

        +
        +
        List<string>
        +
        +
        + + + + + + + + + + +

        + PreferToolHouse + +

        + +

        When true (default), a LOAD/TOOL id already present in +the tool house keeps the configured tool and the CLSF +TLDATA geometry is ignored; when false, TLDATA geometry +overwrites the tool-house entry on every load.

        +
        +
        + +
        +
        public bool PreferToolHouse { get; set; }
        +
        + + + + + +

        Property Value

        +
        +
        bool
        +
        +
        + + + + + + + + + + +

        + RapidFeedrate_mmdmin + +

        + +

        Assumed rapid traverse rate in mm/min used to time RAPID moves.

        +
        +
        + +
        +
        public double RapidFeedrate_mmdmin { get; set; }
        +
        + + + + + +

        Property Value

        +
        +
        double
        +
        +
        + + + + + + + + + + +

        + RotaryRapidFeedrate_degdmin + +

        + +

        Assumed rotary rapid traverse rate in deg/min, used by the reused +MC motion semantics to time rotary-dominated rapids on an MC machine.

        +
        +
        + +
        +
        public double RotaryRapidFeedrate_degdmin { get; set; }
        +
        + + + + + +

        Property Value

        +
        +
        double
        +
        +
        + + + + + + + + + + +

        + XName + +

        + +

        XML element name used to register this dependency with XFactory.

        +
        +
        + +
        +
        public static string XName { get; }
        +
        + + + + + +

        Property Value

        +
        +
        string
        +
        +
        + + + + + + + + +

        Methods +

        + + + + +

        + GetLinearAxisRapidRate_mmdmin(string) + +

        + +

        Gets rapid traverse feedrate for a linear axis in mm/min. +Returns a default value if the axis is not configured.

        +
        +
        + +
        +
        public double GetLinearAxisRapidRate_mmdmin(string axisName)
        +
        + +

        Parameters

        +
        +
        axisName string
        +
        +
        + +

        Returns

        +
        +
        double
        +
        +
        + + + + + + + + + + + + + +

        + GetRotaryAxisRapidRate_degdmin(string) + +

        + +

        Gets rapid traverse feedrate for a rotary axis in deg/min. +Returns a default value if the axis is not configured.

        +
        +
        + +
        +
        public double GetRotaryAxisRapidRate_degdmin(string axisName)
        +
        + +

        Parameters

        +
        +
        axisName string
        +
        +
        + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + + +

        + SetLinearAxisRapidRate_mmdmin(string, double) + +

        + +

        Sets rapid traverse feedrate for a linear axis in mm/min.

        +
        +
        + +
        +
        public void SetLinearAxisRapidRate_mmdmin(string axisName, double value)
        +
        + +

        Parameters

        +
        +
        axisName string
        +
        +
        value double
        +
        +
        + + + + + + + + + + + + + + +

        + SetRotaryAxisRapidRate_degdmin(string, double) + +

        + +

        Sets rapid traverse feedrate for a rotary axis in deg/min.

        +
        +
        + +
        +
        public void SetRotaryAxisRapidRate_degdmin(string axisName, double value)
        +
        + +

        Parameters

        +
        +
        axisName string
        +
        +
        value double
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfSegmenter.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfSegmenter.html new file mode 100644 index 00000000..14ba7a1e --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfSegmenter.html @@ -0,0 +1,400 @@ + + + + + Class ClsfSegmenter | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class ClsfSegmenter +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Segments an NX CLSF (cutter location source file) stream for the +SoftNcRunner pipeline. A record normally occupies one +physical line; a line whose text (after stripping the $$ comment) +ends with a single $ continues on the next line, so continued +lines are joined into one multi-line Sentence for +ClsfRecordSyntax to parse.

        +
        +
        + +
        +
        public class ClsfSegmenter : ISegmenter, IToXElement
        +
        + + + + +
        +
        Inheritance
        +
        + +
        ClsfSegmenter
        +
        +
        + +
        +
        Implements
        +
        + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        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<IndexedFileLine>, List<INcDependency>, NcDiagnosticProgress) + +

        + +

        Segments the indexed file lines into Sentences.

        +
        +
        + +
        +
        public IEnumerable<Sentence> GetSentences(LazyLinkedList<IndexedFileLine> indexedFileLines, List<INcDependency> ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)
        +
        + +

        Parameters

        +
        +
        indexedFileLines LazyLinkedList<IndexedFileLine>
        +

        The lazy linked list of indexed file lines.

        +
        +
        ncDependencyList List<INcDependency>
        +

        Dependency list of the owning runner; segmenters that consume +header rows (e.g. CsvSegmenter) read host-wired +dependencies from here. May be null in lightweight test fixtures — implementations +that need a dependency must null-check.

        +
        +
        ncDiagnosticProgress NcDiagnosticProgress
        +

        Diagnostic progress reporter.

        +
        +
        + +

        Returns

        +
        +
        IEnumerable<Sentence>
        +

        A sequence of Sentences.

        +
        +
        + + + + + + + + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + + +

        + ToXElement() + +

        + +

        Get the XElement to represent the object.

        +
        +
        + +
        +
        public XElement ToXElement()
        +
        + + +

        Returns

        +
        +
        XElement
        +

        XElement to represent the object.

        +
        +
        + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfToolBuildSemantic.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfToolBuildSemantic.html new file mode 100644 index 00000000..458e3055 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.ClsfToolBuildSemantic.html @@ -0,0 +1,415 @@ + + + + + Class ClsfToolBuildSemantic | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class ClsfToolBuildSemantic +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Materializes a milling tool from the modal +ClsfToolData geometry (CLSF TLDATA/MILL) +into the MachiningToolHouse when a ToolChange section +requests a tool id the house does not hold — CLSF files carry their own +tool definitions, so a project does not need to pre-configure every tool. +With PreferToolHouse (default) an existing +entry always wins. Emits no acts; must run before +ToolChangeSemantic so the tool exists when the +tooling act is executed.

        +
        +
        + +
        +
        public class ClsfToolBuildSemantic : INcSemantic, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        ClsfToolBuildSemantic
        +
        +
        + +
        +
        Implements
        +
        + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + + +

        + Resolve(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +

        + +

        Resolve the syntaxPieceNode into a sequence of IAct. +May also mutate SyntaxPiece.JsonObject for downstream semantics.

        +
        +
        + +
        +
        public IEnumerable<IAct> Resolve(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> dependencyList, NcDiagnosticProgress ncDiagnosticProgress)
        +
        + +

        Parameters

        +
        +
        syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
        +
        +
        dependencyList List<INcDependency>
        +
        +
        ncDiagnosticProgress NcDiagnosticProgress
        +
        +
        + +

        Returns

        +
        +
        IEnumerable<IAct>
        +
        +
        + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.MsysCoordinateOffsetSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.MsysCoordinateOffsetSyntax.html new file mode 100644 index 00000000..5c3cb1a9 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.MsysCoordinateOffsetSyntax.html @@ -0,0 +1,469 @@ + + + + + Class MsysCoordinateOffsetSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class MsysCoordinateOffsetSyntax +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Expresses the modal CLSF MSYS frame in the NC pipeline's transform +vocabulary on machine-coordinate motion blocks: the rotation part becomes +a TransformSource entry (the G68.2 +tilted-work-plane analogue) and the translation part becomes a +TransformSource entry plus +CoordinateOffset section (the G54 work-offset analogue, +CoordinateId MsysCoordinateId) in +ProgramToMcTransform. It also restores +the commanded ProgramXyz — the MSYS-local +GOTO point — from the workpiece-frame +CutterLocationState endpoint, so the shared +McXyzSyntax composes machine XYZ exactly like the NC +pipeline: ProgramXyz × composed chain → MachineCoordinateState.

        +

        +Entry order carries the math: the MSYS matrix maps local points as +p·R + t (row-vector convention), so the rotation entry precedes +the translation entry. Both are +KindStatic — an MSYS is a fixed frame +for every point of the blocks it governs. The rotation entry is omitted +for a pure-translation MSYS (and for the absent-MSYS identity), keeping +the common dump exactly G54-shaped. +

        +

        +Inert without a wired kinematics solver (pure-CL ClMillingDevice +project) and on non-motion blocks: the pure-CL pipeline keeps its own CL +vocabulary and must never receive ProgramXyz or a transform chain +— McXyzSyntax would otherwise fabricate a +MachineCoordinateState and misroute the block to the +machine-coordinate semantics. ClToMcTransformSyntax +continues the chain with the tool-height and kinematic-pivot entries. +

        +
        +
        + +
        +
        public class MsysCoordinateOffsetSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        MsysCoordinateOffsetSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        Fields +

        + + + +

        + MsysCoordinateId + +

        + +

        CoordinateId written for the MSYS +translation — the CLSF pipeline's stand-in for a G54-series id.

        +
        +
        + +
        +
        public const string MsysCoordinateId = "MSYS"
        +
        + + + + +

        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<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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.NxClRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.NxClRunner.html new file mode 100644 index 00000000..e660498a --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.NxClRunner.html @@ -0,0 +1,277 @@ + + + + + Class NxClRunner | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class NxClRunner +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Factory for a SoftNcRunner that reads NX CLSF (cutter +location source file) input. On a ClMillingDevice chain it +resolves into pure-CL acts +(ActClTeleport/ActClLinear/ActClArc); on an MC +machine (IXyzabcChain, detected through the wired +NcKinematicsDependency) each motion block is expressed in +the NC pipeline's transform vocabulary — +MsysCoordinateOffsetSyntax writes the MSYS work-offset +entries plus ProgramXyz, ClToMcTransformSyntax +inverse-solves the endpoint rotary state and writes the tool-height / +kinematic-pivot entries, the shared McXyzSyntax composes +MachineCoordinateState from ProgramXyz × chain — and +ClMotionValveSemantic routes the block to the +machine-coordinate semantics instead. The record chain maps each CLSF +record into the same standardized JSON sections the NC/CSV pipelines +use (Feedrate, SpindleSpeed, Coolant, +ToolChange, MotionEvent), so the general semantics are +reused unchanged; only the motion and tool-creation semantics are +CLSF-specific.

        +

        +The modal carry runs first in the record bundle (unlike the NC +pipeline's carry-at-the-end): each piece receives the previous block's +modal sections (Msys, CutterLocationState, tool data, +feedrate, …) before its own record is resolved, so a GOTO reads its +begin point and MSYS from its own piece and then overwrites the state +with the new endpoint. +

        +
        +
        + +
        +
        public static class NxClRunner
        +
        + + + + +
        +
        Inheritance
        +
        + +
        NxClRunner
        +
        +
        + + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + + + + + + +

        Methods +

        + + + + +

        + Create() + +

        + +

        Builds a fresh SoftNcRunner pre-configured to read NX +CLSF input. Call once per machining session so the runner's +per-session state starts clean.

        +
        +
        + +
        +
        public static SoftNcRunner Create()
        +
        + + +

        Returns

        +
        +
        SoftNcRunner
        +
        +
        + + + + + + + + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers the CLSF-module components Create() instantiates +with the given XFactory. The general components it +reuses (BundleSyntax, ModalCarrySyntax, +ToolingTeleportSemantic, SpindleSpeedSemantic, +CoolantSemantic) are registered by +Reg(XFactory). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToClMotionSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToClMotionSyntax.html new file mode 100644 index 00000000..befdb779 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToClMotionSyntax.html @@ -0,0 +1,416 @@ + + + + + Class RecordToClMotionSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class RecordToClMotionSyntax +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Translates the CLSF motion records into the pure-CL motion contract:

        +
        • RAPID → one-shot ClRapidEvent (armed +until the next GOTO; a passed motion or FEDRAT cancels it).
        • CIRCLE/MOVARC → one-shot +ClCircleEvent in workpiece coordinates, with the +NX axis-direction negation applied.
        • GOTO → the modal CutterLocationState +endpoint (MSYS applied) plus a one-shot MotionEvent whose +Form is ClTeleport (first motion, FROM, +or first motion after a tool change), +ClArc (an armed circle record), or +ClLinear; an arc GOTO also receives the +consumed circle geometry as ClArcEvent.
        +Requires the pipeline's modal carry to run before this syntax on +each node, so the previous endpoint / MSYS are already present on the +current piece when the GOTO is resolved. +
        +
        + +
        +
        public class RecordToClMotionSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        RecordToClMotionSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToCoolantSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToCoolantSyntax.html new file mode 100644 index 00000000..0ad3f8a2 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToCoolantSyntax.html @@ -0,0 +1,409 @@ + + + + + Class RecordToCoolantSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class RecordToCoolantSyntax +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Translates a COOLNT record into the standardized +ICoolantDef section consumed by the general +CoolantSemantic: +ON/FLOODFlood, +MISTMist, OFF → +Off; other CLSF coolant modes fall back to flood +with a configuration warning.

        +
        +
        + +
        +
        public class RecordToCoolantSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        RecordToCoolantSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToFeedrateSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToFeedrateSyntax.html new file mode 100644 index 00000000..158de1a9 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToFeedrateSyntax.html @@ -0,0 +1,408 @@ + + + + + Class RecordToFeedrateSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class RecordToFeedrateSyntax +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Translates a FEDRAT record into the standardized modal +Feedrate section (always G94 — mm/min) plus the one-shot +FeedrateEvent marker that cancels a pending +ClRapidEvent. Accepted dialects: +FEDRAT/MMPM,1400, FEDRAT/1400,MMPM, FEDRAT/1400 +(MMPM assumed), and IPM (converted to mm/min).

        +
        +
        + +
        +
        public class RecordToFeedrateSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        RecordToFeedrateSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToMsysSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToMsysSyntax.html new file mode 100644 index 00000000..d1835508 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToMsysSyntax.html @@ -0,0 +1,407 @@ + + + + + Class RecordToMsysSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class RecordToMsysSyntax +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Translates an MSYS record into the modal Msys +section. The record's nine fields are a translation vector plus the first +two rows of a rotation matrix whose third row is their cross product; the +section stores the resulting 16-element row-major Mat4d +mapping tool-path coordinates to workpiece (absolute) coordinates.

        +
        +
        + +
        +
        public class RecordToMsysSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        RecordToMsysSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToSpindleSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToSpindleSyntax.html new file mode 100644 index 00000000..05ac76e8 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToSpindleSyntax.html @@ -0,0 +1,409 @@ + + + + + Class RecordToSpindleSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class RecordToSpindleSyntax +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Translates a SPINDL record into the standardized +ISpindleSpeedDef section consumed by the general +SpindleSpeedSemantic. Parameter order +is tolerated (SPINDL/8000,RPM,CLW or SPINDL/RPM,8000,CLW): +the first numeric field is the rpm, a field containing CCLW selects +counter-clockwise, and SPINDL/OFF maps to +STOP.

        +
        +
        + +
        +
        public class RecordToSpindleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        RecordToSpindleSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToToolingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToToolingSyntax.html new file mode 100644 index 00000000..ff35066f --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.RecordToToolingSyntax.html @@ -0,0 +1,509 @@ + + + + + Class RecordToToolingSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class RecordToToolingSyntax +

        + +
        +
        Namespace
        Hi.Numerical.ClsfParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Translates the CLSF tooling records:

        +
        • TLDATA/MILL,… → the modal ClsfToolData +geometry section (kept for ClsfToolBuildSemantic); non-MILL +tool types are reported and skipped.
        • LOAD/TOOL,n[,XOFF,x][,YOFF,y][,ZOFF,z] → the standardized +ToolChange section (SectionName) +consumed by the general +ToolChangeSemantic; +IsChangeKey is set when the tool id +differs from the previously loaded tool. Offsets are recorded +informationally (no consumer yet).
        +
        +
        + +
        +
        public class RecordToToolingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        RecordToToolingSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        Fields +

        + + + +

        + OffsetXKey + +

        + +

        Informational key — LOAD/…XOFF value in mm.

        +
        +
        + +
        +
        public const string OffsetXKey = "OffsetX"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + OffsetYKey + +

        + +

        Informational key — LOAD/…YOFF value in mm.

        +
        +
        + +
        +
        public const string OffsetYKey = "OffsetY"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + OffsetZKey + +

        + +

        Informational key — LOAD/…ZOFF value in mm.

        +
        +
        + +
        +
        public const string OffsetZKey = "OffsetZ"
        +
        + + + + +

        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<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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.html new file mode 100644 index 00000000..58258a16 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.ClsfParsers.html @@ -0,0 +1,448 @@ + + + + + Namespace Hi.Numerical.ClsfParsers | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + +

        Namespace Hi.Numerical.ClsfParsers

        +
        +
        +
        + +

        +Classes +

        +
        +
        ClArcMcMotionSemantic
        +

        MC-machine counterpart of the ClArc branch of +ClMotionSemantic: builds the workpiece-frame +ClCircleArc from ClArcEvent, +transforms it into the kinematic Pn frame (the workpiece→Pn transform +wired on ProgramZeroToPnProvider), +and emits ActClArcMcXyzabcContour — a true CL-space arc +with per-step inverse kinematics. Endpoint machine coordinates come from +MachineCoordinateState (this block, solved by +ClToMcTransformSyntax + McXyzSyntax) and the +previous block's modal state. +Feedrate/rapid timing mirrors ClMotionSemantic; like the +RTCP linear semantic, a feed move without a usable feedrate drops the +motion (with a validation warning) instead of emitting zero duration.

        +
        +
        +
        +
        ClMotionSemantic
        +

        Resolves the pure-CL motion forms into cutter-location acts that drive a +ClMillingDevice chain directly — no machine coordinates involved: +ClTeleportActClTeleport, +ClLinearActClLinear, +ClArcActClArc. Feed moves also +emit ActFeedrate (from the modal Feedrate section); +rapid moves emit ActRapid at +RapidFeedrate_mmdmin. Durations are +path-length / effective feedrate.

        +

        +Contrast with ClLinearMcMotionSemantic, which handles the +RTCP form ClLinear of the NC pipeline by +deriving CL from machine coordinates — this semantic is its CL-source +counterpart and reads endpoints from +CutterLocationState instead. +

        +
        +
        +
        +
        ClMotionValveSemantic
        +

        Valve that routes each block to exactly one motion-semantic family, so +the leaves keep a single duty and never need cross-guards:

        + +The semantic-side counterpart of BundleSyntax composition: +children are serialized nested under group elements and reconstructed via +XFactory. +
        +
        +
        +
        ClTeleportMcMotionSemantic
        +

        MC-machine counterpart of the ClTeleport branch +of ClMotionSemantic: emits an instant +ActMcXyzabcTeleport from the block's +MachineCoordinateState endpoint solved by +ClToMcTransformSyntax + McXyzSyntax. Mirrors the +pure-CL teleport semantics — +no machining step, no time accumulation.

        +
        +
        +
        +
        ClToMcTransformSyntax
        +

        Endpoint inverse kinematics for driving an MC machine from CLSF input, +expressed in the NC pipeline's transform vocabulary: when the pipeline's +NcKinematicsDependency resolves to a live solver (the +machining chain is an IXyzabcChain), each pure-CL motion block +gets

        + +Without a solver (pure-CL ClMillingDevice project) this syntax is +inert and the pipeline stays pure CL. +

        +Entry Kind follows the block's posture: when the solved rotary +endpoint cyclically equals the previous block's modal state the entries +are KindStatic (contour-valid), else +KindDynamic (endpoint snapshot; path +interpolation stays in CL space with per-step IK in +ActClLinearMcXyzabcContour / +ActClArcMcXyzabcContour). A +ClLinear block whose finished chain has no +Dynamic entry downgrades to McLinear — the same +HasDynamicEntry(JsonObject) dispatch the NC +pipeline uses, where MC-linear and CL-linear tip paths coincide and +per-step IK is unnecessary. +

        +

        +When the endpoint cannot be solved (e.g. a tilted normal on a 3-axis +machine) the block's MotionEvent (and arc payload) is removed +together with its ProgramXyz and transform chain — so +McXyzSyntax composes nothing and the modal MC lookback +skips the unreachable block — and a validation error anchors to the CLSF +line; the machine holds position over the bad block. +

        +
        +
        +
        +
        ClsfKeys
        +

        JSON section names and keys specific to the NX-CL (CLSF) pipeline. +General sections shared with the NC/CSV pipelines +(MotionEvent, Feedrate, SpindleSpeed, Coolant, +ToolChange) keep their contracts from +Hi.NcParsers.Keywords / +ToolChangeSyntax.

        +
        +
        +
        +
        ClsfRecordCleanupSyntax
        +

        Inspection-stage tail of the CLSF record chain. A record that survived +every RecordTo* syntax is dispatched here:

        +
        • words in ExcludedWords — intentional +skips (PAINT, TOOL PATH, …), consumed silently;
        • UNITSMM is the pipeline's native unit (silent); +anything else keeps running but warns that coordinates are not +converted;
        • SET_WORKPIECE — reported as ignored (the workpiece is +project-level configuration, not runner input);
        • anything else — ClsfRecord--Unconsumed validation +warning.
        +Must run after every other RecordTo* syntax. +
        +
        +
        +
        ClsfRecordSyntax
        +

        Per-record CLSF parsing syntax. Normalizes the block text (strips +$$ comments, joins $ continuation lines), splits it into the +record word and its comma-separated parameters, and stamps them into +JsonObject under ClsfRecordKey for +the downstream RecordTo* syntaxes to consume. Numeric parameters +are pre-typed to double.

        +

        +The word is everything before the first / with whitespace runs +collapsed — multi-word heads (TOOL PATH) and hyphenated records +without parameters (END-OF-PATH) are single words, fixing the +legacy parser's first-token-only dispatch. +

        +
        +
        +
        +
        ClsfRunnerConfig
        +

        Configuration dependency for the NX-CL (CLSF) runner: the rapid traverse +rate (a CLSF has no machine axes, so RAPID timing needs an assumed +rate), the tool-creation policy, and the intentionally skipped record +words. Also serves as the pipeline's IRapidFeedrateConfig so +the machine-coordinate motion semantics reused from the NC pipeline +(McLinearMotionSemantic, ClLinearMcMotionSemantic) time +rapids from the same assumed rates — axis-uniform: every linear axis gets +RapidFeedrate_mmdmin, every rotary axis +RotaryRapidFeedrate_degdmin.

        +
        +
        +
        +
        ClsfSegmenter
        +

        Segments an NX CLSF (cutter location source file) stream for the +SoftNcRunner pipeline. A record normally occupies one +physical line; a line whose text (after stripping the $$ comment) +ends with a single $ continues on the next line, so continued +lines are joined into one multi-line Sentence for +ClsfRecordSyntax to parse.

        +
        +
        +
        +
        ClsfToolBuildSemantic
        +

        Materializes a milling tool from the modal +ClsfToolData geometry (CLSF TLDATA/MILL) +into the MachiningToolHouse when a ToolChange section +requests a tool id the house does not hold — CLSF files carry their own +tool definitions, so a project does not need to pre-configure every tool. +With PreferToolHouse (default) an existing +entry always wins. Emits no acts; must run before +ToolChangeSemantic so the tool exists when the +tooling act is executed.

        +
        +
        +
        +
        MsysCoordinateOffsetSyntax
        +

        Expresses the modal CLSF MSYS frame in the NC pipeline's transform +vocabulary on machine-coordinate motion blocks: the rotation part becomes +a TransformSource entry (the G68.2 +tilted-work-plane analogue) and the translation part becomes a +TransformSource entry plus +CoordinateOffset section (the G54 work-offset analogue, +CoordinateId MsysCoordinateId) in +ProgramToMcTransform. It also restores +the commanded ProgramXyz — the MSYS-local +GOTO point — from the workpiece-frame +CutterLocationState endpoint, so the shared +McXyzSyntax composes machine XYZ exactly like the NC +pipeline: ProgramXyz × composed chain → MachineCoordinateState.

        +

        +Entry order carries the math: the MSYS matrix maps local points as +p·R + t (row-vector convention), so the rotation entry precedes +the translation entry. Both are +KindStatic — an MSYS is a fixed frame +for every point of the blocks it governs. The rotation entry is omitted +for a pure-translation MSYS (and for the absent-MSYS identity), keeping +the common dump exactly G54-shaped. +

        +

        +Inert without a wired kinematics solver (pure-CL ClMillingDevice +project) and on non-motion blocks: the pure-CL pipeline keeps its own CL +vocabulary and must never receive ProgramXyz or a transform chain +— McXyzSyntax would otherwise fabricate a +MachineCoordinateState and misroute the block to the +machine-coordinate semantics. ClToMcTransformSyntax +continues the chain with the tool-height and kinematic-pivot entries. +

        +
        +
        +
        +
        NxClRunner
        +

        Factory for a SoftNcRunner that reads NX CLSF (cutter +location source file) input. On a ClMillingDevice chain it +resolves into pure-CL acts +(ActClTeleport/ActClLinear/ActClArc); on an MC +machine (IXyzabcChain, detected through the wired +NcKinematicsDependency) each motion block is expressed in +the NC pipeline's transform vocabulary — +MsysCoordinateOffsetSyntax writes the MSYS work-offset +entries plus ProgramXyz, ClToMcTransformSyntax +inverse-solves the endpoint rotary state and writes the tool-height / +kinematic-pivot entries, the shared McXyzSyntax composes +MachineCoordinateState from ProgramXyz × chain — and +ClMotionValveSemantic routes the block to the +machine-coordinate semantics instead. The record chain maps each CLSF +record into the same standardized JSON sections the NC/CSV pipelines +use (Feedrate, SpindleSpeed, Coolant, +ToolChange, MotionEvent), so the general semantics are +reused unchanged; only the motion and tool-creation semantics are +CLSF-specific.

        +

        +The modal carry runs first in the record bundle (unlike the NC +pipeline's carry-at-the-end): each piece receives the previous block's +modal sections (Msys, CutterLocationState, tool data, +feedrate, …) before its own record is resolved, so a GOTO reads its +begin point and MSYS from its own piece and then overwrites the state +with the new endpoint. +

        +
        +
        +
        +
        RecordToClMotionSyntax
        +

        Translates the CLSF motion records into the pure-CL motion contract:

        +
        • RAPID → one-shot ClRapidEvent (armed +until the next GOTO; a passed motion or FEDRAT cancels it).
        • CIRCLE/MOVARC → one-shot +ClCircleEvent in workpiece coordinates, with the +NX axis-direction negation applied.
        • GOTO → the modal CutterLocationState +endpoint (MSYS applied) plus a one-shot MotionEvent whose +Form is ClTeleport (first motion, FROM, +or first motion after a tool change), +ClArc (an armed circle record), or +ClLinear; an arc GOTO also receives the +consumed circle geometry as ClArcEvent.
        +Requires the pipeline's modal carry to run before this syntax on +each node, so the previous endpoint / MSYS are already present on the +current piece when the GOTO is resolved. +
        +
        +
        +
        RecordToCoolantSyntax
        +

        Translates a COOLNT record into the standardized +ICoolantDef section consumed by the general +CoolantSemantic: +ON/FLOODFlood, +MISTMist, OFF → +Off; other CLSF coolant modes fall back to flood +with a configuration warning.

        +
        +
        +
        +
        RecordToFeedrateSyntax
        +

        Translates a FEDRAT record into the standardized modal +Feedrate section (always G94 — mm/min) plus the one-shot +FeedrateEvent marker that cancels a pending +ClRapidEvent. Accepted dialects: +FEDRAT/MMPM,1400, FEDRAT/1400,MMPM, FEDRAT/1400 +(MMPM assumed), and IPM (converted to mm/min).

        +
        +
        +
        +
        RecordToMsysSyntax
        +

        Translates an MSYS record into the modal Msys +section. The record's nine fields are a translation vector plus the first +two rows of a rotation matrix whose third row is their cross product; the +section stores the resulting 16-element row-major Mat4d +mapping tool-path coordinates to workpiece (absolute) coordinates.

        +
        +
        +
        +
        RecordToSpindleSyntax
        +

        Translates a SPINDL record into the standardized +ISpindleSpeedDef section consumed by the general +SpindleSpeedSemantic. Parameter order +is tolerated (SPINDL/8000,RPM,CLW or SPINDL/RPM,8000,CLW): +the first numeric field is the rpm, a field containing CCLW selects +counter-clockwise, and SPINDL/OFF maps to +STOP.

        +
        +
        +
        +
        RecordToToolingSyntax
        +

        Translates the CLSF tooling records:

        +
        • TLDATA/MILL,… → the modal ClsfToolData +geometry section (kept for ClsfToolBuildSemantic); non-MILL +tool types are reported and skipped.
        • LOAD/TOOL,n[,XOFF,x][,YOFF,y][,ZOFF,z] → the standardized +ToolChange section (SectionName) +consumed by the general +ToolChangeSemantic; +IsChangeKey is set when the tool id +differs from the previously loaded tool. Offsets are recorded +informationally (no consumer yet).
        +
        +
        + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvActDataSemantic.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvActDataSemantic.html new file mode 100644 index 00000000..7741257e --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvActDataSemantic.html @@ -0,0 +1,414 @@ + + + + + Class CsvActDataSemantic | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class CsvActDataSemantic +

        + +
        +
        Namespace
        Hi.Numerical.CsvParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        CSV extension semantic: emits ActData from the residual +CsvRow columns — those not claimed by any RowTo*Syntax +(tool id, spindle, feedrate, coolant, time, csscript) nor by the machine / +cutter coordinate prefixes. A caller-supplied +ParsingDictionary entry is applied to its +column's raw text; the rest pass through as their pre-typed +number / bool / string. Carries arbitrary recorded channels +(file/line bookkeeping, sensor columns, etc.) onto the step.

        +
        +
        + +
        +
        public class CsvActDataSemantic : INcSemantic, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        CsvActDataSemantic
        +
        +
        + +
        +
        Implements
        +
        + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + + +

        + Resolve(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +

        + +

        Resolve the syntaxPieceNode into a sequence of IAct. +May also mutate SyntaxPiece.JsonObject for downstream semantics.

        +
        +
        + +
        +
        public IEnumerable<IAct> Resolve(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> dependencyList, NcDiagnosticProgress ncDiagnosticProgress)
        +
        + +

        Parameters

        +
        +
        syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
        +
        +
        dependencyList List<INcDependency>
        +
        +
        ncDiagnosticProgress NcDiagnosticProgress
        +
        +
        + +

        Returns

        +
        +
        IEnumerable<IAct>
        +
        +
        + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvActualTimeSemantic.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvActualTimeSemantic.html new file mode 100644 index 00000000..ad0463b8 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvActualTimeSemantic.html @@ -0,0 +1,412 @@ + + + + + Class CsvActualTimeSemantic | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class CsvActualTimeSemantic +

        + +
        +
        Namespace
        Hi.Numerical.CsvParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        CSV extension semantic: emits ActActualTimecode from the +ActualTimeTag cell of the decoded +CsvRow. This is telemetry the general semantic list does not cover — +the absolute controller timestamp of the recorded sample. Stateless; the +duration that consumes this timestamp is computed independently by +CsvMotionSemantic via Hi.Numerical.CsvParsers.CsvTimingUtil.

        +
        +
        + +
        +
        public class CsvActualTimeSemantic : INcSemantic, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        CsvActualTimeSemantic
        +
        +
        + +
        +
        Implements
        +
        + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + + +

        + Resolve(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress) + +

        + +

        Resolve the syntaxPieceNode into a sequence of IAct. +May also mutate SyntaxPiece.JsonObject for downstream semantics.

        +
        +
        + +
        +
        public IEnumerable<IAct> Resolve(LazyLinkedListNode<SyntaxPiece> syntaxPieceNode, List<INcDependency> dependencyList, NcDiagnosticProgress ncDiagnosticProgress)
        +
        + +

        Parameters

        +
        +
        syntaxPieceNode LazyLinkedListNode<SyntaxPiece>
        +
        +
        dependencyList List<INcDependency>
        +
        +
        ncDiagnosticProgress NcDiagnosticProgress
        +
        +
        + +

        Returns

        +
        +
        IEnumerable<IAct>
        +
        +
        + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvRowSemantic.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvMotionSemantic.html similarity index 73% rename from App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvRowSemantic.html rename to App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvMotionSemantic.html index 1258e2b8..a09fb77f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvRowSemantic.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvMotionSemantic.html @@ -2,11 +2,11 @@ - Class CsvRowSemantic | HiAPI-C# 2025 + Class CsvMotionSemantic | HiAPI-C# 2025 - + - + @@ -84,12 +84,12 @@
        -
        +
        -

        -Class CsvRowSemantic +

        +Class CsvMotionSemantic

        @@ -97,28 +97,30 @@ Class CsvRowSemantic
        Assembly
        HiMech.dll
        -

        Final-stage semantic that turns each row JSON stamped by -CsvRowSyntax into the same IAct sequence the -legacy CsvRunner produced: optional ActLineCsScript -(begin), ActActualTime, ActToolingTeleport, -ActFeedrate, ActSpindleDirection, -ActSpindleSpeed, ActMcXyzabcStep / -ActMcXyzabcLinearContour, ActData, and -optional ActLineCsScript (end).

        +

        CSV motion semantic — the recorded-duration counterpart of the general +McLinearMotionSemantic. Reads the same standardized sections +(IMotionEventDef, MachineCoordinateState, +IFeedrateDef) the general motion semantic reads, but derives +the move's duration from the recorded CSV timing +(ResolveDuration(LazyLinkedListNode<SyntaxPiece>)) instead of feedrate × distance — +because CSV is replayed telemetry where time is given, not computed.

        -Stateless — the previous machine coordinate is recovered by walking back -through the SyntaxPiece chain and reading the typed -double cells CsvRowSyntax already stamped, so -no carry-state lives on the semantic instance or in extra JSON sections. -The previous actual time is recovered the same way; that cell stays as a -string (the source format may be TimeSpan or DateTime) and is re-parsed -on demand — at most once per row. +First coordinate row (no previous MC) → ActMcXyzabcStep to the +point; subsequent rows → ActMcXyzabcLinearContour from the +previous point. The recorded feedrate is emitted as a standalone +ActFeedrate on change. +

        +

        +Because the upstream RowToMotionEventSyntax writes the full +general motion-section contract, this semantic can be replaced one-for-one +with McLinearMotionSemantic to fall back to feedrate-derived +timing.

        -
        public class CsvRowSemantic : INcSemantic, IMakeXmlSource
        +
        public class CsvMotionSemantic : INcSemantic, IMakeXmlSource
        @@ -128,7 +130,7 @@ on demand — at most once per row.
        Inheritance
        -
        CsvRowSemantic
        +
        CsvMotionSemantic
        @@ -201,9 +203,9 @@ on demand — at most once per row. - + -

        +

        DisplayName

        @@ -233,14 +235,14 @@ on demand — at most once per row. - + -

        +

        XName

        -

        XML element name for Generators registration.

        +

        XML element name used to register and serialize this semantic.

        @@ -269,9 +271,9 @@ on demand — at most once per row. - + -

        +

        MakeXmlSource(string, string, bool)

        @@ -311,7 +313,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.

        @@ -320,9 +322,9 @@ Since the folder can be moving with the configuration file.

        - + -

        +

        Reg(XFactory)

        @@ -354,9 +356,9 @@ Since the folder can be moving with the configuration file.

        - + -

        +

        Resolve(LazyLinkedListNode<SyntaxPiece>, List<INcDependency>, NcDiagnosticProgress)

        diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvRowSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvRowSyntax.html index d040cbc0..83a18b34 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvRowSyntax.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvRowSyntax.html @@ -6,7 +6,7 @@ - + @@ -103,13 +103,12 @@ Class CsvRowSyntax GetCsvDictionary(IList<string>, string), and stamps the resulting column→value map into JsonObject under the CsvRowKey -property for CsvRowSemantic to consume.

        +property for the downstream CSV syntaxes and semantics to consume.

        Numeric cells are pre-typed to double (or bool) -at this stage so downstream readers — including -CsvRowSemantic's backwards walk for the previous machine -coordinate — touch native JSON numbers instead of re-parsing strings on -every visit. Columns kept as strings: the script / time / spindle-direction +at this stage so downstream readers — including the CSV semantics' backwards +walk for the previous machine coordinate — touch native JSON numbers instead +of re-parsing strings on every visit. Columns kept as strings: the script / time / spindle-direction tags whose semantic interpretation is non-numeric, plus any column whose key appears in ParsingDictionary (the caller-supplied parsing function expects the raw cell text). diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvRunnerConfig.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvRunnerConfig.html index 2fd5223b..7447c05d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvRunnerConfig.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.CsvRunnerConfig.html @@ -6,7 +6,7 @@ - + @@ -98,9 +98,9 @@ Class CsvRunnerConfig

        Configuration class for CSV Runner. Lives in -NcDependencyList when wired with -CsvSoftRunner; consumed by CsvRowSyntax and -CsvRowSemantic for tag-name lookup and custom-field parsing.

        +PipelineNcDependencyList when wired with +GeneralCsvRunner; consumed by CsvRowSyntax and the +CSV row syntaxes/semantics for tag-name lookup and custom-field parsing.

        @@ -284,6 +284,39 @@ Class CsvRunnerConfig + + +

        + CoolantTag + +

        + +

        Coolant tag for CSV parsing. The cell holds the coolant mode name +(Flood / Mist / Off) or a boolean on/off flag.

        +
        +
        + +
        +
        public string CoolantTag { get; set; }
        +
        + + + + + +

        Property Value

        +
        +
        string
        +
        +
        + + + + + + + +

        diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.GeneralCsvRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.GeneralCsvRunner.html new file mode 100644 index 00000000..135b3bc4 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.GeneralCsvRunner.html @@ -0,0 +1,279 @@ + + + + + Class GeneralCsvRunner | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class GeneralCsvRunner +

        + +
        +
        Namespace
        Hi.Numerical.CsvParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Factory for a SoftNcRunner that replays CSV telemetry through +the general-semantics architecture: a chain of small +RowTo*Syntax classes maps each decoded CsvRow into the same +standardized JSON sections the brand-NC pipeline writes +(SpindleSpeed, Feedrate, Coolant, CsScript, +ToolChange, MachineCoordinateState, MotionEvent), and a +mostly-general semantic list resolves them into acts. A handful of CSV +extension semantics cover telemetry the general list does not +(CsvActualTimeSemantic, CsvMotionSemantic, +CsvActDataSemantic); tool changes ride the general +ToolingTeleportSemantic (the tool jumps to its recorded +position — no modelled tool-changer cycle).

        +

        +This is the flagship CSV runner — it superseded an earlier single-syntax / +single-semantic pipeline. +

        +

        +Recorded vs. computed timing. CSV is replayed telemetry, so +CsvMotionSemantic uses the recorded sample duration +(StepDuration / ActualTime delta) rather than +feedrate × distance. Because RowToMotionEventSyntax still +writes the full general motion-section contract, swapping +CsvMotionSemantic for the general +McLinearMotionSemantic in NcSemanticList +flips the runner to feedrate-derived timing with no other change. +

        +
        +
        + +
        +
        public static class GeneralCsvRunner
        +
        + + + + +
        +
        Inheritance
        +
        + +
        GeneralCsvRunner
        +
        +
        + + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + + + + + + +

        Methods +

        + + + + +

        + Create() + +

        + +

        Builds a fresh SoftNcRunner pre-configured to replay CSV +input through the general-semantics pipeline. Call once per machining +session so the runner's per-session state starts clean.

        +
        +
        + +
        +
        public static SoftNcRunner Create()
        +
        + + +

        Returns

        +
        +
        SoftNcRunner
        +
        +
        + + + + + + + + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers the CSV-module components Create() instantiates — +the shared decoder (CsvRunnerConfig, +CsvSegmenter, CsvRowSyntax), the +RowTo* syntax chain, and the CSV extension semantics — with the +given XFactory. The general components it reuses +(BundleSyntax, SpindleSpeedSemantic, +CoolantSemantic, CsScriptBeginSemantic, +CsScriptEndSemantic) are registered by +Reg(XFactory). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToCoolantSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToCoolantSyntax.html new file mode 100644 index 00000000..f5f1ae4a --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToCoolantSyntax.html @@ -0,0 +1,426 @@ + + + + + Class RowToCoolantSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class RowToCoolantSyntax +

        + +
        +
        Namespace
        Hi.Numerical.CsvParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Translates the coolant column of a decoded CsvRow into the +standardized ICoolantDef section consumed by the general +CoolantSemantic. The cell may hold a +mode name (Flood / Mist / +Off) or a boolean / 0-1 on-off flag; an +unrecognized value is a no-op.

        +
        +
        + +
        +
        public class RowToCoolantSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        RowToCoolantSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + +

        Examples

        +

        Mode name — consumed from CsvRow, custom survives: +#BeforeBuild:

        +
        { "CsvRow": { "Coolant": "Flood", "custom": 1 } }
        +

        #AfterBuild:

        +
        {
        +  "CsvRow": { "custom": 1 },
        +  "Coolant": { "IsOn": true, "Mode": "Flood" }
        +}
        +

        Boolean off-flag maps to Off: +#BeforeBuild:

        +
        { "CsvRow": { "Coolant": "false", "custom": 1 } }
        +

        #AfterBuild:

        +
        {
        +  "CsvRow": { "custom": 1 },
        +  "Coolant": { "IsOn": false, "Mode": "Off" }
        +}
        + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToCsScriptSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToCsScriptSyntax.html new file mode 100644 index 00000000..31a24d96 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToCsScriptSyntax.html @@ -0,0 +1,424 @@ + + + + + Class RowToCsScriptSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class RowToCsScriptSyntax +

        + +
        +
        Namespace
        Hi.Numerical.CsvParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Translates the begin/end C# script columns of a decoded CsvRow +(LineBeginCsScriptTag / +LineEndCsScriptTag) into the standardized +CsScript section consumed by the general +CsScriptBeginSemantic / +CsScriptEndSemantic. Empty cells are +skipped; an all-empty row is a no-op.

        +
        +
        + +
        +
        public class RowToCsScriptSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        RowToCsScriptSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + +

        Examples

        +

        Begin script only — consumed from CsvRow, custom survives: +#BeforeBuild:

        +
        { "CsvRow": { "LineBeginCsScript": "Probe();", "custom": 1 } }
        +

        #AfterBuild:

        +
        {
        +  "CsvRow": { "custom": 1 },
        +  "CsScript": { "BeginScript": "Probe();" }
        +}
        +

        No script columns — no-op: +#BeforeBuild:

        +
        { "CsvRow": { "custom": 1 } }
        +

        #AfterBuild:

        +
        { "CsvRow": { "custom": 1 } }
        + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToFeedrateSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToFeedrateSyntax.html new file mode 100644 index 00000000..b0c48e3d --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToFeedrateSyntax.html @@ -0,0 +1,422 @@ + + + + + Class RowToFeedrateSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class RowToFeedrateSyntax +

        + +
        +
        Namespace
        Hi.Numerical.CsvParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Translates the feedrate column of a decoded CsvRow into the +standardized IFeedrateDef section. CSV feedrate is recorded +in mm/min, so the section is stamped with the +G94 (mm/min) term and its derived unit — the +same shape ReadFeedrate_mmds(JsonObject, ISentenceCarrier, NcDiagnosticProgress) +expects.

        +
        +
        + +
        +
        public class RowToFeedrateSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        RowToFeedrateSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + +

        Examples

        +

        #BeforeBuild:

        +
        { "CsvRow": { "Feedrate_mmdmin": 20000, "custom": 1 } }
        +

        #AfterBuild:

        +
        {
        +  "CsvRow": { "custom": 1 },
        +  "Feedrate": { "FeedrateValue": 20000, "Term": "G94", "Unit": "mm/min" }
        +}
        +

        No feedrate column — no-op: +#BeforeBuild:

        +
        { "CsvRow": { "custom": 1 } }
        +

        #AfterBuild:

        +
        { "CsvRow": { "custom": 1 } }
        + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToMachineCoordinateSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToMachineCoordinateSyntax.html new file mode 100644 index 00000000..fe94192f --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToMachineCoordinateSyntax.html @@ -0,0 +1,429 @@ + + + + + Class RowToMachineCoordinateSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class RowToMachineCoordinateSyntax +

        + +
        +
        Namespace
        Hi.Numerical.CsvParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Translates the machine-coordinate columns of a decoded CsvRow +(prefixed by MachineCoordinatePrefix, e.g. +MC.XMC.C) into the standardized +MachineCoordinateState section. +Linear axes (X/Y/Z) are millimetres; rotary axes (A/B/C) are raw degrees, +matching the convention McAbcSyntax +writes and ReadMcXyzabc(JsonObject) +reads (degrees → radians). Only axes actually present in the row are +written; an all-absent row is a no-op.

        +

        Must run before RowToMotionEventSyntax.

        +
        +
        + +
        +
        public class RowToMachineCoordinateSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        RowToMachineCoordinateSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + +

        Examples

        +

        XY + rotary B/C present, Z/A absent — only present axes written, in +X,Y,Z,A,B,C order; all MC.* columns consumed from CsvRow, +custom survives: +#BeforeBuild:

        +
        { "CsvRow": { "MC.X": 35, "MC.Y": -11.7, "MC.B": 0, "MC.C": 0, "custom": 1 } }
        +

        #AfterBuild:

        +
        {
        +  "CsvRow": { "custom": 1 },
        +  "MachineCoordinateState": { "X": 35, "Y": -11.7, "B": 0, "C": 0 }
        +}
        +

        No coordinate columns — no-op: +#BeforeBuild:

        +
        { "CsvRow": { "custom": 1 } }
        +

        #AfterBuild:

        +
        { "CsvRow": { "custom": 1 } }
        + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToMotionEventSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToMotionEventSyntax.html new file mode 100644 index 00000000..cef46e38 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToMotionEventSyntax.html @@ -0,0 +1,437 @@ + + + + + Class RowToMotionEventSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class RowToMotionEventSyntax +

        + +
        +
        Namespace
        Hi.Numerical.CsvParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Marks every CSV row that carries a +MachineCoordinateState section as a +McLinear feed move by writing the standardized +IMotionEventDef (+ modal IMotionStateDef) +sections. This keeps the motion-section contract identical to the one the +general McLinearMotionSemantic reads, +so the CSV pipeline's CsvMotionSemantic (recorded-duration) +can be swapped for the general feedrate-derived semantic by changing only +the semantic list.

        +

        +CSV telemetry has no rapid concept, so IsRapid +is never set (feed move). Must run after +RowToMachineCoordinateSyntax. +

        +
        +
        + +
        +
        public class RowToMotionEventSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        RowToMotionEventSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + +

        Examples

        +

        MachineCoordinateState present — both motion sections written as a G01 +feed move: +#BeforeBuild:

        +
        {
        +  "CsvRow": { "MC.X": 10 },
        +  "MachineCoordinateState": { "X": 10, "Y": 20, "Z": 30 }
        +}
        +

        #AfterBuild:

        +
        {
        +  "CsvRow": { "MC.X": 10 },
        +  "MachineCoordinateState": { "X": 10, "Y": 20, "Z": 30 },
        +  "MotionState": { "Term": "G01" },
        +  "MotionEvent": { "Form": "McLinear" }
        +}
        +

        No MachineCoordinateState — no-op: +#BeforeBuild:

        +
        { "CsvRow": { "custom": 1 } }
        +

        #AfterBuild:

        +
        { "CsvRow": { "custom": 1 } }
        + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToSpindleSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToSpindleSyntax.html new file mode 100644 index 00000000..5187e5bd --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToSpindleSyntax.html @@ -0,0 +1,428 @@ + + + + + Class RowToSpindleSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class RowToSpindleSyntax +

        + +
        +
        Namespace
        Hi.Numerical.CsvParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Translates the spindle columns of a decoded CsvRow into the +standardized ISpindleSpeedDef section that the general +SpindleSpeedSemantic consumes. +Reads SpindleSpeedTag_rpm (numeric) and +SpindleDirectionTag (enum name); when only +the speed is present the direction defaults to +CW (matching the legacy CSV behavior).

        +
        +
        + +
        +
        public class RowToSpindleSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        RowToSpindleSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + +

        Examples

        +

        Speed + explicit direction — both mapped into the section and consumed +from CsvRow; the unrelated custom column survives: +#BeforeBuild:

        +
        { "CsvRow": { "SpindleSpeed_rpm": 2000, "Spd.Dir.": "CCW", "custom": 1 } }
        +

        #AfterBuild:

        +
        {
        +  "CsvRow": { "custom": 1 },
        +  "SpindleSpeed": { "SpindleSpeed_rpm": 2000, "Direction": "CCW" }
        +}
        +

        Speed only — direction defaults to CW: +#BeforeBuild:

        +
        { "CsvRow": { "SpindleSpeed_rpm": 1500, "custom": 1 } }
        +

        #AfterBuild:

        +
        {
        +  "CsvRow": { "custom": 1 },
        +  "SpindleSpeed": { "SpindleSpeed_rpm": 1500, "Direction": "CW" }
        +}
        + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToTimingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToTimingSyntax.html new file mode 100644 index 00000000..3b0f1ea0 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToTimingSyntax.html @@ -0,0 +1,525 @@ + + + + + Class RowToTimingSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class RowToTimingSyntax +

        + +
        +
        Namespace
        Hi.Numerical.CsvParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Moves the recorded-timing columns of a decoded CsvRow +(DurationTag / +ActualTimeTag) into a dedicated +CsvTiming section, consuming them from CsvRow. The cells stay +as raw strings (the source format may be a TimeSpan or +DateTime literal); parsing happens later in +Hi.Numerical.CsvParsers.CsvTimingUtil. Having a syntax own the timing tags — like the +other RowTo* syntaxes own their columns — is what lets +CsvActDataSemantic treat whatever remains in CsvRow as +residual telemetry without a hard-coded consumed-key list.

        +
        +
        + +
        +
        public class RowToTimingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        RowToTimingSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + +

        Examples

        +

        Duration + actual-time present — both moved into CsvTiming and +removed from CsvRow; the unrelated custom column survives: +#BeforeBuild:

        +
        { "CsvRow": { "StepDuration": "00:00:01", "ActualTime": "08:00:01", "custom": 1 } }
        +

        #AfterBuild:

        +
        {
        +  "CsvRow": { "custom": 1 },
        +  "CsvTiming": { "Duration": "00:00:01", "ActualTime": "08:00:01" }
        +}
        +

        No timing columns — no-op: +#BeforeBuild:

        +
        { "CsvRow": { "custom": 1 } }
        +

        #AfterBuild:

        +
        { "CsvRow": { "custom": 1 } }
        + + + + +

        Fields +

        + + + +

        + ActualTimeKey + +

        + +

        Section key holding the absolute actual-time literal.

        +
        +
        + +
        +
        public const string ActualTimeKey = "ActualTime"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + DurationKey + +

        + +

        Section key holding the recorded per-step duration literal.

        +
        +
        + +
        +
        public const string DurationKey = "Duration"
        +
        + + + + +

        Field Value

        +
        +
        string
        +
        +
        + + + + + + + + + + +

        + SectionName + +

        + +

        JSON section name where the recorded timing is written.

        +
        +
        + +
        +
        public const string SectionName = "CsvTiming"
        +
        + + + + +

        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<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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToToolingSyntax.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToToolingSyntax.html new file mode 100644 index 00000000..c2eb6401 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.RowToToolingSyntax.html @@ -0,0 +1,442 @@ + + + + + Class RowToToolingSyntax | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + +
        +
        +
        +
        +
        Table of Contents
        + +
        +
        + +
        +
        +
        + +
        +
        + + + +
        + +
        + + + +

        +Class RowToToolingSyntax +

        + +
        +
        Namespace
        Hi.Numerical.CsvParsers
        +
        Assembly
        HiMech.dll
        +
        + +

        Translates the tool-id column of a decoded CsvRow into the +standardized ToolChange section +(SectionName). The active tool number is +always written; IsChangeKey is set when the +tool id differs from the previous row (including the first occurrence), so +the section both drives +ToolingTeleportSemantic +(teleport-on-change) and stays compatible with the general +ToolChangeSemantic.

        +
        +
        + +
        +
        public class RowToToolingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource
        +
        + + + + +
        +
        Inheritance
        +
        + +
        RowToToolingSyntax
        +
        +
        + +
        +
        Implements
        +
        + + + +
        +
        + + +
        +
        Inherited Members
        +
        + + + + + + + +
        + +
        +
        Extension Methods
        +
        + + + + + + + +
        + + +

        Examples

        +

        First row (no predecessor) — tool armed, IsChange true; ToolId +consumed from CsvRow, custom survives: +#BeforeBuild:

        +
        { "CsvRow": { "ToolId": 1, "custom": 1 } }
        +

        #AfterBuild:

        +
        {
        +  "CsvRow": { "custom": 1 },
        +  "ToolChange": { "ToolId": 1, "IsChange": true }
        +}
        +

        Same tool as previous row — IsChange false: +#Previous:

        +
        { "ToolChange": { "ToolId": 1, "IsChange": true } }
        +

        #BeforeBuild:

        +
        { "CsvRow": { "ToolId": 1, "custom": 1 } }
        +

        #AfterBuild:

        +
        {
        +  "CsvRow": { "custom": 1 },
        +  "ToolChange": { "ToolId": 1, "IsChange": false }
        +}
        +

        Tool id changed vs previous row — IsChange true: +#Previous:

        +
        { "ToolChange": { "ToolId": 1, "IsChange": false } }
        +

        #BeforeBuild:

        +
        { "CsvRow": { "ToolId": 2, "custom": 1 } }
        +

        #AfterBuild:

        +
        {
        +  "CsvRow": { "custom": 1 },
        +  "ToolChange": { "ToolId": 2, "IsChange": true }
        +}
        + + + + +

        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.

        +
        + + + + + + +

        + Reg(XFactory) + +

        + +

        Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

        +
        +
        + +
        +
        public static void Reg(XFactory factory = null)
        +
        + +

        Parameters

        +
        +
        factory XFactory
        +
        +
        + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        + +
        +
        + +
        + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.html index 3578ff9c..ab5e3436 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.CsvParsers.html @@ -95,23 +95,47 @@ Classes

        -
        CsvRowSemantic
        -

        Final-stage semantic that turns each row JSON stamped by -CsvRowSyntax into the same IAct sequence the -legacy CsvRunner produced: optional ActLineCsScript -(begin), ActActualTime, ActToolingTeleport, -ActFeedrate, ActSpindleDirection, -ActSpindleSpeed, ActMcXyzabcStep / -ActMcXyzabcLinearContour, ActData, and -optional ActLineCsScript (end).

        +
        CsvActDataSemantic
        +

        CSV extension semantic: emits ActData from the residual +CsvRow columns — those not claimed by any RowTo*Syntax +(tool id, spindle, feedrate, coolant, time, csscript) nor by the machine / +cutter coordinate prefixes. A caller-supplied +ParsingDictionary entry is applied to its +column's raw text; the rest pass through as their pre-typed +number / bool / string. Carries arbitrary recorded channels +(file/line bookkeeping, sensor columns, etc.) onto the step.

        +
        +
        +
        +
        CsvActualTimeSemantic
        +

        CSV extension semantic: emits ActActualTimecode from the +ActualTimeTag cell of the decoded +CsvRow. This is telemetry the general semantic list does not cover — +the absolute controller timestamp of the recorded sample. Stateless; the +duration that consumes this timestamp is computed independently by +CsvMotionSemantic via Hi.Numerical.CsvParsers.CsvTimingUtil.

        +
        +
        +
        +
        CsvMotionSemantic
        +

        CSV motion semantic — the recorded-duration counterpart of the general +McLinearMotionSemantic. Reads the same standardized sections +(IMotionEventDef, MachineCoordinateState, +IFeedrateDef) the general motion semantic reads, but derives +the move's duration from the recorded CSV timing +(ResolveDuration(LazyLinkedListNode<SyntaxPiece>)) instead of feedrate × distance — +because CSV is replayed telemetry where time is given, not computed.

        -Stateless — the previous machine coordinate is recovered by walking back -through the SyntaxPiece chain and reading the typed -double cells CsvRowSyntax already stamped, so -no carry-state lives on the semantic instance or in extra JSON sections. -The previous actual time is recovered the same way; that cell stays as a -string (the source format may be TimeSpan or DateTime) and is re-parsed -on demand — at most once per row. +First coordinate row (no previous MC) → ActMcXyzabcStep to the +point; subsequent rows → ActMcXyzabcLinearContour from the +previous point. The recorded feedrate is emitted as a standalone +ActFeedrate on change. +

        +

        +Because the upstream RowToMotionEventSyntax writes the full +general motion-section contract, this semantic can be replaced one-for-one +with McLinearMotionSemantic to fall back to feedrate-derived +timing.

        @@ -123,13 +147,12 @@ on demand — at most once per row. GetCsvDictionary(IList<string>, string), and stamps the resulting column→value map into JsonObject under the CsvRowKey -property for CsvRowSemantic to consume.

        +property for the downstream CSV syntaxes and semantics to consume.

        Numeric cells are pre-typed to double (or bool) -at this stage so downstream readers — including -CsvRowSemantic's backwards walk for the previous machine -coordinate — touch native JSON numbers instead of re-parsing strings on -every visit. Columns kept as strings: the script / time / spindle-direction +at this stage so downstream readers — including the CSV semantics' backwards +walk for the previous machine coordinate — touch native JSON numbers instead +of re-parsing strings on every visit. Columns kept as strings: the script / time / spindle-direction tags whose semantic interpretation is non-numeric, plus any column whose key appears in ParsingDictionary (the caller-supplied parsing function expects the raw cell text). @@ -139,9 +162,9 @@ caller-supplied parsing function expects the raw cell text).

        CsvRunnerConfig

        Configuration class for CSV Runner. Lives in -NcDependencyList when wired with -CsvSoftRunner; consumed by CsvRowSyntax and -CsvRowSemantic for tag-name lookup and custom-field parsing.

        +PipelineNcDependencyList when wired with +GeneralCsvRunner; consumed by CsvRowSyntax and the +CSV row syntaxes/semantics for tag-name lookup and custom-field parsing.

        @@ -156,22 +179,134 @@ subsequent line as a one-line
        -
        CsvSoftRunner
        -

        Factory for a SoftNcRunner wired to replay CSV files -(deprecates the legacy CsvRunner). The returned runner has a -single-syntax pipeline: CsvSegmenter → -CsvRowSyntaxCsvRowSemantic.

        +
        GeneralCsvRunner
        +

        Factory for a SoftNcRunner that replays CSV telemetry through +the general-semantics architecture: a chain of small +RowTo*Syntax classes maps each decoded CsvRow into the same +standardized JSON sections the brand-NC pipeline writes +(SpindleSpeed, Feedrate, Coolant, CsScript, +ToolChange, MachineCoordinateState, MotionEvent), and a +mostly-general semantic list resolves them into acts. A handful of CSV +extension semantics cover telemetry the general list does not +(CsvActualTimeSemantic, CsvMotionSemantic, +CsvActDataSemantic); tool changes ride the general +ToolingTeleportSemantic (the tool jumps to its recorded +position — no modelled tool-changer cycle).

        -Default NcDependencyList: -

        -MachiningServiceDependency is intentionally not included by -default; clients that build custom syntaxes around CsvSoftRunner -can append it themselves. - +This is the flagship CSV runner — it superseded an earlier single-syntax / +single-semantic pipeline. +

        +

        +Recorded vs. computed timing. CSV is replayed telemetry, so +CsvMotionSemantic uses the recorded sample duration +(StepDuration / ActualTime delta) rather than +feedrate × distance. Because RowToMotionEventSyntax still +writes the full general motion-section contract, swapping +CsvMotionSemantic for the general +McLinearMotionSemantic in NcSemanticList +flips the runner to feedrate-derived timing with no other change. +

        +
        +
        +
        +
        RowToCoolantSyntax
        +

        Translates the coolant column of a decoded CsvRow into the +standardized ICoolantDef section consumed by the general +CoolantSemantic. The cell may hold a +mode name (Flood / Mist / +Off) or a boolean / 0-1 on-off flag; an +unrecognized value is a no-op.

        +
        +
        +
        +
        RowToCsScriptSyntax
        +

        Translates the begin/end C# script columns of a decoded CsvRow +(LineBeginCsScriptTag / +LineEndCsScriptTag) into the standardized +CsScript section consumed by the general +CsScriptBeginSemantic / +CsScriptEndSemantic. Empty cells are +skipped; an all-empty row is a no-op.

        +
        +
        +
        +
        RowToFeedrateSyntax
        +

        Translates the feedrate column of a decoded CsvRow into the +standardized IFeedrateDef section. CSV feedrate is recorded +in mm/min, so the section is stamped with the +G94 (mm/min) term and its derived unit — the +same shape ReadFeedrate_mmds(JsonObject, ISentenceCarrier, NcDiagnosticProgress) +expects.

        +
        +
        +
        +
        RowToMachineCoordinateSyntax
        +

        Translates the machine-coordinate columns of a decoded CsvRow +(prefixed by MachineCoordinatePrefix, e.g. +MC.XMC.C) into the standardized +MachineCoordinateState section. +Linear axes (X/Y/Z) are millimetres; rotary axes (A/B/C) are raw degrees, +matching the convention McAbcSyntax +writes and ReadMcXyzabc(JsonObject) +reads (degrees → radians). Only axes actually present in the row are +written; an all-absent row is a no-op.

        +

        Must run before RowToMotionEventSyntax.

        +
        +
        +
        +
        RowToMotionEventSyntax
        +

        Marks every CSV row that carries a +MachineCoordinateState section as a +McLinear feed move by writing the standardized +IMotionEventDef (+ modal IMotionStateDef) +sections. This keeps the motion-section contract identical to the one the +general McLinearMotionSemantic reads, +so the CSV pipeline's CsvMotionSemantic (recorded-duration) +can be swapped for the general feedrate-derived semantic by changing only +the semantic list.

        +

        +CSV telemetry has no rapid concept, so IsRapid +is never set (feed move). Must run after +RowToMachineCoordinateSyntax. +

        +
        +
        +
        +
        RowToSpindleSyntax
        +

        Translates the spindle columns of a decoded CsvRow into the +standardized ISpindleSpeedDef section that the general +SpindleSpeedSemantic consumes. +Reads SpindleSpeedTag_rpm (numeric) and +SpindleDirectionTag (enum name); when only +the speed is present the direction defaults to +CW (matching the legacy CSV behavior).

        +
        +
        +
        +
        RowToTimingSyntax
        +

        Moves the recorded-timing columns of a decoded CsvRow +(DurationTag / +ActualTimeTag) into a dedicated +CsvTiming section, consuming them from CsvRow. The cells stay +as raw strings (the source format may be a TimeSpan or +DateTime literal); parsing happens later in +Hi.Numerical.CsvParsers.CsvTimingUtil. Having a syntax own the timing tags — like the +other RowTo* syntaxes own their columns — is what lets +CsvActDataSemantic treat whatever remains in CsvRow as +residual telemetry without a hard-coded consumed-key list.

        +
        +
        +
        +
        RowToToolingSyntax
        +

        Translates the tool-id column of a decoded CsvRow into the +standardized ToolChange section +(SectionName). The active tool number is +always written; IsChangeKey is set when the +tool id differs from the previous row (including the first occurrence), so +the section both drives +ToolingTeleportSemantic +(teleport-on-change) and stays compatible with the general +ToolChangeSemantic.

        diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.HardNcRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.HardNcRunner.html index 21371916..7e42a7a5 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.HardNcRunner.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.HardNcRunner.html @@ -102,7 +102,7 @@ Class HardNcRunner
        -
        public class HardNcRunner : IControlRunner
        +
        public class HardNcRunner : INcRunner
        @@ -119,7 +119,7 @@ Class HardNcRunner
        Implements
        - +
        @@ -220,10 +220,10 @@ Class HardNcRunner - + -

        - RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) +

        + RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken)

        @@ -232,7 +232,7 @@ Class HardNcRunner
        -
        public IEnumerable<SourcedActEntry> RunControlLines(string relNcFilePath, IEnumerable<string> lines, MachiningSession machiningSession, SessionProgress sessionProgress, CancellationToken cancellationToken)
        +
        public IEnumerable<SourcedActEntry> RunNcLines(string relNcFilePath, IEnumerable<string> lines, MachiningSession machiningSession, StepDiagnosticProgress stepDiagnosticProgress, NcDiagnosticProgress ncDiagnosticProgress, CancellationToken cancellationToken)

        Parameters

        @@ -246,8 +246,11 @@ Class HardNcRunner
        machiningSession MachiningSession

        The machining session that owns runtime state for this run.

        -
        sessionProgress SessionProgress
        -

        The session message host for logging.

        +
        stepDiagnosticProgress StepDiagnosticProgress
        +

        Progress sink for cutter-location strip updates emitted during the run.

        +
        +
        ncDiagnosticProgress NcDiagnosticProgress
        +

        NC-pipeline sink; receives the parse progress / diagnostics of this legacy runner.

        cancellationToken CancellationToken

        Cancellation token to cancel the operation

        diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.html index d4b26e74..ec78d0ad 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.FilePlayers.html @@ -94,11 +94,6 @@

        Classes

        -
        -
        CsvRunner
        -

        Provides functionality for running and processing csv lines.

        -
        -
        HardNcRunner

        Provides functionality for running and processing NC code lines.

        diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.HardNcEnv.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.HardNcEnv.html index 88e2bc31..c40d0b33 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.HardNcEnv.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.HardNcEnv.html @@ -218,8 +218,8 @@ Class HardNcEnv -

        - HardNcEnv(XElement, string, string, IProgress<object>) +

        + HardNcEnv(XElement, string, string, IProgress<IMessage>)

        @@ -228,7 +228,7 @@ Class HardNcEnv
        -
        public HardNcEnv(XElement src, string baseDirectory, string relFile, IProgress<object> progress)
        +
        public HardNcEnv(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress)

        Parameters

        @@ -242,7 +242,7 @@ Class HardNcEnv
        relFile string

        The relative file path.

        -
        progress IProgress<object>
        +
        progress IProgress<IMessage>

        Optional progress reporter for nested XML factory calls.

        @@ -1161,8 +1161,10 @@ Unit is degree.

        Gets or sets the rotary machine coordinate for tooling operations. -Defaults to HomeMc if not explicitly set. Set to NaN if tooling motion not apply the axis motion. +When not explicitly set, defaults to all-NaN — rotary axes stay +during a tool change, matching ToolingMcConfig.Default3Axis. +(The old default, (0,0,0), swung every rotary axis home on each M06.) Unit is radian.

        @@ -1196,8 +1198,11 @@ Unit is radian.

        Gets or sets the translation machine coordinate for tooling operations. -Defaults to HomeMc if not explicitly set. -Set to NaN if tooling motion not apply the axis motion.

        +Set to NaN if tooling motion not apply the axis motion. +When not explicitly set, defaults to (NaN, NaN, 0) — Z retracts to +machine zero, X/Y stay — the same shape as the SoftNc pipeline's +ToolingMcConfig.Default3Axis, keeping the two runners' M06 +paths aligned. (The old default, HomeMc, moved all three axes.)

        @@ -1324,8 +1329,8 @@ Set to NaN if tooling motion not apply the axis motion.

        -

        - CheckStrokeLimit(DVec3d, IProgress<object>) +

        + CheckStrokeLimit(DVec3d, IProgress<IMessage>)

        @@ -1334,7 +1339,7 @@ Set to NaN if tooling motion not apply the axis motion.

        -
        public bool CheckStrokeLimit(DVec3d mcXyzabc_mm_rad, IProgress<object> messageKit)
        +
        public bool CheckStrokeLimit(DVec3d mcXyzabc_mm_rad, IProgress<IMessage> mixedProgress)

        Parameters

        @@ -1342,7 +1347,7 @@ Set to NaN if tooling motion not apply the axis motion.

        mcXyzabc_mm_rad DVec3d

        Machine coordinates in mm and radians.

        -
        messageKit IProgress<object>
        +
        mixedProgress IProgress<IMessage>

        Message kit for error reporting.

        diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.HardNcLine.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.HardNcLine.html index 32a83507..430e225c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.HardNcLine.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.HardNcLine.html @@ -200,8 +200,8 @@ Class HardNcLine -

        - HardNcLine(HardNcEnv, IndexedFileLine, HardNcLine, int, out NcNoteCache, IProgress<object>) +

        + HardNcLine(HardNcEnv, IndexedFileLine, HardNcLine, int, out NcNoteCache, IProgress<IMessage>)

        @@ -210,7 +210,7 @@ Class HardNcLine
        -
        public HardNcLine(HardNcEnv ncEnv, IndexedFileLine fileLine, HardNcLine preNcLine, int sentenceIndex, out NcNoteCache ncNoteCache, IProgress<object> progress)
        +
        public HardNcLine(HardNcEnv ncEnv, IndexedFileLine fileLine, HardNcLine preNcLine, int sentenceIndex, out NcNoteCache ncNoteCache, IProgress<IMessage> mixedProgress)

        Parameters

        @@ -232,7 +232,7 @@ and exposed via NcNoteCache

        Output NC note cache

        -
        progress IProgress<object>
        +
        mixedProgress IProgress<IMessage>

        Message host for warnings

        @@ -250,8 +250,8 @@ and exposed via -

        - HardNcLine(HardNcEnv, IProgress<object>) +

        + HardNcLine(HardNcEnv, IProgress<IMessage>)

        @@ -262,14 +262,14 @@ and exposed via
        -
        public HardNcLine(HardNcEnv ncEnv, IProgress<object> messageHost)
        +
        public HardNcLine(HardNcEnv ncEnv, IProgress<IMessage> mixedProgress)

        Parameters

        ncEnv HardNcEnv
        -
        messageHost IProgress<object>
        +
        mixedProgress IProgress<IMessage>
        @@ -2104,8 +2104,8 @@ Init-state lines ( -

        - GetCompensationHeight(HardNcEnv, IProgress<object>) +

        + GetCompensationHeight(HardNcEnv, IProgress<IMessage>)

        @@ -2114,7 +2114,7 @@ Init-state lines (
        -
        public double GetCompensationHeight(HardNcEnv ncEnv, IProgress<object> messageHost)
        +
        public double GetCompensationHeight(HardNcEnv ncEnv, IProgress<IMessage> mixedProgress)

        Parameters

        @@ -2122,7 +2122,7 @@ Init-state lines (
        HardNcEnv

        NC environment

        -
        messageHost IProgress<object>
        +
        mixedProgress IProgress<IMessage>

        Message host for warnings

        @@ -2146,8 +2146,8 @@ Init-state lines ( -

        - GetCompensationRadius(CncBrand, MillingToolOffsetTable, IProgress<object>) +

        + GetCompensationRadius(CncBrand, MillingToolOffsetTable, IProgress<IMessage>)

        @@ -2156,7 +2156,7 @@ Init-state lines (
      -
      public double GetCompensationRadius(CncBrand cncBrand, MillingToolOffsetTable millingToolOffsetTable, IProgress<object> messageHost)
      +
      public double GetCompensationRadius(CncBrand cncBrand, MillingToolOffsetTable millingToolOffsetTable, IProgress<IMessage> mixedProgress)

      Parameters

      @@ -2167,7 +2167,7 @@ Init-state lines (
      MillingToolOffsetTable

      Milling tool offset table

      -
      messageHost IProgress<object>
      +
      mixedProgress IProgress<IMessage>

      Message host for warnings

      @@ -2296,8 +2296,8 @@ Init-state lines ( -

      - GetMcByProgramPos(Vec3d, HardNcEnv, NcNoteCache, IProgress<object>, out Vec3d) +

      + GetMcByProgramPos(Vec3d, HardNcEnv, NcNoteCache, IProgress<IMessage>, out Vec3d)

      @@ -2306,7 +2306,7 @@ Init-state lines (
      -
      public DVec3d GetMcByProgramPos(Vec3d programPos, HardNcEnv ncEnv, NcNoteCache ncNoteCache, IProgress<object> messageHost, out Vec3d programXyz)
      +
      public DVec3d GetMcByProgramPos(Vec3d programPos, HardNcEnv ncEnv, NcNoteCache ncNoteCache, IProgress<IMessage> mixedProgress, out Vec3d programXyz)

      Parameters

      @@ -2317,7 +2317,7 @@ Init-state lines (
      NcNoteCache
      -
      messageHost IProgress<object>
      +
      mixedProgress IProgress<IMessage>
      programXyz Vec3d
      @@ -2485,8 +2485,8 @@ Init-state lines ( -

      - RebuildByMc(HardNcEnv, DVec3d, NcNoteCache, IProgress<object>) +

      + RebuildByMc(HardNcEnv, DVec3d, NcNoteCache, IProgress<IMessage>)

      @@ -2495,7 +2495,7 @@ Init-state lines (
    -
    public void RebuildByMc(HardNcEnv ncEnv, DVec3d mc, NcNoteCache ncNoteCache, IProgress<object> messageHost)
    +
    public void RebuildByMc(HardNcEnv ncEnv, DVec3d mc, NcNoteCache ncNoteCache, IProgress<IMessage> mixedProgress)

    Parameters

    @@ -2509,7 +2509,7 @@ Init-state lines (
    NcNoteCache

    NC line cache.

    -
    messageHost IProgress<object>
    +
    mixedProgress IProgress<IMessage>

    Message host for logging and reporting.

    @@ -2527,8 +2527,8 @@ Init-state lines ( -

    - RebuildByProgramXyz(HardNcEnv, Vec3d, NcNoteCache, IProgress<object>) +

    + RebuildByProgramXyz(HardNcEnv, Vec3d, NcNoteCache, IProgress<IMessage>)

    @@ -2537,7 +2537,7 @@ Init-state lines (
    -
    public void RebuildByProgramXyz(HardNcEnv ncEnv, Vec3d programXyz, NcNoteCache ncNoteCache, IProgress<object> messageHost)
    +
    public void RebuildByProgramXyz(HardNcEnv ncEnv, Vec3d programXyz, NcNoteCache ncNoteCache, IProgress<IMessage> mixedProgress)

    Parameters

    @@ -2551,7 +2551,7 @@ Init-state lines (
    NcNoteCache

    NC note cache.

    -
    messageHost IProgress<object>
    +
    mixedProgress IProgress<IMessage>

    Message host for logging and reporting.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.HardNcUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.HardNcUtil.html index 74b93ec9..2991b445 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.HardNcUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.HardNcUtil.html @@ -287,57 +287,6 @@ Class HardNcUtil - - -

    - ApproachFloor<T>(IFileLineIndex, List<T>, IEnumerator<T>) - -

    - -

    Get the value which is at the floor index (fileLineIndex) from src.

    -
    -
    - -
    -
    public static T ApproachFloor<T>(IFileLineIndex fileLineIndex, List<T> buffer, IEnumerator<T> src) where T : IFileLineIndex
    -
    - -

    Parameters

    -
    -
    fileLineIndex IFileLineIndex
    -

    file line index

    -
    -
    buffer List<T>
    -

    buffer. Only required capacity of 2.

    -
    -
    src IEnumerator<T>
    -

    src

    -
    -
    - -

    Returns

    -
    -
    T
    -

    value at the floor index

    -
    -
    - -

    Type Parameters

    -
    -
    T
    -

    value type

    -
    -
    - - - - - - - - - -

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.IControlRunner.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.INcRunner.html similarity index 66% rename from App/wwwroot/HiAPI-docsite/api/Hi.Numerical.IControlRunner.html rename to App/wwwroot/HiAPI-docsite/api/Hi.Numerical.INcRunner.html index 24851ef2..28a5da54 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.IControlRunner.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.INcRunner.html @@ -2,11 +2,11 @@ - Interface IControlRunner | HiAPI-C# 2025 + Interface INcRunner | HiAPI-C# 2025 - + - + @@ -84,12 +84,12 @@

    -
    +
    -

    -Interface IControlRunner +

    +Interface INcRunner

    @@ -97,14 +97,16 @@ Interface IControlRunner
    Assembly
    HiMech.dll
    -

    Control Runner. -The term control is machine control. -The Control Line is such like the NC (Numerical Control) line.

    +

    NC runner — parses and executes NC program lines. Nc is the umbrella +term for any machine-readable control program (famous-brand controller +code, NX-CL, CSV): the same runner contract serves all of them, and +NcKind names the kinds where they must be +distinguished.

    -
    public interface IControlRunner
    +
    public interface INcRunner
    @@ -142,42 +144,51 @@ The Control Line is such like the NC (Numerical Control) line.

    +

    Remarks

    +

    Renamed from IControlRunner (with RunControlLines) — the +implementors were already named SoftNcRunner / HardNcRunner, +and the whole soft pipeline (session state, syntax layers, dependencies) +carries the Nc prefix while serving CL and CSV too.

    +

    Methods

    - + -

    - RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) +

    + RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken)

    -

    Runs raw Control lines and yields source sentence and Act pairs.

    +

    Runs raw NC program lines and yields source sentence and Act pairs.

    -
    IEnumerable<SourcedActEntry> RunControlLines(string relFilePath, IEnumerable<string> lines, MachiningSession machiningSession, SessionProgress progress, CancellationToken cancellationToken)
    +
    IEnumerable<SourcedActEntry> RunNcLines(string relFilePath, IEnumerable<string> lines, MachiningSession machiningSession, StepDiagnosticProgress stepDiagnosticProgress, NcDiagnosticProgress ncDiagnosticProgress, CancellationToken cancellationToken)

    Parameters

    relFilePath string
    -

    The relative path of the control file

    +

    The relative path of the NC program file

    lines IEnumerable<string>
    -

    The enumerable collection of command (control code) lines

    +

    The enumerable collection of NC program lines

    machiningSession MachiningSession

    Session-scoped state shared across multiple -RunControlLines(string, IEnumerable<string>, MachiningSession, SessionProgress, CancellationToken) calls (e.g. lazy-initialized pipeline state, +RunNcLines(string, IEnumerable<string>, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) calls (e.g. lazy-initialized pipeline state, file-index counter).

    -
    progress SessionProgress
    -

    Session progress and message sink.

    +
    stepDiagnosticProgress StepDiagnosticProgress
    +

    Step-anchored IMessage-channel sink.

    +
    +
    ncDiagnosticProgress NcDiagnosticProgress
    +

    NC-pipeline diagnostic sink, threaded in as an input so the runner stays host-agnostic (the caller injects it; the production caller passes the service-scoped instance, standalone tests pass their own).

    cancellationToken CancellationToken

    Cancellation token to cancel the operation

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.NcArgs.ArcNcArg.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.NcArgs.ArcNcArg.html index 60529840..fccd4d61 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.NcArgs.ArcNcArg.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.NcArgs.ArcNcArg.html @@ -274,6 +274,43 @@ Class ArcNcArg + + +

    + IsIjkAbsolute + +

    + +

    Whether Ijk addresses the circle center as absolute +program coordinates instead of offsets from the arc start. +Heidenhain DIN/ISO reads I/J/K this way (the ISO twin of the +Klartext CC pole); Fanuc/Siemens/Syntec/Mazak — and Heidenhain +under G91 — use start-to-center offsets. Stamped by +HardNcLine.BuildArcNcArg from the brand and the G91 state.

    +
    +
    + +
    +
    public bool IsIjkAbsolute { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    bool
    +
    +
    + + + + + + + +

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.NcFlagUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.NcFlagUtil.html index 89997d19..82235ffc 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.NcFlagUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.NcFlagUtil.html @@ -155,8 +155,8 @@ Class NcFlagUtil -

    - GetCompensationHeight(BitArray, int, MillingToolOffsetTable, CncBrand, IProgress<object>) +

    + GetCompensationHeight(BitArray, int, MillingToolOffsetTable, CncBrand, IProgress<IMessage>)

    @@ -165,7 +165,7 @@ Class NcFlagUtil
    -
    public static double GetCompensationHeight(this BitArray ncFlagBitArray, int H, MillingToolOffsetTable millingToolOffsetTable, CncBrand cncBrand, IProgress<object> messageHost)
    +
    public static double GetCompensationHeight(this BitArray ncFlagBitArray, int H, MillingToolOffsetTable millingToolOffsetTable, CncBrand cncBrand, IProgress<IMessage> mixedProgress)

    Parameters

    @@ -182,7 +182,7 @@ Class NcFlagUtil
    cncBrand CncBrand

    CNC brand

    -
    messageHost IProgress<object>
    +
    mixedProgress IProgress<IMessage>

    Message host for warnings

    @@ -206,8 +206,8 @@ Class NcFlagUtil -

    - GetCompensationRadius(BitArray, int, MillingToolOffsetTable, CncBrand, IProgress<object>) +

    + GetCompensationRadius(BitArray, int, MillingToolOffsetTable, CncBrand, IProgress<IMessage>)

    @@ -216,7 +216,7 @@ Class NcFlagUtil
    -
    public static double GetCompensationRadius(this BitArray ncFlagBitArray, int D, MillingToolOffsetTable millingToolOffsetTable, CncBrand cncBrand, IProgress<object> messageHost)
    +
    public static double GetCompensationRadius(this BitArray ncFlagBitArray, int D, MillingToolOffsetTable millingToolOffsetTable, CncBrand cncBrand, IProgress<IMessage> mixedProgress)

    Parameters

    @@ -233,7 +233,7 @@ Class NcFlagUtil
    cncBrand CncBrand

    The CNC controller brand.

    -
    messageHost IProgress<object>
    +
    mixedProgress IProgress<IMessage>

    The message host for reporting warnings or errors.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.NcProc.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.NcProc.html index 14457bfc..241af331 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.NcProc.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.NcProc.html @@ -155,8 +155,8 @@ Class NcProc -

    - GetActs(HardNcEnv, SeqPair<HardNcLine>, IProgress<object>) +

    + GetActs(HardNcEnv, SeqPair<HardNcLine>, IProgress<IMessage>)

    @@ -165,7 +165,7 @@ Class NcProc
    -
    public static IEnumerable<IAct> GetActs(HardNcEnv ncEnv, SeqPair<HardNcLine> ncLineSeq, IProgress<object> messageHost)
    +
    public static IEnumerable<IAct> GetActs(HardNcEnv ncEnv, SeqPair<HardNcLine> ncLineSeq, IProgress<IMessage> mixedProgress)

    Parameters

    @@ -176,7 +176,7 @@ Class NcProc
    ncLineSeq SeqPair<HardNcLine>

    The sequence pair of NcLines

    -
    messageHost IProgress<object>
    +
    mixedProgress IProgress<IMessage>

    The message host for logging

    @@ -200,8 +200,8 @@ Class NcProc -

    - GetActs(HardNcEnv, HardNcLine, HardNcLine, IProgress<object>) +

    + GetActs(HardNcEnv, HardNcLine, HardNcLine, IProgress<IMessage>)

    @@ -210,7 +210,7 @@ Class NcProc
    -
    public static IEnumerable<IAct> GetActs(HardNcEnv ncEnv, HardNcLine preNcLine, HardNcLine curNcLine, IProgress<object> messageHost)
    +
    public static IEnumerable<IAct> GetActs(HardNcEnv ncEnv, HardNcLine preNcLine, HardNcLine curNcLine, IProgress<IMessage> mixedProgress)

    Parameters

    @@ -224,7 +224,7 @@ Class NcProc
    curNcLine HardNcLine

    The current NcLine

    -
    messageHost IProgress<object>
    +
    mixedProgress IProgress<IMessage>

    The message host for logging

    @@ -248,8 +248,8 @@ Class NcProc -

    - GetActs(HardNcEnv, LinkedListNode<HardNcLine>, IProgress<object>) +

    + GetActs(HardNcEnv, LinkedListNode<HardNcLine>, IProgress<IMessage>)

    @@ -258,7 +258,7 @@ Class NcProc
    -
    public static IEnumerable<IAct> GetActs(HardNcEnv ncEnv, LinkedListNode<HardNcLine> ncLineNode, IProgress<object> messageHost)
    +
    public static IEnumerable<IAct> GetActs(HardNcEnv ncEnv, LinkedListNode<HardNcLine> ncLineNode, IProgress<IMessage> mixedProgress)

    Parameters

    @@ -269,7 +269,7 @@ Class NcProc
    ncLineNode LinkedListNode<HardNcLine>

    The linked list node containing the NcLine

    -
    messageHost IProgress<object>
    +
    mixedProgress IProgress<IMessage>

    The message host for logging

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.RadiusCompensationBuf.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.RadiusCompensationBuf.html index 67bb7d8e..6ede7638 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.RadiusCompensationBuf.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.RadiusCompensationBuf.html @@ -327,7 +327,7 @@ Can be Cartesian XYZ or Polar Coordinate Interpolation Mode (G12.1) XCZ.

    Arc only. The point on this arc's offset curve where the arc motion begins, when the previous line's offset path intersects at a corner. Null when rays are parallel (no corner) or the previous line is not intersecting. -Set by the previous line's iteration in ResolveRadiusCompensation(LinkedListNode<HardNcLine>, HardNcEnv, NcNoteCache, IProgress<object>).

    +Set by the previous line's iteration in ResolveRadiusCompensation(LinkedListNode<HardNcLine>, HardNcEnv, NcNoteCache, IProgress<IMessage>).

    @@ -394,7 +394,7 @@ Set by the previous line's iteration in

    Arc only. The point on this arc's offset curve where the arc motion ends, when the next line's offset path intersects at a corner. Null when rays are parallel (no corner) or the next line is not intersecting. -Set by the current line's iteration in ResolveRadiusCompensation(LinkedListNode<HardNcLine>, HardNcEnv, NcNoteCache, IProgress<object>).

    +Set by the current line's iteration in ResolveRadiusCompensation(LinkedListNode<HardNcLine>, HardNcEnv, NcNoteCache, IProgress<IMessage>).

    @@ -425,8 +425,8 @@ Set by the current line's iteration in -

    - ResolveRadiusCompensation(LinkedListNode<HardNcLine>, HardNcEnv, NcNoteCache, IProgress<object>) +

    + ResolveRadiusCompensation(LinkedListNode<HardNcLine>, HardNcEnv, NcNoteCache, IProgress<IMessage>)

    @@ -435,7 +435,7 @@ Set by the current line's iteration in
    -
    public static bool ResolveRadiusCompensation(LinkedListNode<HardNcLine> srcNode, HardNcEnv ncEnv, NcNoteCache ncLineCache, IProgress<object> messageHost)
    +
    public static bool ResolveRadiusCompensation(LinkedListNode<HardNcLine> srcNode, HardNcEnv ncEnv, NcNoteCache ncLineCache, IProgress<IMessage> mixedProgress)

    Parameters

    @@ -449,7 +449,7 @@ Set by the current line's iteration in
    NcNoteCache

    The NC line cache for storing messages.

    -
    messageHost IProgress<object>
    +
    mixedProgress IProgress<IMessage>

    The message host for reporting issues.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.StepSelectionUtils.BoundSelector.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.StepSelectionUtils.BoundSelector.html index 7142ecfc..301c67f3 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.StepSelectionUtils.BoundSelector.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.StepSelectionUtils.BoundSelector.html @@ -230,8 +230,8 @@ Class BoundSelector -

    - BoundSelector(XElement, string, IProgress<object>) +

    + BoundSelector(XElement, string, IProgress<IMessage>)

    @@ -240,7 +240,7 @@ Class BoundSelector
    -
    public BoundSelector(XElement src, string baseDirectory, IProgress<object> progress)
    +
    public BoundSelector(XElement src, string baseDirectory, IProgress<IMessage> progress)

    Parameters

    @@ -251,7 +251,7 @@ Class BoundSelector
    baseDirectory string

    Base directory for resolving relative paths

    -
    progress IProgress<object>
    +
    progress IProgress<IMessage>

    Progress reporter for nested XML factory calls.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html index ecc85986..cb89bc96 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html @@ -213,8 +213,8 @@ Class BoundSelectorHost -

    - BoundSelectorHost(XElement, string, IProgress<object>) +

    + BoundSelectorHost(XElement, string, IProgress<IMessage>)

    @@ -223,7 +223,7 @@ Class BoundSelectorHost
    -
    public BoundSelectorHost(XElement src, string baseDirectory, IProgress<object> progress)
    +
    public BoundSelectorHost(XElement src, string baseDirectory, IProgress<IMessage> progress)

    Parameters

    @@ -234,7 +234,7 @@ Class BoundSelectorHost
    baseDirectory string

    Base directory for resolving relative paths

    -
    progress IProgress<object>
    +
    progress IProgress<IMessage>

    Progress reporter for nested bundle XML.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html index 2bead355..274a7c66 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.StepSelectionUtils.BoundSelectorPair.html @@ -222,8 +222,8 @@ Class BoundSelectorPair -

    - BoundSelectorPair(XElement, string, IProgress<object>) +

    + BoundSelectorPair(XElement, string, IProgress<IMessage>)

    @@ -232,7 +232,7 @@ Class BoundSelectorPair
    -
    public BoundSelectorPair(XElement src, string baseDirectory, IProgress<object> progress)
    +
    public BoundSelectorPair(XElement src, string baseDirectory, IProgress<IMessage> progress)

    Parameters

    @@ -243,7 +243,7 @@ Class BoundSelectorPair
    baseDirectory string

    Base directory for resolving relative paths

    -
    progress IProgress<object>
    +
    progress IProgress<IMessage>

    Progress reporter for nested selector XML.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html index 2b44a97d..fe0e38bd 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.StepSelectionUtils.BoundSelectorStepSectionBundle.html @@ -222,8 +222,8 @@ Class BoundSelectorStepSectionBundle -

    - BoundSelectorStepSectionBundle(XElement, string, IProgress<object>) +

    + BoundSelectorStepSectionBundle(XElement, string, IProgress<IMessage>)

    @@ -232,7 +232,7 @@ Class BoundSelectorStepSectionBundle
    -
    public BoundSelectorStepSectionBundle(XElement src, string baseDirectory, IProgress<object> progress)
    +
    public BoundSelectorStepSectionBundle(XElement src, string baseDirectory, IProgress<IMessage> progress)

    Parameters

    @@ -243,7 +243,7 @@ Class BoundSelectorStepSectionBundle
    baseDirectory string

    Base directory for resolving relative paths

    -
    progress IProgress<object>
    +
    progress IProgress<IMessage>

    Progress reporter for nested selector XML.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Xyzabc.CodeXyzabcChain.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Xyzabc.CodeXyzabcChain.html index b68b1279..65e47c73 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Xyzabc.CodeXyzabcChain.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Xyzabc.CodeXyzabcChain.html @@ -287,8 +287,8 @@ The chain code of a five axis machine tool can be defined by "[O][Z][C][w]; -

    - CodeXyzabcChain(XElement, string, string, IProgress<object>) +

    + CodeXyzabcChain(XElement, string, string, IProgress<IMessage>)

    @@ -297,7 +297,7 @@ The chain code of a five axis machine tool can be defined by "[O][Z][C][w];
    -
    public CodeXyzabcChain(XElement src, string baseDirectory, string relFile, IProgress<object> progress)
    +
    public CodeXyzabcChain(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress)

    Parameters

    @@ -311,7 +311,7 @@ The chain code of a five axis machine tool can be defined by "[O][Z][C][w];
    relFile string

    The relative file path.

    -
    progress IProgress<object>
    +
    progress IProgress<IMessage>

    The progress reporter.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Xyzabc.GeneralXyzabcChain.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Xyzabc.GeneralXyzabcChain.html index d8a12a33..0f2c9894 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Xyzabc.GeneralXyzabcChain.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Xyzabc.GeneralXyzabcChain.html @@ -273,8 +273,8 @@ Class GeneralXyzabcChain -

    - GeneralXyzabcChain(XElement, string, IProgress<object>) +

    + GeneralXyzabcChain(XElement, string, IProgress<IMessage>)

    @@ -283,7 +283,7 @@ Class GeneralXyzabcChain
    -
    public GeneralXyzabcChain(XElement src, string baseDirectory, IProgress<object> progress)
    +
    public GeneralXyzabcChain(XElement src, string baseDirectory, IProgress<IMessage> progress)

    Parameters

    @@ -294,7 +294,7 @@ Class GeneralXyzabcChain
    baseDirectory string

    The base directory for resolving relative paths.

    -
    progress IProgress<object>
    +
    progress IProgress<IMessage>

    Progress reporter for loading the nested mechanism.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Xyzabc.XyzabcSolver.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Xyzabc.XyzabcSolver.html index 9f9547f1..4667a522 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Xyzabc.XyzabcSolver.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Xyzabc.XyzabcSolver.html @@ -605,7 +605,10 @@ It should be called after the kinematic chain of Hi.Numerical -

    Cutter location to machine coordinate.

    +

    Cutter location to machine coordinate. +On failure nothing is written back and the solver state (the +implicit seed of the next solve) is restored to what it was on +entry; the out value still reports the failed solve's parameters.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.html b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.html index aaf94f93..6f483ddf 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.html @@ -117,16 +117,6 @@ Classes
    HardNcUtil

    Utility class for working with NC code.

    -
    -
    -
    -
    HeidenhainCoordinateEntryDisplayee
    -

    Displayee for Heidenhain coordinate entry visualization.

    -
    -
    -
    -
    IsoCoordinateEntryDisplayee
    -

    Displayee for ISO coordinate entry visualization.

    @@ -221,13 +211,6 @@ or when the adjacent line is not an arc.

    Interfaces

    -
    -
    IControlRunner
    -

    Control Runner. -The term control is machine control. -The Control Line is such like the NC (Numerical Control) line.

    -
    -
    IFlexDictionaryHost<T>

    Interface of FlexDictionary. @@ -242,6 +225,15 @@ Provider of additional quantity source.

    IGetSpindleSpeed

    Interface for retrieving spindle speed and direction information.

    +
    +
    +
    +
    INcRunner
    +

    NC runner — parses and executes NC program lines. Nc is the umbrella +term for any machine-readable control program (famous-brand controller +code, NX-CL, CSV): the same runner contract serves all of them, and +NcKind names the kinds where they must be +distinguished.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Physics.CoolantHeatCondition.html b/App/wwwroot/HiAPI-docsite/api/Hi.Physics.CoolantHeatCondition.html index e79e2888..46b911a6 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Physics.CoolantHeatCondition.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Physics.CoolantHeatCondition.html @@ -6,7 +6,7 @@ - + @@ -102,12 +102,17 @@ Provides effective convection-coefficient lookups keyed by CoolantMode — Flood uses the configured baseline CoolantConvectionCoefficient_Wdm2K; Mist scales it by MistFloodConvectionRatio; Off falls back to -OffConvectionCoefficient_Wdm2K (natural/forced air).

    +OffConvectionCoefficient_Wdm2K (natural/forced air). +Named standard presets (StandardForcedAir, +StandardWaterSolubleCoolant, StandardOilBasedCoolant) +bundle all coefficients so end users can pick a cooling type by name instead +of entering convection coefficients; MatchStandardPreset() maps a +configured instance back to the preset it equals.

    -
    public class CoolantHeatCondition : IMakeXmlSource
    +
    public class CoolantHeatCondition : IMakeXmlSource, INameNote, IPreferredFileName
    @@ -125,6 +130,8 @@ Provides effective convection-coefficient lookups keyed by
    Implements
    + +
    @@ -249,6 +256,42 @@ Provides effective convection-coefficient lookups keyed by +

    Fields +

    + + + +

    + CustomName + +

    + +

    Reserved Name marking an explicitly customized condition; +see MatchStandardPreset().

    +
    +
    + +
    +
    public const string CustomName = "Custom"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + +

    Properties

    @@ -421,20 +464,85 @@ coolant. Applied multiplicatively to

    Remarks

    -

    Default 0.5. Industry handbooks place MQL at roughly half the -heat removal of flood coolant — UNIST MQL Handbook: “actual heat -removal is generally about half of that removed by a flood coolant”. -Empirical milling / turning measurements on AISI 1045 steel give -ΔT_flood ≈ 230 °C vs ΔT_mist ≈ 170 °C relative to dry (Mist ≈ 0.74 -of flood), while tool-life / surface-finish studies on aluminium and -titanium range 0.4–0.8. The single-number 0.5 default is the -conservative midpoint; projects that characterise their own MQL -system should override via XML.

    +

    Default 0.5. Mist (MQL) systems typically remove noticeably +less heat than flood coolant, and the effective ratio varies with the +process, fluid and delivery system (commonly reported in the +0.4–0.8 range). Projects that characterise their own MQL system +should override this value via XML.

    + + +

    + Name + +

    + +

    Gets or sets the name of the coolant condition. Standard presets carry +their preset name (e.g. “StandardWaterSolubleCoolant”); set to +CustomName to mark the condition as explicitly customized +(which makes MatchStandardPreset() return null even +when the coefficients happen to equal a preset). null/empty on +legacy projects that predate naming.

    +
    +
    + +
    +
    public string Name { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + Note + +

    + +

    Gets or sets additional notes about the coolant condition.

    +
    +
    + +
    +
    public string Note { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    string
    +
    +
    + + + + + + + +

    @@ -474,6 +582,189 @@ typical of a running machine enclosure.

    + + +

    + PreferredFileName + +

    + +

    Gets or sets the preferred file name for this object when generating or saving files.

    +
    +
    + +
    +
    public string PreferredFileName { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + StandardForcedAir + +

    + +

    Forced-air / dry cutting: air blast only, no liquid coolant. Even when +the NC program turns coolant on (M07/M08), the machine only blows air, +so the flood baseline is an air-blast coefficient.

    +
    +
    + +
    +
    public static CoolantHeatCondition StandardForcedAir { get; }
    +
    + + + + + +

    Property Value

    +
    +
    CoolantHeatCondition
    +
    +
    + + + + +

    Remarks

    +

    Coefficients are engineering estimates from the ranges documented on +CoolantConvectionCoefficient_Wdm2K and +OffConvectionCoefficient_Wdm2K (forced air 10–500 +W/(m²·K)); override via XML when characterised data is available.

    +
    + + + + + + +

    + StandardOilBasedCoolant + +

    + +

    Oil-based (neat oil) cutting fluid: better lubrication, noticeably +lower heat removal than water-based emulsion.

    +
    +
    + +
    +
    public static CoolantHeatCondition StandardOilBasedCoolant { get; }
    +
    + + + + + +

    Property Value

    +
    +
    CoolantHeatCondition
    +
    +
    + + + + +

    Remarks

    +

    Flood baseline 300 W/(m²·K) sits in the documented straight-oil range +(roughly 100–500 W/(m²·K)); override via XML when characterised data is +available.

    +
    + + + + + + +

    + StandardPresets + +

    + +

    The named standard presets, in menu order. Each access returns fresh +instances (same as Al6061T6), so callers +may mutate the result freely.

    +
    +
    + +
    +
    public static IReadOnlyList<CoolantHeatCondition> StandardPresets { get; }
    +
    + + + + + +

    Property Value

    +
    +
    IReadOnlyList<CoolantHeatCondition>
    +
    +
    + + + + + + + + + + +

    + StandardWaterSolubleCoolant + +

    + +

    Water-soluble (water-based emulsion) cutting fluid — the common flood +coolant. Matches this class's field defaults, so an unconfigured +condition reads as this preset.

    +
    +
    + +
    +
    public static CoolantHeatCondition StandardWaterSolubleCoolant { get; }
    +
    + + + + + +

    Property Value

    +
    +
    CoolantHeatCondition
    +
    +
    + + + + +

    Remarks

    +

    Flood baseline 1000 W/(m²·K) is the literature-backed default (see +CoolantConvectionCoefficient_Wdm2K; water-based emulsion +spans roughly 1000–3000).

    +
    + + + +

    @@ -510,6 +801,81 @@ typical of a running machine enclosure.

    + + +

    + ApplyPreset(CoolantHeatCondition) + +

    + +

    Copies all values (name, note, temperature and the three convection +values) from preset into this instance, in place — +existing references (e.g. a live +MachiningEquipment.CoolantHeatCondition) keep observing the +updated condition.

    +
    +
    + +
    +
    public void ApplyPreset(CoolantHeatCondition preset)
    +
    + +

    Parameters

    +
    +
    preset CoolantHeatCondition
    +
    +
    + + + + + + + + + + + + + + +

    + FindStandardPreset(string) + +

    + +

    Finds the standard preset with the given Name, or +null when the name is not a standard preset name (including +CustomName and null).

    +
    +
    + +
    +
    public static CoolantHeatCondition FindStandardPreset(string name)
    +
    + +

    Parameters

    +
    +
    name string
    +
    +
    + +

    Returns

    +
    +
    CoolantHeatCondition
    +
    +
    + + + + + + + + + + +

    @@ -639,6 +1005,45 @@ Since the folder can be moving with the configuration file.

    + + +

    + MatchStandardPreset() + +

    + +

    Returns the standard preset whose three convection values +(CoolantConvectionCoefficient_Wdm2K, +MistFloodConvectionRatio, +OffConvectionCoefficient_Wdm2K) exactly equal this +instance's, or null when none matches or Name is +CustomName. CoolantTemperature_C is +intentionally excluded — temperature is an independent setting that a +user may tune without leaving the preset.

    +
    +
    + +
    +
    public CoolantHeatCondition MatchStandardPreset()
    +
    + + +

    Returns

    +
    +
    CoolantHeatCondition
    +
    +
    + + + + + + + + + + +

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Physics.ITimeGetter.html b/App/wwwroot/HiAPI-docsite/api/Hi.Physics.ITimecoded.html similarity index 91% rename from App/wwwroot/HiAPI-docsite/api/Hi.Physics.ITimeGetter.html rename to App/wwwroot/HiAPI-docsite/api/Hi.Physics.ITimecoded.html index f35944b7..b3811f81 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Physics.ITimeGetter.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Physics.ITimecoded.html @@ -2,9 +2,9 @@ - Interface ITimeGetter | HiAPI-C# 2025 + Interface ITimecoded | HiAPI-C# 2025 - + @@ -84,12 +84,12 @@

    -
    +
    -

    -Interface ITimeGetter +

    +Interface ITimecoded

    @@ -102,7 +102,7 @@ Interface ITimeGetter
    -
    public interface ITimeGetter
    +
    public interface ITimecoded
    @@ -146,10 +146,10 @@ Interface ITimeGetter - + -

    - Time +

    + Timecode

    @@ -158,7 +158,7 @@ Interface ITimeGetter
    -
    TimeSpan Time { get; set; }
    +
    TimeSpan Timecode { get; set; }
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Physics.SeqPhysicsBrief.html b/App/wwwroot/HiAPI-docsite/api/Hi.Physics.SeqPhysicsBrief.html index 87f135d0..7e9a5453 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Physics.SeqPhysicsBrief.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Physics.SeqPhysicsBrief.html @@ -1040,8 +1040,8 @@ public double WorkpieceSurfaceTemperature_C { get; set; } -

    - BuildCuttingTemperatureAndWear(SeqPhysicsBrief, MachineMotionStep, MachineMotionStep, double, SpindleCapability, IMachiningTool, Workpiece, int, Substraction, LayerMillingEngagement, MillingPhysicsBrief, CoolantHeatCondition, CoolantMode, bool) +

    + BuildCuttingTemperatureAndWear(SeqPhysicsBrief, MachineMotionStep, MachineMotionStep, double, SpindleCapability, IMachiningTool, Workpiece, int, Substraction, LayerMillingEngagement, MillingPhysicsBrief, CoolantHeatCondition, CoolantMode, bool, MillingToolPhysicsPack, Action<string>)

    @@ -1050,7 +1050,7 @@ public double WorkpieceSurfaceTemperature_C { get; set; }
    -
    public void BuildCuttingTemperatureAndWear(SeqPhysicsBrief preSeqPhysicsBrief, MachineMotionStep preMachineMotionStep, MachineMotionStep curMachineMotionStep, double backgroundTemperature_K, SpindleCapability spindleCapability, IMachiningTool machiningTool, Workpiece workpiece, int stepIndex, Substraction substraction, LayerMillingEngagement layerMillingEngagement, MillingPhysicsBrief millingPhysicsBrief, CoolantHeatCondition coolantHeatCondition, CoolantMode coolantMode, bool enableWearEffect)
    +
    public void BuildCuttingTemperatureAndWear(SeqPhysicsBrief preSeqPhysicsBrief, MachineMotionStep preMachineMotionStep, MachineMotionStep curMachineMotionStep, double backgroundTemperature_K, SpindleCapability spindleCapability, IMachiningTool machiningTool, Workpiece workpiece, int stepIndex, Substraction substraction, LayerMillingEngagement layerMillingEngagement, MillingPhysicsBrief millingPhysicsBrief, CoolantHeatCondition coolantHeatCondition, CoolantMode coolantMode, bool enableWearEffect, MillingToolPhysicsPack physicsPack = null, Action<string> onWarning = null)

    Parameters

    @@ -1101,6 +1101,14 @@ FEM sees the real runtime state rather than a silent default.

    enableWearEffect bool

    Whether to enable wear effect calculations.

    +
    +
    physicsPack MillingToolPhysicsPack
    +

    The frozen per-session physics pack of +machiningTool; null computes the tool's scalar +derivations on use.

    +
    +
    onWarning Action<string>
    +

    Optional callback invoked with a warning message when the computation cannot complete.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Physics.ThermalLayer1D.html b/App/wwwroot/HiAPI-docsite/api/Hi.Physics.ThermalLayer1D.html index acce2c90..3a874821 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Physics.ThermalLayer1D.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Physics.ThermalLayer1D.html @@ -282,8 +282,8 @@ Class ThermalLayer1D -

    - ThermalLayer1D(XElement, string, string, IProgress<object>) +

    + ThermalLayer1D(XElement, string, string, IProgress<IMessage>)

    @@ -292,7 +292,7 @@ Class ThermalLayer1D
    -
    public ThermalLayer1D(XElement src, string baseDirectory, string relFile, IProgress<object> progress)
    +
    public ThermalLayer1D(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress)

    Parameters

    @@ -306,7 +306,7 @@ Class ThermalLayer1D
    relFile string

    The relative file path.

    -
    progress IProgress<object>
    +
    progress IProgress<IMessage>

    Progress reporter for nested material XML loading.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Physics.TimeSeriesUtil.html b/App/wwwroot/HiAPI-docsite/api/Hi.Physics.TimeSeriesUtil.html index 44fc8d78..ac0f948c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Physics.TimeSeriesUtil.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Physics.TimeSeriesUtil.html @@ -215,7 +215,7 @@ Set 1 for not creating additional thread during the function.

    -
    public static List<AmpPhase[]> FourierTransformApSeries<TimeItem>(this List<TimeItem> timeValueList, TimeSpan basePeriod, TimeSpan resolutionPeriod, Func<TimeItem, double>[] getValueFuncs, int threadNum = 1) where TimeItem : ITimeGetter
    +
    public static List<AmpPhase[]> FourierTransformApSeries<TimeItem>(this List<TimeItem> timeValueList, TimeSpan basePeriod, TimeSpan resolutionPeriod, Func<TimeItem, double>[] getValueFuncs, int threadNum = 1) where TimeItem : ITimecoded

    Parameters

    @@ -249,7 +249,7 @@ Set 1 for not creating additional thread during the function.

    Type Parameters

    TimeItem
    -

    The type of items that implement ITimeGetter

    +

    The type of items that implement ITimecoded

    @@ -324,7 +324,7 @@ Set 1 for not creating additional thread during the function.

    -
    public static List<Vec2d[]> FourierTransformSeries<TimeItem>(this List<TimeItem> fittedTimeValueList, TimeSpan basePeriod, TimeSpan resolutionPeriod, Func<TimeItem, double>[] getValueFuncs, int threadNum = 1) where TimeItem : ITimeGetter
    +
    public static List<Vec2d[]> FourierTransformSeries<TimeItem>(this List<TimeItem> fittedTimeValueList, TimeSpan basePeriod, TimeSpan resolutionPeriod, Func<TimeItem, double>[] getValueFuncs, int threadNum = 1) where TimeItem : ITimecoded

    Parameters

    @@ -360,7 +360,7 @@ Set 1 for not creating additional thread during the function.

    Type Parameters

    TimeItem
    -

    The type of items that implement ITimeGetter

    +

    The type of items that implement ITimecoded

    @@ -473,7 +473,7 @@ The offset part cause bias.

    -
    public static Vec2d[] FourierTransformSingleton<TimeItem>(this List<TimeItem> fittedTimeValueList, double kw, Func<TimeItem, double>[] getValueFuncs) where TimeItem : ITimeGetter
    +
    public static Vec2d[] FourierTransformSingleton<TimeItem>(this List<TimeItem> fittedTimeValueList, double kw, Func<TimeItem, double>[] getValueFuncs) where TimeItem : ITimecoded

    Parameters

    @@ -499,7 +499,7 @@ The offset part cause bias.

    Type Parameters

    TimeItem
    -

    The type of items that implement ITimeGetter

    +

    The type of items that implement ITimecoded

    @@ -524,7 +524,7 @@ The offset part cause bias.

    -
    public static Vec2d[] FourierTransformSingleton<TimeItem>(this List<TimeItem> fittedTimeValueList, double kw, TimeSpan fullPeriod, Func<TimeItem, double>[] getValueFuncs) where TimeItem : ITimeGetter
    +
    public static Vec2d[] FourierTransformSingleton<TimeItem>(this List<TimeItem> fittedTimeValueList, double kw, TimeSpan fullPeriod, Func<TimeItem, double>[] getValueFuncs) where TimeItem : ITimecoded

    Parameters

    @@ -617,7 +617,7 @@ The offset part cause bias.

    -
    public static TimeSpan GetFullPeriod<TimeItem>(this IList<TimeItem> src) where TimeItem : ITimeGetter
    +
    public static TimeSpan GetFullPeriod<TimeItem>(this IList<TimeItem> src) where TimeItem : ITimecoded

    Parameters

    @@ -637,7 +637,7 @@ The offset part cause bias.

    Type Parameters

    TimeItem
    -

    The type of items that implement ITimeGetter

    +

    The type of items that implement ITimecoded

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Physics.TimeValue.html b/App/wwwroot/HiAPI-docsite/api/Hi.Physics.TimeValue.html index 91008b4e..48eee549 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Physics.TimeValue.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Physics.TimeValue.html @@ -102,7 +102,7 @@ Class TimeValue
    -
    public class TimeValue : ITimeGetter
    +
    public class TimeValue : ITimecoded
    @@ -119,7 +119,7 @@ Class TimeValue
    Implements
    - +
    @@ -256,10 +256,10 @@ Class TimeValue - + -

    - Time +

    + Timecode

    @@ -268,7 +268,7 @@ Class TimeValue
    -
    public TimeSpan Time { get; set; }
    +
    public TimeSpan Timecode { get; set; }
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Physics.html b/App/wwwroot/HiAPI-docsite/api/Hi.Physics.html index 014a23e9..5221078a 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Physics.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Physics.html @@ -111,7 +111,12 @@ Provides effective convection-coefficient lookups keyed by CoolantMode — Flood uses the configured baseline CoolantConvectionCoefficient_Wdm2K; Mist scales it by MistFloodConvectionRatio; Off falls back to -OffConvectionCoefficient_Wdm2K (natural/forced air).

    +OffConvectionCoefficient_Wdm2K (natural/forced air). +Named standard presets (StandardForcedAir, +StandardWaterSolubleCoolant, StandardOilBasedCoolant) +bundle all coefficients so end users can pick a cooling type by name instead +of entering convection coefficients; MatchStandardPreset() maps a +configured instance back to the preset it equals.

    @@ -188,7 +193,7 @@ Interfaces
    -
    ITimeGetter
    +
    ITimecoded

    Interface for objects that provide time information.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.CollisionDetectionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.CollisionDetectionCommand.html new file mode 100644 index 00000000..aaf0dad1 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.CollisionDetectionCommand.html @@ -0,0 +1,529 @@ + + + + + Class CollisionDetectionCommand | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class CollisionDetectionCommand +

    + +
    +
    Namespace
    Hi.SessionCommands
    +
    Assembly
    HiNc.dll
    +
    + +

    Command that turns collision detection on or off for the session. One of +the single-setting successors of the legacy PreSettingCommand +bundle.

    +
    +
    + +
    +
    [CultureText("zh-Hant", "碰撞偵測")]
    +[CultureText("zh-Hans", "碰撞检测")]
    +[CommandCatalog(CommandCategory.Setup, Order = 2)]
    +public class CollisionDetectionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    CollisionDetectionCommand
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + + + + +

    Constructors +

    + + + + +

    + CollisionDetectionCommand() + +

    + +

    Ctor.

    +
    +
    + +
    +
    public CollisionDetectionCommand()
    +
    + + + + + + + + + + + + + + + +

    + CollisionDetectionCommand(XElement, string) + +

    + +

    Ctor.

    +
    +
    + +
    +
    public CollisionDetectionCommand(XElement src, string baseDirectory)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    XML

    +
    +
    baseDirectory string
    +

    Base directory for resolving relative paths

    +
    +
    + + + + + + + + + + + + +

    Properties +

    + + + + +

    + Enable + +

    + +

    Whether collision detection is enabled from this command on.

    +
    +
    + +
    +
    [CultureText("zh-Hant", "啟用碰撞偵測", Key = "Enable Collision Detection")]
    +[CultureText("zh-Hans", "启用碰撞检测", Key = "Enable Collision Detection")]
    +public bool Enable { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    bool
    +
    +
    + + + + + + + + + + +

    + XName + +

    + +

    Name for XML IO.

    +
    +
    + +
    +
    public static string XName { get; }
    +
    + + + + + +

    Property Value

    +
    +
    string
    +
    +
    + + + + + + + + +

    Methods +

    + + + + +

    + GetCommandTitle(ICommandTextSource) + +

    + +

    Gets the title of the command — one row in a command list or a +mission tree — composed from the caller's vocabulary: the command owns +the composition and degradation rules, the caller owns the language.

    +

    +The shape is Name, or Name [detail] once there is a +detail worth showing. The NAME always leads and is never dropped: +a row must say WHAT it is even when the detail is a title the user +wrote, otherwise a newcomer cannot tell a command list from a +script. The detail trails because these rows truncate from the +right. An empty detail takes the bare-name form rather than +rendering dangling brackets. +

    +
    +
    + +
    +
    public string GetCommandTitle(ICommandTextSource text)
    +
    + +

    Parameters

    +
    +
    text ICommandTextSource
    +

    Culture-bearing vocabulary the static words are taken from.

    +
    +
    + +

    Returns

    +
    +
    string
    +

    The command title.

    +
    +
    + + + + + + + + + + + + + +

    + 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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + + +

    + Run(SessionShell) + +

    + +

    Runs the command, delegating execution to the provided session shell.

    +
    +
    + +
    +
    public IEnumerable<Action> Run(SessionShell sessionShell)
    +
    + +

    Parameters

    +
    +
    sessionShell SessionShell
    +

    Session shell that exposes the machining facade to commands.

    +
    +
    + +

    Returns

    +
    +
    IEnumerable<Action>
    +

    Sequence of actions to be executed.

    +
    +
    + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.CommandCatalogAttribute.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.CommandCatalogAttribute.html new file mode 100644 index 00000000..81188bd1 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.CommandCatalogAttribute.html @@ -0,0 +1,533 @@ + + + + + Class CommandCatalogAttribute | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class CommandCatalogAttribute +

    + +
    +
    Namespace
    Hi.SessionCommands
    +
    Assembly
    HiNc.dll
    +
    + +

    Marks an ISessionCommand as user-addable: GUIs build their +“Add Command” catalog from the commands carrying this attribute, grouped +by Category. A command WITHOUT this attribute stays loadable +from project files (its Reg registration is unaffected) but is not +offered for creation.

    +
    +
    + +
    +
    [AttributeUsage(AttributeTargets.Class, Inherited = false)]
    +public sealed class CommandCatalogAttribute : Attribute
    +
    + + + + +
    +
    Inheritance
    +
    + + +
    CommandCatalogAttribute
    +
    +
    + + + +
    +
    Inherited Members
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + + + + +

    Constructors +

    + + + + +

    + CommandCatalogAttribute(CommandCategory) + +

    + +

    Places the command under category in the catalog.

    +
    +
    + +
    +
    public CommandCatalogAttribute(CommandCategory category)
    +
    + +

    Parameters

    +
    +
    category CommandCategory
    +

    Catalog category the command is listed under.

    +
    +
    + + + + + + + + + + + + +

    Properties +

    + + + + +

    + Aliases + +

    + +

    Extra search keywords for catalog search boxes. Each entry is a +vocabulary key (an English default word, localized through +CultureTextAttribute declarations the way title words +are). Declare the terms users search by that appear in neither the +display name nor the kind key — e.g. RecordMeshedGeomCommand +aliases Read / Write, its action modes. Null when the +command needs none.

    +
    +
    + +
    +
    public string[] Aliases { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    string[]
    +
    +
    + + + + + + + + + + +

    + Category + +

    + +

    Catalog category the command is listed under.

    +
    +
    + +
    +
    public CommandCategory Category { get; }
    +
    + + + + + +

    Property Value

    +
    +
    CommandCategory
    +
    +
    + + + + + + + + + + +

    + Kind + +

    + +

    Wire kind key web APIs use for the command type. Default (null): the +class name without the Command suffix, lower-cased (e.g. +NcFileCommandncfile). Set explicitly only to keep a +historical key alive.

    +
    +
    + +
    +
    public string Kind { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + Order + +

    + +

    Sort key within the category (ascending; ties sort by display name).

    +
    +
    + +
    +
    public int Order { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    int
    +
    +
    + + + + + + + + +

    Methods +

    + + + + +

    + GetKind(Type) + +

    + +

    The effective wire kind key of commandType: the +attribute's explicit Kind when set, otherwise the default +derivation described on Kind. Works for un-attributed +types too (derivation only).

    +
    +
    + +
    +
    public static string GetKind(Type commandType)
    +
    + +

    Parameters

    +
    +
    commandType Type
    +

    The session command type.

    +
    +
    + +

    Returns

    +
    +
    string
    +

    The wire kind key.

    +
    +
    + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.CommandCategory.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.CommandCategory.html new file mode 100644 index 00000000..b2db899d --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.CommandCategory.html @@ -0,0 +1,207 @@ + + + + + Enum CommandCategory | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + + +

    +Enum CommandCategory +

    + +
    +
    Namespace
    Hi.SessionCommands
    +
    Assembly
    HiNc.dll
    +
    + +

    Category of a session command in user-facing command catalogs (the GUI +“Add Command” listings). Declaration order is the display order.

    +
    +
    + +
    +
    public enum CommandCategory
    +
    + + + + + + + + +
    +
    Extension Methods
    +
    + + + + + + + + +
    + +

    Fields +

    +
    +
    [CultureText("zh-Hant", "流程")] +[CultureText("zh-Hans", "流程")] +Flow = 4
    + +

    Structural commands that organize other commands.

    +
    +
    [CultureText("zh-Hant", "優化")] +[CultureText("zh-Hans", "优化")] +Optimization = 2
    + +

    Optimization configuration.

    +
    +
    [CultureText("zh-Hant", "輸出")] +[CultureText("zh-Hans", "输出")] +Output = 3
    + +

    File and geometry outputs.

    +
    +
    [CultureText("zh-Hant", "程式")] +[CultureText("zh-Hans", "程序")] +Program = 1
    + +

    Executable program content (program files, inline NC code, scripts).

    +
    +
    [CultureText("zh-Hant", "設定")] +[CultureText("zh-Hans", "设置")] +Setup = 0
    + +

    Session-state settings applied when the command runs (resolutions, +detection switches, physics).

    +
    +
    + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.CommandFieldAttribute.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.CommandFieldAttribute.html new file mode 100644 index 00000000..6af24448 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.CommandFieldAttribute.html @@ -0,0 +1,457 @@ + + + + + Class CommandFieldAttribute | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class CommandFieldAttribute +

    + +
    +
    Namespace
    Hi.SessionCommands
    +
    Assembly
    HiNc.dll
    +
    + +

    Marks a session-command property as a directly editable scalar field, so +generic editors (e.g. the web UI's fallback command panel) can render and +update it without a hand-written per-command editor. Supported property +types: bool, int, double and +string.

    +
    +
    + +
    +
    [AttributeUsage(AttributeTargets.Property, Inherited = false)]
    +public sealed class CommandFieldAttribute : Attribute
    +
    + + + + +
    +
    Inheritance
    +
    + + +
    CommandFieldAttribute
    +
    +
    + + + +
    +
    Inherited Members
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + + + + +

    Properties +

    + + + + +

    + Label + +

    + +

    Display-label localization key (its English text). Default (null): the +property name with PascalCase words spaced and any _unit suffix +removed (e.g. MachiningResolution_mm → “Machining Resolution”).

    +
    +
    + +
    +
    public string Label { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + PhysicsLicenseGated + +

    + +

    The field configures physics simulation; GUIs disable it when the +physics license is absent.

    +
    +
    + +
    +
    public bool PhysicsLicenseGated { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    bool
    +
    +
    + + + + + + + + + + +

    + Unit + +

    + +

    Measurement unit shown after the input (e.g. mm), if any.

    +
    +
    + +
    +
    public string Unit { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    string
    +
    +
    + + + + + + + + +

    Methods +

    + + + + +

    + GetLabel(PropertyInfo) + +

    + +

    The effective display-label key of property: the +attribute's explicit Label when set, otherwise the +default derivation described on Label.

    +
    +
    + +
    +
    public static string GetLabel(PropertyInfo property)
    +
    + +

    Parameters

    +
    +
    property PropertyInfo
    +

    The command property carrying this attribute.

    +
    +
    + +

    Returns

    +
    +
    string
    +

    The label localization key.

    +
    +
    + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html index 8aafdeb7..a3f83842 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.EnablingWrapper.html @@ -247,8 +247,8 @@ Class EnablingWrapper -

    - EnablingWrapper(XElement, string, string, IProgress<object>, object[]) +

    + EnablingWrapper(XElement, string, string, IProgress<IMessage>, object[])

    @@ -257,7 +257,7 @@ Class EnablingWrapper
    -
    public EnablingWrapper(XElement src, string baseDirectory, string relFile, IProgress<object> progress, object[] res)
    +
    public EnablingWrapper(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress, object[] res)

    Parameters

    @@ -271,7 +271,7 @@ Class EnablingWrapper
    relFile string

    Relative file path

    -
    progress IProgress<object>
    +
    progress IProgress<IMessage>

    Progress reporter for nested command XML.

    res object[]
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.WriteRuntimeGeomToStlCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ExportMeshedGeomToStlCommand.html similarity index 72% rename from App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.WriteRuntimeGeomToStlCommand.html rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ExportMeshedGeomToStlCommand.html index 0259df7f..235e4c19 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.WriteRuntimeGeomToStlCommand.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ExportMeshedGeomToStlCommand.html @@ -2,9 +2,9 @@ - Class WriteRuntimeGeomToStlCommand | HiAPI-C# 2025 + Class ExportMeshedGeomToStlCommand | HiAPI-C# 2025 - + @@ -84,12 +84,12 @@
    -
    +
    -

    -Class WriteRuntimeGeomToStlCommand +

    +Class ExportMeshedGeomToStlCommand

    @@ -97,12 +97,15 @@ Class WriteRuntimeGeomToStlCommand
    Assembly
    HiNc.dll
    -

    Command to call Hi.MillingProcs.MachiningProjectCsScriptApi.WriteRuntimeGeomToStl.

    +
    -
    public class WriteRuntimeGeomToStlCommand : ISessionCommand, IMakeXmlSource
    +
    [CultureText("zh-Hant", "匯出網格幾何 STL")]
    +[CultureText("zh-Hans", "导出网格几何 STL")]
    +[CommandCatalog(CommandCategory.Output, Order = 2, Kind = "exportmeshedgeom")]
    +public class ExportMeshedGeomToStlCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    @@ -112,13 +115,14 @@ Class WriteRuntimeGeomToStlCommand
    Inheritance
    -
    WriteRuntimeGeomToStlCommand
    +
    ExportMeshedGeomToStlCommand
    Implements
    +
    @@ -185,10 +189,10 @@ Class WriteRuntimeGeomToStlCommand - + -

    - WriteRuntimeGeomToStlCommand() +

    + ExportMeshedGeomToStlCommand()

    @@ -197,7 +201,7 @@ Class WriteRuntimeGeomToStlCommand
    -
    public WriteRuntimeGeomToStlCommand()
    +
    public ExportMeshedGeomToStlCommand()
    @@ -212,10 +216,10 @@ Class WriteRuntimeGeomToStlCommand - + -

    - WriteRuntimeGeomToStlCommand(XElement, string) +

    + ExportMeshedGeomToStlCommand(XElement, string)

    @@ -224,7 +228,7 @@ Class WriteRuntimeGeomToStlCommand
    -
    public WriteRuntimeGeomToStlCommand(XElement src, string baseDirectory)
    +
    public ExportMeshedGeomToStlCommand(XElement src, string baseDirectory)

    Parameters

    @@ -252,9 +256,9 @@ Class WriteRuntimeGeomToStlCommand - + -

    +

    RelFile

    @@ -284,9 +288,9 @@ Class WriteRuntimeGeomToStlCommand - + -

    +

    Resolution_mm

    @@ -316,9 +320,9 @@ Class WriteRuntimeGeomToStlCommand - + -

    +

    XName

    @@ -352,9 +356,59 @@ Class WriteRuntimeGeomToStlCommand - + -

    +

    + GetCommandTitle(ICommandTextSource) + +

    + +

    Gets the title of the command — one row in a command list or a +mission tree — composed from the caller's vocabulary: the command owns +the composition and degradation rules, the caller owns the language.

    +

    +The shape is Name, or Name [detail] once there is a +detail worth showing. The NAME always leads and is never dropped: +a row must say WHAT it is even when the detail is a title the user +wrote, otherwise a newcomer cannot tell a command list from a +script. The detail trails because these rows truncate from the +right. An empty detail takes the bare-name form rather than +rendering dangling brackets. +

    +
    +
    + +
    +
    public string GetCommandTitle(ICommandTextSource text)
    +
    + +

    Parameters

    +
    +
    text ICommandTextSource
    +

    Culture-bearing vocabulary the static words are taken from.

    +
    +
    + +

    Returns

    +
    +
    string
    +

    The command title.

    +
    +
    + + + + + + + + + + + + + +

    MakeXmlSource(string, string, bool)

    @@ -394,7 +448,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.

    @@ -403,9 +457,9 @@ Since the folder can be moving with the configuration file.

    - + -

    +

    Reg(XFactory)

    @@ -437,9 +491,9 @@ Since the folder can be moving with the configuration file.

    - + -

    +

    Run(SessionShell)

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html index 083e8785..9487da68 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.GeomDiffCommand.html @@ -102,7 +102,9 @@ Class GeomDiffCommand
    -
    public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
    +
    [CultureText("zh-Hant", "幾何差異")]
    +[CultureText("zh-Hans", "几何差异")]
    +public class GeomDiffCommand : ISessionCommand, IMakeXmlSource
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html index d03c2c32..af664dcf 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ITitleCommand.html @@ -102,7 +102,11 @@ Interface ITitleCommand
    -
    public interface ITitleCommand : ISessionCommand, IMakeXmlSource
    +
    [CultureText("zh-Hant", "開", Key = "On")]
    +[CultureText("zh-Hans", "开", Key = "On")]
    +[CultureText("zh-Hant", "關", Key = "Off")]
    +[CultureText("zh-Hans", "关", Key = "Off")]
    +public interface ITitleCommand : ISessionCommand, IMakeXmlSource
    @@ -158,19 +162,36 @@ Interface ITitleCommand -

    - GetCommandTitle() +

    + GetCommandTitle(ICommandTextSource)

    -

    Gets the title of the command.

    +

    Gets the title of the command — one row in a command list or a +mission tree — composed from the caller's vocabulary: the command owns +the composition and degradation rules, the caller owns the language.

    +

    +The shape is Name, or Name [detail] once there is a +detail worth showing. The NAME always leads and is never dropped: +a row must say WHAT it is even when the detail is a title the user +wrote, otherwise a newcomer cannot tell a command list from a +script. The detail trails because these rows truncate from the +right. An empty detail takes the bare-name form rather than +rendering dangling brackets. +

    -
    string GetCommandTitle()
    +
    string GetCommandTitle(ICommandTextSource text)
    +

    Parameters

    +
    +
    text ICommandTextSource
    +

    Culture-bearing vocabulary the static words are taken from.

    +
    +

    Returns

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html index 79032c1b..f3f051d7 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ListCommand.html @@ -102,7 +102,10 @@ Class ListCommand
    -
    public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    +
    [CultureText("zh-Hant", "清單")]
    +[CultureText("zh-Hans", "列表")]
    +[CommandCatalog(CommandCategory.Flow, Order = 0)]
    +public class ListCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    @@ -215,8 +218,8 @@ Class ListCommand -

    - ListCommand(XElement, string, string, IProgress<object>, object[]) +

    + ListCommand(XElement, string, string, IProgress<IMessage>, object[])

    @@ -225,7 +228,7 @@ Class ListCommand
    -
    public ListCommand(XElement src, string baseDirectory, string relFile, IProgress<object> progress, object[] res)
    +
    public ListCommand(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress, object[] res)

    Parameters

    @@ -239,7 +242,7 @@ Class ListCommand
    relFile string

    Relative file path.

    -
    progress IProgress<object>
    +
    progress IProgress<IMessage>

    Progress reporter for nested command XML.

    res object[]
    @@ -258,6 +261,45 @@ Class ListCommand +

    Fields +

    + + + +

    + ConstDisplayName + +

    + +

    The command's own name — the DisplayNameAttribute value AND +the localization key (Blazor reads it through +GetSelectionName(), the web catalog through the same attribute). +Not “Command List”: every row that can hold one of these is already a +command, so the word carries nothing and costs tree width.

    +
    +
    + +
    +
    public const string ConstDisplayName = "List"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + +

    Properties

    @@ -295,6 +337,40 @@ The item in list is null capable.

    + + +

    + Title + +

    + +

    Optional display title. GUI lists show it as the DETAIL after the +localized type name when non-empty (see GetCommandTitle(ICommandTextSource)) — +a titled list must still read as a list.

    +
    +
    + +
    +
    public string Title { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    string
    +
    +
    + + + + + + + +

    @@ -333,19 +409,36 @@ The item in list is null capable.

    -

    - GetCommandTitle() +

    + GetCommandTitle(ICommandTextSource)

    -

    Gets the title of the command.

    +

    Gets the title of the command — one row in a command list or a +mission tree — composed from the caller's vocabulary: the command owns +the composition and degradation rules, the caller owns the language.

    +

    +The shape is Name, or Name [detail] once there is a +detail worth showing. The NAME always leads and is never dropped: +a row must say WHAT it is even when the detail is a title the user +wrote, otherwise a newcomer cannot tell a command list from a +script. The detail trails because these rows truncate from the +right. An empty detail takes the bare-name form rather than +rendering dangling brackets. +

    -
    public string GetCommandTitle()
    +
    public string GetCommandTitle(ICommandTextSource text)
    +

    Parameters

    +
    +
    text ICommandTextSource
    +

    Culture-bearing vocabulary the static words are taken from.

    +
    +

    Returns

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html index 011a1462..7ed7bb7f 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningMotionResolutionCommand.html @@ -102,7 +102,16 @@ Class MachiningMotionResolutionCommand
    -
    public class MachiningMotionResolutionCommand : ISessionCommand, IMakeXmlSource
    +
    [CultureText("zh-Hant", "運動解析度")]
    +[CultureText("zh-Hans", "运动分辨率")]
    +[CultureText("zh-Hant", "每轉進給", Key = "Feed Per Cycle")]
    +[CultureText("zh-Hans", "每转进给", Key = "Feed Per Cycle")]
    +[CultureText("zh-Hant", "每刃進給", Key = "Feed Per Tooth")]
    +[CultureText("zh-Hans", "每刃进给", Key = "Feed Per Tooth")]
    +[CultureText("zh-Hant", "固定", Key = "Fixed")]
    +[CultureText("zh-Hans", "固定", Key = "Fixed")]
    +[CommandCatalog(CommandCategory.Setup, Order = 1)]
    +public class MachiningMotionResolutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    @@ -119,6 +128,7 @@ Class MachiningMotionResolutionCommand
    Implements
    +
    @@ -214,8 +224,8 @@ Class MachiningMotionResolutionCommand -

    - MachiningMotionResolutionCommand(XElement, string, string, IProgress<object>) +

    + MachiningMotionResolutionCommand(XElement, string, string, IProgress<IMessage>)

    @@ -224,7 +234,7 @@ Class MachiningMotionResolutionCommand
    -
    public MachiningMotionResolutionCommand(XElement src, string baseDirectory, string relFile, IProgress<object> progress)
    +
    public MachiningMotionResolutionCommand(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress)

    Parameters

    @@ -238,7 +248,7 @@ Class MachiningMotionResolutionCommand
    relFile string

    Relative file path

    -
    progress IProgress<object>
    +
    progress IProgress<IMessage>

    Progress reporter for nested resolution XML.

    @@ -326,6 +336,56 @@ Class MachiningMotionResolutionCommand + + +

    + GetCommandTitle(ICommandTextSource) + +

    + +

    Gets the title of the command — one row in a command list or a +mission tree — composed from the caller's vocabulary: the command owns +the composition and degradation rules, the caller owns the language.

    +

    +The shape is Name, or Name [detail] once there is a +detail worth showing. The NAME always leads and is never dropped: +a row must say WHAT it is even when the detail is a title the user +wrote, otherwise a newcomer cannot tell a command list from a +script. The detail trails because these rows truncate from the +right. An empty detail takes the bare-name form rather than +rendering dangling brackets. +

    +
    +
    + +
    +
    public string GetCommandTitle(ICommandTextSource text)
    +
    + +

    Parameters

    +
    +
    text ICommandTextSource
    +

    Culture-bearing vocabulary the static words are taken from.

    +
    +
    + +

    Returns

    +
    +
    string
    +

    The command title.

    +
    +
    + + + + + + + + + + +

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningResolutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningResolutionCommand.html new file mode 100644 index 00000000..2024e847 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.MachiningResolutionCommand.html @@ -0,0 +1,527 @@ + + + + + Class MachiningResolutionCommand | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class MachiningResolutionCommand +

    + +
    +
    Namespace
    Hi.SessionCommands
    +
    Assembly
    HiNc.dll
    +
    + +

    Command that sets the session's machining resolution — the meshing +resolution of material removal. One of the single-setting successors of +the legacy PreSettingCommand bundle.

    +
    +
    + +
    +
    [CultureText("zh-Hant", "加工解析度")]
    +[CultureText("zh-Hans", "加工分辨率")]
    +[CommandCatalog(CommandCategory.Setup, Order = 0)]
    +public class MachiningResolutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    MachiningResolutionCommand
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + + + + +

    Constructors +

    + + + + +

    + MachiningResolutionCommand() + +

    + +

    Ctor.

    +
    +
    + +
    +
    public MachiningResolutionCommand()
    +
    + + + + + + + + + + + + + + + +

    + MachiningResolutionCommand(XElement, string) + +

    + +

    Ctor.

    +
    +
    + +
    +
    public MachiningResolutionCommand(XElement src, string baseDirectory)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    XML

    +
    +
    baseDirectory string
    +

    Base directory for resolving relative paths

    +
    +
    + + + + + + + + + + + + +

    Properties +

    + + + + +

    + MachiningResolution_mm + +

    + +

    Machining resolution in millimeters.

    +
    +
    + +
    +
    public double MachiningResolution_mm { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    double
    +
    +
    + + + + + + + + + + +

    + XName + +

    + +

    Name for XML IO.

    +
    +
    + +
    +
    public static string XName { get; }
    +
    + + + + + +

    Property Value

    +
    +
    string
    +
    +
    + + + + + + + + +

    Methods +

    + + + + +

    + GetCommandTitle(ICommandTextSource) + +

    + +

    Gets the title of the command — one row in a command list or a +mission tree — composed from the caller's vocabulary: the command owns +the composition and degradation rules, the caller owns the language.

    +

    +The shape is Name, or Name [detail] once there is a +detail worth showing. The NAME always leads and is never dropped: +a row must say WHAT it is even when the detail is a title the user +wrote, otherwise a newcomer cannot tell a command list from a +script. The detail trails because these rows truncate from the +right. An empty detail takes the bare-name form rather than +rendering dangling brackets. +

    +
    +
    + +
    +
    public string GetCommandTitle(ICommandTextSource text)
    +
    + +

    Parameters

    +
    +
    text ICommandTextSource
    +

    Culture-bearing vocabulary the static words are taken from.

    +
    +
    + +

    Returns

    +
    +
    string
    +

    The command title.

    +
    +
    + + + + + + + + + + + + + +

    + 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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + + +

    + Run(SessionShell) + +

    + +

    Runs the command, delegating execution to the provided session shell.

    +
    +
    + +
    +
    public IEnumerable<Action> Run(SessionShell sessionShell)
    +
    + +

    Parameters

    +
    +
    sessionShell SessionShell
    +

    Session shell that exposes the machining facade to commands.

    +
    +
    + +

    Returns

    +
    +
    IEnumerable<Action>
    +

    Sequence of actions to be executed.

    +
    +
    + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html index fb88c77c..37b5574a 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcCodeCommand.html @@ -102,7 +102,10 @@ Class NcCodeCommand
    -
    public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    +
    [CultureText("zh-Hant", "NC程式碼")]
    +[CultureText("zh-Hans", "NC代码")]
    +[CommandCatalog(CommandCategory.Program, Order = 1)]
    +public class NcCodeCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    @@ -282,6 +285,43 @@ Class NcCodeCommand +

    Fields +

    + + + +

    + ConstDisplayName + +

    + +

    The command's own name — the DisplayNameAttribute value, +the localization key, AND the Title default, which is why +GetCommandTitle(ICommandTextSource) can treat a Title equal to it as unset.

    +
    +
    + +
    +
    public const string ConstDisplayName = "NC Code"
    +
    + + + + +

    Field Value

    +
    +
    string
    +
    +
    + + + + + + + + +

    Properties

    @@ -326,7 +366,9 @@ Class NcCodeCommand

    Title. -Alternative file name for the NC code file.

    +Alternative file name for the NC code file — it doubles as the +in-memory NC program name handed to RunNc(string, string), +so the default is a usable name rather than an empty string.

    @@ -389,19 +431,36 @@ Alternative file name for the NC code file.

    -

    - GetCommandTitle() +

    + GetCommandTitle(ICommandTextSource)

    -

    Gets the title of the command.

    +

    Gets the title of the command — one row in a command list or a +mission tree — composed from the caller's vocabulary: the command owns +the composition and degradation rules, the caller owns the language.

    +

    +The shape is Name, or Name [detail] once there is a +detail worth showing. The NAME always leads and is never dropped: +a row must say WHAT it is even when the detail is a title the user +wrote, otherwise a newcomer cannot tell a command list from a +script. The detail trails because these rows truncate from the +right. An empty detail takes the bare-name form rather than +rendering dangling brackets. +

    -
    public string GetCommandTitle()
    +
    public string GetCommandTitle(ICommandTextSource text)
    +

    Parameters

    +
    +
    text ICommandTextSource
    +

    Culture-bearing vocabulary the static words are taken from.

    +
    +

    Returns

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html index 97673256..e77064cd 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileCommand.html @@ -6,7 +6,7 @@ - + @@ -97,12 +97,20 @@ Class NcFileCommand
    Assembly
    HiNc.dll
    -

    Command for executing NC code from a file.

    +

    Command for executing an NC program file (Nc is the umbrella term: +brand controller code, NX-CL or CSV). The runner is picked by +NcKindAuto +(the default) detects by file extension: .cl/.cls/.clsf +play as NX-CL, .csv as CSV, anything else as brand NC code. +The GUI labels it “Program File”.

    -
    public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    +
    [CultureText("zh-Hant", "程式檔案")]
    +[CultureText("zh-Hans", "程序文件")]
    +[CommandCatalog(CommandCategory.Program, Order = 0)]
    +public class NcFileCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    @@ -220,7 +228,7 @@ Class NcFileCommand -

    Initializes a new instance of the NcFileCommand class with the specified NC file path.

    +

    Initializes a new instance of the NcFileCommand class with the specified NC program file path.

    @@ -231,7 +239,7 @@ Class NcFileCommand

    Parameters

    ncFile string
    -

    The NC file path.

    +

    The NC program file path.

    @@ -293,7 +301,7 @@ Class NcFileCommand -

    Path to the NC file.

    +

    Path to the NC program file.

    @@ -318,6 +326,39 @@ Class NcFileCommand + + +

    + NcKind + +

    + +

    Which runner plays NcFile; +Auto detects by extension.

    +
    +
    + +
    +
    public NcKind NcKind { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    NcKind
    +
    +
    + + + + + + + +

    @@ -356,19 +397,36 @@ Class NcFileCommand -

    - GetCommandTitle() +

    + GetCommandTitle(ICommandTextSource)

    -

    Gets the title of the command.

    +

    Gets the title of the command — one row in a command list or a +mission tree — composed from the caller's vocabulary: the command owns +the composition and degradation rules, the caller owns the language.

    +

    +The shape is Name, or Name [detail] once there is a +detail worth showing. The NAME always leads and is never dropped: +a row must say WHAT it is even when the detail is a title the user +wrote, otherwise a newcomer cannot tell a command list from a +script. The detail trails because these rows truncate from the +right. An empty detail takes the bare-name form rather than +rendering dangling brackets. +

    -
    public string GetCommandTitle()
    +
    public string GetCommandTitle(ICommandTextSource text)
    +

    Parameters

    +
    +
    text ICommandTextSource
    +

    Culture-bearing vocabulary the static words are taken from.

    +
    +

    Returns

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html index ae17b7ec..08c9f546 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcOptOptionCommand.html @@ -102,7 +102,10 @@ Class NcOptOptionCommand
    -
    public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    +
    [CultureText("zh-Hant", "NC優化設定")]
    +[CultureText("zh-Hans", "NC优化设定")]
    +[CommandCatalog(CommandCategory.Optimization, Order = 0)]
    +public class NcOptOptionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    @@ -215,8 +218,8 @@ Class NcOptOptionCommand -

    - NcOptOptionCommand(XElement, string, string, IProgress<object>, object[]) +

    + NcOptOptionCommand(XElement, string, string, IProgress<IMessage>, object[])

    @@ -225,7 +228,7 @@ Class NcOptOptionCommand
    -
    public NcOptOptionCommand(XElement src, string baseDirectory, string relFile, IProgress<object> progress, object[] res)
    +
    public NcOptOptionCommand(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress, object[] res)

    Parameters

    @@ -239,7 +242,7 @@ Class NcOptOptionCommand
    relFile string

    Relative file path

    -
    progress IProgress<object>
    +
    progress IProgress<IMessage>

    Progress reporter for nested option XML.

    res object[]
    @@ -332,19 +335,36 @@ Class NcOptOptionCommand -

    - GetCommandTitle() +

    + GetCommandTitle(ICommandTextSource)

    -

    Gets the title of the command.

    +

    Gets the title of the command — one row in a command list or a +mission tree — composed from the caller's vocabulary: the command owns +the composition and degradation rules, the caller owns the language.

    +

    +The shape is Name, or Name [detail] once there is a +detail worth showing. The NAME always leads and is never dropped: +a row must say WHAT it is even when the detail is a title the user +wrote, otherwise a newcomer cannot tell a command list from a +script. The detail trails because these rows truncate from the +right. An empty detail takes the bare-name form rather than +rendering dangling brackets. +

    -
    public string GetCommandTitle()
    +
    public string GetCommandTitle(ICommandTextSource text)
    +

    Parameters

    +
    +
    text ICommandTextSource
    +

    Culture-bearing vocabulary the static words are taken from.

    +
    +

    Returns

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html index 68832d1e..fec805e6 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.OptimizeToFilesCommand.html @@ -102,7 +102,9 @@ Class OptimizeToFilesCommand
    -
    public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
    +
    [CultureText("zh-Hant", "優化NC至檔案")]
    +[CultureText("zh-Hans", "优化NC至文件")]
    +public class OptimizeToFilesCommand : ISessionCommand, IMakeXmlSource
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PauseOnFailureCommand.html similarity index 68% rename from App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PauseOnFailureCommand.html index 5f533806..3a3b59ad 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.NcFileListCommand.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PauseOnFailureCommand.html @@ -2,11 +2,11 @@ - Class NcFileListCommand | HiAPI-C# 2025 + Class PauseOnFailureCommand | HiAPI-C# 2025 - + - + @@ -84,12 +84,12 @@
    -
    +
    -

    -Class NcFileListCommand +

    +Class PauseOnFailureCommand

    @@ -97,12 +97,17 @@ Class NcFileListCommand
    Assembly
    HiNc.dll
    -

    Command for executing multiple NC files sequentially.

    +

    Command that turns pause-on-failure on or off for the session. One of the +single-setting successors of the legacy PreSettingCommand +bundle.

    -
    public class NcFileListCommand : ISessionCommand, IMakeXmlSource
    +
    [CultureText("zh-Hant", "失敗時暫停")]
    +[CultureText("zh-Hans", "失败时暂停")]
    +[CommandCatalog(CommandCategory.Setup, Order = 3)]
    +public class PauseOnFailureCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    @@ -112,13 +117,14 @@ Class NcFileListCommand
    Inheritance
    -
    NcFileListCommand
    +
    PauseOnFailureCommand
    Implements
    +
    @@ -185,19 +191,19 @@ Class NcFileListCommand - + -

    - NcFileListCommand() +

    + PauseOnFailureCommand()

    -

    Default constructor.

    +

    Ctor.

    -
    public NcFileListCommand()
    +
    public PauseOnFailureCommand()
    @@ -212,10 +218,10 @@ Class NcFileListCommand - + -

    - NcFileListCommand(XElement, string) +

    + PauseOnFailureCommand(XElement, string)

    @@ -224,7 +230,7 @@ Class NcFileListCommand
    -
    public NcFileListCommand(XElement src, string baseDirectory)
    +
    public PauseOnFailureCommand(XElement src, string baseDirectory)

    Parameters

    @@ -252,19 +258,21 @@ Class NcFileListCommand - + -

    - NcFileList +

    + Enable

    -

    List of NC files to execute.

    +

    Whether the session pauses on a failure from this command on.

    -
    public List<string> NcFileList { get; set; }
    +
    [CultureText("zh-Hant", "啟用失敗時暫停", Key = "Enable Pause on Failure")]
    +[CultureText("zh-Hans", "启用失败时暂停", Key = "Enable Pause on Failure")]
    +public bool Enable { get; set; }
    @@ -273,7 +281,7 @@ Class NcFileListCommand

    Property Value

    -
    List<string>
    +
    bool
    @@ -284,9 +292,9 @@ Class NcFileListCommand - + -

    +

    XName

    @@ -320,9 +328,59 @@ Class NcFileListCommand - + -

    +

    + GetCommandTitle(ICommandTextSource) + +

    + +

    Gets the title of the command — one row in a command list or a +mission tree — composed from the caller's vocabulary: the command owns +the composition and degradation rules, the caller owns the language.

    +

    +The shape is Name, or Name [detail] once there is a +detail worth showing. The NAME always leads and is never dropped: +a row must say WHAT it is even when the detail is a title the user +wrote, otherwise a newcomer cannot tell a command list from a +script. The detail trails because these rows truncate from the +right. An empty detail takes the bare-name form rather than +rendering dangling brackets. +

    +
    +
    + +
    +
    public string GetCommandTitle(ICommandTextSource text)
    +
    + +

    Parameters

    +
    +
    text ICommandTextSource
    +

    Culture-bearing vocabulary the static words are taken from.

    +
    +
    + +

    Returns

    +
    +
    string
    +

    The command title.

    +
    +
    + + + + + + + + + + + + + +

    MakeXmlSource(string, string, bool)

    @@ -362,7 +420,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.

    @@ -371,9 +429,9 @@ Since the folder can be moving with the configuration file.

    - + -

    +

    Reg(XFactory)

    @@ -405,9 +463,9 @@ Since the folder can be moving with the configuration file.

    - + -

    +

    Run(SessionShell)

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.RecordRuntimeGeomCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PhysicsCommand.html similarity index 70% rename from App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.RecordRuntimeGeomCommand.html rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PhysicsCommand.html index 499dd18e..4d47adbd 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.RecordRuntimeGeomCommand.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PhysicsCommand.html @@ -2,11 +2,11 @@ - Class RecordRuntimeGeomCommand | HiAPI-C# 2025 + Class PhysicsCommand | HiAPI-C# 2025 - + - + @@ -84,12 +84,12 @@
    -
    +
    -

    -Class RecordRuntimeGeomCommand +

    +Class PhysicsCommand

    @@ -97,12 +97,17 @@ Class RecordRuntimeGeomCommand
    Assembly
    HiNc.dll
    -

    Command for recording runtime geometry to/from file.

    +

    Command that turns physics simulation on or off for the session. One of +the single-setting successors of the legacy PreSettingCommand +bundle.

    -
    public class RecordRuntimeGeomCommand : ISessionCommand, IMakeXmlSource
    +
    [CultureText("zh-Hant", "物理模擬")]
    +[CultureText("zh-Hans", "物理模拟")]
    +[CommandCatalog(CommandCategory.Setup, Order = 4)]
    +public class PhysicsCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    @@ -112,13 +117,14 @@ Class RecordRuntimeGeomCommand
    Inheritance
    -
    RecordRuntimeGeomCommand
    +
    PhysicsCommand
    Implements
    +
    @@ -185,19 +191,19 @@ Class RecordRuntimeGeomCommand - + -

    - RecordRuntimeGeomCommand() +

    + PhysicsCommand()

    -

    Default constructor.

    +

    Ctor.

    -
    public RecordRuntimeGeomCommand()
    +
    public PhysicsCommand()
    @@ -212,10 +218,10 @@ Class RecordRuntimeGeomCommand - + -

    - RecordRuntimeGeomCommand(XElement, string) +

    + PhysicsCommand(XElement, string)

    @@ -224,7 +230,7 @@ Class RecordRuntimeGeomCommand
    -
    public RecordRuntimeGeomCommand(XElement src, string baseDirectory)
    +
    public PhysicsCommand(XElement src, string baseDirectory)

    Parameters

    @@ -252,19 +258,21 @@ Class RecordRuntimeGeomCommand - + -

    - MainActionEnum +

    + Enable

    -

    Main action to perform (read, write, or conditional).

    +

    Whether physics simulation is enabled from this command on.

    -
    public RecordRuntimeGeomActionEnum MainActionEnum { get; set; }
    +
    [CultureText("zh-Hant", "啟用物理模擬", Key = "Enable Physics")]
    +[CultureText("zh-Hans", "启用物理模拟", Key = "Enable Physics")]
    +public bool Enable { get; set; }
    @@ -273,7 +281,7 @@ Class RecordRuntimeGeomCommand

    Property Value

    -
    RecordRuntimeGeomActionEnum
    +
    bool
    @@ -284,41 +292,9 @@ Class RecordRuntimeGeomCommand - + -

    - RelFile - -

    - -

    Relative file path.

    -
    -
    - -
    -
    public string RelFile { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    string
    -
    -
    - - - - - - - - - - -

    +

    XName

    @@ -352,9 +328,59 @@ Class RecordRuntimeGeomCommand - + -

    +

    + GetCommandTitle(ICommandTextSource) + +

    + +

    Gets the title of the command — one row in a command list or a +mission tree — composed from the caller's vocabulary: the command owns +the composition and degradation rules, the caller owns the language.

    +

    +The shape is Name, or Name [detail] once there is a +detail worth showing. The NAME always leads and is never dropped: +a row must say WHAT it is even when the detail is a title the user +wrote, otherwise a newcomer cannot tell a command list from a +script. The detail trails because these rows truncate from the +right. An empty detail takes the bare-name form rather than +rendering dangling brackets. +

    +
    +
    + +
    +
    public string GetCommandTitle(ICommandTextSource text)
    +
    + +

    Parameters

    +
    +
    text ICommandTextSource
    +

    Culture-bearing vocabulary the static words are taken from.

    +
    +
    + +

    Returns

    +
    +
    string
    +

    The command title.

    +
    +
    + + + + + + + + + + + + + +

    MakeXmlSource(string, string, bool)

    @@ -394,7 +420,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.

    @@ -403,9 +429,9 @@ Since the folder can be moving with the configuration file.

    - + -

    +

    Reg(XFactory)

    @@ -437,9 +463,9 @@ Since the folder can be moving with the configuration file.

    - + -

    +

    Run(SessionShell)

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html index a3d530f2..9c082199 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PostExecutionCommand.html @@ -102,7 +102,10 @@ Class PostExecutionCommand
    -
    public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    +
    [CultureText("zh-Hant", "執行後處理")]
    +[CultureText("zh-Hans", "执行后处理")]
    +[CommandCatalog(CommandCategory.Output, Order = 0)]
    +public class PostExecutionCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    @@ -259,6 +262,75 @@ Class PostExecutionCommand + + +

    + ClToNcFileTemplate + +

    + +

    Gets or sets the writeback output template; [NcName] is replaced +by the source file name (extension kept).

    +
    +
    + +
    +
    public string ClToNcFileTemplate { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + EnableConvertClToNcFiles + +

    + +

    Gets or sets whether to convert the session's play into NC files by +writeback synthesis (ConvertClToNcFiles(string)). +Converts EVERY NC program file the session played (grouped per source +file) — meaningful after a CL play; an NC play would be re-serialized +too.

    +
    +
    + +
    +
    public bool EnableConvertClToNcFiles { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    bool
    +
    +
    + + + + + + + +

    @@ -323,38 +395,6 @@ Class PostExecutionCommand - - -

    - EnableWriteRuntimeGeom - -

    - -

    Gets or sets whether to write runtime geometry to file.

    -
    -
    - -
    -
    public bool EnableWriteRuntimeGeom { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    bool
    -
    -
    - - - - - - - -

    @@ -483,38 +523,6 @@ Class PostExecutionCommand - - -

    - RuntimeGeomFilePath - -

    - -

    Gets or sets the runtime geometry file path.

    -
    -
    - -
    -
    public string RuntimeGeomFilePath { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    string
    -
    -
    - - - - - - - -

    @@ -649,19 +657,36 @@ Class PostExecutionCommand -

    - GetCommandTitle() +

    + GetCommandTitle(ICommandTextSource)

    -

    Gets the title of the command.

    +

    Gets the title of the command — one row in a command list or a +mission tree — composed from the caller's vocabulary: the command owns +the composition and degradation rules, the caller owns the language.

    +

    +The shape is Name, or Name [detail] once there is a +detail worth showing. The NAME always leads and is never dropped: +a row must say WHAT it is even when the detail is a title the user +wrote, otherwise a newcomer cannot tell a command list from a +script. The detail trails because these rows truncate from the +right. An empty detail takes the bare-name form rather than +rendering dangling brackets. +

    -
    public string GetCommandTitle()
    +
    public string GetCommandTitle(ICommandTextSource text)
    +

    Parameters

    +
    +
    text ICommandTextSource
    +

    Culture-bearing vocabulary the static words are taken from.

    +
    +

    Returns

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PreSettingCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PreSettingCommand.html index 319572a1..a653f11c 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PreSettingCommand.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.PreSettingCommand.html @@ -6,7 +6,7 @@ - + @@ -97,12 +97,19 @@ Class PreSettingCommand
    Assembly
    HiNc.dll
    -

    Command for pre-settings before NC command running.

    +

    Legacy bundle of pre-settings applied before NC command running, +superseded by the single-setting commands (machining resolution, motion +resolution, collision detection, pause on failure, physics). Loading a +project expands a saved instance into those commands via +ExpandToEntries(bool); saving never writes the bundle back. The +class stays functional for API callers that construct it directly.

    -
    public class PreSettingCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    +
    [CultureText("zh-Hant", "一般設定")]
    +[CultureText("zh-Hans", "一般设定")]
    +public class PreSettingCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    @@ -215,8 +222,8 @@ Class PreSettingCommand -

    - PreSettingCommand(XElement, string, string, IProgress<object>, object[]) +

    + PreSettingCommand(XElement, string, string, IProgress<IMessage>, object[])

    @@ -225,7 +232,7 @@ Class PreSettingCommand
    -
    public PreSettingCommand(XElement src, string baseDirectory, string relFile, IProgress<object> progress, object[] res)
    +
    public PreSettingCommand(XElement src, string baseDirectory, string relFile, IProgress<IMessage> progress, object[] res)

    Parameters

    @@ -239,7 +246,7 @@ Class PreSettingCommand
    relFile string

    Relative file path

    -
    progress IProgress<object>
    +
    progress IProgress<IMessage>

    Progress reporter for nested preset XML.

    res object[]
    @@ -358,19 +365,19 @@ Class PreSettingCommand - + -

    - EnableReadRuntimeGeom +

    + EnableReadMeshedGeom

    -

    Gets or sets whether to enable reading runtime geometry.

    +

    Gets or sets whether to enable reading meshed geometry.

    -
    public bool EnableReadRuntimeGeom { get; set; }
    +
    public bool EnableReadMeshedGeom { get; set; }
    @@ -454,19 +461,19 @@ Class PreSettingCommand - + -

    - RuntimeGeomFile +

    + MeshedGeomFile

    -

    Gets or sets the runtime geometry file path.

    +

    Gets or sets the meshed geometry file path.

    -
    public string RuntimeGeomFile { get; set; }
    +
    public string MeshedGeomFile { get; set; }
    @@ -522,21 +529,84 @@ Class PreSettingCommand - + -

    - GetCommandTitle() +

    + ExpandToEntries(bool)

    -

    Gets the title of the command.

    +

    Expands this bundle into the split single-setting commands, in the +order the bundle applied them. isEnabled — the +enable state of the bundle's own list entry — is consumed into every +split entry; the meshed-geometry read additionally keeps its own +EnableReadMeshedGeom flag (its entry is emitted only +when the read is enabled or a file is set, as a +RecordMeshedGeomCommand in +Read mode).

    -
    public string GetCommandTitle()
    +
    public List<EnablingWrapper> ExpandToEntries(bool isEnabled)
    +

    Parameters

    +
    +
    isEnabled bool
    +

    Enable state of the bundle's list entry.

    +
    +
    + +

    Returns

    +
    +
    List<EnablingWrapper>
    +

    The split entries replacing the bundle.

    +
    +
    + + + + + + + + + + + + + +

    + GetCommandTitle(ICommandTextSource) + +

    + +

    Gets the title of the command — one row in a command list or a +mission tree — composed from the caller's vocabulary: the command owns +the composition and degradation rules, the caller owns the language.

    +

    +The shape is Name, or Name [detail] once there is a +detail worth showing. The NAME always leads and is never dropped: +a row must say WHAT it is even when the detail is a title the user +wrote, otherwise a newcomer cannot tell a command list from a +script. The detail trails because these rows truncate from the +right. An empty detail takes the bare-name form rather than +rendering dangling brackets. +

    +
    +
    + +
    +
    public string GetCommandTitle(ICommandTextSource text)
    +
    + +

    Parameters

    +
    +
    text ICommandTextSource
    +

    Culture-bearing vocabulary the static words are taken from.

    +
    +

    Returns

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.RecordRuntimeGeomActionEnum.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.RecordMeshedGeomActionEnum.html similarity index 80% rename from App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.RecordRuntimeGeomActionEnum.html rename to App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.RecordMeshedGeomActionEnum.html index 48782152..a922a55d 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.RecordRuntimeGeomActionEnum.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.RecordMeshedGeomActionEnum.html @@ -2,9 +2,9 @@ - Enum RecordRuntimeGeomActionEnum | HiAPI-C# 2025 + Enum RecordMeshedGeomActionEnum | HiAPI-C# 2025 - + @@ -84,13 +84,13 @@
    -
    +
    -

    -Enum RecordRuntimeGeomActionEnum +

    +Enum RecordMeshedGeomActionEnum

    @@ -98,12 +98,12 @@ Enum RecordRuntimeGeomActionEnum
    Assembly
    HiNc.dll
    -

    Action of the RecordRuntimeGeomCommand.

    +

    Action of the RecordMeshedGeomCommand.

    -
    public enum RecordRuntimeGeomActionEnum
    +
    public enum RecordMeshedGeomActionEnum
    @@ -145,22 +145,30 @@ Enum RecordRuntimeGeomActionEnum

    Fields

    -
    NoAction = 0
    +
    [CultureText("zh-Hant", "無操作")] +[CultureText("zh-Hans", "无操作")] +NoAction = 0

    No action.

    -
    Read = 1
    +
    [CultureText("zh-Hant", "讀取")] +[CultureText("zh-Hans", "读取")] +Read = 1
    -

    Read runtime geometry from file.

    +

    Read meshed geometry from file.

    -
    ReadOnFirstOrWrite = 3
    +
    [CultureText("zh-Hant", "首次讀取,否則寫入")] +[CultureText("zh-Hans", "首次读取,否则写入")] +ReadOnFirstOrWrite = 3
    -

    If file existed and no motion has ran before, read the runtime geometry; +

    If file existed and no motion has ran before, read the meshed geometry; otherwise, write the current geometry into file.

    -
    Write = 2
    +
    [CultureText("zh-Hant", "寫入")] +[CultureText("zh-Hans", "写入")] +Write = 2
    -

    Write runtime geometry to file.

    +

    Write meshed geometry to file.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.RecordMeshedGeomCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.RecordMeshedGeomCommand.html new file mode 100644 index 00000000..af1e0452 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.RecordMeshedGeomCommand.html @@ -0,0 +1,560 @@ + + + + + Class RecordMeshedGeomCommand | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    +
    +
    +
    Table of Contents
    + +
    +
    + +
    +
    +
    + +
    +
    + + + +
    + +
    + + + +

    +Class RecordMeshedGeomCommand +

    + +
    +
    Namespace
    Hi.SessionCommands
    +
    Assembly
    HiNc.dll
    +
    + +

    Command for recording meshed geometry to/from file.

    +
    +
    + +
    +
    [CultureText("zh-Hant", "記錄網格幾何")]
    +[CultureText("zh-Hans", "记录网格几何")]
    +[CommandCatalog(CommandCategory.Output, Order = 1, Aliases = new string[] { "Read", "Write" })]
    +public class RecordMeshedGeomCommand : ITitleCommand, ISessionCommand, IMakeXmlSource
    +
    + + + + +
    +
    Inheritance
    +
    + +
    RecordMeshedGeomCommand
    +
    +
    + +
    +
    Implements
    +
    + + + +
    +
    + + +
    +
    Inherited Members
    +
    + + + + + + + +
    + +
    +
    Extension Methods
    +
    + + + + + + + +
    + + + + + +

    Constructors +

    + + + + +

    + RecordMeshedGeomCommand() + +

    + +

    Default constructor.

    +
    +
    + +
    +
    public RecordMeshedGeomCommand()
    +
    + + + + + + + + + + + + + + + +

    + RecordMeshedGeomCommand(XElement, string) + +

    + +

    Ctor.

    +
    +
    + +
    +
    public RecordMeshedGeomCommand(XElement src, string baseDirectory)
    +
    + +

    Parameters

    +
    +
    src XElement
    +

    XML

    +
    +
    baseDirectory string
    +

    Base directory for resolving relative paths

    +
    +
    + + + + + + + + + + + + +

    Properties +

    + + + + +

    + MainActionEnum + +

    + +

    Main action to perform (read, write, or conditional).

    +
    +
    + +
    +
    public RecordMeshedGeomActionEnum MainActionEnum { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    RecordMeshedGeomActionEnum
    +
    +
    + + + + + + + + + + +

    + RelFile + +

    + +

    Relative file path. Defaults under Cache/: a recorded mesh is a +rebuildable by-product of a run, not a project asset, so it belongs +beside the other cached artifacts rather than at the project root. The +write path creates the directory when it is missing.

    +
    +
    + +
    +
    public string RelFile { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    string
    +
    +
    + + + + + + + + + + +

    + XName + +

    + +

    Name for XML IO.

    +
    +
    + +
    +
    public static string XName { get; }
    +
    + + + + + +

    Property Value

    +
    +
    string
    +
    +
    + + + + + + + + +

    Methods +

    + + + + +

    + GetCommandTitle(ICommandTextSource) + +

    + +

    Gets the title of the command — one row in a command list or a +mission tree — composed from the caller's vocabulary: the command owns +the composition and degradation rules, the caller owns the language.

    +

    +The shape is Name, or Name [detail] once there is a +detail worth showing. The NAME always leads and is never dropped: +a row must say WHAT it is even when the detail is a title the user +wrote, otherwise a newcomer cannot tell a command list from a +script. The detail trails because these rows truncate from the +right. An empty detail takes the bare-name form rather than +rendering dangling brackets. +

    +
    +
    + +
    +
    public string GetCommandTitle(ICommandTextSource text)
    +
    + +

    Parameters

    +
    +
    text ICommandTextSource
    +

    Culture-bearing vocabulary the static words are taken from.

    +
    +
    + +

    Returns

    +
    +
    string
    +

    The command title.

    +
    +
    + + + + + + + + + + + + + +

    + 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.

    +
    + + + + + + +

    + Reg(XFactory) + +

    + +

    Registers this type's deserializer with the given XFactory +(or Default when factory is +null). Idempotent.

    +
    +
    + +
    +
    public static void Reg(XFactory factory = null)
    +
    + +

    Parameters

    +
    +
    factory XFactory
    +
    +
    + + + + + + + + + + + + + + +

    + Run(SessionShell) + +

    + +

    Runs the command, delegating execution to the provided session shell.

    +
    +
    + +
    +
    public IEnumerable<Action> Run(SessionShell sessionShell)
    +
    + +

    Parameters

    +
    +
    sessionShell SessionShell
    +

    Session shell that exposes the machining facade to commands.

    +
    +
    + +

    Returns

    +
    +
    IEnumerable<Action>
    +

    Sequence of actions to be executed.

    +
    +
    + + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ScriptCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ScriptCommand.html index be0d3968..20916d15 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ScriptCommand.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.ScriptCommand.html @@ -102,7 +102,10 @@ Class ScriptCommand
    -
    public class ScriptCommand : ITitleCommand, ISessionCommand, IMakeXmlSource, IGetSelectionName
    +
    [CultureText("zh-Hant", "腳本")]
    +[CultureText("zh-Hans", "脚本")]
    +[CommandCatalog(CommandCategory.Program, Order = 2)]
    +public class ScriptCommand : ITitleCommand, ISessionCommand, IMakeXmlSource, IGetSelectionName
    @@ -485,19 +488,36 @@ Class ScriptCommand -

    - GetCommandTitle() +

    + GetCommandTitle(ICommandTextSource)

    -

    Gets the title of the command.

    +

    Gets the title of the command — one row in a command list or a +mission tree — composed from the caller's vocabulary: the command owns +the composition and degradation rules, the caller owns the language.

    +

    +The shape is Name, or Name [detail] once there is a +detail worth showing. The NAME always leads and is never dropped: +a row must say WHAT it is even when the detail is a title the user +wrote, otherwise a newcomer cannot tell a command list from a +script. The detail trails because these rows truncate from the +right. An empty detail takes the bare-name form rather than +rendering dangling brackets. +

    -
    public string GetCommandTitle()
    +
    public string GetCommandTitle(ICommandTextSource text)
    +

    Parameters

    +
    +
    text ICommandTextSource
    +

    Culture-bearing vocabulary the static words are taken from.

    +
    +

    Returns

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.SimpleSessionCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.SimpleSessionCommand.html deleted file mode 100644 index 816b9044..00000000 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.SimpleSessionCommand.html +++ /dev/null @@ -1,1058 +0,0 @@ - - - - - Class SimpleSessionCommand | HiAPI-C# 2025 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    -
    -
    -
    -
    Table of Contents
    - -
    -
    - -
    -
    -
    - -
    -
    - - - -
    - -
    - - - -

    -Class SimpleSessionCommand -

    - -
    -
    Namespace
    Hi.SessionCommands
    -
    Assembly
    HiNc.dll
    -
    - -

    Simple session command for executing machining operations.

    -
    -
    - -
    -
    public class SimpleSessionCommand : ISessionCommand, IMakeXmlSource
    -
    - - - - -
    -
    Inheritance
    -
    - -
    SimpleSessionCommand
    -
    -
    - -
    -
    Implements
    -
    - - -
    -
    - - -
    -
    Inherited Members
    -
    - - - - - - - -
    - -
    -
    Extension Methods
    -
    - - - - - - - -
    - - - - - -

    Constructors -

    - - - - -

    - SimpleSessionCommand() - -

    - -

    Ctor.

    -
    -
    - -
    -
    public SimpleSessionCommand()
    -
    - - - - - - - - - - - - - - - -

    - SimpleSessionCommand(XElement, string, string, IProgress<object>, object[]) - -

    - -

    Ctor.

    -
    -
    - -
    -
    public SimpleSessionCommand(XElement src, string baseDirectory, string relFile, IProgress<object> progress, object[] res)
    -
    - -

    Parameters

    -
    -
    src XElement
    -

    XML

    -
    -
    baseDirectory string
    -

    Base directory for relative paths

    -
    -
    relFile string
    -

    Relative file path

    -
    -
    progress IProgress<object>
    -

    Optional progress reporter.

    -
    -
    res object[]
    -

    Additional resources

    -
    -
    - - - - - - - - - - - - -

    Properties -

    - - - - -

    - EnableCollisionDetection - -

    - -

    Gets or sets whether collision detection is enabled.

    -
    -
    - -
    -
    public bool EnableCollisionDetection { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    bool
    -
    -
    - - - - - - - - - - -

    - EnableGeomDiff - -

    - -

    Gets or sets whether to enable geometry difference detection.

    -
    -
    - -
    -
    public bool EnableGeomDiff { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    bool
    -
    -
    - - - - - - - - - - -

    - EnableOptimizeToFiles - -

    - -

    Gets or sets whether to enable optimization to files.

    -
    -
    - -
    -
    public bool EnableOptimizeToFiles { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    bool
    -
    -
    - - - - - - - - - - -

    - EnablePauseOnFailure - -

    - -

    Gets or sets whether to pause on failure.

    -
    -
    - -
    -
    public bool EnablePauseOnFailure { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    bool
    -
    -
    - - - - - - - - - - -

    - EnableReadRuntimeGeom - -

    - -

    Gets or sets whether to enable reading runtime geometry.

    -
    -
    - -
    -
    public bool EnableReadRuntimeGeom { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    bool
    -
    -
    - - - - - - - - - - -

    - EnableWriteRuntimeGeom - -

    - -

    Gets or sets whether to write runtime geometry to file.

    -
    -
    - -
    -
    public bool EnableWriteRuntimeGeom { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    bool
    -
    -
    - - - - - - - - - - -

    - EnableWriteShotFiles - -

    - -

    Gets or sets whether to write shot files.

    -
    -
    - -
    -
    public bool EnableWriteShotFiles { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    bool
    -
    -
    - - - - - - - - - - -

    - EnableWriteStepFiles - -

    - -

    Gets or sets whether to write step files.

    -
    -
    - -
    -
    public bool EnableWriteStepFiles { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    bool
    -
    -
    - - - - - - - - - - -

    - GeomDiffDetectRadius_mm - -

    - -

    Gets or sets the geometry difference detection radius in millimeters.

    -
    -
    - -
    -
    public double GeomDiffDetectRadius_mm { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    double
    -
    -
    - - - - - - - - - - -

    - MachiningMotionResolution - -

    - -

    Gets or sets the machining motion resolution.

    -
    -
    - -
    -
    public IMachiningMotionResolution MachiningMotionResolution { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    IMachiningMotionResolution
    -
    -
    - - - - - - - - - - -

    - MachiningResolution_mm - -

    - -

    Gets or sets the machining resolution in millimeters.

    -
    -
    - -
    -
    public double MachiningResolution_mm { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    double
    -
    -
    - - - - - - - - - - -

    - NcCommandList - -

    - -

    Middle command list. Mainly for NC commands. -Because of the design idea is for simplicity, only expect the wrapper content to be NcFileCommand or NcCodeCommand or ScriptCommand.

    -
    -
    - -
    -
    public List<EnablingWrapper> NcCommandList { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    List<EnablingWrapper>
    -
    -
    - - - - - - - - - - -

    - NcOptOption - -

    - -

    Gets or sets the NC optimization options.

    -
    -
    - -
    -
    public NcOptOption NcOptOption { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    NcOptOption
    -
    -
    - - - - - - - - - - -

    - OptimizationFileTemplate - -

    - -

    Gets or sets the optimization file template path.

    -
    -
    - -
    -
    public string OptimizationFileTemplate { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    string
    -
    -
    - - - - - - - - - - -

    - RuntimeGeomFile - -

    - -

    Gets or sets the runtime geometry file path.

    -
    -
    - -
    -
    public string RuntimeGeomFile { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    string
    -
    -
    - - - - - - - - - - -

    - RuntimeGeomFileTemplate - -

    - -

    Gets or sets the runtime geometry file template.

    -
    -
    - -
    -
    public string RuntimeGeomFileTemplate { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    string
    -
    -
    - - - - - - - - - - -

    - ShotFileTemplate - -

    - -

    Gets or sets the shot file template path.

    -
    -
    - -
    -
    public string ShotFileTemplate { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    string
    -
    -
    - - - - - - - - - - -

    - ShotFileTimeResolution_ms - -

    - -

    Gets or sets the time resolution for shot files in milliseconds.

    -
    -
    - -
    -
    public double ShotFileTimeResolution_ms { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    double
    -
    -
    - - - - - - - - - - -

    - StepFileTemplate - -

    - -

    Gets or sets the step file template path.

    -
    -
    - -
    -
    public string StepFileTemplate { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    string
    -
    -
    - - - - - - - - - - -

    - XName - -

    - -

    Name for XML IO.

    -
    -
    - -
    -
    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.

    -
    - - - - - - -

    - Reg(XFactory) - -

    - -

    Registers this type's deserializer with the given XFactory -(or Default when factory is -null), and chains Reg(factory) on dependents so the -registration graph is observable. Idempotent.

    -
    -
    - -
    -
    public static void Reg(XFactory factory = null)
    -
    - -

    Parameters

    -
    -
    factory XFactory
    -
    -
    - - - - - - - - - - - - - - -

    - Run(SessionShell) - -

    - -

    Runs the command, delegating execution to the provided session shell.

    -
    -
    - -
    -
    public IEnumerable<Action> Run(SessionShell sessionShell)
    -
    - -

    Parameters

    -
    -
    sessionShell SessionShell
    -

    Session shell that exposes the machining facade to commands.

    -
    -
    - -

    Returns

    -
    -
    IEnumerable<Action>
    -

    Sequence of actions to be executed.

    -
    -
    - - - - - - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    - -
    - - - - diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.WriteShotFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.WriteShotFilesCommand.html index d1b7dd50..54803630 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.WriteShotFilesCommand.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.WriteShotFilesCommand.html @@ -102,7 +102,9 @@ Class WriteShotFilesCommand
    -
    public class WriteShotFilesCommand : ISessionCommand, IMakeXmlSource
    +
    [CultureText("zh-Hant", "輸出時間序資訊至檔案")]
    +[CultureText("zh-Hans", "输出时间序信息至文件")]
    +public class WriteShotFilesCommand : ISessionCommand, IMakeXmlSource
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.WriteStepFilesCommand.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.WriteStepFilesCommand.html index 987bff1b..7d1bcc10 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.WriteStepFilesCommand.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.WriteStepFilesCommand.html @@ -102,7 +102,9 @@ Class WriteStepFilesCommand
    -
    public class WriteStepFilesCommand : ISessionCommand, IMakeXmlSource
    +
    [CultureText("zh-Hant", "輸出每步資訊至檔案")]
    +[CultureText("zh-Hans", "输出每步信息至文件")]
    +public class WriteStepFilesCommand : ISessionCommand, IMakeXmlSource
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.html index 75aa9d2a..aad92224 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionCommands.html @@ -94,9 +94,39 @@

    Classes

    +
    +
    CollisionDetectionCommand
    +

    Command that turns collision detection on or off for the session. One of +the single-setting successors of the legacy PreSettingCommand +bundle.

    +
    +
    +
    +
    CommandCatalogAttribute
    +

    Marks an ISessionCommand as user-addable: GUIs build their +“Add Command” catalog from the commands carrying this attribute, grouped +by Category. A command WITHOUT this attribute stays loadable +from project files (its Reg registration is unaffected) but is not +offered for creation.

    +
    +
    +
    +
    CommandFieldAttribute
    +

    Marks a session-command property as a directly editable scalar field, so +generic editors (e.g. the web UI's fallback command panel) can render and +update it without a hand-written per-command editor. Supported property +types: bool, int, double and +string.

    +
    +
    EnablingWrapper

    Wrapper for session commands that provides enable/disable functionality.

    +
    +
    +
    +
    ExportMeshedGeomToStlCommand
    +

    Command to call ExportMeshedGeomToStl(string, double).

    @@ -117,6 +147,13 @@ Classes
    MachiningMotionResolutionCommand

    Command for setting machining motion resolution for the milling process.

    +
    +
    +
    +
    MachiningResolutionCommand
    +

    Command that sets the session's machining resolution — the meshing +resolution of material removal. One of the single-setting successors of +the legacy PreSettingCommand bundle.

    @@ -126,12 +163,12 @@ Classes
    NcFileCommand
    -

    Command for executing NC code from a file.

    -
    -
    -
    -
    NcFileListCommand
    -

    Command for executing multiple NC files sequentially.

    +

    Command for executing an NC program file (Nc is the umbrella term: +brand controller code, NX-CL or CSV). The runner is picked by +NcKindAuto +(the default) detects by file extension: .cl/.cls/.clsf +play as NX-CL, .csv as CSV, anything else as brand NC code. +The GUI labels it “Program File”.

    @@ -142,6 +179,20 @@ Classes
    OptimizeToFilesCommand

    Command to call OptimizeToFiles(string).

    +
    +
    +
    +
    PauseOnFailureCommand
    +

    Command that turns pause-on-failure on or off for the session. One of the +single-setting successors of the legacy PreSettingCommand +bundle.

    +
    +
    +
    +
    PhysicsCommand
    +

    Command that turns physics simulation on or off for the session. One of +the single-setting successors of the legacy PreSettingCommand +bundle.

    @@ -151,27 +202,22 @@ Classes
    PreSettingCommand
    -

    Command for pre-settings before NC command running.

    +

    Legacy bundle of pre-settings applied before NC command running, +superseded by the single-setting commands (machining resolution, motion +resolution, collision detection, pause on failure, physics). Loading a +project expands a saved instance into those commands via +ExpandToEntries(bool); saving never writes the bundle back. The +class stays functional for API callers that construct it directly.

    -
    RecordRuntimeGeomCommand
    -

    Command for recording runtime geometry to/from file.

    +
    RecordMeshedGeomCommand
    +

    Command for recording meshed geometry to/from file.

    ScriptCommand

    Command for executing C# scripts in the milling process.

    -
    -
    -
    -
    SimpleSessionCommand
    -

    Simple session command for executing machining operations.

    -
    -
    -
    -
    WriteRuntimeGeomToStlCommand
    -

    Command to call Hi.MillingProcs.MachiningProjectCsScriptApi.WriteRuntimeGeomToStl.

    @@ -201,8 +247,14 @@ Interfaces Enums
    -
    RecordRuntimeGeomActionEnum
    -

    Action of the RecordRuntimeGeomCommand.

    +
    CommandCategory
    +

    Category of a session command in user-facing command catalogs (the GUI +“Add Command” listings). Declaration order is the display order.

    +
    +
    +
    +
    RecordMeshedGeomActionEnum
    +

    Action of the RecordMeshedGeomCommand.

    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SessionShellUtils.ISessionShell.html b/App/wwwroot/HiAPI-docsite/api/Hi.SessionShellUtils.ISessionShell.html index d6c7cbb1..bba72edb 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SessionShellUtils.ISessionShell.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SessionShellUtils.ISessionShell.html @@ -167,7 +167,7 @@ Interface ISessionShell

    Property Value

    -
    ScriptOptions
    +
    ScriptOptions
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.SqliteUtils.SqliteStepStorage.html b/App/wwwroot/HiAPI-docsite/api/Hi.SqliteUtils.SqliteStepStorage.html index 7667ce90..9ac3e243 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.SqliteUtils.SqliteStepStorage.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.SqliteUtils.SqliteStepStorage.html @@ -203,7 +203,9 @@ MillingStepLuggage data.

    Parameters

    databasePath string
    -

    The path to the SQLite database file. If null, uses in-memory database.

    +

    The path to the SQLite database file. If null, uses the +default per-user path (LocalApplicationData/HiNC/StepCache/step_cache.db) — +callers hosting several instances under one account must pass a per-instance path.

    logger ILogger

    Optional logger instance.

    @@ -527,7 +529,7 @@ MillingStepLuggage data.

    -

    Resets the database by clearing all data.

    +

    Resets the storage by deleting and recreating the database file.

    @@ -543,6 +545,16 @@ MillingStepLuggage data.

    +

    Remarks

    +

    Delete-and-recreate instead of DELETE FROM: the per-run cache grows to +many GB of step blobs and SQLite never returns freed pages to the file system +(VACUUM would rewrite the whole file), so recreating the file is both +the fastest wipe and the only practical space reclaim. Callers drain the +luggage writer first (ResetStateAndClStripWaitAll) and the +file is per-instance, so no other writer can be mid-batch. Falls back to the +in-place table wipe when the file is still held open (e.g. a concurrent +reader mid-query keeps the delete off on Windows).

    +
    diff --git a/App/wwwroot/HiAPI-docsite/api/Hi.Vibrations.ForceAccelShot.html b/App/wwwroot/HiAPI-docsite/api/Hi.Vibrations.ForceAccelShot.html index c5f17310..6003d626 100644 --- a/App/wwwroot/HiAPI-docsite/api/Hi.Vibrations.ForceAccelShot.html +++ b/App/wwwroot/HiAPI-docsite/api/Hi.Vibrations.ForceAccelShot.html @@ -102,7 +102,7 @@ Class ForceAccelShot
    -
    public class ForceAccelShot : IForceShot, IMomentShot, IAccelerationShot, ITimeShot, ITimeGetter
    +
    public class ForceAccelShot : IForceShot, IMomentShot, IAccelerationShot, ITimeShot, ITimecoded
    @@ -123,7 +123,7 @@ Class ForceAccelShot - +
    @@ -762,38 +762,6 @@ This is the base unit for acceleration storage in the system.

    - - -

    - Time - -

    - -

    Gets or sets the time value in seconds.

    -
    -
    - -
    -
    public TimeSpan Time { get; set; }
    -
    - - - - - -

    Property Value

    -
    -
    TimeSpan
    -
    -
    - - - - - - - -

    @@ -826,6 +794,38 @@ This is the base unit for acceleration storage in the system.

    + + +

    + Timecode + +

    + +

    Gets or sets the time value in seconds.

    +
    +
    + +
    +
    public TimeSpan Timecode { get; set; }
    +
    + + + + + +

    Property Value

    +
    +
    TimeSpan
    +
    +
    + + + + + + + +

    Methods

    @@ -926,8 +926,8 @@ This is the base unit for acceleration storage in the system.

    -

    - ReadRows(string, Action<int>, CancellationToken?) +

    + ReadRows(string, Action<int>, CancellationToken?, Func<DateTime, TimeSpan>)

    @@ -936,7 +936,7 @@ This is the base unit for acceleration storage in the system.

    -
    public static List<ForceAccelShot> ReadRows(string file, Action<int> lineReaded = null, CancellationToken? cancellationToken = null)
    +
    public static List<ForceAccelShot> ReadRows(string file, Action<int> lineReaded = null, CancellationToken? cancellationToken = null, Func<DateTime, TimeSpan> toTimecode = null)

    Parameters

    @@ -949,6 +949,9 @@ This is the base unit for acceleration storage in the system.

    cancellationToken CancellationToken?

    Optional cancellation token to cancel the operation.

    +
    +
    toTimecode Func<DateTime, TimeSpan>
    +

    Converter from an absolute sample DateTime to its timecode TimeSpan (used for step timing).

    diff --git a/App/wwwroot/HiAPI-docsite/api/HiMachining.Milling.ClMillingDevice.html b/App/wwwroot/HiAPI-docsite/api/HiMachining.Milling.ClMillingDevice.html index 660f6d0c..21c42e44 100644 --- a/App/wwwroot/HiAPI-docsite/api/HiMachining.Milling.ClMillingDevice.html +++ b/App/wwwroot/HiAPI-docsite/api/HiMachining.Milling.ClMillingDevice.html @@ -336,7 +336,9 @@ Class ClMillingDevice -

    An ITransformer driven by Cl.

    +

    An ITransformer driven by Cl. +Null when KeyBranch is absent (a serialized device whose +assembly carries no direct table-to-tool branch).

    @@ -838,6 +840,37 @@ and chains Reg(factory) on dependents. Idempotent.

    + + +

    + ResetPose() + +

    + +

    Restores KeyTransformer to identity. The runtime-reset +counterpart of re-homing an IXyzabcChain: without it, a +paused/aborted run leaves the device at its last executed cutter +location, and the next session's tool-change step would stamp a cut +at that stale position.

    +
    +
    + +
    +
    public void ResetPose()
    +
    + + + + + + + + + + + + +
    diff --git a/App/wwwroot/HiAPI-docsite/api/toc.html b/App/wwwroot/HiAPI-docsite/api/toc.html index 71966515..810f73c8 100644 --- a/App/wwwroot/HiAPI-docsite/api/toc.html +++ b/App/wwwroot/HiAPI-docsite/api/toc.html @@ -74,15 +74,15 @@
  • InitStickConvex
  • -
  • - LsStl -
  • Substraction
  • UnhighlightablePickable
  • +
  • + UnmanagedAddition +
  • UnmanagedSubstraction
  • @@ -267,6 +267,9 @@
  • CppLogUtil.LogDelegate
  • +
  • + CultureTextAttribute +
  • CultureUtil
  • @@ -288,6 +291,9 @@
  • IClearCache
  • +
  • + ICommandTextSource +
  • IDuplicate
  • @@ -369,6 +375,12 @@
  • Range<T>
  • +
  • + ResourceDefaultMarker +
  • +
  • + ResourceLayout +
  • ResourceUtil
  • @@ -553,27 +565,42 @@
  • BootstrapTheme
  • +
  • + Category +
  • DebugUtil
  • ExceptionUtil
  • +
  • + IMessage +
  • +
  • + IProgressMessage +
  • MessageBoardUtil
  • +
  • + MessageCollector +
  • MessageFlag
  • - MultiTagMessage + MessageUtil
  • - MultiTagMessageUtil + Severity
  • ShowMessageBoardDelegate
  • +
  • + SimpleMessage +
  • @@ -1005,12 +1032,6 @@
  • NativeStl
  • -
  • - NativeTopoStld -
  • -
  • - NativeTopoStlfr -
  • ObjUtil
  • @@ -1122,6 +1143,21 @@ Hi.Geom.Topo @@ -1308,6 +1338,15 @@ Hi.MachiningProcs
  • @@ -1399,6 +1459,9 @@
  • IMachiningService
  • +
  • + IMotionStepIndex +
  • IStepPropertyAccessHost
  • @@ -1423,6 +1486,12 @@
  • PropertyAccess<TData>
  • +
  • + StepActualTime +
  • +
  • + StepPresentCatalog +
  • @@ -1471,10 +1540,16 @@
  • @@ -1799,7 +1874,10 @@ FluteContourUtil
  • - FreeContourTray + FreeFluting +
  • +
  • + FreeformBottomContour
  • FreeformSideContour @@ -1808,10 +1886,10 @@ IBottomContour
  • - IContourTray + IFluteNumSourceProperty
  • - IFluteNumSourceProperty + IFluting
  • IGetFluteNum @@ -1835,7 +1913,7 @@ SpanContourPos4d
  • - UniformContourTray + UniformFluting
  • @@ -1853,6 +1931,9 @@
  • MillingToolEditorDisplayee
  • +
  • + MillingToolPhysicsPack +
  • MillingToolUtil
  • @@ -1863,9 +1944,6 @@ Hi.MillingForces
  • @@ -2524,6 +2677,9 @@
  • SyntecParameterTable
  • +
  • + SyntecParameterTableProxy +
  • @@ -2537,21 +2693,33 @@
  • MachiningServiceDependency
  • +
  • + MappingAnchorDependency +
  • NcKinematicsDependency
  • +
  • + NcLineSourceDependency +
  • ProjectFolderDependency
  • SegmenterDependency
  • +
  • + SentenceIndexCounterDependency +
  • StepPropertyAccessDictionaryDependency
  • SyntaxPieceLayerDependency
  • +
  • + ToolHouseDependency +
  • @@ -2562,6 +2730,9 @@
  • CallStackUtil
  • +
  • + LabelScanDirection +
  • LabelScanUtil
  • @@ -2617,6 +2788,12 @@
  • NcExpr
  • +
  • + NcExpressionDialect +
  • +
  • + NcExpressionDialectUtil +
  • NcExpressionEvaluator
  • @@ -2683,6 +2860,83 @@ +
  • + + Hi.NcParsers.EvaluationSyntaxs.Heidenhain + + +
  • +
  • + + Hi.NcParsers.EvaluationSyntaxs.Siemens + + +
  • Hi.NcParsers.Initializers @@ -2819,6 +3073,9 @@
  • IPlaneSelectDef
  • +
  • + IPolarInterpolationDef +
  • IPositioningDef
  • @@ -2882,9 +3139,15 @@
  • PlaneSelect
  • +
  • + PolarInterpolation +
  • Positioning
  • +
  • + PositioningOverride +
  • ProgramEnd
  • @@ -2954,9 +3217,24 @@ Hi.NcParsers.Keywords.Heidenhain
  • @@ -2964,9 +3242,57 @@ Hi.NcParsers.Keywords.Siemens
  • @@ -2989,6 +3315,9 @@
  • CircularMotionSyntax
  • +
  • + CodedPositionUtil +
  • CoolantSyntax
  • @@ -2998,6 +3327,9 @@
  • DrillingCycleSyntax
  • +
  • + DwellSyntax +
  • FanucPathSmoothingSyntax
  • @@ -3034,6 +3366,9 @@
  • LinearMotionSyntax
  • +
  • + MCodeExpansionSyntax +
  • MachineCoordSelectSyntax
  • @@ -3052,12 +3387,21 @@
  • PeckDrillingCycleSyntax
  • +
  • + PivotTransformUtil +
  • PivotTransformationSyntax
  • PlaneSelectSyntax
  • +
  • + PolarGCodeCheckSyntax +
  • +
  • + PolarInterpolationSyntax +
  • PositioningSyntax
  • @@ -3067,6 +3411,9 @@
  • ProgramEndSyntax
  • +
  • + ProgramRxczSyntax +
  • ProgramStopSyntax
  • @@ -3091,6 +3438,9 @@
  • TiltTransformUtil
  • +
  • + ToolChangeMotionSyntax +
  • ToolChangeSyntax
  • @@ -3107,9 +3457,60 @@ Hi.NcParsers.LogicSyntaxs.Heidenhain
  • @@ -3117,9 +3518,42 @@ Hi.NcParsers.LogicSyntaxs.Siemens
  • @@ -3208,27 +3642,57 @@
  • HeidenhainBlkFormSyntax
  • +
  • + HeidenhainCSyntax +
  • HeidenhainCallSyntax
  • +
  • + HeidenhainCcSyntax +
  • +
  • + HeidenhainCyclCallSyntax +
  • HeidenhainCyclDefSyntax
  • HeidenhainFnAssignmentSyntax
  • +
  • + HeidenhainFnFeatureSyntax +
  • +
  • + HeidenhainGotoParsingSyntax +
  • HeidenhainLSyntax
  • HeidenhainLblSyntax
  • +
  • + HeidenhainM128Syntax +
  • +
  • + HeidenhainM140Syntax +
  • +
  • + HeidenhainMirrorImageSyntax +
  • HeidenhainPlaneSyntax
  • HeidenhainProgramSyntax
  • +
  • + HeidenhainTcpmSyntax +
  • +
  • + HeidenhainTildeTrimSyntax +
  • HeidenhainToolCallSyntax
  • @@ -3245,6 +3709,64 @@
  • HeidenhainDatumShiftSyntax
  • +
  • + HeidenhainMachiningCycleSyntax +
  • +
  • + HeidenhainMirrorCyclSyntax +
  • +
  • + HeidenhainToleranceCyclSyntax +
  • + + +
  • + + Hi.NcParsers.ParsingSyntaxs.Siemens + +
  • @@ -3285,7 +3807,7 @@
  • @@ -3333,6 +3864,9 @@
  • BundleSyntax
  • +
  • + ExpressionPrefixParser +
  • FanucSyntaxUtil
  • @@ -3409,12 +3943,6 @@
  • HardNcUtil
  • -
  • - HeidenhainCoordinateEntryDisplayee -
  • -
  • - IControlRunner -
  • IFlexDictionaryHost<T>
  • @@ -3424,15 +3952,15 @@
  • IGetSpindleSpeed
  • +
  • + INcRunner +
  • ISetFeedrate
  • ISetSpindleSpeed
  • -
  • - IsoCoordinateEntryDisplayee -
  • MechNcUtil
  • @@ -3558,17 +4086,23 @@ + +
  • + + Hi.Numerical.ClsfParsers + +
  • @@ -3701,7 +4311,13 @@
  • @@ -3722,9 +4362,6 @@ Hi.Numerical.FilePlayers @@ -227,13 +227,13 @@ See Rendering Items SubMenu from IsoCoordinateId.

    +

    Row selection updates IsoCoordinateEntryDisplayee.IsoCoordinateId.

    Datum Preset and Shift Tables (Heidenhain)

    These tables are specific to Heidenhain controllers and provide interfaces for:

    Offset Table

    Manages tool offsets with the following capabilities:

    diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/controller/web-implementation.html b/App/wwwroot/HiAPI-docsite/app-anatomy/controller/web-implementation.html index 80bb7be6..07fb8e51 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/controller/web-implementation.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/controller/web-implementation.html @@ -118,7 +118,7 @@
  • PUT /api/Controller/iso-coordinate-table/{index}
  • POST /api/Controller/iso-coordinate-table/{index}/set-to-program-zero
  • POST /api/Controller/iso-coordinate-table/{index}/set-to-machine-zero
  • -
  • PUT /api/Controller/iso-coordinate-selection - updates IsoCoordinateEntryDisplayee.
  • +
  • PUT /api/Controller/iso-coordinate-selection - updates IsoCoordinateEntryDisplayee.
  • Heidenhain datum preset / shift @@ -157,7 +157,7 @@
  • Display
      -
    • POST /api/Controller/initialize-display/{connectionId} - binds the shared MachiningProjectDisplayee to the rendering engine keyed by connectionId. The Controller page and Player page share this displayee, so Display Options ▾ toggles via the rendering-flags API propagate to both viewers.
    • +
    • POST /api/Controller/initialize-display/{connectionId} - binds the shared MachiningProjectDisplayee to the rendering engine keyed by connectionId. The Controller page and Player page share this displayee, so Display Options ▾ toggles via the rendering-flags API propagate to both viewers.
  • diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/geom/extended-cylinder-panel.html b/App/wwwroot/HiAPI-docsite/app-anatomy/geom/extended-cylinder-panel.html index 8d38c13d..f417d0e6 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/geom/extended-cylinder-panel.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/geom/extended-cylinder-panel.html @@ -92,7 +92,10 @@
    • Extended Cylinder Panel
        -
      • FullLength Input Field
      • +
      • FullLength Input Field — full length from Z=0 (the cutter tip), includes +the span below the start section (for a cutter upper beam: the flute +height). The web editor shows the valid range (must exceed the start-section +Z, served as minFullLength) and the backend rejects values at or below it.
    diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/geom/index.html b/App/wwwroot/HiAPI-docsite/app-anatomy/geom/index.html index 28d8becf..601c204c 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/geom/index.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/geom/index.html @@ -140,8 +140,8 @@ -Runtime Geometry Panel -Manages runtime geometry (not IStlSource, but follows similar patterns) +Meshed Geometry Panel +Manages meshed geometry (not IStlSource, but follows similar patterns) Extended Cylinder Panel diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/geom/runtime-geom-panel.html b/App/wwwroot/HiAPI-docsite/app-anatomy/geom/meshed-geom-panel.html similarity index 91% rename from App/wwwroot/HiAPI-docsite/app-anatomy/geom/runtime-geom-panel.html rename to App/wwwroot/HiAPI-docsite/app-anatomy/geom/meshed-geom-panel.html index 3e95370b..44808505 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/geom/runtime-geom-panel.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/geom/meshed-geom-panel.html @@ -2,9 +2,9 @@ - Runtime Geometry Panel | HiAPI-C# 2025 + Meshed Geometry Panel | HiAPI-C# 2025 - + @@ -85,16 +85,16 @@
    -

    Runtime Geometry Panel

    +

    Meshed Geometry Panel

    Key model is CubeTreeFile.

    Note
    -

    The term Runtime Geometry is CubeTree.

    +

    The term Meshed Geometry is CubeTree.

    Layout

      -
    • Runtime Geom Panel +
    • Meshed Geom Panel
      • File Selector
      @@ -104,12 +104,12 @@

      See this page for git repository.

      WPF Application Source Code Path

        -
      • Geom/RuntimeGeomPanel
      • +
      • Geom/MeshedGeomPanel

      Web Service Application Source Code Path

        -
      • wwwroot/geom/runtime-geom-panel.js
      • -
      • Geom/RuntimeGeomHub.cs (to be created)
      • +
      • wwwroot/geom/meshed-geom-panel.js
      • +
      • Geom/MeshedGeomHub.cs (to be created)
      • Geom/GeometryController.cs
      diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/index.html b/App/wwwroot/HiAPI-docsite/app-anatomy/index.html index d5a35b90..2d9a75b5 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/index.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/index.html @@ -90,7 +90,7 @@

      This section is a transparent, per-component anatomy of the HiNC application family. The forward-looking flagship is HiNC-2025-webservice (Quasar SPA + ASP.NET Core); HiNC-2025-win-desktop (the WPF client) is included only as a legacy reference — it is waiting to be fully obsoleted and is kept here so readers can map old screens onto their web-service successors. Every page dissects one UI component and exposes three layers:

      1. Layout — the visual / widget tree the user sees.
      2. -
      3. Key Model — the backing HiAPI types (MachiningProject, UserService, …).
      4. +
      5. Key Model — the backing HiAPI types (MachiningProject, UserService, …).
      6. Source Code Path — the concrete files (WPF .xaml + Quasar .vue + controller .cs) that implement the component, per application variant.

      The sibling General Rules describes conventions shared across the anatomy.

      @@ -110,6 +110,10 @@ +
      +
      Tip
      +

      appsettings.json pins the listening address through Kestrel:Endpoints, which overrides ASPNETCORE_URLS and the launchSettings.json applicationUrl. To run a throwaway local instance on another port (for example, next to a live one), set the Kestrel__Endpoints__Http__Url environment variable — setting ASPNETCORE_URLS alone is silently ignored.

      +

      HiNC-2025-win-desktop (legacy, pending obsoletion)

      Native Windows desktop client built on WPF. Slated to be fully obsoleted — listed here only so readers familiar with the desktop UI can locate the equivalent web-service component. Do not start new work against this codebase.

        diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/main-panel.html b/App/wwwroot/HiAPI-docsite/app-anatomy/main-panel.html index d8ba0af8..ef448225 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/main-panel.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/main-panel.html @@ -96,7 +96,7 @@
      • Web Service Application: Service inherits from IProjectService
    • -
    • User Service: UserService
    • +
    • User Service: UserService

    Layout Structure

      @@ -111,7 +111,7 @@
    • Save As MenuItem
    -
  • Environment Menu Dropdown +
  • Environment Menu Dropdown (WPF application only — the web application has no such dropdown; see below)
  • Mission MenuItem -Open Mission Page
  • +Open Mission Page +In the web application the Mission editor is a Player Control Tree branch; /mission redirects there.
  • Player MenuItem Link to Player Panel (Not exist on WPF app.)
  • Player Belonged Tool Bars. See Player Panel. Shows only if the Main Panel content is Player Panel.
  • +
  • Util Menu Dropdown (web application only). See Util Pages. +
      +
    • File Explorer MenuItem
    • +
    • Mechanism Builder MenuItem
    • +
    • Legacy-Controller MenuItem (below a separator) +Open Controller Page
    • +
    +
  • Preference Menu Dropdown
  • Help MenuItem
    • HiAPI Version label -A label to show the HiNc library version.
    • +A label to show the HiNc library version. +The web application shows this as a version badge next to the brand logo, with no Help dropdown.
  • @@ -145,7 +155,8 @@ A label to show the HiNc library version. Open Log Viewer to display application logs for the current day. The Log Viewer provides real-time access to system logs with filtering and download capabilities. It reads log files from the server's log directory and presents them in a formatted, searchable interface. -Users can refresh the log content or download the current day's log file for offline analysis. +Users can refresh the log content or download the current day's log file for offline analysis. +In the web application this is an always-visible Show Log button on the menu bar's right side.
  • Central Page Panel
  • Message Section on Main Panel
  • @@ -183,10 +194,10 @@ Users can refresh the log content or download the current day's log file for off -

    All operation results (success or exception) are displayed via MultiTagMessageUtil. When a project is loaded, the Player Panel's RenderingCanvas is set to isometric view using SetViewToIsometricView().

    +

    All operation results (success or exception) are reported as IMessage notifications through the MessageUtil helpers. When a project is loaded, the Player Panel's RenderingCanvas is set to isometric view using SetViewToIsometricView().

    Note
    -

    The implementation uses static functions of MultiTagMessageUtil for message handling. Async operations ensure smooth user experience during file I/O.

    +

    The implementation uses the MessageUtil extension methods for message handling. Async operations ensure smooth user experience during file I/O.

    Platform-Specific Differences

    WPF Application

    @@ -198,6 +209,7 @@ Users can refresh the log content or download the current day's log file for off
    • The Player Panel is the default panel displayed on the main page
    • The page URL and panel state are synchronized (bi-directional navigation)
    • +
    • There is no Environment dropdown. Machine Tool, Tool House, Fixture, Workpiece, Background / Coolant and Spindle Capability are all Player Control Tree roots or branches (their old routes redirect there), and Controller moved to Util → Legacy-Controller. The menu bar is therefore Project ▾ | Player | Util ▾ | Preference ▾.

    Source Code Locations

    See HiNC GUI Architecture for git repository links.

    @@ -209,9 +221,9 @@ Users can refresh the log content or download the current day's log file for off
    • Environments/PreferenceController.cs
    • Environments/ProjectController.cs
    • -
    • wwwroot/app.js
    • -
    • wwwroot/index.html
    • -
    • wwwroot/preference/log-viewer.js
    • +
    • wwwroot-src/src/components/AppMenuBar.vue — the whole navigation menu.
    • +
    • wwwroot-src/src/layouts/MainLayout.vue — the shell that hosts the menu bar and the central page panel.
    • +
    • wwwroot-src/src/pages/LogViewerPage.vue — the Log Viewer the Show Log button opens.
    diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/mech/background-coolant-page.html b/App/wwwroot/HiAPI-docsite/app-anatomy/mech/background-coolant-page.html index 9216d3e8..dee5003f 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/mech/background-coolant-page.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/mech/background-coolant-page.html @@ -2,9 +2,9 @@ - Background / Coolant Page | HiAPI-C# 2025 + Background / Coolant (Control Tree) | HiAPI-C# 2025 - + @@ -85,34 +85,36 @@
    -

    Background / Coolant Page

    +

    Background / Coolant (Control Tree)

    -

    The Background / Coolant page edits three thermal scalars on the current project's MachiningEquipment:

    +

    Background and Coolant are two leaves under the Player control tree's Equipment Setup group (/player?tree=equipment/background, /player?tree=equipment/coolant), sharing one panel component. They edit the thermal condition on the current project's MachiningEquipment:

    Key Model: MachiningEquipment (+ its CoolantHeatCondition).

    Note
    -

    This page exists only in the Quasar webservice. The WPF desktop app has no equivalent; the values are edited via scripting or XML.

    +

    These leaves exist only in the Quasar webservice. The WPF desktop app has no equivalent; the values are edited via scripting or XML.

    Layout

      -
    • Background / Coolant Page -
        -
      • Background Card +
      • Background leaf
      • -
      • Coolant Card +
      • Coolant leaf (pure WorkpieceMaterial layout — file pick on top, properties below)
        • “Not attached” badge — visible until the first coolant-related save (see Lazy CoolantHeatCondition creation below).
        • -
        • Coolant Temperature NumberField (°C) — CoolantHeatCondition.CoolantTemperature_C.
        • -
        • Coolant Convection Coefficient NumberField (W/(m²·K)) — CoolantHeatCondition.CoolantConvectionCoefficient_Wdm2K. Clamped to min: 0.
        • -
        • Sanity-range hint — echoes the table from CoolantHeatCondition.cs doc-comments (forced air 10–500, typical coolant 1000–10000).
        • +
        • File rowFilePathInput (.CoolantHeatCondition, resource subfolder CoolantHeatCondition) loading a saved condition by named root, plus a Save As… prompt exporting the current condition to a project-relative file. Tracked in MachiningEquipment.CoolantHeatConditionFile. The three standard cooling types ship as ready-made files in HiNc-Resource (Resource/CoolantHeatCondition/*.CoolantHeatCondition), so Browse Resource… starts populated like the workpiece-material picker — picking a shipped file is the cooling-type selection.
        • +
        • Name / Note — read-only mirror of the loaded condition.
        • +
        • Property fields (always visible, under Name / Note): +
            +
          • Coolant Temperature (°C) — CoolantTemperature_C.
          • +
          • Flood Convection Coefficient (W/(m²·K)) — CoolantConvectionCoefficient_Wdm2K, min: 0.
          • +
          • Mist / Flood Ratio — MistFloodConvectionRatio, min: 0.
          • +
          • Off (Air) Convection Coefficient (W/(m²·K)) — OffConvectionCoefficient_Wdm2K, min: 0.
        @@ -120,10 +122,11 @@

      Behavior

        -
      • Lazy CoolantHeatCondition creation. If the machining equipment has no CoolantHeatCondition yet, the first write lazy-creates one server-side so the page can edit a fresh project before the operator explicitly attaches a coolant condition. The “not attached” badge disappears once the first value is saved.
      • +
      • File-based conditions (WorkpieceMaterial pattern). Picking a .CoolantHeatCondition file installs it as the whole condition (XFactory.GenByFile); Save As… exports the current values and renames the condition after the file (IPreferredFileName). While MachiningEquipment.CoolantHeatConditionFile is set, the project save externalizes the condition as <CoolantHeatCondition><XmlSource>relPath</XmlSource></CoolantHeatCondition> and regenerates the side-file (a resource pick is copied into the project on save); with no file the legacy bare inline shape is kept byte-compatible. Coefficient edits tune this project's copy. The static presets on CoolantHeatCondition (StandardPresets / ApplyPreset / MatchStandardPreset) remain the API-side source of the shipped files.
      • +
      • Lazy CoolantHeatCondition creation. If the machining equipment has no CoolantHeatCondition yet, the first write lazy-creates one server-side so the panel can edit a fresh project before the operator explicitly attaches a coolant condition. The “not attached” badge disappears once the first value is saved.
      • Celsius is the wire format. CoolantHeatCondition stores Kelvin internally but exposes _C getters that handle the conversion.
      • -
      • No file IO. Background / coolant settings are part of the .hincproj save; there's no separate file to load.
      • -
      • Infinity round-trip. NumericInput handles Infinity for free. Background and coolant temperatures allow negatives (e.g. -40 °C for cryogenic coolant); the convection coefficient is clamped to min: 0.
      • +
      • No file IO. Background / coolant settings are part of the .hincproj save; there's no separate file to load. A fresh project value-matches StandardWaterSolubleCoolant (the class defaults), so the select starts on a meaningful entry instead of “Custom”.
      • +
      • Infinity round-trip. NumericInput handles Infinity for free. Background and coolant temperatures allow negatives (e.g. -40 °C for cryogenic coolant); the convection fields are clamped to min: 0.

      Source Code Path

      See HiNC App Anatomy for git repository links.

      @@ -134,22 +137,23 @@

      Web Page Application Source Code Path

      HiNC-2025-webservice (Quasar CLI SPA):

        -
      • wwwroot-src/src/pages/BackgroundCoolantPage.vue — routed page at /equipment/background-coolant.
      • +
      • wwwroot-src/src/components/controlTree/ThermalConditionPanel.vue — the shared Background / Coolant panel (keyed off the node's role path).
      • +
      • wwwroot-src/src/components/controlTree/useControlTreeHost.ts — the two ThermalCondition tree nodes under the Equipment Setup group.
      • wwwroot-src/src/api/backgroundCoolant.ts — typed wrapper over /api/mech/background-coolant/*.
      • -
      • wwwroot-src/src/router/routes.ts/equipment/background-coolant entry.
      • -
      • wwwroot-src/src/layouts/AppMenuBar.vueEnvironment → Background / Coolant menu entry below Workpiece.
      • Mech/BackgroundCoolantController.cs — REST endpoints:
          -
        • GET /api/mech/background-coolant — flat snapshot { hasEquipment, backgroundTemperature_C, hasCoolant, coolantTemperature_C, coolantConvectionCoefficient_Wdm2K }.
        • +
        • GET /api/mech/background-coolant — flat snapshot { hasEquipment, backgroundTemperature_C, hasCoolant, coolantTemperature_C, coolantConvectionCoefficient_Wdm2K, mistFloodConvectionRatio, offConvectionCoefficient_Wdm2K, coolantName, coolantNote, coolantHeatConditionFile }.
        • +
        • POST /load, POST /save-as{ rootName, relFile }: install a .CoolantHeatCondition file / export the current condition (extension auto-appended, renames via IPreferredFileName), both recording MachiningEquipment.CoolantHeatConditionFile.
        • PUT /background-temperature-c — set BackgroundTemperature_C.
        • PUT /coolant-temperature-c — lazy-creates CoolantHeatCondition if needed, then sets CoolantTemperature_C.
        • -
        • PUT /coolant-convection-coefficient-wdm2k — same pattern for the heat-transfer coefficient.
        • +
        • PUT /coolant-convection-coefficient-wdm2k, PUT /mist-flood-convection-ratio, PUT /off-convection-coefficient-wdm2k — same pattern for the three convection values (Custom mode).
    diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/mech/cutter/milling-cutter-panel.html b/App/wwwroot/HiAPI-docsite/app-anatomy/mech/cutter/milling-cutter-panel.html index 9473d598..61954c57 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/mech/cutter/milling-cutter-panel.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/mech/cutter/milling-cutter-panel.html @@ -147,7 +147,7 @@

    Property Tab

    -

    Visible if EnablePhysics is true.

    +

    Visible if EnablePhysics is true.

    -

    NcFileCommand Panel

    +

    NcFileCommand Panel (Program File)

    The key model is NcFileCommand.

    • Other Model: string BaseDirectory.
    +
    +
    Note
    +

    The GUI labels this command “Program File”: it plays NC, CL (CLSF) and CSV +files — the runner is picked by +NcKind +(Auto detects by file extension).

    +

    Layout

    • NcFileCommand Panel @@ -148,7 +155,7 @@ Set NC Code TextArea height resizable.

      Web Page Application Source Code Path

      HiNC-2025-webservice (Quasar CLI SPA):

        -
      • wwwroot-src/src/components/mission/NcFileCommandPanel.vue — NC File text field + Browse (prompt-based per apply-prompt-instead-of-local-file-upload-browser) + <q-banner> live file-info banner + Preview dialog. File-loading is server-side; the browser never uploads file bytes.
      • +
      • wwwroot-src/src/components/mission/NcFileCommandPanel.vue — Program File text field + Browse (prompt-based per apply-prompt-instead-of-local-file-upload-browser) + “Play As” NC-kind select (Auto / Brand NC / CL / CSV) + <q-banner> live file-info banner + Preview dialog. File-loading is server-side; the browser never uploads file bytes.
      • wwwroot-src/src/api/mission.ts — typed wrapper over the NcFile-related endpoints on MissionController.cs.
      • Missions/MissionController.cs — REST endpoints for NcFile property updates and file-info queries.
      diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/mission/PostExecutionCommand-panel.html b/App/wwwroot/HiAPI-docsite/app-anatomy/mission/PostExecutionCommand-panel.html index e4b5c0f6..bcf62960 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/mission/PostExecutionCommand-panel.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/mission/PostExecutionCommand-panel.html @@ -96,7 +96,7 @@
    • Assistant Model
    @@ -120,7 +120,7 @@
  • Output Shot Files Section -Visible if EnablePhysics is true. +Visible if EnablePhysics is true.
  • Source Code Path

    See this page for git repository.

    WPF Application Source Code Path

    @@ -183,7 +207,7 @@ Visible if Web Page Application Source Code Path

    HiNC-2025-webservice (Quasar CLI SPA):

      -
    • wwwroot-src/src/components/mission/PostExecutionCommandPanel.vue — five cards: Step Files / Shot Files / Optimization / Geom Diff / Runtime Geom. Shot Files and Optimization cards are gated on appState.isShowPhysicsOptions (matches legacy). GeomDiff is embedded inline because it is a property on PostExecutionCommand rather than a standalone ISessionCommand.
    • +
    • wwwroot-src/src/components/mission/PostExecutionCommandPanel.vue — five cards: Step Files / Shot Files / Optimization / CL → NC Writeback / Geom Diff. Shot Files and Optimization cards are gated on appState.isShowPhysicsOptions (matches legacy). GeomDiff is embedded inline because it is a property on PostExecutionCommand rather than a standalone ISessionCommand.
    • wwwroot-src/src/api/mission.ts — typed wrapper; uses commands/{path}/postexecution/* endpoints including enable-geom-diff + geom-diff-detect-radius-mm.
    • Missions/MissionController.cs — REST endpoints for PostExecution per-property PUTs.
    diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/mission/PreSettingCommand-panel.html b/App/wwwroot/HiAPI-docsite/app-anatomy/mission/PreSettingCommand-panel.html index 145d0706..086f8d58 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/mission/PreSettingCommand-panel.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/mission/PreSettingCommand-panel.html @@ -96,7 +96,7 @@
  • Assistant Model
  • @@ -181,7 +181,7 @@ If Web Page Application Source Code Path

    HiNC-2025-webservice (Quasar CLI SPA):

      -
    • wwwroot-src/src/components/mission/PreSettingCommandPanel.vue — Runtime Geometry + Machining Resolution + Motion Resolution type select (with embedded Fixed sub-fields: Linear + Rotary) + Collision / Pause / Physics checkboxes. MachiningMotionResolution is embedded inline because it is a property on PreSettingCommand rather than a standalone ISessionCommand.
    • +
    • wwwroot-src/src/components/mission/PreSettingCommandPanel.vue — Meshed Geometry + Machining Resolution + Motion Resolution type select (with embedded Fixed sub-fields: Linear + Rotary) + Collision / Pause / Physics checkboxes. MachiningMotionResolution is embedded inline because it is a property on PreSettingCommand rather than a standalone ISessionCommand.
    • wwwroot-src/src/api/mission.ts — typed wrapper; uses commands/{path}/presetting/* endpoints including machining-motion-resolution-type, fixed-linear-resolution-mm, fixed-rotary-resolution-deg.
    • Missions/MissionController.cs — REST endpoints for PreSetting per-property PUTs.
    diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/mission/SimpleSessionCommand-panel.html b/App/wwwroot/HiAPI-docsite/app-anatomy/mission/SimpleSessionCommand-panel.html deleted file mode 100644 index eaf352f7..00000000 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/mission/SimpleSessionCommand-panel.html +++ /dev/null @@ -1,246 +0,0 @@ - - - - - Classic Session Command Panel | HiAPI-C# 2025 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    -
    -
    -
    -
    Table of Contents
    - -
    -
    - -
    -
    -
    - -
    -
    - - - -
    - -
    -

    Classic Session Command Panel

    - -

    The key model is SimpleSessionCommand.

    -

    Layout

    -
      -
    • Head Line - -
    • -
    • Title Label
    • -
    • Session Management Panel -
        -
      • NC/Command List Tab -
          -
        • Shell Commands ListBox -
            -
          • The model is NcCommandList.
          • -
          • Support add, remove, reorder commands.
          • -
          • The items are multi-selectable.
          • -
          • Support file drag from the external application (such as file explorer), files drag into the Shell Commands List is equivalent to create NcFileCommands.
          • -
          -
          -
          Tip
          -

          don't use file filter to the drag behavior

          -
          -
            -
          • On each NC File Command: -
              -
            • Only one line for each entry.
            • -
            • Batch Selection CheckBox with ‘Select’ Text Label
            • -
            • NC File Command Panel.
            • -
            -
          • -
          • The horizontal auto scroll bar is required.
          • -
          -
        • -
        -
      • -
      • Output Tab -
          -
        • Output Shot Files Tab - -
        • -
        • Output Step Files Tab -
            -
          • Enable Write Step Files CheckBox - -
          • -
          • Step File Template Label
          • -
          • Step File Template Text Field -
              -
            • The model is StepFileTemplate.
            • -
            • Default value: “Output/[NcName].step.csv”
            • -
            -
          • -
          • Apply one line layout to the label and the text field.
          • -
          -
        • -
        • Optimization Files Tab - -
        • -
        -
      • -
      • Geometry Difference Tab -
          -
        • Enable Geom Diff CheckBox - -
        • -
        • Geom Diff Detect Radius (mm) Number Field - -
        • -
        -
      • -
      -
    • -
    -
    -
    Tip
    -

    Use Disabled Style if the section key checkbox is not checked.

    -
    -
    -
    Tip
    -

    The file templates support placeholder [NcName] which will be replaced with actual NC program name.

    -
    -

    WPF Application Source Code Path

    -
      -
    • Mission/SimpleSessionCommandPanel
    • -
    -

    see this page for git repository.

    - -
    - -
    -
    - - - -
    - -
    - -
    -
    - -
    - - - - diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/mission/index.html b/App/wwwroot/HiAPI-docsite/app-anatomy/mission/index.html index a818992f..6ce73c68 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/mission/index.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/mission/index.html @@ -94,7 +94,7 @@
  • Supporting:
  • diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/player/index.html b/App/wwwroot/HiAPI-docsite/app-anatomy/player/index.html index 232bd873..1e604fca 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/player/index.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/player/index.html @@ -91,7 +91,7 @@

    Key Models

    Associated Tool Bars

      @@ -128,7 +128,7 @@

      RenderingCanvas Behavior

      The RenderingCanvas displays the machining project visualization:

        -
      1. On initialization, a MachiningProjectDisplayee is created and assigned to RenderingCanvas.DispEngine.Displayee
      2. +
      3. On initialization, a MachiningProjectDisplayee (the front-end's own copy of the GUI-layer displayee) is created and assigned to RenderingCanvas.DispEngine.Displayee
      4. The displayee receives project data from LocalProjectService
      5. The RenderingCanvas is disposed when the Player Panel is disposed
      diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/player/player-extended-renderingcanvas-tool-bar.html b/App/wwwroot/HiAPI-docsite/app-anatomy/player/player-extended-renderingcanvas-tool-bar.html index d54c34ff..15eaad12 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/player/player-extended-renderingcanvas-tool-bar.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/player/player-extended-renderingcanvas-tool-bar.html @@ -88,18 +88,18 @@

      Player extended RenderingCanvas Tool Bar

      The model of the tool bar is DispEngine which is assigned from the RenderingCanvas of Player Panel.

      -

      The content of DispEngine.Displayee here is MachiningProjectDisplayee. the key content of the MachiningProjectDisplayee is MachiningProject.

      -

      The sub-model is MachiningProjectDisplayee and MachiningProject.

      +

      The content of DispEngine.Displayee here is MachiningProjectDisplayee. the key content of the MachiningProjectDisplayee is MachiningProject.

      +

      The sub-model is MachiningProjectDisplayee and MachiningProject.

      Layout

      • Player extended RenderingCanvas Tool Bar
        • Show CL Strip Button
        • Show CL Strip Dots Button -Only editable if the ClStrip in RenderingFlagBitArray is true.
        • +Only editable if the ClStrip in MachiningProjectDisplayee.RenderingFlagBitArray is true.
        • Fit View Button
        • Rendering Items SubMenu -RenderingFlag-based checkboxes that deal the boolean value in RenderingFlagBitArray, such as “Show Machine”, “Show Workpiece”, etc.. +RenderingFlag-based checkboxes that deal the boolean value in MachiningProjectDisplayee.RenderingFlagBitArray, such as “Show Machine”, “Show Workpiece”, etc.. Except the ClStrip option since there has already be managed by the Show CL Strip Button. Show HeidenhainCoordinate checkbox only if MachiningProject.NcEnv.CncBrand is Heidenhain. Create the submenu component class since the other GUI component also use it. See controller page
        • @@ -111,10 +111,10 @@ Create the submenu component class since the other GUI component also use it. Se

          checkboxs in Project Rendering Items SubMenu can be classified by the category of RenderingFlag (see the hyperlink for the categories).

    Behavior of CL Strip Buttons and Fit View Button

    -

    Apply RenderingFlagBitArray to set the Project Rendering Items.

    +

    Apply MachiningProjectDisplayee.RenderingFlagBitArray to set the Project Rendering Items.

    Tip
    -

    Extract the MachiningProject From the MachiningProjectDisplayee and use it to set the behaviors.

    +

    Extract the MachiningProject From the MachiningProjectDisplayee and use it to set the behaviors.

    Behavior of Project Rendering Items DropDown

    See DemoRenderingMachiningProcessAndStripPosSelection for the sample code to complete the behavior of the buttons.

    diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/player/selected-step-info-panel.html b/App/wwwroot/HiAPI-docsite/app-anatomy/player/selected-step-info-panel.html index 5e04baa4..3e50942a 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/player/selected-step-info-panel.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/player/selected-step-info-panel.html @@ -88,9 +88,9 @@

    Selected-Step Info Panel

    The panel locates on the Player Panel.

    -

    The model is MachiningStep and UserService.

    +

    The model is MachiningStep and UserService.

    The MachiningStep is assigned by ClStrip.PosSelected.

    -

    Show step infomation from DisplayedStepPresentAccessList.

    +

    Show step infomation from DisplayedStepPresentAccessList.

    The resx of MachiningStep contains the translation of PresentAttribute.Name, apply the translation to the GUI. If the translation not existed, use the original value.

    See Also Step Present Preference Page.

    Sample Code

    diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/preference/graphic-cache-dropdown.html b/App/wwwroot/HiAPI-docsite/app-anatomy/preference/graphic-cache-dropdown.html index ba54c9ad..f6cbdb7c 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/preference/graphic-cache-dropdown.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/preference/graphic-cache-dropdown.html @@ -87,8 +87,8 @@

    Graphic-Cache SubMenu

    -

    The submenu locates on the Preference Menu Dropdown.

    -

    The model UserService is from its parent component.

    +

    In the WPF application the submenu locates on the Preference Menu Dropdown. The web application moved it onto the Player toolbar's Workpiece ▾ dropdown, since it acts on the workpiece meshed geometry's rendering cache.

    +

    The model UserService is from its parent component.

    Layout

    • Graphic-Cache SubMenu @@ -101,7 +101,7 @@

    Behavior

    -

    Graphic-Cache Input Text Field and Graphic-Cache Slider bind the GraphicCacheMb. The limit text fields also bind to the properties of UserConfig.

    +

    Graphic-Cache Input Text Field and Graphic-Cache Slider bind the GraphicCacheMb. The limit text fields also bind to the properties of UserConfig.

    Source Code Path

    See this page for git repository.

    WPF Application Source Code Path

    @@ -111,9 +111,9 @@

    Web Page Application Source Code Path

    HiNC-2025-webservice (Quasar CLI SPA):

      -
    • wwwroot-src/src/components/preference/GraphicCacheMenu.vue — nested <q-menu> under Preference → Graphic Cache with Lower / Upper (NumericInput) + Current (NumericInput) + <q-slider>. Commits on blur / change.
    • +
    • wwwroot-src/src/components/preference/GraphicCacheMenu.vue — nested <q-menu> under Workpiece → Graphic Cache with Lower / Upper (NumericInput) + Current (NumericInput) + <q-slider>. Commits on blur / change.
    • wwwroot-src/src/components/widgets/NumericInput.vue — shared Infinity-friendly numeric field reused for the three limit inputs.
    • -
    • wwwroot-src/src/layouts/AppMenuBar.vue — hosts the Graphic Cache entry inside the Preference dropdown.
    • +
    • wwwroot-src/src/components/player/PlayerExtendedToolBar.vue — hosts the Graphic Cache entry inside the Player toolbar's Workpiece ▾ dropdown (next to Diff Visual Radius). The menu bar (wwwroot-src/src/components/AppMenuBar.vue) no longer carries it.
    • wwwroot-src/src/api/preference.ts — typed wrapper over GET/POST /api/preference/graphic-cache.
    • Environments/PreferenceController.cs — REST endpoints: GET /api/preference/graphic-cache returns { graphicCacheMb, lowerLimitMb, upperLimitMb }; POST writes through UserService.SaveUserConfig()UserConfig.GraphicCacheMbCubeTree.DispCacheMb.
    diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/preference/index.html b/App/wwwroot/HiAPI-docsite/app-anatomy/preference/index.html index c9f02cdf..18b9ff1c 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/preference/index.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/preference/index.html @@ -87,28 +87,37 @@

    Preference Menu Dropdown

    -

    The model of the UI is UserService. -UserService contains UserConfig, which is rapidly used in the GUI.

    +

    The model of the UI is UserService. +UserService contains UserConfig, which is rapidly used in the GUI.

    The dropdown is on the Main Panel.

    Layout

    +

    So the web application's Preference dropdown itself carries only the Language submenu and the Show Physics Options checkbox.

    Source Code Locations

    See HiNC GUI Architecture for git repository links.

    WPF Application

    @@ -117,7 +126,7 @@ The button does not exist on WPF application.

    Web Application

      -
    • wwwroot/preference/preference-menu.js
    • +
    • wwwroot-src/src/components/AppMenuBar.vue — the Preference ▾ dropdown itself.
    • Environments/PreferenceController.cs
    diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/preference/language-selection-submenu.html b/App/wwwroot/HiAPI-docsite/app-anatomy/preference/language-selection-submenu.html index 184aa8a9..08e31464 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/preference/language-selection-submenu.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/preference/language-selection-submenu.html @@ -88,7 +88,7 @@

    Language Selection SubMenu

    The submenu locates on the Preference Menu Dropdown.

    -

    The model UserService is from its parent component.

    +

    The model UserService is from its parent component.

    Load the language preference on application start.

    Note
    @@ -113,7 +113,7 @@

    Web Page Application Source Code Path

    HiNC-2025-webservice (Quasar CLI SPA):

      -
    • wwwroot-src/src/layouts/AppMenuBar.vue — nested Preference → Language ▸ dropdown with English / 简体中文 / 繁體中文 radio items. The selected code is persisted via appState.setLanguageCode(code).
    • +
    • wwwroot-src/src/components/AppMenuBar.vue — nested Preference → Language ▸ dropdown with English / 简体中文 / 繁體中文 radio items. The selected code is persisted via appState.setLanguageCode(code).
    • wwwroot-src/src/stores/appState.tslanguageCode state + setLanguageCode(code) action; hydrated on layout mount by loadServerPreferences().
    • wwwroot-src/src/api/preference.ts — typed wrapper over GET/POST /api/preference/language.
    • Environments/PreferenceController.cs — REST endpoints: GET /api/preference/language{ languageCode }; POST validates against ["en", "zh-Hans", "zh-Hant"] and writes through UserService.SaveUserConfig()UserConfig.LanguageCode.
    • diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/preference/step-present-preference-page.html b/App/wwwroot/HiAPI-docsite/app-anatomy/preference/step-present-preference-page.html index 887a2274..d720eedb 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/preference/step-present-preference-page.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/preference/step-present-preference-page.html @@ -87,9 +87,9 @@

      Step Present Preference Page

      -

      The model UserService is from its parent component. The UserConfig is rapidly used.

      -

      The model of Candidate Keys Panel is CandidateStepPresentKeyList. -The model of Displayed Keys Panel is DisplayedStepPresentKeyList.

      +

      The model UserService is from its parent component. The UserConfig is rapidly used.

      +

      The model of Candidate Keys Panel is CandidateStepPresentKeyList. +The model of Displayed Keys Panel is DisplayedStepPresentKeyList.

      Layout

      • Step Present Preference Page (or window) @@ -124,15 +124,15 @@ The model of Displayed Keys Panel is MachiningStep, a category panel (Category Other Panel) for the uncategoried keys is required.

        -

        The keys in the Displayed Keys Panel is in sequence of DisplayedStepPresentKeyList. User tune the sequence and remove key by the Displayed Keys Panel. User add and remove the key from the ToggleButtons in Candidate Keys Panel. Those UI control items are required.

        +

        The keys in the Displayed Keys Panel is in sequence of DisplayedStepPresentKeyList. User tune the sequence and remove key by the Displayed Keys Panel. User add and remove the key from the ToggleButtons in Candidate Keys Panel. Those UI control items are required.

        To both Candidate Keys Panel and Displayed Keys Panel: -Apply PresentAttribute.Name as Key label by StepPresentAccessDictionary. Apply the key to the button tooltip.

        +Apply PresentAttribute.Name as Key label by StepPresentAccessDictionary. Apply the key to the button tooltip.

        The resx of MachiningStep contains the translation of PresentAttribute.Name, apply the translation to the GUI. If the translation not existed, use the original value.

        Categories

        Categories are a GUI-level grouping of keys. The seven canonical categories are hard-coded on both the WPF window and the webservice backend, and share the same nameof(MachiningStep.*) switch so that adding a new property requires one change in one place (ResolveStepPresentCategory(key)). The current category order is:

        1. File (NcName, NcLineNumber, …).
        2. -
        3. Time (AccumulatedTime, StepTime, …).
        4. +
        5. Time (EndTimecode, StepTime, …).
        6. Tool (ToolId, CutterName, …).
        7. Coordinate (Position, Coordinate, Orientation, …).
        8. Motion (Feedrate, SpindleSpeed, Move, …).
        9. diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/session-message-panel/index.html b/App/wwwroot/HiAPI-docsite/app-anatomy/session-message-panel/index.html index 23e7a82f..d28e0e63 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/session-message-panel/index.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/session-message-panel/index.html @@ -87,70 +87,73 @@

          Session Message Panel

          -

          The model is SessionProgress.

          -

          LocalProjectService is obtained via dependency injection.

          +

          Session messages are partitioned by kind into three sinks on LocalProjectService (obtained via dependency injection):

          + +

          The panel surfaces each sink in its own tab, so one tab holds one message kind.

          Layout

            -
          • Top Message Filter ToolBar +
          • Tab Bar
              -
            • Message Type Filter SubMenu -
                -
              • NC CheckBox
              • -
              • Progress CheckBox
              • -
              • Error CheckBox
              • +
              • Shell Tab
              • +
              • NC Diagnostics Tab
              • +
              • Step Diagnostics Tab
            • -
            • Message Text Filter Input +
            • Per-Tab Content
                -
              • Message Text Filter Input Text Area
              • -
              • Message Text Filter Reset Button
              • +
              • Message Text Filter Input
              • +
              • Message Table
            • -
            • Export Button
            -
          • -
          • Central Message Table
          • +

            Message Table (per tab)

            +

            Each tab renders its sink's message list — Messages, Diagnostics, or Messages — as rows of:

            +
              +
            • Severity (colour-coded via GetSeverity())
            • +
            • Anchor — the kind-specific position: the NC sentence index (Sn) for NC diagnostics, the step index for step diagnostics, none for shell messages
            • +
            • MessageGetId() and GetNotification()
            -

            Central Message Table

            -

            The model of Central Message Table is SessionProgress.MessageCollection.

            -

            Only take last 1000 filtered elements in the MessageCollection by GetFliteredList(FilterFlag, string) to show for user experience. Find the usage example in the code:

            +

            Only take the last filtered elements (e.g. 500–1000) for user experience. Find the usage example in the code:

            internal static void DemoUseSessionMessageHost(LocalProjectService localProjectService)
             {
            -    SessionProgress sessionMessageHost = localProjectService.SessionProgress;
            +    // Session messages are partitioned by kind into three sinks on LocalProjectService:
            +    // - ShellProgress: session-level routine / lifecycle messages
            +    //   (session-scoped: null outside BeginSession/EndSession).
            +    // - NcDiagnosticProgress: NC-pipeline diagnostics, anchored to the NC source sentence.
            +    // - StepDiagnosticProgress: diagnostics anchored to a motion step.
             
            -    SessionProgress.FilterFlag filterFlags =
            -        SessionProgress.FilterFlag.NC |
            -        SessionProgress.FilterFlag.Progress |
            -        SessionProgress.FilterFlag.Error;
            -    string filterText = null;
            -    var filteredSessionMessageList = sessionMessageHost
            -        .GetFliteredList(filterFlags, filterText);
            +    ShellProgress shellProgress = localProjectService.ShellProgress;
            +    List<IMessage> shellMessages = shellProgress == null
            +        ? new List<IMessage>() : shellProgress.Messages.ToList();
            +    foreach (IMessage message in shellMessages)
            +        Console.WriteLine(
            +            $"Shell [{message.GetSeverity()}] {message.GetId()}: {message.GetNotification()}");
             
            -    foreach (var sessionMessage in filteredSessionMessageList)
            +    foreach (NcDiagnostic diagnostic in
            +        localProjectService.NcDiagnosticProgress.Diagnostics.ToList())
                 {
            -        //M.I.: Message Index.
            -        Console.Write($"M.I.: {sessionMessage.Index}; Role: {sessionMessage.MessageRoleText}");
            -
            -        // For SessionMessageHost.FilterFlag.NC
            -        var nc = sessionMessage.DirectInstantSourceCommand;
            -        if (nc != null)
            -            Console.Write($"Message/NC: {nc.Line}; File: {nc.FilePath}; LineNo: {nc.GetLineNo()}; ");
            -
            -        // For SessionMessageHost.FilterFlag.Progress or Error.
            -        var multiTagMessage = sessionMessage.MultiTagMessage;
            -        if (multiTagMessage != null)
            -            Console.WriteLine($"Message/NC: {multiTagMessage.Message}");
            -        var exception = sessionMessage.Exception;
            -        if (exception != null)
            -            Console.WriteLine($"Message/NC: {exception.Message}");
            +        var ncLine = diagnostic.SentenceCarrier?.GetSentence()?.FirstIndexedFileLine;
            +        Console.WriteLine(
            +            $"NC [{diagnostic.GetSeverity()}] {diagnostic.GetId()}: {diagnostic.GetNotification()}; " +
            +            $"File: {ncLine?.FilePath}; LineNo: {ncLine?.GetLineNo()}; NC: {ncLine?.Line}");
                 }
            +
            +    foreach (StepDiagnostic diagnostic in
            +        localProjectService.StepDiagnosticProgress.Messages.ToList())
            +        Console.WriteLine(
            +            $"Step {diagnostic.StepIndex} [{diagnostic.GetSeverity()}] " +
            +            $"{diagnostic.GetId()}: {diagnostic.GetNotification()}");
            +
                 File.WriteAllLines("output-session-messages.txt",
            -        filteredSessionMessageList.Select(m =>
            -        $"Msg[{m.Index}][{m.MessageRoleText}]: {m}"));
            +        shellMessages.Select(m =>
            +        $"[{m.GetSeverity()}] {m.GetId()}: {m.GetNotification()}"));
             }
             
            -

            In the table, show the columns: Role, NC/Message.

            -

            Add update table event to CollectionItemChanged. The updating process has to be called by Loose Manner for user experience.

            +

            Add the update-table event per sink: MessageAdded / MessageAdded, and for the session-scoped shell sink the app-lifetime bridge OnShellMessageAdded (with the matching Cleared events). The updating process has to be called by Loose Manner for user experience.

            Tip

            On window desktop application (WPF), consider use textarea instead of datagrid to MessageTable for better performance. Use padding to show the different columns. And use the font in the textarea that with consistent width.

            @@ -160,9 +163,9 @@

            The message display should be real-time.

            Behavior of Export Button

            -

            Export ALL filtered elements in the MessageCollection by GetFliteredList(FilterFlag, string).

            +

            Export ALL filtered elements of the active tab's sink.

            SignalR Implementation (Webapi Only)

            -

            SessionMessageHub provides real-time message updates with method GetSessionMessages(string filterFlags, string filterText, int limit) and event SessionMessagesUpdated. SessionMessageService monitors CollectionItemChanged and broadcasts updates. The service uses LooseRunner for non-blocking async operations. The JavaScript component connects to /sessionMessageHub to receive real-time message updates.

            +

            One hub per sink — /shellMessageHub, /ncDiagnosticHub, /stepDiagnosticHub — each with a GetMessages(int limit) pull returning MessagesUpdate { messages, totalCount }. A per-sink broadcast service subscribes its sink's MessageAdded/Cleared and raises a coalesced MessagesChanged notification via LooseRunner; the client re-pulls the recent window on each notification (loss-free regardless of how many appends coalesced). The JavaScript components connect to the three hubs to receive real-time updates.

            Source Code Path

            See this page for git repository.

            WPF Application Source Code Path

            @@ -171,10 +174,12 @@

          Web Page Application Source Code Path

            -
          • wwwroot/player/session-message-panel.js (Vue component)
          • -
          • Players/PlayerController.cs (REST API - GetSessionMessages endpoint)
          • -
          • Players/SessionMessageService.cs (Business logic)
          • -
          • Players/SessionMessageHub.cs (SignalR Hub for real-time updates)
          • +
          • wwwroot-src/src/components/player/SessionMessagePanel.vue (tabbed panel)
          • +
          • wwwroot-src/src/components/player/SessionMessageTab.vue + MessageRow.vue (per-tab list)
          • +
          • wwwroot-src/src/composables/useSessionSinkHub.ts (the three hub composables)
          • +
          • Players/SessionSinkHub.cs (SignalR hubs for the three sinks)
          • +
          • Players/SessionSinkBroadcastService.cs + {Shell,Nc,Step}*BroadcastService.cs (subscribe-and-rebroadcast)
          • +
          • Players/SessionSinkDtos.cs (typed DTOs)
          diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/toc.html b/App/wwwroot/HiAPI-docsite/app-anatomy/toc.html index f4d8e0ac..db9756d9 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/toc.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/toc.html @@ -146,7 +146,7 @@ Geometry Management Panel
        10. - Runtime Geometry Panel + Meshed Geometry Panel
        11. STL File Control @@ -265,9 +265,6 @@
        12. PostExecution Command Panel
        13. -
        14. - Classic Session Command Panel -
    diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/toc.json b/App/wwwroot/HiAPI-docsite/app-anatomy/toc.json index 2a3d3249..7a394b50 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/toc.json +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/toc.json @@ -1,2 +1,2 @@ -{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"General Rules","href":"general-rules.html","topicHref":"general-rules.html"},{"name":"Common Patterns","items":[{"name":"DictionaryService and DictionaryHub Pattern","href":"common/dictionary-service-pattern.html","topicHref":"common/dictionary-service-pattern.html"},{"name":"Webapi with Hub Cleanup Assistence Pattern","href":"common/webapi-with-hub-cleanup-assistence-pattern.html","topicHref":"common/webapi-with-hub-cleanup-assistence-pattern.html"}]},{"name":"Web Service Architecture","items":[{"name":"Rendering Canvas on Web Service","href":"hinc-web-service/disp-web-service.html","topicHref":"hinc-web-service/disp-web-service.html"}]},{"name":"Initialize HiAPI","href":"initialize-hiapi.html","topicHref":"initialize-hiapi.html"},{"name":"Main Panel","href":"main-panel.html","topicHref":"main-panel.html"},{"name":"Bottom Message Bar (UI Notification)","href":"message-section-on-main-panel.html","topicHref":"message-section-on-main-panel.html"},{"name":"RenderingCanvas Tool Bar","href":"renderingcanvas-tool-bar.html","topicHref":"renderingcanvas-tool-bar.html"},{"name":"Player Panel","href":"player/index.html","topicHref":"player/index.html","items":[{"name":"Player Tool Bar","href":"player/player-tool-bar.html","topicHref":"player/player-tool-bar.html"},{"name":"Player Extended RenderingCanvas Tool Bar","href":"player/player-extended-renderingcanvas-tool-bar.html","topicHref":"player/player-extended-renderingcanvas-tool-bar.html"},{"name":"Selected-Step Info Panel","href":"player/selected-step-info-panel.html","topicHref":"player/selected-step-info-panel.html"},{"name":"Strip Charts","href":"player/strip-charts.html","topicHref":"player/strip-charts.html"},{"name":"Cycle-Line Charts","href":"player/cycle-line-charts.html","topicHref":"player/cycle-line-charts.html"}]},{"name":"Session Message Panel","href":"session-message-panel/index.html","topicHref":"session-message-panel/index.html"},{"name":"Preference","items":[{"name":"Preference Menu","href":"preference/index.html","topicHref":"preference/index.html"},{"name":"Graphic-Cache Dropdown","href":"preference/graphic-cache-dropdown.html","topicHref":"preference/graphic-cache-dropdown.html"},{"name":"Language Selection","href":"preference/language-selection-submenu.html","topicHref":"preference/language-selection-submenu.html"},{"name":"Step Present Preference","href":"preference/step-present-preference-page.html","topicHref":"preference/step-present-preference-page.html"}]},{"name":"Widget","items":[{"name":"Vec3d Control","href":"widget/vec3d/index.html","topicHref":"widget/vec3d/index.html"},{"name":"Mat4d Control","href":"widget/mat4d/index.html","topicHref":"widget/mat4d/index.html"},{"name":"Object Management Menu Button","href":"widget/object-management-menu-button.html","topicHref":"widget/object-management-menu-button.html"},{"name":"GUI File Path Assignment","href":"widget/gui-file-path-assignment.html","topicHref":"widget/gui-file-path-assignment.html"},{"name":"Polar Resolution 2D Panel","href":"widget/polar-resolution-2d-panel.html","topicHref":"widget/polar-resolution-2d-panel.html"},{"name":"Numeric Input/Output Utilities","href":"widget/numeric-io-utilities.html","topicHref":"widget/numeric-io-utilities.html"},{"name":"Resizable Bar","href":"widget/resizable-bar.html","topicHref":"widget/resizable-bar.html"}]},{"name":"Geometry Panels","href":"geom/index.html","topicHref":"geom/index.html","items":[{"name":"Box3d Control","href":"geom/box3d-control.html","topicHref":"geom/box3d-control.html"},{"name":"Cylindroid Control","href":"geom/cylindroid-control.html","topicHref":"geom/cylindroid-control.html"},{"name":"Extended Cylinder Panel","href":"geom/extended-cylinder-panel.html","topicHref":"geom/extended-cylinder-panel.html"},{"name":"Geometry Combination Control","href":"geom/geom-combination-control.html","topicHref":"geom/geom-combination-control.html"},{"name":"Geometry Management Panel","href":"geom/geom-manage-control.html","topicHref":"geom/geom-manage-control.html"},{"name":"Runtime Geometry Panel","href":"geom/runtime-geom-panel.html","topicHref":"geom/runtime-geom-panel.html"},{"name":"STL File Control","href":"geom/stlfile-control.html","topicHref":"geom/stlfile-control.html"},{"name":"Transformation Geometry Control","href":"geom/transformation-geom-control.html","topicHref":"geom/transformation-geom-control.html"}]},{"name":"Mechanism","items":[{"name":"Transformers","href":"mech/topo/transformers.html","topicHref":"mech/topo/transformers.html"},{"name":"Machine Tool Page","href":"mech/machining-chain-page.html","topicHref":"mech/machining-chain-page.html"},{"name":"Mechanism Builder Page","href":"mech/mech-builder-page.html","topicHref":"mech/mech-builder-page.html"},{"name":"Tool House Page","href":"mech/tool-house-page.html","topicHref":"mech/tool-house-page.html"},{"name":"Fixture Page","href":"mech/fixture-page.html","topicHref":"mech/fixture-page.html"},{"name":"Workpiece Page","href":"mech/workpiece-page.html","topicHref":"mech/workpiece-page.html"},{"name":"Spindle Capability Page","href":"mech/spindle-capability-page.html","topicHref":"mech/spindle-capability-page.html"},{"name":"Background / Coolant Page","href":"mech/background-coolant-page.html","topicHref":"mech/background-coolant-page.html"},{"name":"Stick Tool Panel","href":"mech/stick-tool-panel/index.html","topicHref":"mech/stick-tool-panel/index.html"},{"name":"Holder Panel","href":"mech/holder/index.html","topicHref":"mech/holder/index.html","items":[{"name":"Freeform Holder Panel","href":"mech/holder/freeform-holder-panel.html","topicHref":"mech/holder/freeform-holder-panel.html"},{"name":"Cylindroid Holder Panel","href":"mech/holder/cylindroid-holder-panel.html","topicHref":"mech/holder/cylindroid-holder-panel.html"}]},{"name":"Cutter Panel","href":"mech/cutter/index.html","topicHref":"mech/cutter/index.html","items":[{"name":"Milling Cutter Panel","href":"mech/cutter/milling-cutter-panel.html","topicHref":"mech/cutter/milling-cutter-panel.html"},{"name":"Freeform Remover Panel","href":"mech/cutter/freeform-remover-panel.html","topicHref":"mech/cutter/freeform-remover-panel.html"},{"name":"APT Profile Panel","href":"mech/cutter/apt-profile-panel.html","topicHref":"mech/cutter/apt-profile-panel.html"}]}]},{"name":"Controller Page","href":"controller/index.html","topicHref":"controller/index.html","items":[{"name":"Web Implementation","href":"controller/web-implementation.html","topicHref":"controller/web-implementation.html"}]},{"name":"Util","href":"util/index.html","topicHref":"util/index.html","items":[{"name":"File Explorer","href":"util/file-explorer.html","topicHref":"util/file-explorer.html"}]},{"name":"Mission Page","href":"mission/index.html","topicHref":"mission/index.html","items":[{"name":"Script Command Panel","href":"mission/script-command-panel.html","topicHref":"mission/script-command-panel.html"},{"name":"List Command Panel","href":"mission/ListCommand-panel.html","topicHref":"mission/ListCommand-panel.html"},{"name":"PreSetting Command Panel","href":"mission/PreSettingCommand-panel.html","topicHref":"mission/PreSettingCommand-panel.html"},{"name":"NcOptOption Panel","href":"mission/NcOptOption-panel.html","topicHref":"mission/NcOptOption-panel.html"},{"name":"NcFile Command Panel","href":"mission/NcFileCommand-panel.html","topicHref":"mission/NcFileCommand-panel.html"},{"name":"NcCode Command Panel","href":"mission/NcCodeCommand-panel.html","topicHref":"mission/NcCodeCommand-panel.html"},{"name":"PostExecution Command Panel","href":"mission/PostExecutionCommand-panel.html","topicHref":"mission/PostExecutionCommand-panel.html"},{"name":"Classic Session Command Panel","href":"mission/SimpleSessionCommand-panel.html","topicHref":"mission/SimpleSessionCommand-panel.html"}]}]} +{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"General Rules","href":"general-rules.html","topicHref":"general-rules.html"},{"name":"Common Patterns","items":[{"name":"DictionaryService and DictionaryHub Pattern","href":"common/dictionary-service-pattern.html","topicHref":"common/dictionary-service-pattern.html"},{"name":"Webapi with Hub Cleanup Assistence Pattern","href":"common/webapi-with-hub-cleanup-assistence-pattern.html","topicHref":"common/webapi-with-hub-cleanup-assistence-pattern.html"}]},{"name":"Web Service Architecture","items":[{"name":"Rendering Canvas on Web Service","href":"hinc-web-service/disp-web-service.html","topicHref":"hinc-web-service/disp-web-service.html"}]},{"name":"Initialize HiAPI","href":"initialize-hiapi.html","topicHref":"initialize-hiapi.html"},{"name":"Main Panel","href":"main-panel.html","topicHref":"main-panel.html"},{"name":"Bottom Message Bar (UI Notification)","href":"message-section-on-main-panel.html","topicHref":"message-section-on-main-panel.html"},{"name":"RenderingCanvas Tool Bar","href":"renderingcanvas-tool-bar.html","topicHref":"renderingcanvas-tool-bar.html"},{"name":"Player Panel","href":"player/index.html","topicHref":"player/index.html","items":[{"name":"Player Tool Bar","href":"player/player-tool-bar.html","topicHref":"player/player-tool-bar.html"},{"name":"Player Extended RenderingCanvas Tool Bar","href":"player/player-extended-renderingcanvas-tool-bar.html","topicHref":"player/player-extended-renderingcanvas-tool-bar.html"},{"name":"Selected-Step Info Panel","href":"player/selected-step-info-panel.html","topicHref":"player/selected-step-info-panel.html"},{"name":"Strip Charts","href":"player/strip-charts.html","topicHref":"player/strip-charts.html"},{"name":"Cycle-Line Charts","href":"player/cycle-line-charts.html","topicHref":"player/cycle-line-charts.html"}]},{"name":"Session Message Panel","href":"session-message-panel/index.html","topicHref":"session-message-panel/index.html"},{"name":"Preference","items":[{"name":"Preference Menu","href":"preference/index.html","topicHref":"preference/index.html"},{"name":"Graphic-Cache Dropdown","href":"preference/graphic-cache-dropdown.html","topicHref":"preference/graphic-cache-dropdown.html"},{"name":"Language Selection","href":"preference/language-selection-submenu.html","topicHref":"preference/language-selection-submenu.html"},{"name":"Step Present Preference","href":"preference/step-present-preference-page.html","topicHref":"preference/step-present-preference-page.html"}]},{"name":"Widget","items":[{"name":"Vec3d Control","href":"widget/vec3d/index.html","topicHref":"widget/vec3d/index.html"},{"name":"Mat4d Control","href":"widget/mat4d/index.html","topicHref":"widget/mat4d/index.html"},{"name":"Object Management Menu Button","href":"widget/object-management-menu-button.html","topicHref":"widget/object-management-menu-button.html"},{"name":"GUI File Path Assignment","href":"widget/gui-file-path-assignment.html","topicHref":"widget/gui-file-path-assignment.html"},{"name":"Polar Resolution 2D Panel","href":"widget/polar-resolution-2d-panel.html","topicHref":"widget/polar-resolution-2d-panel.html"},{"name":"Numeric Input/Output Utilities","href":"widget/numeric-io-utilities.html","topicHref":"widget/numeric-io-utilities.html"},{"name":"Resizable Bar","href":"widget/resizable-bar.html","topicHref":"widget/resizable-bar.html"}]},{"name":"Geometry Panels","href":"geom/index.html","topicHref":"geom/index.html","items":[{"name":"Box3d Control","href":"geom/box3d-control.html","topicHref":"geom/box3d-control.html"},{"name":"Cylindroid Control","href":"geom/cylindroid-control.html","topicHref":"geom/cylindroid-control.html"},{"name":"Extended Cylinder Panel","href":"geom/extended-cylinder-panel.html","topicHref":"geom/extended-cylinder-panel.html"},{"name":"Geometry Combination Control","href":"geom/geom-combination-control.html","topicHref":"geom/geom-combination-control.html"},{"name":"Geometry Management Panel","href":"geom/geom-manage-control.html","topicHref":"geom/geom-manage-control.html"},{"name":"Meshed Geometry Panel","href":"geom/meshed-geom-panel.html","topicHref":"geom/meshed-geom-panel.html"},{"name":"STL File Control","href":"geom/stlfile-control.html","topicHref":"geom/stlfile-control.html"},{"name":"Transformation Geometry Control","href":"geom/transformation-geom-control.html","topicHref":"geom/transformation-geom-control.html"}]},{"name":"Mechanism","items":[{"name":"Transformers","href":"mech/topo/transformers.html","topicHref":"mech/topo/transformers.html"},{"name":"Machine Tool Page","href":"mech/machining-chain-page.html","topicHref":"mech/machining-chain-page.html"},{"name":"Mechanism Builder Page","href":"mech/mech-builder-page.html","topicHref":"mech/mech-builder-page.html"},{"name":"Tool House Page","href":"mech/tool-house-page.html","topicHref":"mech/tool-house-page.html"},{"name":"Fixture Page","href":"mech/fixture-page.html","topicHref":"mech/fixture-page.html"},{"name":"Workpiece Page","href":"mech/workpiece-page.html","topicHref":"mech/workpiece-page.html"},{"name":"Spindle Capability Page","href":"mech/spindle-capability-page.html","topicHref":"mech/spindle-capability-page.html"},{"name":"Background / Coolant Page","href":"mech/background-coolant-page.html","topicHref":"mech/background-coolant-page.html"},{"name":"Stick Tool Panel","href":"mech/stick-tool-panel/index.html","topicHref":"mech/stick-tool-panel/index.html"},{"name":"Holder Panel","href":"mech/holder/index.html","topicHref":"mech/holder/index.html","items":[{"name":"Freeform Holder Panel","href":"mech/holder/freeform-holder-panel.html","topicHref":"mech/holder/freeform-holder-panel.html"},{"name":"Cylindroid Holder Panel","href":"mech/holder/cylindroid-holder-panel.html","topicHref":"mech/holder/cylindroid-holder-panel.html"}]},{"name":"Cutter Panel","href":"mech/cutter/index.html","topicHref":"mech/cutter/index.html","items":[{"name":"Milling Cutter Panel","href":"mech/cutter/milling-cutter-panel.html","topicHref":"mech/cutter/milling-cutter-panel.html"},{"name":"Freeform Remover Panel","href":"mech/cutter/freeform-remover-panel.html","topicHref":"mech/cutter/freeform-remover-panel.html"},{"name":"APT Profile Panel","href":"mech/cutter/apt-profile-panel.html","topicHref":"mech/cutter/apt-profile-panel.html"}]}]},{"name":"Controller Page","href":"controller/index.html","topicHref":"controller/index.html","items":[{"name":"Web Implementation","href":"controller/web-implementation.html","topicHref":"controller/web-implementation.html"}]},{"name":"Util","href":"util/index.html","topicHref":"util/index.html","items":[{"name":"File Explorer","href":"util/file-explorer.html","topicHref":"util/file-explorer.html"}]},{"name":"Mission Page","href":"mission/index.html","topicHref":"mission/index.html","items":[{"name":"Script Command Panel","href":"mission/script-command-panel.html","topicHref":"mission/script-command-panel.html"},{"name":"List Command Panel","href":"mission/ListCommand-panel.html","topicHref":"mission/ListCommand-panel.html"},{"name":"PreSetting Command Panel","href":"mission/PreSettingCommand-panel.html","topicHref":"mission/PreSettingCommand-panel.html"},{"name":"NcOptOption Panel","href":"mission/NcOptOption-panel.html","topicHref":"mission/NcOptOption-panel.html"},{"name":"NcFile Command Panel","href":"mission/NcFileCommand-panel.html","topicHref":"mission/NcFileCommand-panel.html"},{"name":"NcCode Command Panel","href":"mission/NcCodeCommand-panel.html","topicHref":"mission/NcCodeCommand-panel.html"},{"name":"PostExecution Command Panel","href":"mission/PostExecutionCommand-panel.html","topicHref":"mission/PostExecutionCommand-panel.html"}]}]} diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/translation-remarks.html b/App/wwwroot/HiAPI-docsite/app-anatomy/translation-remarks.html index f6a8dc40..5a3cd235 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/translation-remarks.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/translation-remarks.html @@ -131,7 +131,7 @@
  • Preset 前設置

  • -
  • Runtime Geometry 運行時幾何

    +
  • Meshed Geometry 運行時幾何

  • Machining Resolution 加工解析度

  • diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/util/file-explorer.html b/App/wwwroot/HiAPI-docsite/app-anatomy/util/file-explorer.html index 9d737fb8..577591c1 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/util/file-explorer.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/util/file-explorer.html @@ -186,7 +186,7 @@
  • wwwroot-src/src/components/widgets/editorLanguage.ts — extension → EditorLanguage mapping.
  • wwwroot-src/src/api/fileExplorer.ts — typed wrapper over /api/file-explorer/*.
  • wwwroot-src/src/router/routes.ts/util/file-explorer entry (route name util-file-explorer).
  • -
  • wwwroot-src/src/layouts/AppMenuBar.vueUtil → File Explorer entry.
  • +
  • wwwroot-src/src/components/AppMenuBar.vueUtil → File Explorer entry.
  • Common/FileExplorerController.cs — REST endpoints under /api/file-explorer:
  • diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/util/index.html b/App/wwwroot/HiAPI-docsite/app-anatomy/util/index.html index 5b3f375c..94f1bc30 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/util/index.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/util/index.html @@ -92,6 +92,7 @@
    • File Explorer — server-side filesystem browser with named roots (Admin / Project / Resource), in-page text editor with CodeMirror 6 syntax highlighting, zip pack / extract, and rename / copy / delete.
    • Mechanism Builder — generic mechanism XML editor. Documented under mech/ because its model lives there; reachable from Util → Mechanism Builder.
    • +
    • Legacy-Controller — the Controller Page, superseded by the Player's Control Tree but still reachable from Util → Legacy-Controller (below a separator) while it carries settings the tree has no editor for.

    Pending

      diff --git a/App/wwwroot/HiAPI-docsite/app-anatomy/widget/object-management-menu-button.html b/App/wwwroot/HiAPI-docsite/app-anatomy/widget/object-management-menu-button.html index 390fb18c..9a4f4f42 100644 --- a/App/wwwroot/HiAPI-docsite/app-anatomy/widget/object-management-menu-button.html +++ b/App/wwwroot/HiAPI-docsite/app-anatomy/widget/object-management-menu-button.html @@ -146,9 +146,9 @@ Action<TargetObject> TargetObjectSetter{get;set;}
    • Object Copy/Paste (i.e. Select/Set or Duplicated-Set)
    • diff --git a/App/wwwroot/HiAPI-docsite/docfx.json b/App/wwwroot/HiAPI-docsite/docfx.json index 7fe1e4fe..f7bcd10a 100644 --- a/App/wwwroot/HiAPI-docsite/docfx.json +++ b/App/wwwroot/HiAPI-docsite/docfx.json @@ -17,6 +17,7 @@ } ], "dest": "api", + "filter": "filterConfig.yml", "disableGitFeatures": true, "force": false, "shouldSkipMarkup": false, diff --git a/App/wwwroot/HiAPI-docsite/fundamentals/common/message-management.html b/App/wwwroot/HiAPI-docsite/fundamentals/common/message-management.html index 0860a993..53f86f7d 100644 --- a/App/wwwroot/HiAPI-docsite/fundamentals/common/message-management.html +++ b/App/wwwroot/HiAPI-docsite/fundamentals/common/message-management.html @@ -89,14 +89,15 @@

      HiNc applications use three independent message categories. Each category serves a distinct purpose and should not be mixed.

      Categories

      -

      1. Diagnostic — IProgress<object>

      -

      Operation-scoped progress and diagnostic messages. The caller provides an IProgress<object> to the callee, which reports progress, warnings, and errors through it.

      +

      1. Diagnostic — IProgress<IMessage>

      +

      Operation-scoped progress and diagnostic messages. The caller provides an IProgress<IMessage> sink to the callee, which reports progress, warnings, and errors through it. Every IMessage carries a Severity, a Category, and a filterable id.

        -
      • Session-scoped: SessionProgress feeds the Session Message Panel.
      • -
      • XML IO chain: XFactory threads IProgress<object> through all deserialization calls so that parsing errors are reported to the caller rather than a global handler.
      • -
      • Script-level: SessionProgress exposes the session progress to user scripts.
      • +
      • Session-scoped: ShellProgress feeds the Session Message Panel; StepDiagnosticProgress retains step-anchored diagnostics and NcDiagnosticProgress retains NC-parsing diagnostics.
      • +
      • XML IO chain: XFactory threads IProgress<IMessage> through all deserialization calls so that parsing errors are reported to the caller rather than a global handler.
      • +
      • Script-level: ShellProgress exposes the session sink to user scripts.
      • +
      • Per-call: inject a MessageCollector to buffer one call's messages and read them back afterwards (e.g., to return them inline in an HTTP response).
      -

      Use MultiTagMessageUtil extension methods (ReportProgress, ReportMessage, ReportWarning, ReportError, ReportInfo) to report typed messages.

      +

      Use the MessageUtil id-first helpers (SystemError, SystemWarning, ValidationWarning, ConfigurationWarning, …) to report typed messages.

      2. UI Error Notification — MessageBoardUtil

      Toast-style popups for immediate user attention (e.g., “File saved”, “Load failed”). MessageBoardUtil triggers the ShowMessageBoard event consumed by the GUI layer.

      @@ -107,9 +108,9 @@

      Standard .NET ILogger for application-level logging. Use ActionProgress<T>.FromLogger to bridge IProgress<object> APIs to an ILogger instance:

      IProgress<object> progress = ActionProgress<object>.FromLogger(logger);
       
      -

      This routes MultiTagMessage to the appropriate log level (LogError, LogWarning, LogInformation) based on message tags.

      +

      This routes each reported IMessage (or raw Exception) to the appropriate log level (LogError, LogWarning, LogInformation) based on its severity.

      Basic-Component / Utility Level

      -

      Low-level utilities (e.g., in Hi.Common, Hi.Geom) cannot assume which category the caller intends. These APIs accept Action<Exception> or IProgress<object> as parameters so the caller decides how to handle messages:

      +

      Low-level utilities (e.g., in Hi.Common, Hi.Geom) cannot assume which category the caller intends. These APIs accept Action<Exception> or IProgress<IMessage> as parameters so the caller decides how to handle messages:

      await task.CatchExceptions(ex => progress?.Report(ex));
       

      Design Rationale

      diff --git a/App/wwwroot/HiAPI-docsite/fundamentals/common/xml-io.html b/App/wwwroot/HiAPI-docsite/fundamentals/common/xml-io.html index 281bed3c..600bd0d7 100644 --- a/App/wwwroot/HiAPI-docsite/fundamentals/common/xml-io.html +++ b/App/wwwroot/HiAPI-docsite/fundamentals/common/xml-io.html @@ -152,15 +152,15 @@ public static void Reg(XFactory factory = null) }

      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:

      +

      The IProgress<IMessage> 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<object> progress)
      +    IProgress<IMessage> progress)
       {
           Child = XFactory.GenByChild<IChild>(
               src.Element(nameof(Child)), subBaseDirectory, progress);
       }
       
      -

      Parsing errors are reported to the caller-provided IProgress<object> handler.

      +

      Parsing errors are reported to the caller-provided IProgress<IMessage> handler.

      Boot path

      An application's entry point (web service Program.cs, WPF App.xaml.cs, test fixture, etc.) must call the appropriate top-level Reg() once at startup, before any project XML is deserialized. For the simulation pipeline this is:

      LocalProjectService.Reg();
      @@ -336,7 +336,7 @@ public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibit
       
    • Registration: Expose public static void Reg(XFactory factory = null); first line is factory ??= XFactory.Default; then factory.Generators.TryAdd(XName, …).
    • Chain dependents: For every concrete type T that the ctor reads via XFactory.Gen<T> / XFactory.GenByChild<T>, add T.Reg(factory); to the chain. For polymorphic GenByChild<IInterface>, chain every implementation that the XML may carry.
    • Idempotent: Use TryAdd, never Add. The same Reg is called from many boot paths.
    • -
    • Progress Threading: Pass the IProgress<object> parameter through all nested XFactory calls. See Message Management for the rationale.
    • +
    • Progress Threading: Pass the IProgress<IMessage> parameter through all nested XFactory calls. See Message Management for the rationale.
    • Legacy Support: Register the canonical XName first, then group aliases under a //legacy aliases comment.
    • Derived class registration: When a derived class needs its own Reg, mark it public new static void Reg(XFactory factory = null) so the C# compiler does not warn about hiding the base method.
    • diff --git a/App/wwwroot/HiAPI-docsite/fundamentals/general-hinc-workflow/index.html b/App/wwwroot/HiAPI-docsite/fundamentals/general-hinc-workflow/index.html index 73e3a9e4..051b778f 100644 --- a/App/wwwroot/HiAPI-docsite/fundamentals/general-hinc-workflow/index.html +++ b/App/wwwroot/HiAPI-docsite/fundamentals/general-hinc-workflow/index.html @@ -143,7 +143,7 @@

    The PacePlayer controls the execution pace of the simulation, allowing you to observe the machining process in detail or run it at full speed.

    View the Analysis During Process or Result

    -

    SessionProgress contains a sequence of simulation messages and step data, which can be used to monitor and analyze the simulation process and results.

    +

    ShellProgress contains a sequence of simulation messages and step data, which can be used to monitor and analyze the simulation process and results.

    UI Pattern

    The user interface navigation bar matches the workflow. Top-level navigation items include:

      diff --git a/App/wwwroot/HiAPI-docsite/fundamentals/mechanism/render-topology/index.html b/App/wwwroot/HiAPI-docsite/fundamentals/mechanism/render-topology/index.html index b917f956..42841230 100644 --- a/App/wwwroot/HiAPI-docsite/fundamentals/mechanism/render-topology/index.html +++ b/App/wwwroot/HiAPI-docsite/fundamentals/mechanism/render-topology/index.html @@ -111,93 +111,92 @@ using Hi.NcMech.Holders; using System; using System.Collections.Generic; -namespace Hi.Milling.MillingTools +namespace Hi.Milling.MillingTools; + +/// <summary> +/// Display host for a milling tool composed of a cutter and a holder. +/// </summary> +public class MillingToolEditorDisplayee : ITopoDisplayee, IClearCache { /// <summary> - /// Display host for a milling tool composed of a cutter and a holder. + /// Gets or sets the delegate that provides the <see cref="MillingTool"/> instance. /// </summary> - public class MillingToolEditorDisplayee : ITopoDisplayee, IClearCache + public Func<MillingTool> MillingToolGetter { get; set; } + /// <summary> + /// Gets the current <see cref="MillingTool"/> instance. + /// </summary> + public MillingTool MillingTool => MillingToolGetter?.Invoke(); + + /// <summary> + /// Gets or sets whether to show the cutter. + /// </summary> + public bool ShowCutter { get; set; } = true; + /// <summary> + /// Gets or sets whether to show the holder. + /// </summary> + public bool ShowHolder { get; set; } = true; + + /// <summary> + /// Gets the displayee for the milling cutter. + /// </summary> + public MillingCutterEditorDisplayee MillingCutterEditorDisplayee { get; } + = new MillingCutterEditorDisplayee(); + /// <summary> + /// Gets the displayee for the holder. + /// </summary> + public HolderEditorDisplayee HolderEditorDisplayee { get; } + = new HolderEditorDisplayee(); + /// <inheritdoc/> + public List<IAnchoredDisplayee> GetAnchoredDisplayeeList() { - /// <summary> - /// Gets or sets the delegate that provides the <see cref="MillingTool"/> instance. - /// </summary> - public Func<MillingTool> MillingToolGetter { get; set; } - /// <summary> - /// Gets the current <see cref="MillingTool"/> instance. - /// </summary> - public MillingTool MillingTool => MillingToolGetter?.Invoke(); + var dst = new List<IAnchoredDisplayee>(); - /// <summary> - /// Gets or sets whether to show the cutter. - /// </summary> - public bool ShowCutter { get; set; } = true; - /// <summary> - /// Gets or sets whether to show the holder. - /// </summary> - public bool ShowHolder { get; set; } = true; - - /// <summary> - /// Gets the displayee for the milling cutter. - /// </summary> - public MillingCutterEditorDisplayee MillingCutterEditorDisplayee { get; } - = new MillingCutterEditorDisplayee(); - /// <summary> - /// Gets the displayee for the holder. - /// </summary> - public HolderEditorDisplayee HolderEditorDisplayee { get; } - = new HolderEditorDisplayee(); - /// <inheritdoc/> - public List<IAnchoredDisplayee> GetAnchoredDisplayeeList() - { - var dst = new List<IAnchoredDisplayee>(); - - var millingTool = MillingTool; - if (millingTool == null) - return dst; - - if (ShowCutter) - { - var cutter = millingTool.Cutter; - if (cutter is MillingCutter millingCutter) - { - //MessageKit.AddMessage($"MillingTool.Cutter: {MillingTool?.Cutter?.GetHashCode()}"); - MillingCutterEditorDisplayee.MillingCutterSourceFunc - = () => MillingTool?.Cutter as MillingCutter; - dst.Add(MillingCutterEditorDisplayee); - } - else if(cutter!=null) - dst.Add(cutter); - } - if (ShowHolder) - { - HolderEditorDisplayee.Holder = millingTool.Holder; - dst.Add(HolderEditorDisplayee); - } + var millingTool = MillingTool; + if (millingTool == null) return dst; - } - /// <inheritdoc/> - public void Display(Bind bind) - { - bind.PushCoveringPixelMode(); - DimensionBar.Display(bind, "mm"); - bind.ModelMatStack.Pop(); - TopoDisplayeeUtil.Display(this, bind); - } - /// <inheritdoc/> - public void ExpandToBox3d(Box3d dst) + if (ShowCutter) { - TopoDisplayeeUtil.ExpandToBox3d(this, dst); + var cutter = millingTool.Cutter; + if (cutter is MillingCutter millingCutter) + { + //MessageKit.AddMessage($"MillingTool.Cutter: {MillingTool?.Cutter?.GetHashCode()}"); + MillingCutterEditorDisplayee.MillingCutterSourceFunc + = () => MillingTool?.Cutter as MillingCutter; + dst.Add(MillingCutterEditorDisplayee); + } + else if(cutter!=null) + dst.Add(cutter); } - /// <inheritdoc/> - public Asmb GetAsmb() => MillingTool?.Asmb; - /// <inheritdoc/> - public Anchor GetAnchor() => MillingTool?.GetAnchor(); - /// <inheritdoc/> - public void ClearCache() + if (ShowHolder) { - MillingCutterEditorDisplayee?.ClearCache(); + HolderEditorDisplayee.Holder = millingTool.Holder; + dst.Add(HolderEditorDisplayee); } + return dst; + } + /// <inheritdoc/> + public void Display(Bind bind) + { + bind.PushCoveringPixelMode(); + DimensionBar.Display(bind, "mm"); + bind.ModelMatStack.Pop(); + + TopoDisplayeeUtil.Display(this, bind); + } + /// <inheritdoc/> + public void ExpandToBox3d(Box3d dst) + { + TopoDisplayeeUtil.ExpandToBox3d(this, dst); + } + /// <inheritdoc/> + public Asmb GetAsmb() => MillingTool?.Asmb; + /// <inheritdoc/> + public Anchor GetAnchor() => MillingTool?.GetAnchor(); + /// <inheritdoc/> + public void ClearCache() + { + MillingCutterEditorDisplayee?.ClearCache(); } } diff --git a/App/wwwroot/HiAPI-docsite/fundamentals/nc-parsing/index.html b/App/wwwroot/HiAPI-docsite/fundamentals/nc-parsing/index.html new file mode 100644 index 00000000..ba9c0ff7 --- /dev/null +++ b/App/wwwroot/HiAPI-docsite/fundamentals/nc-parsing/index.html @@ -0,0 +1,473 @@ + + + + + NC Parsing Engine | HiAPI-C# 2025 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + +
      +
      +
      +
      +
      Table of Contents
      + +
      +
      + +
      +
      +
      + +
      +
      + + + +
      + +
      +

      NC Parsing Engine

      + +

      SoftNcRunner is the NC interpreter. It reads a controller program — Fanuc, +Siemens, Syntec, Mazak or Heidenhain G-code, an NX cutter-location file, or a CSV controller +recording — and turns it into the machine actions the simulation executes.

      +

      It is a composed interpreter rather than a fixed one. The segmenter, the initializers, the +syntax stages, the semantics and the dependency data are five ordered lists on the runner object, +all of them serializable. Adding support for a G-code means adding one syntax unit and one line to a +list; removing support means removing that line. Nothing about a brand is compiled into a central +class.

      +
      +
      Note
      +

      SoftNcRunner is the default NC pipeline as of 3.2 +(EnableSoftNcRunner defaults to true). +HardNcRunner remains reachable as the opt-out fallback for the +shrinking set of features still bound to it.

      +
      +

      The pipeline

      +

      A program becomes actions in five ordered stages. Each shipped preset expresses them as five +BundleSyntax containers named Parsing, Evaluation, Logic, +PostLogic and Inspection.

      +
      graph TD
      +    A[NC raw lines] --> SEG[ISegmenter]
      +    SEG --> SENT[Sentence stream]
      +    SENT --> INIT[INcInitializer]
      +    INIT --> P[Parsing<br/>text to structure]
      +    P --> E[Evaluation<br/>variables, expressions,<br/>calls, control flow]
      +    E --> L[Logic<br/>modal state, coordinates,<br/>compensation, motion]
      +    L --> PL[PostLogic<br/>modal carry]
      +    PL --> I[Inspection<br/>backfill, unconsumed check,<br/>snapshot]
      +    I --> SEM[INcSemantic]
      +    SEM --> OUT[Machine actions]
      +
      +    DEP[INcDependency list<br/>brand tables, coordinate systems,<br/>tool offsets, kinematics, ...]
      +    DEP -. injected .-> P
      +    DEP -. injected .-> E
      +    DEP -. injected .-> L
      +    DEP -. injected .-> SEM
      +
      +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    StageResponsibility
    ISegmentercuts the raw text into blocks. Three implementations ship — one line per block, and the two multi-line forms Heidenhain and Siemens programs need
    INcInitializerseeds the stream head with the machine's starting state, for example the configured home position
    Parsingrecognizes the text: words, statements, cycle bodies, comments. Writes structure, never meaning
    Evaluationresolves anything the block computes for itself — variable reads and writes, arithmetic, conditional jumps, loops, and subprogram or macro calls, whose bodies are spliced into the stream so later stages walk them as if they had always been in the host file
    Logicthe modal machine model: units, positioning mode, plane, feed, spindle, coolant, tool change and compensation, work offsets, tilt and RTCP, and the program-to-machine coordinate chain
    PostLogiccarries the block's full modal context forward, so every block's data is self-contained
    Inspectionback-fills derived values, reports words nothing consumed, and optionally snapshots the block
    INcSemanticturns the finished block into machine actions — linear and arc motion, teleports, tool change, spindle, dwell, stroke-limit checks
    +

    Over 150 syntax units ship across those five stages, plus the per-brand lists that select and order +them.

    +

    Most syntax units implement ISituNcSyntax — they mutate the block in +place. IExpandingNcSyntax exists for a unit that must turn one block into +several. Note that the shipped call and repeat syntaxes are not expanders: they splice the callee's +already-segmented blocks into the stream ahead of the current position, which keeps one block's +identity intact through the rest of the pipeline.

    +

    Composition and presets

    +

    The runner is a container; its five lists are what make it a Fanuc runner or a Heidenhain one.

    +
    <SoftNcRunner>
    +  <PipelineNcDependencyList>...</PipelineNcDependencyList>
    +  <Segmenter>...</Segmenter>
    +  <NcInitializationList>...</NcInitializationList>
    +  <NcSyntaxList>...</NcSyntaxList>
    +  <NcSemanticList>...</NcSemanticList>
    +</SoftNcRunner>
    +
    +

    Every unit implements IMakeXmlSource and registers itself with +XFactory, so the whole pipeline round-trips through XML. Seven presets are +built in:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PresetReads
    FanucNcRunnerFanuc G-code, including Custom Macro B
    SiemensNcRunnerSinumerik .mpf / .spf
    SyntecNcRunnerSyntec G-code
    MazakNcRunnerMazak EIA/ISO
    HeidenhainNcRunnerklartext and DIN/ISO, on one preset
    GeneralCsvRunnera CSV controller recording
    NxClRunnerNX CLSF / APT-source cutter-location files
    +

    The five brand presets also ship as standalone files under Resource/Controller/ with the +.Controller extension, written by ControllerPresetWriter, so the load browser +starts populated. Those files are regenerable snapshots — the static properties above are the source +of truth, and the files are rewritten whenever a brand pipeline changes.

    +
    +
    Important
    +

    Reading a preset file back requires the pipeline types to be registered first +(Reg through +Reg at startup). The loader drops unregistered +entries silently rather than failing the load, so an unregistered process reads a hollow +pipeline that parses nothing.

    +

    A runner rehydrated from an older saved file keeps the syntax list it was saved with — nothing +re-derives a brand's syntax list at read time. To pick up new brand syntaxes, take the current +preset or a fresh NcRunnerSuit built from it. Missing system-wired +dependencies are back-filled automatically on load; syntaxes are not.

    +
    +

    The dataflow

    +

    Each block travels the pipeline as a SyntaxPiece carrying a JSON object. +Every stage reads some keys, writes some keys, and removes the keys it has consumed. The convention +is section plus term: the section key is a semantic name that is the same across brands +(Unit, Feedrate, Motion, CoordinateOffset), while the controller's actual keyword lives in +the section's Term field so the correspondence with the source text is never lost.

    +

    A Fanuc block N162 X-14.696 Y-6.42 Z45.638, after the pipeline (matrices elided):

    +
    {
    +  "IndexNote": {"Symbol":"N","Number":162},
    +  "Positioning": {"Term":"G90","Mode":"Absolute"},
    +  "Unit": {"Term":"G21","System":"Metric"},
    +  "PlaneSelect": {"Term":"G17","Plane":"XY"},
    +  "Feedrate": {"FeedrateValue":400,"Term":"G94","Unit":"mm/min"},
    +  "SpindleSpeed": {"SpindleSpeed_rpm":20000,"Direction":"CW"},
    +  "Coolant": {"IsOn":true,"Mode":"Flood"},
    +  "ToolChange": {"ToolId":4,"IsChange":false},
    +  "TiltTransform": {"Term":"G68.2"},
    +  "EndPointProgramToMcTransform": [
    +    {"Source":"TiltTransform",          "Mat4d":[ ... ]},
    +    {"Source":"ToolHeightCompensation", "Mat4d":[ ... ]},
    +    {"Source":"CoordinateOffset",       "Mat4d":[ ... ]},
    +    {"Source":"PivotTransform",         "Mat4d":[ ... ]}
    +  ],
    +  "ToolHeightCompensation": {"Offset_mm":16,"Term":"G43","OffsetId":4},
    +  "CoordinateOffset": {"CoordinateId":"G54","Offset_X":72.4,"Offset_Y":-72.4,"Offset_Z":-116.44},
    +  "ProgramXyz": {"X":-14.696,"Y":-6.42,"Z":45.638},
    +  "MachineCoordinate": {"X":140.5947,"Y":-78.8200,"Z":-124.4559},
    +  "MotionState": {"Term":"G01"},
    +  "MotionEvent": {"Form":"McLinear","IsRapid":false},
    +  "RadiusCompensation": {"Term":"G40","OffsetId":0,"Radius_mm":0}
    +}
    +
    +

    Three things are worth reading off that block.

    +

    Program and machine coordinates are both present. The source states program coordinates; the +pipeline keeps them and adds the solved machine coordinates, so a report or a UI can use either.

    +

    EndPointProgramToMcTransform flattens the cause chain. The program-to-machine mapping is not +one opaque matrix but the ordered list of contributions that built it — tilt, tool height, work +offset, pivot — each with its own matrix. When a machine coordinate is not what you expected, this +array names which compensation is responsible without re-running anything.

    +

    Modal state is complete on every block, even where the source line states none of it, because +PostLogic carries the previous block's sections forward. A section the pipeline synthesized rather +than read from the source carries an AddedBy marker (ModalCarry or Backfill), so a reader can +tell authored data from carried data — see SyntaxStageKeys.

    +

    Retention and the freeze

    +

    A session retains every executed block for its lifetime, and the live JSON graph costs about 12 KB +per line against about 1.6 KB for its compact UTF-8 form — which is what made multi-million-line +programs exhaust a client machine. Once a block leaves the executing window its piece is frozen: +the graph is replaced by those bytes (Freeze, +IsFrozen). On a 25,000-line play that takes session retention +from 406 MB to 142 MB. The switch is +FreezeExecutedPieces, on by default.

    +

    Downstream readers are unaffected — the JsonObject getter re-parses on demand and the encoding is +byte-identical to the live form — but the object it returns is a fresh read-only snapshot per +call, with no caching and no write-back. Two reads are not reference-equal, a mutation lands on a +throwaway copy, and code that reads the same piece repeatedly should hold the snapshot in a local. To +inspect the dataflow, snapshot it in the pipeline with the SnapshotSyntax entry each bundle +carries (disabled by default) rather than holding pieces and poking them afterwards.

    +

    Type discrimination is slightly looser after a round trip, because JSON has fewer types than the live +graph: NaN and ±Infinity serialize as quoted strings and thaw as string nodes, and 5.0 freezes +as 5, so an integer read of it succeeds where it previously would not. +GetDouble maps the quoted non-finite spellings back to their double +constants, so read numbers through it rather than through a raw node cast.

    +

    Dependencies

    +

    Machine and case data reach the syntaxes as a list of INcDependency +objects rather than as fields on a shared configuration object. A syntax declares what it needs by +interface and pulls it:

    +
    // A syntax that needs the machine's home position asks for the interface, not for a class.
    +var homeConfig = ncDependencyList.OfType<IHomeMcConfig>().FirstOrDefault();
    +
    +

    Adding a brand means adding a table that implements the interfaces its syntaxes ask for — the brand +parameter tables derive from ControllerParameterTableBase.

    +

    Per-case data travels as a proxy. Tool offsets, work-coordinate offsets, Siemens frames, +Heidenhain datums and retained macro variables belong to a job, not to a controller +configuration. Those entries sit in the pipeline list as placeholders that resolve, per session, +against the owning project's per-case list — which is what lets one controller configuration be +shared across projects. PipelineNcDependencyList is the raw list; +consumers read the resolved view through +GetEffectiveNcDependencyList.

    +

    NcRunnerSuit bundles a runner with its per-case data as one file-loadable unit, +so a whole parser configuration — pipeline and job data together — moves as a single file.

    +

    Machine wiring

    +

    ConfigureByMachiningChain takes the machining chain and settles +what the pipeline needs to know about the physical machine: axis order, which axes are rotary and +which linear, and the kinematics the coordinate syntaxes solve against. A five-axis machine, a +four-axis machine and a twin-table machine all run the same program path — the difference is the +chain, not the parser.

    +

    Extending it

    +

    Three kinds of customization need no rebuild of the libraries:

    +

    Switch brand.

    +
    var runner = SoftNcRunner.HeidenhainNcRunner;
    +runner.ConfigureByMachiningChain(machine.Chain);
    +
    +

    Add a syntax for one machine's own vocabulary. A machine whose PLC uses a non-standard M168 +for clamping needs a class implementing ISituNcSyntax and one entry in +that project's pipeline list. No HiAPIs source changes.

    +

    Declare OEM M-codes without writing code at all. +IMCodeDeclarationConfig and +MCodeEffects let a machine state what its own M-codes do — a +composite spindle-and-coolant code, a tool-change trigger, turret T-word semantics — and +MCodeExpansionSyntax expands them into the canonical ISO flags the +shared consumers already understand. A code declared with no modeled effects is voiced once as +DeclaredMCode--UnmodeledEffects instead of raising an unknown-code warning on every occurrence.

    +
    +
    Important
    +

    Composing the pipeline is a licensed capability. Registering a unit that is not built in — +into the syntax list, the dependency list, the semantics, the initializers or the segmenter — and +executing an NC-embedded C# script both require the NcComposition licence feature. The check +runs once per session at the run entry, so it covers project-XML load, whole-object replacement +and direct list mutation alike.

    +

    Degradation is silent and functional, not an error: external units are skipped for that +session and named in one Composition--NotLicensed diagnostic, an external segmenter falls back +to the single-line segmenter, and scripts are skipped with Script--NotLicensed. The runner's +persisted lists are never mutated, so the project still saves correctly — but the simulation that +ran is a different one. If you build against this surface, check for that diagnostic rather than +assuming your unit ran.

    +

    Built-in units are unrestricted in order, count, duplication and constructor configuration, and +calling the public API from your own application or session script needs no extra licence.

    +
    +

    Brand support

    +

    Coverage is stated in three states. Recognized but not simulated is a deliberate state, not a +gap: the construct is consumed safely and reported with its own diagnostic id, so it can never be +misread as something else — a PLANE AXIAL B+45 will not be mistaken for a rotary axis command.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    BrandSupportedRecognized, not simulatedNot supported
    FanucISO core, canned cycles G73–G89, G41/G42, G43.4 RTCP, G53/G53.1, G68/G68.2/G69, G12.1/G13.1 polar with compensation, Custom Macro B (# variables, IF/GOTO, WHILE/DO), M98/M99 subprograms, G65/G66/G67 macro callsG10 programmable data setting, G50 spindle limit, G31 skip
    Siemensmodal vocabulary, SUPA/G153, T="name" with D offsets, $TC_DP tool tables, R-parameters and DEF variables with a full expression evaluator, $P_UIFR, TRANS/ATRANS/ROT/AROT frames, TRAORI/TRAFOOF, CYCLE800, MSG/STOPRE, CR=/TURN= arcs, L/named subprograms, MCALL, REPEAT, PROC/labels, GOTOF/GOTOB, IF/ELSE/ENDIF, WHILE/FOR/REPEAT-UNTIL/LOOP, AC()/IC()/DC()/ACP()/ACN(), the coded-position family, G74/G75ROTS/AROTS, SCALE/ASCALE, MIRROR/AMIRROR (SiemensFrame--Unsupported)SETAL
    Heidenhainklartext motion and FMAX, M91, TOOL CALL with DL/DR, CYCL DEF 247 presets and CYCL DEF 7 additive shifts, CC/C arcs, RL/RR/R0, M126/M127, M140, CYCL DEF 32, Q/QR parameters with the FN grammar and FN 9–12 jumps, PLANE SPATIAL, FUNCTION TCPM, M128/M129, machining cycles 200/232/251/252/253, CYCL CALL/CYCL CALL POS, CALL LBL with REP, CALL PGM, tilde continuation, BLK FORM, STOP, mirror image (G28 and CYCL DEF 8), and the DIN/ISO dialect with absolute I/J/K centres, the ISO label family, G247, G54 datum words and G70/G71PLANE VECTOR (captured), PLANE EULER / POINTS / RELATIV / AXIAL / PROJECTED (HeidenhainPlane--Unsupported), unimplemented FN opcodes such as FN 18 SYSREAD, unrecognized CYCL DEF bodies (HeidenhainCycl--Unsupported)TOOL DEF, FK free contour, SL cycles, PATTERN DEF, TCH PROBE
    SyntecISO core plus the Fanuc-family macro and subprogram vocabulary, polar interpolationcustom G macros, Pr parameter mapping, twin-head / twin-turret syntax
    MazakEIA/ISO with the Fanuc-family macro and subprogram vocabulary, polar interpolationMazatrol conversational sections, MAZATROL ↔ EIA/ISO switching
    +
    +
    Note
    +

    On the Heidenhain preset, DIN/ISO G28 is MIRROR IMAGE, not a Fanuc reference-point return, +and ReferenceReturnSyntax is not in that preset's Logic list. HardNcRunner keeps the Fanuc +reading, so the two engines are deliberately divergent on Heidenhain G28 files.

    +
    +

    Loading a HardNc-era project

    +

    Projects written for the legacy interpreter still load.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    MechanismPurpose
    FromLegacyNcEnvXmlbuilds a SoftNcRunner from a legacy configuration element
    the NcEnv XML aliasa project saved under the old element name still deserializes
    the legacy version patchesa project saved by an older build gains the syntaxes and semantics added since, according to the project API version it carries
    the system-wired back-filla saved pipeline gains the runtime-wired dependencies it predates
    EnableSoftNcRunnerset false to run the legacy interpreter for comparison
    +

    The version patches cover projects back to the 3.1.163 era; the back-fill is unconditional, because +the dependencies it adds are stateless runtime-wired singletons for which presence is the only +question worth asking.

    + +
    + +
    +
    + + + +
    + +
    + +
    + + +
    + + + + diff --git a/App/wwwroot/HiAPI-docsite/fundamentals/toc.html b/App/wwwroot/HiAPI-docsite/fundamentals/toc.html index 66d2ac2b..1b601f13 100644 --- a/App/wwwroot/HiAPI-docsite/fundamentals/toc.html +++ b/App/wwwroot/HiAPI-docsite/fundamentals/toc.html @@ -65,6 +65,9 @@ +
  • + NC Parsing Engine +
  • Message Management
  • diff --git a/App/wwwroot/HiAPI-docsite/fundamentals/toc.json b/App/wwwroot/HiAPI-docsite/fundamentals/toc.json index 9a806fbd..57e293f0 100644 --- a/App/wwwroot/HiAPI-docsite/fundamentals/toc.json +++ b/App/wwwroot/HiAPI-docsite/fundamentals/toc.json @@ -1,2 +1,2 @@ -{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"System Requirements","href":"system-requirements.html","topicHref":"system-requirements.html"},{"name":"Getting Started","href":"getting-started/index.html","topicHref":"getting-started/index.html"},{"name":"General HiNC Workflow","href":"general-hinc-workflow/index.html","topicHref":"general-hinc-workflow/index.html"},{"name":"Basic Geometry","href":"geom/basic-geometry.html","topicHref":"geom/basic-geometry.html"},{"name":"Rendering","href":"rendering/index.html","topicHref":"rendering/index.html","items":[{"name":"Using RenderingCanvas with DispEngine","href":"rendering/rendering-canvas/index.html","topicHref":"rendering/rendering-canvas/index.html"},{"name":"Building Your Own Rendering Canvas","href":"rendering/rendering-canvas/custom-implementation.html","topicHref":"rendering/rendering-canvas/custom-implementation.html"},{"name":"Drawing","href":"rendering/drawing/index.html","topicHref":"rendering/drawing/index.html"},{"name":"Color Guide System","href":"rendering/color-guide/index.html","topicHref":"rendering/color-guide/index.html"}]},{"name":"Mechanism Topology","items":[{"name":"Overview","href":"mechanism/index.html","topicHref":"mechanism/index.html"},{"name":"Topology Structure","href":"mechanism/Topo/index.html","topicHref":"mechanism/Topo/index.html"},{"name":"Transformers","href":"mechanism/transformers/index.html","topicHref":"mechanism/transformers/index.html"},{"name":"Render Topology","href":"mechanism/render-topology/index.html","topicHref":"mechanism/render-topology/index.html"}]},{"name":"Message Management","href":"common/message-management.html","topicHref":"common/message-management.html"},{"name":"XML IO","href":"common/xml-io.html","topicHref":"common/xml-io.html"}]} +{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"System Requirements","href":"system-requirements.html","topicHref":"system-requirements.html"},{"name":"Getting Started","href":"getting-started/index.html","topicHref":"getting-started/index.html"},{"name":"General HiNC Workflow","href":"general-hinc-workflow/index.html","topicHref":"general-hinc-workflow/index.html"},{"name":"Basic Geometry","href":"geom/basic-geometry.html","topicHref":"geom/basic-geometry.html"},{"name":"Rendering","href":"rendering/index.html","topicHref":"rendering/index.html","items":[{"name":"Using RenderingCanvas with DispEngine","href":"rendering/rendering-canvas/index.html","topicHref":"rendering/rendering-canvas/index.html"},{"name":"Building Your Own Rendering Canvas","href":"rendering/rendering-canvas/custom-implementation.html","topicHref":"rendering/rendering-canvas/custom-implementation.html"},{"name":"Drawing","href":"rendering/drawing/index.html","topicHref":"rendering/drawing/index.html"},{"name":"Color Guide System","href":"rendering/color-guide/index.html","topicHref":"rendering/color-guide/index.html"}]},{"name":"Mechanism Topology","items":[{"name":"Overview","href":"mechanism/index.html","topicHref":"mechanism/index.html"},{"name":"Topology Structure","href":"mechanism/Topo/index.html","topicHref":"mechanism/Topo/index.html"},{"name":"Transformers","href":"mechanism/transformers/index.html","topicHref":"mechanism/transformers/index.html"},{"name":"Render Topology","href":"mechanism/render-topology/index.html","topicHref":"mechanism/render-topology/index.html"}]},{"name":"NC Parsing Engine","href":"nc-parsing/index.html","topicHref":"nc-parsing/index.html"},{"name":"Message Management","href":"common/message-management.html","topicHref":"common/message-management.html"},{"name":"XML IO","href":"common/xml-io.html","topicHref":"common/xml-io.html"}]} diff --git a/App/wwwroot/HiAPI-docsite/index.html b/App/wwwroot/HiAPI-docsite/index.html index d16c552f..bf12eadc 100644 --- a/App/wwwroot/HiAPI-docsite/index.html +++ b/App/wwwroot/HiAPI-docsite/index.html @@ -117,7 +117,7 @@

    Manual — Reference knowledge, looked up on demand

    • Setup — Pre-simulation configuration: machine tool, anchor, cutters, controllers, coolant
    • -
    • Runtime — Script commands, MachiningStep, SessionShell, SessionProgress
    • +
    • Runtime — Script commands, MachiningStep, SessionShell, ShellProgress
    • Analysis — Theory and evaluation: milling physics, wear, corner behavior, CPU usage

    Development — For developers building on HiAPI

    diff --git a/App/wwwroot/HiAPI-docsite/index.json b/App/wwwroot/HiAPI-docsite/index.json index 603e6bac..10e9714c 100644 --- a/App/wwwroot/HiAPI-docsite/index.json +++ b/App/wwwroot/HiAPI-docsite/index.json @@ -7,17 +7,17 @@ "api/Hi.Cbtr.CachedTris.html": { "href": "api/Hi.Cbtr.CachedTris.html", "title": "Class CachedTris | HiAPI-C# 2025", - "summary": "Class CachedTris Namespace Hi.Cbtr Assembly HiCbtr.dll Feature-cached triangle for CubeTree computation. public class CachedTris : IDisposable, IDisplayee, IExpandToBox3d Inheritance object CachedTris Implements IDisposable IDisplayee IExpandToBox3d 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) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CachedTris(NativeTopoStld, Mat4d, double) Ctor by the transformed stl. only available for geometry that does not contains near point or points on the same line on the same plane. public CachedTris(NativeTopoStld stl, Mat4d mat, double fractionTolerance) Parameters stl NativeTopoStld stl mat Mat4d transformation matrix fractionTolerance double fraction tolerance for the operation CachedTris(NativeTopoStld, NativeTopoStlfr, Mat4d, Mat4d, double, SweepingMode) Ctor by the swept stl. The sweeping is from the transformation of pre to cur. public CachedTris(NativeTopoStld tstl, NativeTopoStlfr tstlfr, Mat4d pre, Mat4d cur, double fractionTolerance, CachedTris.SweepingMode sweepingMode = SweepingMode.Auto) Parameters tstl NativeTopoStld Topo Stl tstlfr NativeTopoStlfr Topo Stl with fraction tolerance pre Mat4d previous transformation matrix cur Mat4d current transformation matrix fractionTolerance double fraction tolerance for the operation sweepingMode CachedTris.SweepingMode mode for the sweeping operation Properties CachedTrisPtr Native pointer of the object. public nint CachedTrisPtr { get; } Property Value nint Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ~CachedTris() protected ~CachedTris()" + "summary": "Class CachedTris Namespace Hi.Cbtr Assembly HiCbtr.dll Feature-cached triangle for CubeTree computation. public class CachedTris : IDisposable, IDisplayee, IExpandToBox3d Inheritance object CachedTris Implements IDisposable IDisplayee IExpandToBox3d 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) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CachedTris(NativeTopoStl3d, Mat4d, double) Ctor by the transformed stl. only available for geometry that does not contains near point or points on the same line on the same plane. public CachedTris(NativeTopoStl3d stl, Mat4d mat, double fractionTolerance) Parameters stl NativeTopoStl3d stl mat Mat4d transformation matrix fractionTolerance double fraction tolerance for the operation CachedTris(NativeTopoStl3d, NativeTopoStl3wfr, Mat4d, Mat4d, double, SweepingMode) Ctor by the swept stl. The sweeping is from the transformation of pre to cur. public CachedTris(NativeTopoStl3d tstl, NativeTopoStl3wfr tstlfr, Mat4d pre, Mat4d cur, double fractionTolerance, CachedTris.SweepingMode sweepingMode = SweepingMode.Auto) Parameters tstl NativeTopoStl3d Topo Stl tstlfr NativeTopoStl3wfr Topo Stl with fraction tolerance pre Mat4d previous transformation matrix cur Mat4d current transformation matrix fractionTolerance double fraction tolerance for the operation sweepingMode CachedTris.SweepingMode mode for the sweeping operation Properties CachedTrisPtr Native pointer of the object. public nint CachedTrisPtr { get; } Property Value nint Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ~CachedTris() protected ~CachedTris()" }, "api/Hi.Cbtr.CbtrPickable.html": { "href": "api/Hi.Cbtr.CbtrPickable.html", "title": "Class CbtrPickable | HiAPI-C# 2025", - "summary": "Class CbtrPickable Namespace Hi.Cbtr Assembly HiCbtr.dll Pickable of CubeTree grids. public class CbtrPickable : Pickable, IGetPickable, IDisposable Inheritance object Pickable CbtrPickable Implements IGetPickable IDisposable Derived DiffAttachment UnhighlightablePickable ClStripPos Inherited Members Pickable.Pickables Pickable.mark Pickable.PickingID Pickable.GetPickable() Pickable.OnKeyDown(key_event_t, DispEngine) Pickable.OnKeyUp(key_event_t, DispEngine) Pickable.OnMouseDown(mouse_button_event_t, DispEngine) Pickable.OnMouseUp(mouse_button_event_t, DispEngine) Pickable.OnMouseMove(mouse_move_event_t, DispEngine) Pickable.OnMouseWheel(mouse_wheel_event_t, DispEngine) Pickable.Dispose() 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 CbtrPickable() Initializes a new instance of the CbtrPickable class with default white color. public CbtrPickable() CbtrPickable(vec3f) Initializes a new instance of the CbtrPickable class with specified color. public CbtrPickable(vec3f rgb) Parameters rgb vec3f The RGB color for the pickable object. Properties AttachmentPriority The color and Pickable priority if several attachments occupied at the same pixel. NAN is the lowest priority. the smaller number is the lower priority. public virtual double AttachmentPriority { get; set; } Property Value double Rgb Color RGB. public virtual Vec3d Rgb { get; set; } Property Value Vec3d Methods CleanLinkedCbtrNodesDrawingCache() CleanLinkedNodesDrawingCache. Not thread safe with substraction process. public void CleanLinkedCbtrNodesDrawingCache() Dispose(bool) protected override void Dispose(bool disposing) Parameters disposing bool Highlight(bool) Highlight the CbtrPickable by triangles line. Only one CbtrPickable can be highlighted on a CubeTree. public void Highlight(bool b) Parameters b bool highligt or not OnMouseEnter(ui_event_type, DispEngine) Behavior on mouse enter public override void OnMouseEnter(ui_event_type e, DispEngine dispEngine) Parameters e ui_event_type event type dispEngine DispEngine display engine OnMouseLeave(ui_event_type, DispEngine) Behavior on mouse leave public override void OnMouseLeave(ui_event_type e, DispEngine dispEngine) Parameters e ui_event_type event type dispEngine DispEngine display engine ShrinkToFitNodeMap() ShrinkToFitNodeMap. Not thread safe with substraction process. public void ShrinkToFitNodeMap()" + "summary": "Class CbtrPickable Namespace Hi.Cbtr Assembly HiCbtr.dll Pickable of CubeTree grids. public class CbtrPickable : Pickable, IGetPickable, IDisposable Inheritance object Pickable CbtrPickable Implements IGetPickable IDisposable Derived DiffAttachment UnhighlightablePickable ClStripPos Inherited Members Pickable.Pickables Pickable.mark Pickable.PickingID Pickable.GetPickable() Pickable.OnKeyDown(key_event_t, DispEngine) Pickable.OnKeyUp(key_event_t, DispEngine) Pickable.OnMouseDown(mouse_button_event_t, DispEngine) Pickable.OnMouseUp(mouse_button_event_t, DispEngine) Pickable.OnMouseMove(mouse_move_event_t, DispEngine) Pickable.OnMouseWheel(mouse_wheel_event_t, DispEngine) Pickable.Dispose() 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 CbtrPickable() Initializes a new instance of the CbtrPickable class with default white color. public CbtrPickable() CbtrPickable(vec3f) Initializes a new instance of the CbtrPickable class with specified color. public CbtrPickable(vec3f rgb) Parameters rgb vec3f The RGB color for the pickable object. Properties AttachmentPriority The color and Pickable priority if several attachments occupied at the same pixel. NAN is the lowest priority. the smaller number is the lower priority. public virtual double AttachmentPriority { get; set; } Property Value double IsColorTableCovered True when this attachment's color is served by the native attachment color table, i.e. a Rgb change reaches the screen without cleaning the affected drawing caches. When false (no picking id, or the id exceeds the table ceiling) callers must keep the legacy CleanAttachedCbtrNodesDrawingCache() after a recolor. public bool IsColorTableCovered { get; } Property Value bool Rgb Color RGB. public virtual Vec3d Rgb { get; set; } Property Value Vec3d Methods CleanAttachedCbtrNodesDrawingCache() CleanAttachedNodesDrawingCache. Not thread safe with substraction process. public void CleanAttachedCbtrNodesDrawingCache() Dispose(bool) protected override void Dispose(bool disposing) Parameters disposing bool Highlight(bool) Highlight the CbtrPickable by triangles line. Only one CbtrPickable can be highlighted on a CubeTree. public void Highlight(bool b) Parameters b bool highligt or not OnMouseEnter(ui_event_type, DispEngine) Behavior on mouse enter public override void OnMouseEnter(ui_event_type e, DispEngine dispEngine) Parameters e ui_event_type event type dispEngine DispEngine display engine OnMouseLeave(ui_event_type, DispEngine) Behavior on mouse leave public override void OnMouseLeave(ui_event_type e, DispEngine dispEngine) Parameters e ui_event_type event type dispEngine DispEngine display engine ShrinkToFitNodeMap() ShrinkToFitNodeMap. Not thread safe with substraction process. public void ShrinkToFitNodeMap()" }, "api/Hi.Cbtr.ConstructionDefectDisplayee.html": { "href": "api/Hi.Cbtr.ConstructionDefectDisplayee.html", "title": "Class ConstructionDefectDisplayee | HiAPI-C# 2025", - "summary": "Class ConstructionDefectDisplayee Namespace Hi.Cbtr Assembly HiCbtr.dll Encapsulates cube tree construction defect results, including both defect data and visualization drawings. public class ConstructionDefectDisplayee : IDisplayee, IExpandToBox3d, IDisposable Inheritance object ConstructionDefectDisplayee Implements IDisplayee IExpandToBox3d 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) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ConstructionDefectDisplayee(List, IProgress) Ctor. public ConstructionDefectDisplayee(List defectNodeInfos, IProgress progress = null) Parameters defectNodeInfos List Defect node infos from cube tree construction. progress IProgress Progress reporter for user-facing messages. Properties DefectNodeInfos Defect node infos collected during cube tree construction. public List DefectNodeInfos { get; } Property Value List DefectNodesToShow Maximum number of defect nodes to show. public int DefectNodesToShow { get; set; } Property Value int HasDefects Whether any defects were found. public bool HasDefects { get; } Property Value bool Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetFittingView(Box3d, Mat4d) Gets a fitting view matrix for a defect box, preserving the current view rotation. public static Mat4d GetFittingView(Box3d defectBox, Mat4d sketchView) Parameters defectBox Box3d The defect box to fit. sketchView Mat4d The current sketch view matrix. Returns Mat4d A view matrix that fits the defect box, or the original sketch view if inputs are invalid. Events DefectBoxSelected Fired when a defect box flag is selected (clicked). The parameter is the Box3d of the selected defect box. public event Action DefectBoxSelected Event Type Action" + "summary": "Class ConstructionDefectDisplayee Namespace Hi.Cbtr Assembly HiCbtr.dll Encapsulates cube tree construction defect results, including both defect data and visualization drawings. public class ConstructionDefectDisplayee : IDisplayee, IExpandToBox3d, IDisposable Inheritance object ConstructionDefectDisplayee Implements IDisplayee IExpandToBox3d 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) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ConstructionDefectDisplayee(List, IProgress) Ctor. public ConstructionDefectDisplayee(List defectNodeInfos, IProgress messageProgress = null) Parameters defectNodeInfos List Defect node infos from cube tree construction. messageProgress IProgress Progress reporter for user-facing messages. Properties DefectNodeInfos Defect node infos collected during cube tree construction. public List DefectNodeInfos { get; } Property Value List DefectNodesToShow Maximum number of defect nodes to show. public int DefectNodesToShow { get; set; } Property Value int HasDefects Whether any defects were found. public bool HasDefects { get; } Property Value bool Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetFittingView(Box3d, Mat4d) Gets a fitting view matrix for a defect box, preserving the current view rotation. public static Mat4d GetFittingView(Box3d defectBox, Mat4d sketchView) Parameters defectBox Box3d The defect box to fit. sketchView Mat4d The current sketch view matrix. Returns Mat4d A view matrix that fits the defect box, or the original sketch view if inputs are invalid. Events DefectBoxSelected Fired when a defect box flag is selected (clicked). The parameter is the Box3d of the selected defect box. public event Action DefectBoxSelected Event Type Action" }, "api/Hi.Cbtr.CubeTree.DefectNodeInfo.TriWireInfo.html": { "href": "api/Hi.Cbtr.CubeTree.DefectNodeInfo.TriWireInfo.html", @@ -52,7 +52,7 @@ "api/Hi.Cbtr.CubeTree.html": { "href": "api/Hi.Cbtr.CubeTree.html", "title": "Class CubeTree | HiAPI-C# 2025", - "summary": "Class CubeTree Namespace Hi.Cbtr Assembly HiCbtr.dll Cube-based data structure. CubeTree has high performance for free-form geometry manipulation include volume removal and addition. public class CubeTree : IDisposable, IDisplayee, ICollidee, ICollidable, IExpandToBox3d, IGetCollidable Inheritance object CubeTree Implements IDisposable IDisplayee ICollidee ICollidable IExpandToBox3d IGetCollidable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CubeTreeExportExtensions.ToStl(CubeTree, double) CollisionUtil.Detect(CubeTree, TriTree, Mat4d, double, int) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) SweptableUtil.RemoveBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool) CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CubeTree(NativeStl, double, CancellationToken, IProgress) Ctor. This ctor is faster than CubeTree(NativeStl, double, CancellationToken, IProgress). public CubeTree(NativeStl stl, double preferredGridWidth, CancellationToken token, IProgress progress) Parameters stl NativeStl Triangle Grid. The triangles must be manifold geometry. preferredGridWidth double The expected resolution. token CancellationToken Cancellation token for the operation progress IProgress Progress reporter for the operation Remarks The applied resolution is equal or smaller than the expected resolution. The applied resolution is c*(2^i). Where c is a constant; i is a integer to make the closest value of the formula. Errors relative to the input geometry are distributed at sharp edges and curved surfaces. CubeTree(Stl, double, CancellationToken, IProgress) Can be initialized with Stl or NativeStl objects; using NativeStl is faster. The input triangle mesh must be manifold geometry, i.e., triangle vertices are aligned with other triangles' vertices, and the geometry must be closed. public CubeTree(Stl stl, double expectedResolution, CancellationToken token, IProgress progress) Parameters stl Stl expectedResolution double Sets the preferred resolution. The actual resolution will be equal to or smaller than the specified value, approximately spaced by powers of 2. Errors relative to the input geometry are distributed at sharp edges and curved surfaces. token CancellationToken Cancellation token for the operation progress IProgress Progress reporter for the operation CubeTree(string) Initializes a new instance of the CubeTree class from a file. public CubeTree(string file) Parameters file string The path to the cube tree file. Fields KeyDll Key dll path. public const string KeyDll = \"hi-key.dll\" Field Value string defaultPreferredGridWidth The default grid_width for the constructor. public const double defaultPreferredGridWidth = 0.0625 Field Value double Properties CollisionFlag Gets or sets the collision flag. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag CubetreePtr Private element. public nint CubetreePtr { get; } Property Value nint DispCacheMb Display cache size in Mb. The cahce cost from graphic card and RAM. public static long DispCacheMb { get; set; } Property Value long Resolution Get initialized resolution. public double Resolution { get; } Property Value double TotalCacheMb Cache size used by CubeTree. Sum of TrisCacheMb and DispCacheMb. TotalCacheMb Setter distributes (2/5 of the setting value) for DispCacheMb. public static long TotalCacheMb { get; set; } Property Value long TrisCacheMb Triangles cache size in Mb. The cache costs from RAM. public static long TrisCacheMb { get; set; } Property Value long Methods CleanCache() Call Hi.Cbtr.CubeTree.CleanTrisCache() and Hi.Cbtr.CubeTree.CleanDispCache_(). public static void CleanCache() CleanDispCachee() Clean display cache of this. public void CleanDispCachee() ContainsInfEdgeCuts() Checks if any existing node in the cube tree contains inf or -inf in its edge_cuts array. public bool ContainsInfEdgeCuts() Returns bool true if any node contains inf or -inf in edge_cuts, false otherwise. Diff(NativeStl, double, RangeColorRule, IProgress) Compares the cube tree with an ideal geometry and returns difference attachments. public ConcurrentBag Diff(NativeStl idealGeom, double diffRadius, RangeColorRule diffRangeColorRule, IProgress progress = null) Parameters idealGeom NativeStl The ideal geometry to compare with. diffRadius double The radius for difference detection. diffRangeColorRule RangeColorRule The color rule for visualizing differences. progress IProgress Progress reporter for the operation. Returns ConcurrentBag A collection of difference attachments. Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ~CubeTree() dtor protected ~CubeTree() GetCollidable() Gets the collidable object. public ICollidable GetCollidable() Returns ICollidable The collidable object (this instance). GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetInfEdgeCutsInfo() Gets info for all nodes that contain inf or -inf in their edge_cuts array. Each node's box is grouped with its corresponding inf edge indices. This is useful for identifying and visualizing non-manifold geometry issues in the cube tree. public List GetInfEdgeCutsInfo() Returns List A list of node info, each containing a box and its inf edge indices. GetRgbTrisNativeArray(double) Get triangles in type of double array. The returned triangles is non-manifold. It may not be closed model and the apexes of triangle grid may not be overlapped. public double[] GetRgbTrisNativeArray(double resolution = 0) Parameters resolution double The preferred resolution. The real resolution may be smaller or equal the prefered resolution. The real resolution is discrete. The resolution value is at 2^i. The geometric error mainly locate at corner. Returns double[] rgb traingle grid. In sequence of r,g,b,n.x,n.y,n.z,p0.x,p0.y,p0.z,p1.x,p1.y,p1.z,p2.x,p2.y,p2.z, repetitively. A triangle take 15 double. GetTris(double) Get triangles. The returned triangles is non-manifold. It may not be closed model and the apexes of triangle grid may not be overlapped. public List GetTris(double resolution = 0) Parameters resolution double Sets the preferred resolution. The actual resolution will be equal to or smaller than the specified value, approximately spaced by powers of 2. Errors relative to the input geometry are distributed at sharp edges and curved surfaces. A larger resolution results in fewer triangles and faster computation. Returns List Triangle mesh NewWithDefectInfos(NativeStl, double, CancellationToken, IProgress) Creates a new CubeTree and collects defect node infos during construction. public static (CubeTree cubeTree, List defectInfos) NewWithDefectInfos(NativeStl stl, double preferredGridWidth, CancellationToken token, IProgress progress) Parameters stl NativeStl preferredGridWidth double token CancellationToken progress IProgress Returns (CubeTree cubeTree, List defectInfos) NewWithDefectInfos(Stl, double, CancellationToken, IProgress) Creates a new CubeTree and collects defect node infos during construction. public static (CubeTree cubeTree, List defectInfos) NewWithDefectInfos(Stl stl, double preferredGridWidth, CancellationToken token, IProgress progress) Parameters stl Stl preferredGridWidth double token CancellationToken progress IProgress Returns (CubeTree cubeTree, List defectInfos) RebuildAttach(CbtrPickable) Every node in CubeTree can contain one CbtrPickable object. This function put or replace the contained data of all nodes to src. Using UpdateAttach(CbtrPickable) will place nodes that have not yet stored data (CbtrPickable is null) into src. public void RebuildAttach(CbtrPickable src) Parameters src CbtrPickable RemoveFlyPiece() Removes disconnected pieces (fly pieces) from the cube tree. public void RemoveFlyPiece() Substract(CachedTris, double, bool, bool) Using BufferedTris is more efficient than NativeStl. If the resolution of the subtraction region differs from the body's resolution, the lower resolution is applied to that region. public UnmanagedSubstraction Substract(CachedTris cutterBufferedTris, double preferredCubeWidth, bool isBuildContactContours = false, bool isAggressiveCut = false) Parameters cutterBufferedTris CachedTris Subtraction geometry preferredCubeWidth double The preferred cube width for the operation. isBuildContactContours bool If true, the returned Substraction contains contour groups at the intersection of the subtraction geometry and the workpiece geometry, which can be used for further analysis. isAggressiveCut bool If true, uses aggressive cutting mode. Returns UnmanagedSubstraction Substract(GeomBoolCache, bool, bool) Subtracts a geometry from the cube tree using a geometry boolean cache. public UnmanagedSubstraction Substract(GeomBoolCache geomBoolCache, bool isBuildContactContours = false, bool isAggressiveCut = false) Parameters geomBoolCache GeomBoolCache The geometry boolean cache containing the geometry to subtract. isBuildContactContours bool If true, the returned Substraction will contain contact contours. isAggressiveCut bool If true, uses aggressive cutting mode. Returns UnmanagedSubstraction The result of the subtraction operation. Substract(InitStickConvex, Mat4d, double, bool, bool) Subtracts a stick convex geometry from the cube tree. public UnmanagedSubstraction Substract(InitStickConvex initStickConvex, Mat4d mat, double preferredCubeWidth, bool isBuildContactContours = false, bool isAggressiveCut = false) Parameters initStickConvex InitStickConvex The stick convex geometry to subtract. mat Mat4d The transformation matrix to apply to the stick convex. preferredCubeWidth double The preferred cube width for the operation. isBuildContactContours bool If true, the returned Substraction will contain contact contours. isAggressiveCut bool If true, uses aggressive cutting mode. Returns UnmanagedSubstraction The result of the subtraction operation. Substract(NativeStl, double, bool, bool) Same functionality as Substract(BufferedTris,...). Less efficient due to the additional step of converting to CachedTris. public UnmanagedSubstraction Substract(NativeStl cutterStl, double preferredCubeWidth = 0, bool isBuildContactContours = false, bool isAggressiveCut = false) Parameters cutterStl NativeStl preferredCubeWidth double isBuildContactContours bool isAggressiveCut bool Returns UnmanagedSubstraction TestDiff(out CubeTree, out NativeStl) Tests the difference calculation between a cube tree and an ideal geometry. public static void TestDiff(out CubeTree cubeTree_, out NativeStl idealGeom_) Parameters cubeTree_ CubeTree The resulting cube tree. idealGeom_ NativeStl The ideal geometry used for comparison. TestIO() Tests the input/output operations for a cube tree. public static CubeTree TestIO() Returns CubeTree The cube tree created or loaded during the test. TestSimpleRemove(out CubeTree) Tests the simple removal operation on a cube tree. public static void TestSimpleRemove(out CubeTree cubeTree_) Parameters cubeTree_ CubeTree The resulting cube tree after the removal operation. UpdateAttach(CbtrPickable) Every node in CubeTree can contain one CbtrPickable object. This function put src to the nodes that contain null. public void UpdateAttach(CbtrPickable src) Parameters src CbtrPickable WriteFile(string) Writes the cube tree to a file. public void WriteFile(string file) Parameters file string The path where the cube tree will be written." + "summary": "Class CubeTree Namespace Hi.Cbtr Assembly HiCbtr.dll Cube-based data structure. CubeTree has high performance for free-form geometry manipulation include volume removal and addition. public class CubeTree : IDisposable, IDisplayee, ICollidee, ICollidable, IExpandToBox3d, IGetCollidable Inheritance object CubeTree Implements IDisposable IDisplayee ICollidee ICollidable IExpandToBox3d IGetCollidable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CubeTreeExportExtensions.ToStl(CubeTree, double) CollisionUtil.Detect(CubeTree, TriTree, Mat4d, double, int) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) SweptableUtil.AddBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool) SweptableUtil.RemoveBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool) CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CubeTree(NativeStl, double, CancellationToken, IProgress) Ctor. This ctor is faster than CubeTree(NativeStl, double, CancellationToken, IProgress). public CubeTree(NativeStl stl, double preferredGridWidth, CancellationToken token, IProgress progress) Parameters stl NativeStl Triangle Grid. The triangles must be manifold geometry. preferredGridWidth double The expected resolution. token CancellationToken Cancellation token for the operation progress IProgress Progress reporter for the operation Remarks The applied resolution is equal or smaller than the expected resolution. The applied resolution is c*(2^i). Where c is a constant; i is a integer to make the closest value of the formula. Errors relative to the input geometry are distributed at sharp edges and curved surfaces. CubeTree(Stl, double, CancellationToken, IProgress) Can be initialized with Stl or NativeStl objects; using NativeStl is faster. The input triangle mesh must be manifold geometry, i.e., triangle vertices are aligned with other triangles' vertices, and the geometry must be closed. public CubeTree(Stl stl, double expectedResolution, CancellationToken token, IProgress progress) Parameters stl Stl expectedResolution double Sets the preferred resolution. The actual resolution will be equal to or smaller than the specified value, approximately spaced by powers of 2. Errors relative to the input geometry are distributed at sharp edges and curved surfaces. token CancellationToken Cancellation token for the operation progress IProgress Progress reporter for the operation CubeTree(string) Initializes a new instance of the CubeTree class from a file. public CubeTree(string file) Parameters file string The path to the cube tree file. Fields KeyDll Key dll path. public const string KeyDll = \"hi-key.dll\" Field Value string defaultPreferredGridWidth The default grid_width for the constructor. public const double defaultPreferredGridWidth = 0.0625 Field Value double Properties CollisionFlag Gets or sets the collision flag. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag CubetreePtr Private element. public nint CubetreePtr { get; } Property Value nint DispCacheMb Display cache size in Mb. The cahce cost from graphic card and RAM. public static long DispCacheMb { get; set; } Property Value long IsDisposed Gets a value indicating whether this tree has been disposed. All native-backed members become no-ops afterwards (value getters return neutral defaults). public bool IsDisposed { get; } Property Value bool Resolution Get initialized resolution. public double Resolution { get; } Property Value double TotalCacheMb Cache size used by CubeTree. Sum of TrisCacheMb and DispCacheMb. TotalCacheMb Setter distributes (2/5 of the setting value) for DispCacheMb. public static long TotalCacheMb { get; set; } Property Value long TrisCacheMb Triangles cache size in Mb. The cache costs from RAM. public static long TrisCacheMb { get; set; } Property Value long Methods Add(CachedTris, double, bool, bool) Boolean-union counterpart of Substract(CachedTris, double, bool, bool). Using BufferedTris is more efficient than NativeStl. If the resolution of the addition region differs from the body's resolution, the lower resolution is applied to that region. public UnmanagedAddition Add(CachedTris adderBufferedTris, double preferredCubeWidth, bool isBuildContactContours = false, bool isAggressiveAdd = false) Parameters adderBufferedTris CachedTris Addition geometry preferredCubeWidth double The preferred cube width for the operation. isBuildContactContours bool If true, the returned Addition contains contour groups of the newly created surface, which can be used for further analysis. isAggressiveAdd bool If true, uses aggressive adding mode. Returns UnmanagedAddition Add(GeomBoolCache, bool, bool) Adds (boolean union) a geometry to the cube tree using a geometry boolean cache. public UnmanagedAddition Add(GeomBoolCache geomBoolCache, bool isBuildContactContours = false, bool isAggressiveAdd = false) Parameters geomBoolCache GeomBoolCache The geometry boolean cache containing the geometry to add. isBuildContactContours bool If true, the returned Addition will contain the contours of the newly created surface. isAggressiveAdd bool If true, uses aggressive adding mode. Returns UnmanagedAddition The result of the addition operation. Add(NativeStl, double, bool, bool) Boolean-union counterpart of Substract(NativeStl, double, bool, bool). Same functionality as Add(CachedTris,...). Less efficient due to the additional step of converting to CachedTris. public UnmanagedAddition Add(NativeStl adderStl, double preferredCubeWidth = 0, bool isBuildContactContours = false, bool isAggressiveAdd = false) Parameters adderStl NativeStl preferredCubeWidth double isBuildContactContours bool isAggressiveAdd bool Returns UnmanagedAddition CleanCache() Call Hi.Cbtr.CubeTree.CleanTrisCache() and Hi.Cbtr.CubeTree.CleanDispCache_(). public static void CleanCache() CleanDispCachee() Clean display cache of this. public void CleanDispCachee() ContainsInfEdgeCuts() Checks if any existing node in the cube tree contains inf or -inf in its edge_cuts array. public bool ContainsInfEdgeCuts() Returns bool true if any node contains inf or -inf in edge_cuts, false otherwise. DetachAttachments() Detach-ALL: nulls every node's attachment WITHOUT erasing nodes from those attachments' node maps — a fast reset of all colouring for when the attached attachments are about to be disposed (their own disposal clears their maps). Runs under the write gate so it also acts as a render barrier (in-flight renders drain, new renders read null), letting the detached attachments be freed in the background with no render holding a stale pointer. The caller MUST dispose the detached attachments. Must NOT be called while holding this tree's read gate. public void DetachAttachments() DetachUnderWriteGate(IReadOnlyCollection) Targeted detach: under the write gate (render barrier), nulls node->attachment for ONLY the given attachments' nodes (idempotent ==this guard; never touches other attachments). After this returns, dispose them in the background — the barrier guarantees no render still holds a stale pointer. Must NOT be called while holding this tree's read gate. public void DetachUnderWriteGate(IReadOnlyCollection attachments) Parameters attachments IReadOnlyCollection Diff(NativeStl, double, RangeColorRule, IProgress) Compares the cube tree with an ideal geometry and returns difference attachments. public ConcurrentBag Diff(NativeStl idealGeom, double diffRadius, RangeColorRule diffRangeColorRule, IProgress messageProgress = null) Parameters idealGeom NativeStl The ideal geometry to compare with. diffRadius double The radius for difference detection. diffRangeColorRule RangeColorRule The color rule for visualizing differences. messageProgress IProgress Progress reporter for the operation. Returns ConcurrentBag A collection of difference attachments. Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool DisposeBackground() Frees the native cube tree on a background task. Disposals are serialized: if a previous background disposal has not finished, this one waits for it. Returns the task representing this disposal (see WaitForPendingDisposals() to drain). public Task DisposeBackground() Returns Task DisposeBackground(IReadOnlyCollection) Enqueues disposal of objects retired alongside a tree (typically its attachments) on the SAME serialized chain as DisposeBackground(), so there is a single drain point (WaitForPendingDisposals()). Disposing a CbtrPickable now clears its (possibly huge) attached node map — O(nodes) — which must not run on the hot path. Enqueue the owning tree's DisposeBackground() first so the gated tree teardown (which waits out in-flight renders) runs before its attachments are freed. public static Task DisposeBackground(IReadOnlyCollection disposables) Parameters disposables IReadOnlyCollection Returns Task ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ~CubeTree() dtor protected ~CubeTree() GetCollidable() Gets the collidable object. public ICollidable GetCollidable() Returns ICollidable The collidable object (this instance). GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetInfEdgeCutsInfo() Gets info for all nodes that contain inf or -inf in their edge_cuts array. Each node's box is grouped with its corresponding inf edge indices. This is useful for identifying and visualizing non-manifold geometry issues in the cube tree. public List GetInfEdgeCutsInfo() Returns List A list of node info, each containing a box and its inf edge indices. GetRgbTrisNativeArray(double) Get triangles in type of double array. The returned triangles is non-manifold. It may not be closed model and the apexes of triangle grid may not be overlapped. public double[] GetRgbTrisNativeArray(double resolution = 0) Parameters resolution double The preferred resolution. The real resolution may be smaller or equal the prefered resolution. The real resolution is discrete. The resolution value is at 2^i. The geometric error mainly locate at corner. Returns double[] rgb traingle grid. In sequence of r,g,b,n.x,n.y,n.z,p0.x,p0.y,p0.z,p1.x,p1.y,p1.z,p2.x,p2.y,p2.z, repetitively. A triangle take 15 double. GetTris(double) Get triangles. The returned triangles is non-manifold. It may not be closed model and the apexes of triangle grid may not be overlapped. public List GetTris(double resolution = 0) Parameters resolution double Sets the preferred resolution. The actual resolution will be equal to or smaller than the specified value, approximately spaced by powers of 2. Errors relative to the input geometry are distributed at sharp edges and curved surfaces. A larger resolution results in fewer triangles and faster computation. Returns List Triangle mesh NewWithDefectInfos(NativeStl, double, CancellationToken, IProgress) Creates a new CubeTree and collects defect node infos during construction. public static (CubeTree cubeTree, List defectInfos) NewWithDefectInfos(NativeStl stl, double preferredGridWidth, CancellationToken token, IProgress messageProgress) Parameters stl NativeStl preferredGridWidth double token CancellationToken messageProgress IProgress Returns (CubeTree cubeTree, List defectInfos) NewWithDefectInfos(Stl, double, CancellationToken, IProgress) Creates a new CubeTree and collects defect node infos during construction. public static (CubeTree cubeTree, List defectInfos) NewWithDefectInfos(Stl stl, double preferredGridWidth, CancellationToken token, IProgress messageProgress) Parameters stl Stl preferredGridWidth double token CancellationToken messageProgress IProgress Returns (CubeTree cubeTree, List defectInfos) RebuildAttach(CbtrPickable) Every node in CubeTree can contain one CbtrPickable object. This function put or replace the contained data of all nodes to src. Using UpdateAttach(CbtrPickable) will place nodes that have not yet stored data (CbtrPickable is null) into src. public void RebuildAttach(CbtrPickable src) Parameters src CbtrPickable RemoveFlyPiece() Removes disconnected pieces (fly pieces) from the cube tree. public void RemoveFlyPiece() Substract(CachedTris, double, bool, bool) Using BufferedTris is more efficient than NativeStl. If the resolution of the subtraction region differs from the body's resolution, the lower resolution is applied to that region. public UnmanagedSubstraction Substract(CachedTris cutterBufferedTris, double preferredCubeWidth, bool isBuildContactContours = false, bool isAggressiveCut = false) Parameters cutterBufferedTris CachedTris Subtraction geometry preferredCubeWidth double The preferred cube width for the operation. isBuildContactContours bool If true, the returned Substraction contains contour groups at the intersection of the subtraction geometry and the workpiece geometry, which can be used for further analysis. isAggressiveCut bool If true, uses aggressive cutting mode. Returns UnmanagedSubstraction Substract(GeomBoolCache, bool, bool) Subtracts a geometry from the cube tree using a geometry boolean cache. public UnmanagedSubstraction Substract(GeomBoolCache geomBoolCache, bool isBuildContactContours = false, bool isAggressiveCut = false) Parameters geomBoolCache GeomBoolCache The geometry boolean cache containing the geometry to subtract. isBuildContactContours bool If true, the returned Substraction will contain contact contours. isAggressiveCut bool If true, uses aggressive cutting mode. Returns UnmanagedSubstraction The result of the subtraction operation. Substract(InitStickConvex, Mat4d, double, bool, bool) Subtracts a stick convex geometry from the cube tree. public UnmanagedSubstraction Substract(InitStickConvex initStickConvex, Mat4d mat, double preferredCubeWidth, bool isBuildContactContours = false, bool isAggressiveCut = false) Parameters initStickConvex InitStickConvex The stick convex geometry to subtract. mat Mat4d The transformation matrix to apply to the stick convex. preferredCubeWidth double The preferred cube width for the operation. isBuildContactContours bool If true, the returned Substraction will contain contact contours. isAggressiveCut bool If true, uses aggressive cutting mode. Returns UnmanagedSubstraction The result of the subtraction operation. Substract(NativeStl, double, bool, bool) Same functionality as Substract(BufferedTris,...). Less efficient due to the additional step of converting to CachedTris. public UnmanagedSubstraction Substract(NativeStl cutterStl, double preferredCubeWidth = 0, bool isBuildContactContours = false, bool isAggressiveCut = false) Parameters cutterStl NativeStl preferredCubeWidth double isBuildContactContours bool isAggressiveCut bool Returns UnmanagedSubstraction TestDiff(out CubeTree, out NativeStl) Tests the difference calculation between a cube tree and an ideal geometry. public static void TestDiff(out CubeTree cubeTree_, out NativeStl idealGeom_) Parameters cubeTree_ CubeTree The resulting cube tree. idealGeom_ NativeStl The ideal geometry used for comparison. TestIO() Tests the input/output operations for a cube tree. public static CubeTree TestIO() Returns CubeTree The cube tree created or loaded during the test. TestSimpleRemove(out CubeTree) Tests the simple removal operation on a cube tree. public static void TestSimpleRemove(out CubeTree cubeTree_) Parameters cubeTree_ CubeTree The resulting cube tree after the removal operation. UpdateAttach(CbtrPickable) Every node in CubeTree can contain one CbtrPickable object. This function put src to the nodes that contain null. public void UpdateAttach(CbtrPickable src) Parameters src CbtrPickable WaitForPendingDisposals() A task that completes when all queued background disposals have finished. Await this at application shutdown before the native dll is unloaded. public static Task WaitForPendingDisposals() Returns Task WriteFile(string) Writes the cube tree to a file. public void WriteFile(string file) Parameters file string The path where the cube tree will be written." }, "api/Hi.Cbtr.CubeTreeExportExtensions.html": { "href": "api/Hi.Cbtr.CubeTreeExportExtensions.html", @@ -62,12 +62,12 @@ "api/Hi.Cbtr.CubeTreeFile.html": { "href": "api/Hi.Cbtr.CubeTreeFile.html", "title": "Class CubeTreeFile | HiAPI-C# 2025", - "summary": "Class CubeTreeFile Namespace Hi.Cbtr Assembly HiCbtr.dll Represents a file containing cube tree data. public class CubeTreeFile : IMakeXmlSource, ISourceFile, IToPresentDto Inheritance object CubeTreeFile Implements IMakeXmlSource ISourceFile IToPresentDto 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 CubeTreeFile() Ctor. public CubeTreeFile() CubeTreeFile(string, string) Ctor. public CubeTreeFile(string relFile, string baseDirectory) Parameters relFile string baseDirectory string CubeTreeFile(XElement, string) Ctor. public CubeTreeFile(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory for relative paths. Properties BaseDirectory Gets or sets the base directory for file operations. public string BaseDirectory { get; set; } Property Value string SourceFile file path. public string SourceFile { get; set; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string Methods LoadByFile() Loads a cube tree from the specified file. public CubeTree LoadByFile() Returns CubeTree The loaded cube tree, or null if the file path is empty or null. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToPresentDto() Convert to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO object with type and object properties" + "summary": "Class CubeTreeFile Namespace Hi.Cbtr Assembly HiCbtr.dll Represents a file containing cube tree data. public class CubeTreeFile : IMakeXmlSource, ISourceFile, IToPresentDto Inheritance object CubeTreeFile Implements IMakeXmlSource ISourceFile IToPresentDto 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 CubeTreeFile() Ctor. public CubeTreeFile() CubeTreeFile(string, string) Ctor. public CubeTreeFile(string relFile, string baseDirectory) Parameters relFile string baseDirectory string CubeTreeFile(XElement, string) Ctor. public CubeTreeFile(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory for relative paths. Properties BaseDirectory Gets or sets the base directory for file operations. public string BaseDirectory { get; set; } Property Value string SourceFile file path. public string SourceFile { get; set; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string Methods LoadByFile() Loads a cube tree from the specified file. public CubeTree LoadByFile() Returns CubeTree The loaded cube tree, or null if the file path is empty or null. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToPresentDto() Convert CubeTreeFile to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO dictionary with Type and SourceFile keys" }, "api/Hi.Cbtr.DiffAttachment.html": { "href": "api/Hi.Cbtr.DiffAttachment.html", "title": "Class DiffAttachment | HiAPI-C# 2025", - "summary": "Class DiffAttachment Namespace Hi.Cbtr Assembly HiCbtr.dll Represents an attachment with a difference value for cube tree. public class DiffAttachment : CbtrPickable, IGetPickable, IDisposable Inheritance object Pickable CbtrPickable DiffAttachment Implements IGetPickable IDisposable Inherited Members CbtrPickable.Rgb CbtrPickable.AttachmentPriority CbtrPickable.Highlight(bool) CbtrPickable.CleanLinkedCbtrNodesDrawingCache() CbtrPickable.ShrinkToFitNodeMap() CbtrPickable.OnMouseEnter(ui_event_type, DispEngine) CbtrPickable.OnMouseLeave(ui_event_type, DispEngine) Pickable.Pickables Pickable.mark Pickable.PickingID Pickable.GetPickable() Pickable.OnKeyDown(key_event_t, DispEngine) Pickable.OnKeyUp(key_event_t, DispEngine) Pickable.OnMouseDown(mouse_button_event_t, DispEngine) Pickable.OnMouseUp(mouse_button_event_t, DispEngine) Pickable.OnMouseMove(mouse_move_event_t, DispEngine) Pickable.OnMouseWheel(mouse_wheel_event_t, DispEngine) Pickable.Dispose() 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 DiffAttachment(double) Initializes a new instance of the DiffAttachment class. public DiffAttachment(double diff) Parameters diff double The difference value. Properties Diff Gets or sets the difference value. public double Diff { get; set; } Property Value double Methods Dispose(bool) protected override void Dispose(bool disposing) Parameters disposing bool" + "summary": "Class DiffAttachment Namespace Hi.Cbtr Assembly HiCbtr.dll Represents an attachment with a difference value for cube tree. public class DiffAttachment : CbtrPickable, IGetPickable, IDisposable Inheritance object Pickable CbtrPickable DiffAttachment Implements IGetPickable IDisposable Inherited Members CbtrPickable.Rgb CbtrPickable.IsColorTableCovered CbtrPickable.AttachmentPriority CbtrPickable.Highlight(bool) CbtrPickable.CleanAttachedCbtrNodesDrawingCache() CbtrPickable.ShrinkToFitNodeMap() CbtrPickable.OnMouseEnter(ui_event_type, DispEngine) CbtrPickable.OnMouseLeave(ui_event_type, DispEngine) Pickable.Pickables Pickable.mark Pickable.PickingID Pickable.GetPickable() Pickable.OnKeyDown(key_event_t, DispEngine) Pickable.OnKeyUp(key_event_t, DispEngine) Pickable.OnMouseDown(mouse_button_event_t, DispEngine) Pickable.OnMouseUp(mouse_button_event_t, DispEngine) Pickable.OnMouseMove(mouse_move_event_t, DispEngine) Pickable.OnMouseWheel(mouse_wheel_event_t, DispEngine) Pickable.Dispose() 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 DiffAttachment(double) Initializes a new instance of the DiffAttachment class. public DiffAttachment(double diff) Parameters diff double The difference value. Properties Diff Gets or sets the difference value. public double Diff { get; set; } Property Value double Methods Dispose(bool) protected override void Dispose(bool disposing) Parameters disposing bool" }, "api/Hi.Cbtr.GeomBoolCache.html": { "href": "api/Hi.Cbtr.GeomBoolCache.html", @@ -87,18 +87,13 @@ "api/Hi.Cbtr.InfDefectDisplayee.html": { "href": "api/Hi.Cbtr.InfDefectDisplayee.html", "title": "Class InfDefectDisplayee | HiAPI-C# 2025", - "summary": "Class InfDefectDisplayee Namespace Hi.Cbtr Assembly HiCbtr.dll Encapsulates inf edge cuts defect visualization for a cube tree, including defect boxes, edge segments, and flag drawings. public class InfDefectDisplayee : IDisplayee, IExpandToBox3d, IDisposable Inheritance object InfDefectDisplayee Implements IDisplayee IExpandToBox3d 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) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors InfDefectDisplayee(List) Ctor. Builds drawings from the given inf node info list. public InfDefectDisplayee(List nodeInfoList) Parameters nodeInfoList List Properties DefectBoxes Defect boxes for display (capped to Hi.Cbtr.InfDefectDisplayee.defectBoxesToShow). public List DefectBoxes { get; } Property Value List HasDefects Whether any inf defects were found. public bool HasDefects { get; } Property Value bool NodeInfoList Inf node info list from cube tree. public List NodeInfoList { get; } Property Value List Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ReportTo(IProgress) Reports defect information to a message host. public void ReportTo(IProgress messageHost) Parameters messageHost IProgress" + "summary": "Class InfDefectDisplayee Namespace Hi.Cbtr Assembly HiCbtr.dll Encapsulates inf edge cuts defect visualization for a cube tree, including defect boxes, edge segments, and flag drawings. public class InfDefectDisplayee : IDisplayee, IExpandToBox3d, IDisposable Inheritance object InfDefectDisplayee Implements IDisplayee IExpandToBox3d 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) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors InfDefectDisplayee(List) Ctor. Builds drawings from the given inf node info list. public InfDefectDisplayee(List nodeInfoList) Parameters nodeInfoList List Properties DefectBoxes Defect boxes for display (capped to Hi.Cbtr.InfDefectDisplayee.defectBoxesToShow). public List DefectBoxes { get; } Property Value List HasDefects Whether any inf defects were found. public bool HasDefects { get; } Property Value bool NodeInfoList Inf node info list from cube tree. public List NodeInfoList { get; } Property Value List Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ReportTo(IProgress) Reports defect information to a message host. public void ReportTo(IProgress messageProgress) Parameters messageProgress IProgress" }, "api/Hi.Cbtr.InitStickConvex.html": { "href": "api/Hi.Cbtr.InitStickConvex.html", "title": "Class InitStickConvex | HiAPI-C# 2025", "summary": "Class InitStickConvex Namespace Hi.Cbtr Assembly HiCbtr.dll Represents a stick convex initialization object. public class InitStickConvex : IDisposable Inheritance object InitStickConvex Implements 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors InitStickConvex(IGetGeneralApt) Initializes a new instance of the InitStickConvex class. public InitStickConvex(IGetGeneralApt src) Parameters src IGetGeneralApt The source object that provides general APT information. Properties InitStickConvexPtr Gets the native pointer to the stick convex object. public nint InitStickConvexPtr { get; } Property Value nint Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ~InitStickConvex() protected ~InitStickConvex()" }, - "api/Hi.Cbtr.LsStl.html": { - "href": "api/Hi.Cbtr.LsStl.html", - "title": "Class LsStl | HiAPI-C# 2025", - "summary": "Class LsStl Namespace Hi.Cbtr Assembly HiCbtr.dll Linear Sweptable Stl. [Obsolete] public class LsStl : IDisposable Inheritance object LsStl Implements 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors LsStl(NativeStl) Initializes a new instance of the LsStl class. public LsStl(NativeStl nativeStl) Parameters nativeStl NativeStl The native STL to create a linear sweepable STL from. Properties LsStlPtr Gets or sets the native pointer to the linear sweepable STL. public nint LsStlPtr { get; set; } Property Value nint Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) Releases the unmanaged resources used by the LsStl and optionally releases the managed resources. protected virtual void Dispose(bool disposing) Parameters disposing bool true to release both managed and unmanaged resources; false to release only unmanaged resources. ~LsStl() Finalizes an instance of the LsStl class. protected ~LsStl()" - }, "api/Hi.Cbtr.Substraction.html": { "href": "api/Hi.Cbtr.Substraction.html", "title": "Class Substraction | HiAPI-C# 2025", @@ -107,12 +102,17 @@ "api/Hi.Cbtr.UnhighlightablePickable.html": { "href": "api/Hi.Cbtr.UnhighlightablePickable.html", "title": "Class UnhighlightablePickable | HiAPI-C# 2025", - "summary": "Class UnhighlightablePickable Namespace Hi.Cbtr Assembly HiCbtr.dll Cbtr un-highlightable pickable. For initailizing purpose by RebuildAttach(CbtrPickable). public class UnhighlightablePickable : CbtrPickable, IGetPickable, IDisposable Inheritance object Pickable CbtrPickable UnhighlightablePickable Implements IGetPickable IDisposable Inherited Members CbtrPickable.Rgb CbtrPickable.AttachmentPriority CbtrPickable.Highlight(bool) CbtrPickable.CleanLinkedCbtrNodesDrawingCache() CbtrPickable.ShrinkToFitNodeMap() CbtrPickable.Dispose(bool) Pickable.Pickables Pickable.mark Pickable.PickingID Pickable.GetPickable() Pickable.OnKeyDown(key_event_t, DispEngine) Pickable.OnKeyUp(key_event_t, DispEngine) Pickable.OnMouseDown(mouse_button_event_t, DispEngine) Pickable.OnMouseUp(mouse_button_event_t, DispEngine) Pickable.OnMouseMove(mouse_move_event_t, DispEngine) Pickable.OnMouseWheel(mouse_wheel_event_t, DispEngine) Pickable.Dispose() 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 UnhighlightablePickable() Ctor. public UnhighlightablePickable() Methods OnMouseEnter(ui_event_type, DispEngine) Behavior on mouse enter public override void OnMouseEnter(ui_event_type e, DispEngine dispEngine) Parameters e ui_event_type event type dispEngine DispEngine display engine OnMouseLeave(ui_event_type, DispEngine) Behavior on mouse leave public override void OnMouseLeave(ui_event_type e, DispEngine dispEngine) Parameters e ui_event_type event type dispEngine DispEngine display engine" + "summary": "Class UnhighlightablePickable Namespace Hi.Cbtr Assembly HiCbtr.dll Cbtr un-highlightable pickable. For initailizing purpose by RebuildAttach(CbtrPickable). public class UnhighlightablePickable : CbtrPickable, IGetPickable, IDisposable Inheritance object Pickable CbtrPickable UnhighlightablePickable Implements IGetPickable IDisposable Inherited Members CbtrPickable.Rgb CbtrPickable.IsColorTableCovered CbtrPickable.AttachmentPriority CbtrPickable.Highlight(bool) CbtrPickable.CleanAttachedCbtrNodesDrawingCache() CbtrPickable.ShrinkToFitNodeMap() CbtrPickable.Dispose(bool) Pickable.Pickables Pickable.mark Pickable.PickingID Pickable.GetPickable() Pickable.OnKeyDown(key_event_t, DispEngine) Pickable.OnKeyUp(key_event_t, DispEngine) Pickable.OnMouseDown(mouse_button_event_t, DispEngine) Pickable.OnMouseUp(mouse_button_event_t, DispEngine) Pickable.OnMouseMove(mouse_move_event_t, DispEngine) Pickable.OnMouseWheel(mouse_wheel_event_t, DispEngine) Pickable.Dispose() 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 UnhighlightablePickable() Ctor. public UnhighlightablePickable() Methods OnMouseEnter(ui_event_type, DispEngine) Behavior on mouse enter public override void OnMouseEnter(ui_event_type e, DispEngine dispEngine) Parameters e ui_event_type event type dispEngine DispEngine display engine OnMouseLeave(ui_event_type, DispEngine) Behavior on mouse leave public override void OnMouseLeave(ui_event_type e, DispEngine dispEngine) Parameters e ui_event_type event type dispEngine DispEngine display engine" + }, + "api/Hi.Cbtr.UnmanagedAddition.html": { + "href": "api/Hi.Cbtr.UnmanagedAddition.html", + "title": "Class UnmanagedAddition | HiAPI-C# 2025", + "summary": "Class UnmanagedAddition Namespace Hi.Cbtr Assembly HiCbtr.dll Data about the adding behavior of CubeTree. The dual of UnmanagedSubstraction. public class UnmanagedAddition : IDisplayee, IExpandToBox3d, IDisposable Inheritance object UnmanagedAddition Implements IDisplayee IExpandToBox3d 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) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields preserveCount The count of preservations to prevent disposal. public int preserveCount Field Value int Properties ContactContours Contours of the newly created surface (the dual of the substraction's newly exposed surface). Each contour is composed by 3~12 points. public List> ContactContours { get; } Property Value List> ContactContoursArea Gets the area of the contact contours. public double ContactContoursArea { get; } Property Value double IsTouched Is the adder and workpiece touched (any material actually added). public bool IsTouched { get; } Property Value bool Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. DisplayContours(Bind) Display ContactContours by lines. public void DisplayContours(Bind bind) Parameters bind Bind bind Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ~UnmanagedAddition() protected ~UnmanagedAddition() PreserveBegin() Preserve the object from arising Dispose(). Add preserve count for 1. public void PreserveBegin() See Also PreserveEnd() PreserveEnd() Minus preserve count for 1. If preserve count is eqaul or lower than 0, call Dispose(). public void PreserveEnd() See Also PreserveBegin()" }, "api/Hi.Cbtr.UnmanagedSubstraction.html": { "href": "api/Hi.Cbtr.UnmanagedSubstraction.html", "title": "Class UnmanagedSubstraction | HiAPI-C# 2025", - "summary": "Class UnmanagedSubstraction Namespace Hi.Cbtr Assembly HiCbtr.dll Data about the removing behavior of CubeTree. public class UnmanagedSubstraction : IDisplayee, IExpandToBox3d, IDisposable Inheritance object UnmanagedSubstraction Implements IDisplayee IExpandToBox3d 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) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields preserveCount The count of preservations to prevent disposal. public int preserveCount Field Value int Properties ContactContours Contact contours. Each contour is composed by 3~12 points. public List> ContactContours { get; } Property Value List> ContactContoursArea Gets the area of the contact contours. public double ContactContoursArea { get; } Property Value double IsTouched Is the cutter and workpiece touched. public bool IsTouched { get; } Property Value bool Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. DisplayContours(Bind) Display ContactContours by lines. public void DisplayContours(Bind bind) Parameters bind Bind bind Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ~UnmanagedSubstraction() protected ~UnmanagedSubstraction() PreserveBegin() Preserve the object from arising Dispose(). Add preserve count for 1. public void PreserveBegin() See Also PreserveEnd() PreserveEnd() Minus preserve count for 1. If preserve count is eqaul or lower than 0, call Dispose(). public void PreserveEnd() See Also PreserveBegin()" + "summary": "Class UnmanagedSubstraction Namespace Hi.Cbtr Assembly HiCbtr.dll Data about the removing behavior of CubeTree. public class UnmanagedSubstraction : IDisplayee, IExpandToBox3d, IDisposable Inheritance object UnmanagedSubstraction Implements IDisplayee IExpandToBox3d 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) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Fields preserveCount The count of preservations to prevent disposal. public int preserveCount Field Value int Properties ContactContours Contact contours. Each contour is composed by 3~12 points. public List> ContactContours { get; } Property Value List> ContactContoursArea Gets the area of the contact contours. public double ContactContoursArea { get; } Property Value double IsTouched Is the cutter and workpiece touched. public bool IsTouched { get; } Property Value bool SubstractionPtr Internal Use Only. The native pointer to the substraction object. HiMech reads it to build the milling engagement natively at the substraction completion point, without copying contours through the managed heap. public nint SubstractionPtr { get; } Property Value nint Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. DisplayContours(Bind) Display ContactContours by lines. public void DisplayContours(Bind bind) Parameters bind Bind bind Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ~UnmanagedSubstraction() protected ~UnmanagedSubstraction() PreserveBegin() Preserve the object from arising Dispose(). Add preserve count for 1. public void PreserveBegin() See Also PreserveEnd() PreserveEnd() Minus preserve count for 1. If preserve count is eqaul or lower than 0, call Dispose(). public void PreserveEnd() See Also PreserveBegin()" }, "api/Hi.Cbtr.WireCube.html": { "href": "api/Hi.Cbtr.WireCube.html", @@ -122,7 +122,7 @@ "api/Hi.Cbtr.html": { "href": "api/Hi.Cbtr.html", "title": "Namespace Hi.Cbtr | HiAPI-C# 2025", - "summary": "Namespace Hi.Cbtr Classes CachedTris Feature-cached triangle for CubeTree computation. CbtrPickable Pickable of CubeTree grids. ConstructionDefectDisplayee Encapsulates cube tree construction defect results, including both defect data and visualization drawings. CubeTree Cube-based data structure. CubeTree has high performance for free-form geometry manipulation include volume removal and addition. CubeTree.DefectNodeInfo Info for a single defect node detected during cube tree construction. CubeTree.DefectNodeInfo.TriWireInfo A single triangle-wire relation entry within a defect node. CubeTree.InfNodeInfo Info for a single node with inf edge_cuts, containing box and edge indices. CubeTreeExportExtensions Mesh export helpers for CubeTree. CubeTreeFile Represents a file containing cube tree data. DiffAttachment Represents an attachment with a difference value for cube tree. GeomBoolCache Cache for geometry boolean operations. InfDefectDisplayee Encapsulates inf edge cuts defect visualization for a cube tree, including defect boxes, edge segments, and flag drawings. InitStickConvex Represents a stick convex initialization object. LsStl Linear Sweptable Stl. Substraction Represents the result of a volume subtraction operation. UnhighlightablePickable Cbtr un-highlightable pickable. For initailizing purpose by RebuildAttach(CbtrPickable). UnmanagedSubstraction Data about the removing behavior of CubeTree. WireCube For Internal Use Only. Represents a wire cube for display purposes. The edge index follows the C++ cube_node_t pattern: edgeIndex = (dir << 2) | (th1 << 1) | th0 where dir is the edge direction (0=X, 1=Y, 2=Z), th0 is the position flag in (dir+1)%3 direction, th1 is the position flag in (dir+2)%3 direction. Structs CubeTree.DefectTriWireInfoInterop Interop struct matching C++ defect_tri_wire_info_interop_t. CubeTree.TriWireRelationInterop Interop struct matching C++ tri_wire_relation_interop_t. node_diff_t Structure representing a node with a difference value. Interfaces IGetInitStickConvex Interface of GetInitStickConvex(). Enums CachedTris.SweepingMode Defines the mode for sweeping operations. GeomBoolCacheEnum Enumeration of geometry boolean cache types. Delegates CubeTree.diff_response_func_t Delegate for handling difference responses during geometry comparison." + "summary": "Namespace Hi.Cbtr Classes CachedTris Feature-cached triangle for CubeTree computation. CbtrPickable Pickable of CubeTree grids. ConstructionDefectDisplayee Encapsulates cube tree construction defect results, including both defect data and visualization drawings. CubeTree Cube-based data structure. CubeTree has high performance for free-form geometry manipulation include volume removal and addition. CubeTree.DefectNodeInfo Info for a single defect node detected during cube tree construction. CubeTree.DefectNodeInfo.TriWireInfo A single triangle-wire relation entry within a defect node. CubeTree.InfNodeInfo Info for a single node with inf edge_cuts, containing box and edge indices. CubeTreeExportExtensions Mesh export helpers for CubeTree. CubeTreeFile Represents a file containing cube tree data. DiffAttachment Represents an attachment with a difference value for cube tree. GeomBoolCache Cache for geometry boolean operations. InfDefectDisplayee Encapsulates inf edge cuts defect visualization for a cube tree, including defect boxes, edge segments, and flag drawings. InitStickConvex Represents a stick convex initialization object. Substraction Represents the result of a volume subtraction operation. UnhighlightablePickable Cbtr un-highlightable pickable. For initailizing purpose by RebuildAttach(CbtrPickable). UnmanagedAddition Data about the adding behavior of CubeTree. The dual of UnmanagedSubstraction. UnmanagedSubstraction Data about the removing behavior of CubeTree. WireCube For Internal Use Only. Represents a wire cube for display purposes. The edge index follows the C++ cube_node_t pattern: edgeIndex = (dir << 2) | (th1 << 1) | th0 where dir is the edge direction (0=X, 1=Y, 2=Z), th0 is the position flag in (dir+1)%3 direction, th1 is the position flag in (dir+2)%3 direction. Structs CubeTree.DefectTriWireInfoInterop Interop struct matching C++ defect_tri_wire_info_interop_t. CubeTree.TriWireRelationInterop Interop struct matching C++ tri_wire_relation_interop_t. node_diff_t Structure representing a node with a difference value. Interfaces IGetInitStickConvex Interface of GetInitStickConvex(). Enums CachedTris.SweepingMode Defines the mode for sweeping operations. GeomBoolCacheEnum Enumeration of geometry boolean cache types. Delegates CubeTree.diff_response_func_t Delegate for handling difference responses during geometry comparison." }, "api/Hi.Cbtr.node_diff_t.html": { "href": "api/Hi.Cbtr.node_diff_t.html", @@ -137,7 +137,7 @@ "api/Hi.Collision.AnchoredCollidablePair.html": { "href": "api/Hi.Collision.AnchoredCollidablePair.html", "title": "Class AnchoredCollidablePair | HiAPI-C# 2025", - "summary": "Class AnchoredCollidablePair Namespace Hi.Collision Assembly HiMech.dll Represents a pair of anchored collidable objects for collision detection. public class AnchoredCollidablePair : IMakeXmlSource Inheritance object AnchoredCollidablePair Implements IMakeXmlSource Inherited Members object.Equals(object, object) 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 AnchoredCollidablePair(IAnchoredCollidableBased, IAnchoredCollidableBased) Initializes a new instance of the AnchoredCollidablePair class with two collidable objects. public AnchoredCollidablePair(IAnchoredCollidableBased indexA, IAnchoredCollidableBased indexB) Parameters indexA IAnchoredCollidableBased The first collidable object. indexB IAnchoredCollidableBased The second collidable object. AnchoredCollidablePair(string, IAnchoredCollidableBased, IAnchoredCollidableBased) Initializes a new instance of the AnchoredCollidablePair class with a name and two collidable objects. public AnchoredCollidablePair(string name, IAnchoredCollidableBased indexA, IAnchoredCollidableBased indexB) Parameters name string The name of the pair. indexA IAnchoredCollidableBased The first collidable object. indexB IAnchoredCollidableBased The second collidable object. AnchoredCollidablePair(XElement, string, IProgress, object[]) Initializes a new instance of the AnchoredCollidablePair class from XML. public AnchoredCollidablePair(XElement src, string baseDirectory, IProgress progress, object[] res) Parameters src XElement The XML element containing the pair data. baseDirectory string The base directory for resolving relative paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. res object[] Additional resources for initialization. Fields XName The XML element name for serialization. public static string XName Field Value string Properties CollisionFlag Gets or sets the collision flag indicating the collision status between the two objects. public CollisionFlag CollisionFlag { get; } Property Value CollisionFlag IndexA Gets the first collidable object in the pair. public IAnchoredCollidableBased IndexA { get; } Property Value IAnchoredCollidableBased IndexB Gets the second collidable object in the pair. public IAnchoredCollidableBased IndexB { get; } Property Value IAnchoredCollidableBased MatAB Gets or sets the transformation matrix from object A to object B. public Mat4d MatAB { get; set; } Property Value Mat4d Name Gets or sets the pair name for UI manipulation. public string Name { get; set; } Property Value string SafeDistance Gets or sets the safe distance between the two collidable objects. public double SafeDistance { get; set; } Property Value double Methods Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class AnchoredCollidablePair Namespace Hi.Collision Assembly HiMech.dll Represents a pair of anchored collidable objects for collision detection. public class AnchoredCollidablePair : IMakeXmlSource Inheritance object AnchoredCollidablePair Implements IMakeXmlSource Inherited Members object.Equals(object, object) 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 AnchoredCollidablePair(IAnchoredCollidableBased, IAnchoredCollidableBased) Initializes a new instance of the AnchoredCollidablePair class with two collidable objects. public AnchoredCollidablePair(IAnchoredCollidableBased indexA, IAnchoredCollidableBased indexB) Parameters indexA IAnchoredCollidableBased The first collidable object. indexB IAnchoredCollidableBased The second collidable object. AnchoredCollidablePair(string, IAnchoredCollidableBased, IAnchoredCollidableBased) Initializes a new instance of the AnchoredCollidablePair class with a name and two collidable objects. public AnchoredCollidablePair(string name, IAnchoredCollidableBased indexA, IAnchoredCollidableBased indexB) Parameters name string The name of the pair. indexA IAnchoredCollidableBased The first collidable object. indexB IAnchoredCollidableBased The second collidable object. AnchoredCollidablePair(XElement, string, IProgress, object[]) Initializes a new instance of the AnchoredCollidablePair class from XML. public AnchoredCollidablePair(XElement src, string baseDirectory, IProgress progress, object[] res) Parameters src XElement The XML element containing the pair data. baseDirectory string The base directory for resolving relative paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. res object[] Additional resources for initialization. Fields XName The XML element name for serialization. public static string XName Field Value string Properties CollisionFlag Gets or sets the collision flag indicating the collision status between the two objects. public CollisionFlag CollisionFlag { get; } Property Value CollisionFlag IndexA Gets the first collidable object in the pair. public IAnchoredCollidableBased IndexA { get; } Property Value IAnchoredCollidableBased IndexB Gets the second collidable object in the pair. public IAnchoredCollidableBased IndexB { get; } Property Value IAnchoredCollidableBased MatAB Gets or sets the transformation matrix from object A to object B. public Mat4d MatAB { get; set; } Property Value Mat4d Name Gets or sets the pair name for UI manipulation. public string Name { get; set; } Property Value string SafeDistance Gets or sets the safe distance between the two collidable objects. public double SafeDistance { get; set; } Property Value double Methods Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.Collision.CollidableStl.html": { "href": "api/Hi.Collision.CollidableStl.html", @@ -152,7 +152,7 @@ "api/Hi.Collision.CollisionIndexPair.html": { "href": "api/Hi.Collision.CollisionIndexPair.html", "title": "Class CollisionIndexPair | HiAPI-C# 2025", - "summary": "Class CollisionIndexPair Namespace Hi.Collision Assembly HiMech.dll Represents a pair of collision indices for collision detection. public class CollisionIndexPair : IMakeXmlSource Inheritance object CollisionIndexPair Implements IMakeXmlSource Inherited Members object.Equals(object, object) 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 CollisionIndexPair(ICollisionIndex, ICollisionIndex) Initializes a new instance of the CollisionIndexPair class with two collision indices. public CollisionIndexPair(ICollisionIndex indexA, ICollisionIndex indexB) Parameters indexA ICollisionIndex The first collision index. indexB ICollisionIndex The second collision index. CollisionIndexPair(XElement, string, IProgress, object[]) Initializes a new instance of the CollisionIndexPair class from XML. public CollisionIndexPair(XElement src, string baseDirectory, IProgress progress, object[] res) Parameters src XElement The XML element containing the pair data. baseDirectory string The base directory for resolving relative paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. res object[] Additional resources for initialization. Fields XName The XML element name for serialization. public static string XName Field Value string Properties CollisionFlag Gets or sets the collision flag indicating the collision status between the two objects. public CollisionFlag CollisionFlag { get; } Property Value CollisionFlag IndexA Gets the first collision index in the pair. public ICollisionIndex IndexA { get; } Property Value ICollisionIndex IndexB Gets the second collision index in the pair. public ICollisionIndex IndexB { get; } Property Value ICollisionIndex MatAB Gets or sets the transformation matrix from object A to object B. public Mat4d MatAB { get; set; } Property Value Mat4d SafeDistance Gets or sets the safe distance between the two collision indices. public double SafeDistance { get; set; } Property Value double Methods Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class CollisionIndexPair Namespace Hi.Collision Assembly HiMech.dll Represents a pair of collision indices for collision detection. public class CollisionIndexPair : IMakeXmlSource Inheritance object CollisionIndexPair Implements IMakeXmlSource Inherited Members object.Equals(object, object) 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 CollisionIndexPair(ICollisionIndex, ICollisionIndex) Initializes a new instance of the CollisionIndexPair class with two collision indices. public CollisionIndexPair(ICollisionIndex indexA, ICollisionIndex indexB) Parameters indexA ICollisionIndex The first collision index. indexB ICollisionIndex The second collision index. CollisionIndexPair(XElement, string, IProgress, object[]) Initializes a new instance of the CollisionIndexPair class from XML. public CollisionIndexPair(XElement src, string baseDirectory, IProgress progress, object[] res) Parameters src XElement The XML element containing the pair data. baseDirectory string The base directory for resolving relative paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. res object[] Additional resources for initialization. Fields XName The XML element name for serialization. public static string XName Field Value string Properties CollisionFlag Gets or sets the collision flag indicating the collision status between the two objects. public CollisionFlag CollisionFlag { get; } Property Value CollisionFlag IndexA Gets the first collision index in the pair. public ICollisionIndex IndexA { get; } Property Value ICollisionIndex IndexB Gets the second collision index in the pair. public ICollisionIndex IndexB { get; } Property Value ICollisionIndex MatAB Gets or sets the transformation matrix from object A to object B. public Mat4d MatAB { get; set; } Property Value Mat4d SafeDistance Gets or sets the safe distance between the two collision indices. public double SafeDistance { get; set; } Property Value double Methods Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.Collision.CollisionUtil.html": { "href": "api/Hi.Collision.CollisionUtil.html", @@ -267,12 +267,12 @@ "api/Hi.Coloring.ColorUtil.html": { "href": "api/Hi.Coloring.ColorUtil.html", "title": "Class ColorUtil | HiAPI-C# 2025", - "summary": "Class ColorUtil Namespace Hi.Coloring Assembly HiGeom.dll Utility for handling color. Includes handle of RGB and HSL. public static class ColorUtil Inheritance object ColorUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties EnvDiscreteRgbSeed public static int EnvDiscreteRgbSeed { get; set; } Property Value int The seed is applied to GetDiscreteRGB_Env(double, double). ExceptionRed Exception RGB. Also for nan value. public static Vec3d ExceptionRed { get; } Property Value Vec3d Gray Generate gray color. RGB=(0.2, 0.2, 0.2). public static Vec3d Gray { get; } Property Value Vec3d NoValueGreen No value RGB. public static Vec3d NoValueGreen { get; } Property Value Vec3d NullDark Generate dark RGB for null value. RGB=(0,0,0). public static Vec3d NullDark { get; } Property Value Vec3d UndeterminedPurple Undetermined RGB. public static Vec3d UndeterminedPurple { get; } Property Value Vec3d Methods GetDiscreteRGBWithoutPurpleAndRed(int, double, double) Get discrete RGB without purple and red color ranges. public static Vec3d GetDiscreteRGBWithoutPurpleAndRed(int seed, double saturation = 1, double light = 0.5) Parameters seed int Color seed. Determines the hue value. saturation double Saturation value of the color. light double Light value of the color. Returns Vec3d RGB color vector without purple and red ranges. GetDiscreteRGB_Env(double, double) Get discrete color using EnvDiscreteRgbSeed. The functionality is the same as GetDiscreteRgb(int, double, double). The function call makes EnvDiscreteRgbSeed plus 1. public static Vec3d GetDiscreteRGB_Env(double saturation = 1, double light = 0.5) Parameters saturation double saturation light double light Returns Vec3d RGB GetDiscreteRgb(int, double, double) Get discrete color(RGB). The term ‘discrete’ means there is big color difference between nearby seed. This function is good to auto set color for lot of components. public static Vec3d GetDiscreteRgb(int seed, double saturation = 1, double light = 0.5) Parameters seed int color seed. Determine the hue value by BinaryDividentSequence(int). saturation double saturation light double light Returns Vec3d RGB GetDiscreteRgbByBoundary(int, double, double, double, double) Get discrete RGB by boundary. public static Vec3d GetDiscreteRgbByBoundary(int seed, double hueBegin = 0, double hueEnd = 1, double saturation = 1, double light = 0.5) Parameters seed int Color seed. Determines the hue value. hueBegin double The beginning of the hue range. hueEnd double The end of the hue range. saturation double Saturation value of the color. light double Light value of the color. Returns Vec3d RGB color vector with boundary. GetGloomyColor(object, double, double) The default value is blue tune. public static Vec3d GetGloomyColor(this object seed, double hueMin = 0.5, double hueMax = 0.7) Parameters seed object hueMin double hueMax double Returns Vec3d GetRgb(double, RatioRgbFuncEnum) Get RGB by funcEnum. public static Vec3d GetRgb(double v, RatioRgbFuncEnum funcEnum) Parameters v double value funcEnum RatioRgbFuncEnum function enum Returns Vec3d RGB GetRgbByErf(double) Get RGB interpolated from blue to green to red by erf function. The range suits for -2 to 0 to 2. public static Vec3d GetRgbByErf(double v) Parameters v double input of the erf Returns Vec3d RGB GetRgbByHslOffset(Vec3d, Vec3d) Convert RGB by HSL offset. This is a three step process: RGB convert to HSL, HSL+=hslOffset, HSL convert to RGB. public static Vec3d GetRgbByHslOffset(Vec3d rgb, Vec3d hslOffset) Parameters rgb Vec3d RGB hslOffset Vec3d HSL offset Returns Vec3d RGB GetRgbByLinearRatio(double) 0 ~ 0.5 ~ 1 is linearly interpolated to blue to green to red. The below range data is pure blue. The exceeding range data is pure red. public static Vec3d GetRgbByLinearRatio(double ratio) Parameters ratio double the interpolation range is 0~1 Returns Vec3d RGB GetRgbByNormalizedErf(double) 0 ~ 0.5 ~ 1 is interpolated to blue to green to red. The below range data is pure blue. The exceeding range data is pure red. return GetRgbByLinearRatio(MathUtil.Erf(ratio*2) / MathUtil.Erf(2)); public static Vec3d GetRgbByNormalizedErf(double ratio) Parameters ratio double the interpolation range is 0~1 Returns Vec3d RGB GetRgbByNormalizedPositiveErf(double) 0 ~ 0.5 ~ 1 is interpolated to blue to green to red. The below range data is pure blue. The exceeding range data is pure red. Only the positive half form is used. return GetRgbByLinearRatio(MathUtil.Erf(ratio*2) / MathUtil.Erf(2)); public static Vec3d GetRgbByNormalizedPositiveErf(double ratio) Parameters ratio double the interpolation range is 0~1 Returns Vec3d RGB GetRgbByPositiveErf(double) Get RGB interpolated from blue to green to red by modified erf function. public static Vec3d GetRgbByPositiveErf(double v) Parameters v double input of the modified erf Returns Vec3d color Remarks If v is equal or lower than 0, the color is blue; if v is equal or larger than 1, the color is red; otherwise, the color varied from blue to green to red by modified erf function. GetRgbByPositiveErf(double, double, double) Get RGB interpolated from blue to green to red by modified erf function. public static Vec3d GetRgbByPositiveErf(double v, double floor, double ceil) Parameters v double input of the modified erf floor double floor value of v ceil double ceil value of v Returns Vec3d color Remarks If v is equal or lower than floor, the color is blue; if v is equal or larger than ceil, the color is red; otherwise, the color varied from blue to green to red by modified erf function. HslToRgb(Vec3d) Convert color convention from HSL to RGB. public static Vec3d HslToRgb(Vec3d hsl) Parameters hsl Vec3d HSL Returns Vec3d RGB HslToRgb(double, double, double) Convert color convention from HSL to RGB. public static Vec3d HslToRgb(double hue, double saturation, double light) Parameters hue double hue saturation double saturation light double light Returns Vec3d RGB RgbToHsl(Vec3d) Convert color convention from RGB to HSL. public static Vec3d RgbToHsl(Vec3d rgb) Parameters rgb Vec3d RGB Returns Vec3d HSL RgbToHsl(double, double, double) Convert color convention from RGB to HSL. public static Vec3d RgbToHsl(double r, double g, double b) Parameters r double red g double green b double blue Returns Vec3d HSL ToDualHexString(Vec3d) Converts an RGB color vector to a hexadecimal string representation. public static string ToDualHexString(Vec3d rgb) Parameters rgb Vec3d The RGB color vector to convert. Returns string A hexadecimal string representation of the RGB color." + "summary": "Class ColorUtil Namespace Hi.Coloring Assembly HiGeom.dll Utility for handling color. Includes handle of RGB and HSL. public static class ColorUtil Inheritance object ColorUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties EnvDiscreteRgbSeed public static int EnvDiscreteRgbSeed { get; set; } Property Value int The seed is applied to GetDiscreteRGB_Env(double, double). ExceptionRed Exception RGB. Also for nan value. public static Vec3d ExceptionRed { get; } Property Value Vec3d Gray Generate gray color. RGB=(0.2, 0.2, 0.2). public static Vec3d Gray { get; } Property Value Vec3d NoValueGreen No value RGB. public static Vec3d NoValueGreen { get; } Property Value Vec3d NullDark Generate dark RGB for null value. RGB=(0,0,0). public static Vec3d NullDark { get; } Property Value Vec3d UndeterminedPurple Undetermined RGB. public static Vec3d UndeterminedPurple { get; } Property Value Vec3d Methods FromDualHexString(string) Parses an RRGGBB hexadecimal string (optionally prefixed with #) back to an RGB color vector with channels in 0~1. Inverse of ToDualHexString(Vec3d) up to 8-bit rounding. public static Vec3d FromDualHexString(string hex) Parameters hex string The hexadecimal color string, e.g. #3fa0c8. Returns Vec3d RGB color vector. GetDiscreteRGBWithoutPurpleAndRed(int, double, double) Get discrete RGB without purple and red color ranges. public static Vec3d GetDiscreteRGBWithoutPurpleAndRed(int seed, double saturation = 1, double light = 0.5) Parameters seed int Color seed. Determines the hue value. saturation double Saturation value of the color. light double Light value of the color. Returns Vec3d RGB color vector without purple and red ranges. GetDiscreteRGB_Env(double, double) Get discrete color using EnvDiscreteRgbSeed. The functionality is the same as GetDiscreteRgb(int, double, double). The function call makes EnvDiscreteRgbSeed plus 1. public static Vec3d GetDiscreteRGB_Env(double saturation = 1, double light = 0.5) Parameters saturation double saturation light double light Returns Vec3d RGB GetDiscreteRgb(int, double, double) Get discrete color(RGB). The term ‘discrete’ means there is big color difference between nearby seed. This function is good to auto set color for lot of components. public static Vec3d GetDiscreteRgb(int seed, double saturation = 1, double light = 0.5) Parameters seed int color seed. Determine the hue value by BinaryDividentSequence(int). saturation double saturation light double light Returns Vec3d RGB GetDiscreteRgbByBoundary(int, double, double, double, double) Get discrete RGB by boundary. public static Vec3d GetDiscreteRgbByBoundary(int seed, double hueBegin = 0, double hueEnd = 1, double saturation = 1, double light = 0.5) Parameters seed int Color seed. Determines the hue value. hueBegin double The beginning of the hue range. hueEnd double The end of the hue range. saturation double Saturation value of the color. light double Light value of the color. Returns Vec3d RGB color vector with boundary. GetGloomyColor(Guid, double, double) Gloomy color (blue tune by default) seeded by a persisted identity. The same Guid always yields the same color — across loads, threads, processes and platforms — unlike GetGloomyColor(object, double, double), whose identity-hash seed is stable only within one thread's allocation order. public static Vec3d GetGloomyColor(this Guid seed, double hueMin = 0.5, double hueMax = 0.7) Parameters seed Guid Persisted identity, e.g. an anchor's Guid. hueMin double The beginning of the hue range. hueMax double The end of the hue range. Returns Vec3d RGB color vector. Remarks Uses an FNV-1a hash over ToByteArray() rather than GetHashCode() or GetHashCode(): the latter are not guaranteed stable across runtimes, and string hashing is randomized per process on .NET Core. GetGloomyColor(object, double, double) The default value is blue tune. public static Vec3d GetGloomyColor(this object seed, double hueMin = 0.5, double hueMax = 0.7) Parameters seed object hueMin double hueMax double Returns Vec3d Remarks The hue is seeded by GetHashCode(). For a type that does not override it, that is the CLR identity hash — drawn per thread on the first call — so the color depends on which thread asks first and in what order, and two loads of the same data get different colors. When a persisted identity is available, prefer GetGloomyColor(Guid, double, double). GetRgb(double, RatioRgbFuncEnum) Get RGB by funcEnum. public static Vec3d GetRgb(double v, RatioRgbFuncEnum funcEnum) Parameters v double value funcEnum RatioRgbFuncEnum function enum Returns Vec3d RGB GetRgbByErf(double) Get RGB interpolated from blue to green to red by erf function. The range suits for -2 to 0 to 2. public static Vec3d GetRgbByErf(double v) Parameters v double input of the erf Returns Vec3d RGB GetRgbByHslOffset(Vec3d, Vec3d) Convert RGB by HSL offset. This is a three step process: RGB convert to HSL, HSL+=hslOffset, HSL convert to RGB. public static Vec3d GetRgbByHslOffset(Vec3d rgb, Vec3d hslOffset) Parameters rgb Vec3d RGB hslOffset Vec3d HSL offset Returns Vec3d RGB GetRgbByLinearRatio(double) 0 ~ 0.5 ~ 1 is linearly interpolated to blue to green to red. The below range data is pure blue. The exceeding range data is pure red. public static Vec3d GetRgbByLinearRatio(double ratio) Parameters ratio double the interpolation range is 0~1 Returns Vec3d RGB GetRgbByNormalizedErf(double) 0 ~ 0.5 ~ 1 is interpolated to blue to green to red. The below range data is pure blue. The exceeding range data is pure red. return GetRgbByLinearRatio(MathUtil.Erf(ratio*2) / MathUtil.Erf(2)); public static Vec3d GetRgbByNormalizedErf(double ratio) Parameters ratio double the interpolation range is 0~1 Returns Vec3d RGB GetRgbByNormalizedPositiveErf(double) 0 ~ 0.5 ~ 1 is interpolated to blue to green to red. The below range data is pure blue. The exceeding range data is pure red. Only the positive half form is used. return GetRgbByLinearRatio(MathUtil.Erf(ratio*2) / MathUtil.Erf(2)); public static Vec3d GetRgbByNormalizedPositiveErf(double ratio) Parameters ratio double the interpolation range is 0~1 Returns Vec3d RGB GetRgbByPositiveErf(double) Get RGB interpolated from blue to green to red by modified erf function. public static Vec3d GetRgbByPositiveErf(double v) Parameters v double input of the modified erf Returns Vec3d color Remarks If v is equal or lower than 0, the color is blue; if v is equal or larger than 1, the color is red; otherwise, the color varied from blue to green to red by modified erf function. GetRgbByPositiveErf(double, double, double) Get RGB interpolated from blue to green to red by modified erf function. public static Vec3d GetRgbByPositiveErf(double v, double floor, double ceil) Parameters v double input of the modified erf floor double floor value of v ceil double ceil value of v Returns Vec3d color Remarks If v is equal or lower than floor, the color is blue; if v is equal or larger than ceil, the color is red; otherwise, the color varied from blue to green to red by modified erf function. HslToRgb(Vec3d) Convert color convention from HSL to RGB. public static Vec3d HslToRgb(Vec3d hsl) Parameters hsl Vec3d HSL Returns Vec3d RGB HslToRgb(double, double, double) Convert color convention from HSL to RGB. public static Vec3d HslToRgb(double hue, double saturation, double light) Parameters hue double hue saturation double saturation light double light Returns Vec3d RGB RgbToHsl(Vec3d) Convert color convention from RGB to HSL. public static Vec3d RgbToHsl(Vec3d rgb) Parameters rgb Vec3d RGB Returns Vec3d HSL RgbToHsl(double, double, double) Convert color convention from RGB to HSL. public static Vec3d RgbToHsl(double r, double g, double b) Parameters r double red g double green b double blue Returns Vec3d HSL ToDualHexString(Vec3d) Converts an RGB color vector to a hexadecimal string representation. public static string ToDualHexString(Vec3d rgb) Parameters rgb Vec3d The RGB color vector to convert. Returns string A hexadecimal string representation of the RGB color." }, "api/Hi.Coloring.DictionaryColorGuide.html": { "href": "api/Hi.Coloring.DictionaryColorGuide.html", "title": "Class DictionaryColorGuide | HiAPI-C# 2025", - "summary": "Class DictionaryColorGuide Namespace Hi.Coloring Assembly HiMech.dll A color guide that manages a dictionary of color guides and allows selection of one active guide. public class DictionaryColorGuide : IColorGuide, IMakeXmlSource, IGetColorGuide Inheritance object DictionaryColorGuide Implements IColorGuide IMakeXmlSource IGetColorGuide 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 DictionaryColorGuide() Initializes a new instance of the DictionaryColorGuide class. public DictionaryColorGuide() DictionaryColorGuide(DictionaryColorGuide) Initializes a new instance of the DictionaryColorGuide class by copying from another instance. public DictionaryColorGuide(DictionaryColorGuide src) Parameters src DictionaryColorGuide The source color guide to copy from. DictionaryColorGuide(XElement, string, IProgress, Dictionary) Initializes a new instance of the DictionaryColorGuide class from XML. public DictionaryColorGuide(XElement src, string baseDirectory, IProgress progress, Dictionary colorGuideCtorArgDictionary) Parameters src XElement The XML element containing the color guide data. baseDirectory string The base directory for resolving relative paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. colorGuideCtorArgDictionary Dictionary Dictionary containing constructor arguments for color guides. Properties KeyToColorGuide Gets or sets the dictionary mapping keys to color guides. public Dictionary KeyToColorGuide { get; set; } Property Value Dictionary SelectedColorGuide Gets the currently selected color guide. public IColorGuide SelectedColorGuide { get; } Property Value IColorGuide SelectedKey Gets or sets the key of the currently selected color guide. public string SelectedKey { get; set; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string Methods GetColorGuide() Get IColorGuide. public IColorGuide GetColorGuide() Returns IColorGuide IColorGuide GetRgb(object) Get rgb bystep. public Vec3d GetRgb(object step) Parameters step object step Returns Vec3d rgb GetRgbWithPriority(object, out Vec3d, out double) Get color with the showing priority if the showing area overlapped by shrinking. Only effect on CubeTree. public void GetRgbWithPriority(object step, out Vec3d rgb, out double attachmentPriority) Parameters step object step rgb Vec3d rgb attachmentPriority double priority. Larger one takes priority. 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. RefreshSelectedColorGuide() Refreshes the selected color guide based on the current SelectedKey. public void RefreshSelectedColorGuide() Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class DictionaryColorGuide Namespace Hi.Coloring Assembly HiMech.dll A color guide that manages a dictionary of color guides and allows selection of one active guide. public class DictionaryColorGuide : IColorGuide, IMakeXmlSource, IGetColorGuide Inheritance object DictionaryColorGuide Implements IColorGuide IMakeXmlSource IGetColorGuide 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 DictionaryColorGuide() Initializes a new instance of the DictionaryColorGuide class. public DictionaryColorGuide() DictionaryColorGuide(DictionaryColorGuide) Initializes a new instance of the DictionaryColorGuide class by copying from another instance. public DictionaryColorGuide(DictionaryColorGuide src) Parameters src DictionaryColorGuide The source color guide to copy from. DictionaryColorGuide(XElement, string, IProgress, Dictionary) Initializes a new instance of the DictionaryColorGuide class from XML. public DictionaryColorGuide(XElement src, string baseDirectory, IProgress progress, Dictionary colorGuideCtorArgDictionary) Parameters src XElement The XML element containing the color guide data. baseDirectory string The base directory for resolving relative paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. colorGuideCtorArgDictionary Dictionary Dictionary containing constructor arguments for color guides. Properties KeyToColorGuide Gets or sets the dictionary mapping keys to color guides. public Dictionary KeyToColorGuide { get; set; } Property Value Dictionary SelectedColorGuide Gets the currently selected color guide. public IColorGuide SelectedColorGuide { get; } Property Value IColorGuide SelectedKey Gets or sets the key of the currently selected color guide. public string SelectedKey { get; set; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string Methods GetColorGuide() Get IColorGuide. public IColorGuide GetColorGuide() Returns IColorGuide IColorGuide GetRgb(object) Get rgb bystep. public Vec3d GetRgb(object step) Parameters step object step Returns Vec3d rgb GetRgbWithPriority(object, out Vec3d, out double) Get color with the showing priority if the showing area overlapped by shrinking. Only effect on CubeTree. public void GetRgbWithPriority(object step, out Vec3d rgb, out double attachmentPriority) Parameters step object step rgb Vec3d rgb attachmentPriority double priority. Larger one takes priority. 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. RefreshSelectedColorGuide() Refreshes the selected color guide based on the current SelectedKey. public void RefreshSelectedColorGuide() Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.Coloring.DiscreteQuantityColorGuide.html": { "href": "api/Hi.Coloring.DiscreteQuantityColorGuide.html", @@ -282,7 +282,7 @@ "api/Hi.Coloring.FilteredColorGuide.html": { "href": "api/Hi.Coloring.FilteredColorGuide.html", "title": "Class FilteredColorGuide | HiAPI-C# 2025", - "summary": "Class FilteredColorGuide Namespace Hi.Coloring Assembly HiMech.dll A color guide that combines a filter color guide with a dictionary color guide. public class FilteredColorGuide : IColorGuide, IMakeXmlSource, IGetColorGuide Inheritance object FilteredColorGuide Implements IColorGuide IMakeXmlSource IGetColorGuide 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 FilteredColorGuide() Initializes a new instance of the FilteredColorGuide class. public FilteredColorGuide() FilteredColorGuide(XElement, string, IProgress, Dictionary) Initializes a new instance of the FilteredColorGuide class from XML. public FilteredColorGuide(XElement src, string baseDirectory, IProgress progress, Dictionary colorGuideCtorArgDictionary) Parameters src XElement The XML element containing the color guide data. baseDirectory string The base directory for resolving relative paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. colorGuideCtorArgDictionary Dictionary Dictionary containing constructor arguments for color guides. Properties DictionaryColorGuide Gets or sets the dictionary color guide that is used when the filter color guide returns null. public DictionaryColorGuide DictionaryColorGuide { get; set; } Property Value DictionaryColorGuide FilterColorGuide Gets or sets the filter color guide that is applied first. public IColorGuide FilterColorGuide { get; set; } Property Value IColorGuide XName Name for XML IO. public static string XName { get; } Property Value string Methods GetColorGuide() Get IColorGuide. public IColorGuide GetColorGuide() Returns IColorGuide IColorGuide GetRgb(object) Get rgb bystep. public Vec3d GetRgb(object step) Parameters step object step Returns Vec3d rgb GetRgbWithPriority(object, out Vec3d, out double) Get color with the showing priority if the showing area overlapped by shrinking. Only effect on CubeTree. public void GetRgbWithPriority(object step, out Vec3d rgb, out double attachmentPriority) Parameters step object step rgb Vec3d rgb attachmentPriority double priority. Larger one takes priority. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class FilteredColorGuide Namespace Hi.Coloring Assembly HiMech.dll A color guide that combines a filter color guide with a dictionary color guide. public class FilteredColorGuide : IColorGuide, IMakeXmlSource, IGetColorGuide Inheritance object FilteredColorGuide Implements IColorGuide IMakeXmlSource IGetColorGuide 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 FilteredColorGuide() Initializes a new instance of the FilteredColorGuide class. public FilteredColorGuide() FilteredColorGuide(XElement, string, IProgress, Dictionary) Initializes a new instance of the FilteredColorGuide class from XML. public FilteredColorGuide(XElement src, string baseDirectory, IProgress progress, Dictionary colorGuideCtorArgDictionary) Parameters src XElement The XML element containing the color guide data. baseDirectory string The base directory for resolving relative paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. colorGuideCtorArgDictionary Dictionary Dictionary containing constructor arguments for color guides. Properties DictionaryColorGuide Gets or sets the dictionary color guide that is used when the filter color guide returns null. public DictionaryColorGuide DictionaryColorGuide { get; set; } Property Value DictionaryColorGuide FilterColorGuide Gets or sets the filter color guide that is applied first. public IColorGuide FilterColorGuide { get; set; } Property Value IColorGuide XName Name for XML IO. public static string XName { get; } Property Value string Methods GetColorGuide() Get IColorGuide. public IColorGuide GetColorGuide() Returns IColorGuide IColorGuide GetRgb(object) Get rgb bystep. public Vec3d GetRgb(object step) Parameters step object step Returns Vec3d rgb GetRgbWithPriority(object, out Vec3d, out double) Get color with the showing priority if the showing area overlapped by shrinking. Only effect on CubeTree. public void GetRgbWithPriority(object step, out Vec3d rgb, out double attachmentPriority) Parameters step object step rgb Vec3d rgb attachmentPriority double priority. Larger one takes priority. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.Coloring.FuncRangeColorGuide.html": { "href": "api/Hi.Coloring.FuncRangeColorGuide.html", @@ -442,7 +442,7 @@ "api/Hi.Common.Collections.SynList-1.html": { "href": "api/Hi.Common.Collections.SynList-1.html", "title": "Class SynList | HiAPI-C# 2025", - "summary": "Class SynList Namespace Hi.Common.Collections Assembly HiGeom.dll Thread-safe List. public class SynList : IList, ICollection, IEnumerable, IEnumerable Type Parameters T T Inheritance object SynList Implements IList ICollection IEnumerable IEnumerable Derived DispList 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) ListUtil.GetCeilBySeek(IList, TKey, Func, out TItem, out int, int, SeekDirection) ListUtil.GetCeilIndexBySeek(IList, TKey, Func, out int, int, SeekDirection) ListUtil.GetCeilIndex(IList, ItemKey, Func, out int) ListUtil.GetCeilIndex(IList, TKey, Func, out int) ListUtil.GetCeil(IList, TKey, Func, out Item) ListUtil.GetFloorBySeek(IList, TKey, Func, out TItem, out int, int, SeekDirection) ListUtil.GetFloorIndexBySeek(IList, TKey, Func, out int, int, SeekDirection) ListUtil.GetFloorIndex(IList, ItemKey, Func, out int) ListUtil.GetFloorIndex(IList, TKey, Func, out int) ListUtil.GetFloor(IList, TKey, Func, out Item) ListUtil.GetIndexBasedEnumerable(IList) ListUtil.GetIndexBasedEnumerable(IList, int, int) ListUtil.GetIndexByBinarySearch(IList, TItem) ListUtil.GetIndexByBinarySearch(IList, TItem, IComparer) ListUtil.GetIndexByBinarySearch(IList, TSearch, Func) ListUtil.GetNearestIndex(IList, TItemKey, Func, out int) ListUtil.GetNearestIndex(IList, TItemKey, Func, Func, out int) ListUtil.GetSubList(IList, int, int) ListUtil.Swap(IList, int, int) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SynList(SynList) public SynList(SynList src) Parameters src SynList SynList(IEnumerable) public SynList(IEnumerable ts) Parameters ts IEnumerable SynList(int) public SynList(int cap = 8) Parameters cap int Properties Count Gets the number of elements contained in the ICollection. public int Count { get; } Property Value int The number of elements contained in the ICollection. Data public List Data { get; set; } Property Value List IsReadOnly Gets a value indicating whether the ICollection is read-only. public bool IsReadOnly { get; } Property Value bool true if the ICollection is read-only; otherwise, false. this[int] Gets or sets the element at the specified index. public T this[int index] { get; set; } Parameters index int The zero-based index of the element to get or set. Property Value T The element at the specified index. Exceptions ArgumentOutOfRangeException index is not a valid index in the IList. NotSupportedException The property is set and the IList is read-only. Lock Lock object, which is Data public object Lock { get; } Property Value object Methods Add(T) Adds an item to the ICollection. public void Add(T item) Parameters item T The object to add to the ICollection. Exceptions NotSupportedException The ICollection is read-only. Clear() Removes all items from the ICollection. public void Clear() Exceptions NotSupportedException The ICollection is read-only. Contains(T) Determines whether the ICollection contains a specific value. public bool Contains(T item) Parameters item T The object to locate in the ICollection. Returns bool true if item is found in the ICollection; otherwise, false. CopyTo(T[], int) Copies the elements of the ICollection to an Array, starting at a particular Array index. public void CopyTo(T[] array, int arrayIndex) Parameters array T[] The one-dimensional Array that is the destination of the elements copied from ICollection. The Array must have zero-based indexing. arrayIndex int The zero-based index in array at which copying begins. Exceptions ArgumentNullException array is null. ArgumentOutOfRangeException arrayIndex is less than 0. ArgumentException The number of elements in the source ICollection is greater than the available space from arrayIndex to the end of the destination array. 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. IndexOf(T) Determines the index of a specific item in the IList. public int IndexOf(T item) Parameters item T The object to locate in the IList. Returns int The index of item if found in the list; otherwise, -1. Insert(int, T) Inserts an item to the IList at the specified index. public void Insert(int index, T item) Parameters index int The zero-based index at which item should be inserted. item T The object to insert into the IList. Exceptions ArgumentOutOfRangeException index is not a valid index in the IList. NotSupportedException The IList is read-only. Remove(T) Removes the first occurrence of a specific object from the ICollection. public bool Remove(T item) Parameters item T The object to remove from the ICollection. Returns bool true if item was successfully removed from the ICollection; otherwise, false. This method also returns false if item is not found in the original ICollection. Exceptions NotSupportedException The ICollection is read-only. RemoveAt(int) Removes the IList item at the specified index. public void RemoveAt(int index) Parameters index int The zero-based index of the item to remove. Exceptions ArgumentOutOfRangeException index is not a valid index in the IList. NotSupportedException The IList is read-only. ToList() Creates a new List containing all elements from this synchronized list. This operation is thread-safe as it acquires a lock on the underlying data. public List ToList() Returns List A new List containing all elements from this synchronized list." + "summary": "Class SynList Namespace Hi.Common.Collections Assembly HiGeom.dll Thread-safe List. public class SynList : IList, ICollection, IEnumerable, IEnumerable Type Parameters T T Inheritance object SynList Implements IList ICollection IEnumerable IEnumerable Derived DispList 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) ListUtil.GetCeilBySeek(IList, TKey, Func, out TItem, out int, int, SeekDirection) ListUtil.GetCeilIndexBySeek(IList, TKey, Func, out int, int, SeekDirection) ListUtil.GetCeilIndex(IList, ItemKey, Func, out int) ListUtil.GetCeilIndex(IList, TKey, Func, out int) ListUtil.GetCeil(IList, TKey, Func, out Item) ListUtil.GetFloorBySeek(IList, TKey, Func, out TItem, out int, int, SeekDirection) ListUtil.GetFloorIndexBySeek(IList, TKey, Func, out int, int, SeekDirection) ListUtil.GetFloorIndex(IList, ItemKey, Func, out int) ListUtil.GetFloorIndex(IList, TKey, Func, out int) ListUtil.GetFloor(IList, TKey, Func, out Item) ListUtil.GetIndexBasedEnumerable(IList) ListUtil.GetIndexBasedEnumerable(IList, int, int) ListUtil.GetIndexByBinarySearch(IList, TItem) ListUtil.GetIndexByBinarySearch(IList, TItem, IComparer) ListUtil.GetIndexByBinarySearch(IList, TSearch, Func) ListUtil.GetNearestIndex(IList, TItemKey, Func, out int) ListUtil.GetNearestIndex(IList, TItemKey, Func, Func, out int) ListUtil.GetSubList(IList, int, int) ListUtil.Swap(IList, int, int) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors SynList(SynList) public SynList(SynList src) Parameters src SynList SynList(IEnumerable) public SynList(IEnumerable ts) Parameters ts IEnumerable SynList(int) public SynList(int cap = 8) Parameters cap int Properties Count Gets the number of elements contained in the ICollection. public int Count { get; } Property Value int The number of elements contained in the ICollection. Data public List Data { get; set; } Property Value List IsReadOnly Gets a value indicating whether the ICollection is read-only. public bool IsReadOnly { get; } Property Value bool true if the ICollection is read-only; otherwise, false. this[int] Gets or sets the element at the specified index. public T this[int index] { get; set; } Parameters index int The zero-based index of the element to get or set. Property Value T The element at the specified index. Exceptions ArgumentOutOfRangeException index is not a valid index in the IList. NotSupportedException The property is set and the IList is read-only. Lock Lock object, which is Data public object Lock { get; } Property Value object Methods Add(T) Adds an item to the ICollection. public void Add(T item) Parameters item T The object to add to the ICollection. Exceptions NotSupportedException The ICollection is read-only. AddAndGetIndex(T) Atomically appends item and returns the index it was inserted at. Use this instead of Add(T) + Count when the caller needs the position of the just-added item under concurrent appends (computing Count - 1 after Add(T) would race with other writers). public int AddAndGetIndex(T item) Parameters item T Returns int Clear() Removes all items from the ICollection. public void Clear() Exceptions NotSupportedException The ICollection is read-only. Contains(T) Determines whether the ICollection contains a specific value. public bool Contains(T item) Parameters item T The object to locate in the ICollection. Returns bool true if item is found in the ICollection; otherwise, false. CopyTo(T[], int) Copies the elements of the ICollection to an Array, starting at a particular Array index. public void CopyTo(T[] array, int arrayIndex) Parameters array T[] The one-dimensional Array that is the destination of the elements copied from ICollection. The Array must have zero-based indexing. arrayIndex int The zero-based index in array at which copying begins. Exceptions ArgumentNullException array is null. ArgumentOutOfRangeException arrayIndex is less than 0. ArgumentException The number of elements in the source ICollection is greater than the available space from arrayIndex to the end of the destination array. 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. IndexOf(T) Determines the index of a specific item in the IList. public int IndexOf(T item) Parameters item T The object to locate in the IList. Returns int The index of item if found in the list; otherwise, -1. Insert(int, T) Inserts an item to the IList at the specified index. public void Insert(int index, T item) Parameters index int The zero-based index at which item should be inserted. item T The object to insert into the IList. Exceptions ArgumentOutOfRangeException index is not a valid index in the IList. NotSupportedException The IList is read-only. Remove(T) Removes the first occurrence of a specific object from the ICollection. public bool Remove(T item) Parameters item T The object to remove from the ICollection. Returns bool true if item was successfully removed from the ICollection; otherwise, false. This method also returns false if item is not found in the original ICollection. Exceptions NotSupportedException The ICollection is read-only. RemoveAt(int) Removes the IList item at the specified index. public void RemoveAt(int index) Parameters index int The zero-based index of the item to remove. Exceptions ArgumentOutOfRangeException index is not a valid index in the IList. NotSupportedException The IList is read-only. ToList() Creates a new List containing all elements from this synchronized list. This operation is thread-safe as it acquires a lock on the underlying data. public List ToList() Returns List A new List containing all elements from this synchronized list." }, "api/Hi.Common.Collections.html": { "href": "api/Hi.Common.Collections.html", @@ -499,10 +499,15 @@ "title": "Namespace Hi.Common.CsvUtils | HiAPI-C# 2025", "summary": "Namespace Hi.Common.CsvUtils Classes CsvInputKit Utility class for parsing and processing CSV input data. CsvOutputKit CSV output toolkit. Toolkit for getting Comma-seperated Csv lines. CsvUtil Provides utility methods for working with CSV (Comma-Separated Values) data. Interfaces ICsvRowIo Object that can be two-way converting between CSV row. IGetCsvDictionary Interface of GetCsvDictionary(). It suits for CSV output." }, + "api/Hi.Common.CultureTextAttribute.html": { + "href": "api/Hi.Common.CultureTextAttribute.html", + "title": "Class CultureTextAttribute | HiAPI-C# 2025", + "summary": "Class CultureTextAttribute Namespace Hi.Common Assembly HiGeom.dll Declares one culture's text for one vocabulary key on the member carrying the attribute — the static wording of command titles and labels, owned by the declaring library as a DEFAULT: a GUI layer may override it or add cultures the library never declared (see SetTextOverride(string, string, string)), and a culture left undeclared is not an error — lookups fall back toward the English key. The key defaults to the member's own display name: its DisplayNameAttribute value when present, otherwise the member name spaced into words (SpacePascalWords(string)). Set Key to declare a word the member does not itself name (a shared switch word, a mode label). Apply the attribute once per culture. [AttributeUsage(AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Enum|AttributeTargets.Method|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Interface, AllowMultiple = true, Inherited = false)] public sealed class CultureTextAttribute : Attribute Inheritance object Attribute CultureTextAttribute Inherited Members Attribute.Equals(object) Attribute.GetCustomAttribute(Assembly, Type) Attribute.GetCustomAttribute(Assembly, Type, bool) Attribute.GetCustomAttribute(MemberInfo, Type) Attribute.GetCustomAttribute(MemberInfo, Type, bool) Attribute.GetCustomAttribute(Module, Type) Attribute.GetCustomAttribute(Module, Type, bool) Attribute.GetCustomAttribute(ParameterInfo, Type) Attribute.GetCustomAttribute(ParameterInfo, Type, bool) Attribute.GetCustomAttributes(Assembly) Attribute.GetCustomAttributes(Assembly, bool) Attribute.GetCustomAttributes(Assembly, Type) Attribute.GetCustomAttributes(Assembly, Type, bool) Attribute.GetCustomAttributes(MemberInfo) Attribute.GetCustomAttributes(MemberInfo, bool) Attribute.GetCustomAttributes(MemberInfo, Type) Attribute.GetCustomAttributes(MemberInfo, Type, bool) Attribute.GetCustomAttributes(Module) Attribute.GetCustomAttributes(Module, bool) Attribute.GetCustomAttributes(Module, Type) Attribute.GetCustomAttributes(Module, Type, bool) Attribute.GetCustomAttributes(ParameterInfo) Attribute.GetCustomAttributes(ParameterInfo, bool) Attribute.GetCustomAttributes(ParameterInfo, Type) Attribute.GetCustomAttributes(ParameterInfo, Type, bool) Attribute.GetHashCode() Attribute.IsDefaultAttribute() Attribute.IsDefined(Assembly, Type) Attribute.IsDefined(Assembly, Type, bool) Attribute.IsDefined(MemberInfo, Type) Attribute.IsDefined(MemberInfo, Type, bool) Attribute.IsDefined(Module, Type) Attribute.IsDefined(Module, Type, bool) Attribute.IsDefined(ParameterInfo, Type) Attribute.IsDefined(ParameterInfo, Type, bool) Attribute.Match(object) Attribute.TypeId object.Equals(object, object) 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 CultureTextAttribute(string, string) Declares text as the wording of this member's vocabulary key in the culture named cultureName. public CultureTextAttribute(string cultureName, string text) Parameters cultureName string Culture name the text is written in (e.g. zh-Hant). text string The text in that culture. Properties CultureName Culture name the text is written in (e.g. zh-Hant). public string CultureName { get; } Property Value string Key Explicit vocabulary key. Default (null): the member's display name as described on the class summary. public string Key { get; set; } Property Value string Text The text in that culture. public string Text { get; } Property Value string" + }, "api/Hi.Common.CultureUtil.html": { "href": "api/Hi.Common.CultureUtil.html", "title": "Class CultureUtil | HiAPI-C# 2025", - "summary": "Class CultureUtil Namespace Hi.Common Assembly HiGeom.dll Utility class for managing culture and localization settings. public static class CultureUtil Inheritance object CultureUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties SupportedCultureNames Gets the array of supported culture names. public static string[] SupportedCultureNames { get; } Property Value string[] Methods SetCurrentCulture(string) Sets the current thread culture to the specified culture code. public static void SetCurrentCulture(string cultureCode) Parameters cultureCode string The culture code to set (e.g., “en”, “zh-Hant”) SetCurrentCultureEn() Sets the current culture to English. public static void SetCurrentCultureEn()" + "summary": "Class CultureUtil Namespace Hi.Common Assembly HiGeom.dll The English culture the engine formats and parses with, and the one call that pins a thread to it. public static class CultureUtil Inheritance object CultureUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties English English, with NaNSymbol forced to “NaN” so a non-finite value round-trips through text. public static CultureInfo English { get; } Property Value CultureInfo Remarks Read-only, and safe to hand to APIs that keep the reference: ASP.NET request localization matches by name and returns ReadOnly(CultureInfo) clones, which preserve the patched symbol. Methods SetCurrentCultureEn() Pins the calling thread to English. public static void SetCurrentCultureEn()" }, "api/Hi.Common.DuplicateUtil.html": { "href": "api/Hi.Common.DuplicateUtil.html", @@ -532,7 +537,7 @@ "api/Hi.Common.FileLines.FileLineCharIndex.html": { "href": "api/Hi.Common.FileLines.FileLineCharIndex.html", "title": "Class FileLineCharIndex | HiAPI-C# 2025", - "summary": "Class FileLineCharIndex Namespace Hi.Common.FileLines Assembly HiGeom.dll Represents a character-level position within a file by file index, line index, and character index. All indices are 0-based. public class FileLineCharIndex : IFileLineCharIndex, IFileLineIndex, IGetFileLineIndex, IComparable, IEquatable Inheritance object FileLineCharIndex Implements IFileLineCharIndex IFileLineIndex IGetFileLineIndex IComparable IEquatable Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MathUtil.Clamp(T, T, T) FileLineUtil.GetFileNo(IFileLineIndex) FileLineUtil.GetLineNo(IFileLineIndex) FileLineUtil.MixedIndex(IFileLineIndex) FileLineUtil.MixedIndex(IGetFileLineIndex) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FileLineCharIndex() Initializes a new instance of the FileLineCharIndex class. public FileLineCharIndex() FileLineCharIndex(IFileLineCharIndex) Initializes a new instance of the FileLineCharIndex class by copying another instance. public FileLineCharIndex(IFileLineCharIndex src) Parameters src IFileLineCharIndex The source to copy from. FileLineCharIndex(int, int, int) Initializes a new instance of the FileLineCharIndex class with specified indices. public FileLineCharIndex(int fileIndex, int lineIndex, int charIndex) Parameters fileIndex int The zero-based file index. lineIndex int The zero-based line index. charIndex int The zero-based character index within the line. Properties CharIndex Character index within the line. 0-based. public int CharIndex { get; set; } Property Value int FileIndex File Index. Start on 0. public int FileIndex { get; set; } Property Value int LineIndex Line Index. Start on 0. public int LineIndex { get; set; } Property Value int Methods AtLineBegin(int, int) Creates a FileLineCharIndex at the beginning of a line (CharIndex = 0). public static FileLineCharIndex AtLineBegin(int fileIndex, int lineIndex) Parameters fileIndex int The zero-based file index. lineIndex int The zero-based line index. Returns FileLineCharIndex CompareTo(FileLineCharIndex) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. public int CompareTo(FileLineCharIndex other) Parameters other FileLineCharIndex An object to compare with this instance. Returns int A value that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes other in the sort order. Zero This instance occurs in the same position in the sort order as other. Greater than zero This instance follows other in the sort order. Equals(FileLineCharIndex) Indicates whether the current object is equal to another object of the same type. public bool Equals(FileLineCharIndex other) Parameters other FileLineCharIndex An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. GetFileLineIndex() Get FileLineIndex. public FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToUserString() Returns a user-friendly string representation. public string ToUserString() Returns string Operators operator ==(FileLineCharIndex, FileLineCharIndex) Returns true when both operands point to the same position, treating two null references as equal. public static bool operator ==(FileLineCharIndex left, FileLineCharIndex right) Parameters left FileLineCharIndex right FileLineCharIndex Returns bool operator >(FileLineCharIndex, FileLineCharIndex) Returns true when left orders after right; a null left is never after any value. public static bool operator >(FileLineCharIndex left, FileLineCharIndex right) Parameters left FileLineCharIndex right FileLineCharIndex Returns bool operator >=(FileLineCharIndex, FileLineCharIndex) Returns true when left orders at or after right; treats two null references as equal. public static bool operator >=(FileLineCharIndex left, FileLineCharIndex right) Parameters left FileLineCharIndex right FileLineCharIndex Returns bool operator !=(FileLineCharIndex, FileLineCharIndex) Returns true when the operands point to different positions. Inverse of operator ==(FileLineCharIndex, FileLineCharIndex). public static bool operator !=(FileLineCharIndex left, FileLineCharIndex right) Parameters left FileLineCharIndex right FileLineCharIndex Returns bool operator <(FileLineCharIndex, FileLineCharIndex) Returns true when left orders before right; a null left is treated as the lowest position. public static bool operator <(FileLineCharIndex left, FileLineCharIndex right) Parameters left FileLineCharIndex right FileLineCharIndex Returns bool operator <=(FileLineCharIndex, FileLineCharIndex) Returns true when left orders at or before right; a null left is always at-or-before any value. public static bool operator <=(FileLineCharIndex left, FileLineCharIndex right) Parameters left FileLineCharIndex right FileLineCharIndex Returns bool" + "summary": "Class FileLineCharIndex Namespace Hi.Common.FileLines Assembly HiGeom.dll Represents a character-level position within a file by file index, line index, and character index. All indices are 0-based. public class FileLineCharIndex : IFileLineCharIndex, IFileLineIndex, IGetFileLineIndex, IComparable, IEquatable Inheritance object FileLineCharIndex Implements IFileLineCharIndex IFileLineIndex IGetFileLineIndex IComparable IEquatable Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MathUtil.Clamp(T, T, T) FileLineUtil.CompareFileLine(IFileLineIndex, IFileLineIndex) FileLineUtil.GetFileNo(IFileLineIndex) FileLineUtil.GetLineNo(IFileLineIndex) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FileLineCharIndex() Initializes a new instance of the FileLineCharIndex class. public FileLineCharIndex() FileLineCharIndex(IFileLineCharIndex) Initializes a new instance of the FileLineCharIndex class by copying another instance. public FileLineCharIndex(IFileLineCharIndex src) Parameters src IFileLineCharIndex The source to copy from. FileLineCharIndex(int, int, int) Initializes a new instance of the FileLineCharIndex class with specified indices. public FileLineCharIndex(int fileIndex, int lineIndex, int charIndex) Parameters fileIndex int The zero-based file index. lineIndex int The zero-based line index. charIndex int The zero-based character index within the line. Properties CharIndex Character index within the line. 0-based. public int CharIndex { get; set; } Property Value int FileIndex File Index. Start on 0. public int FileIndex { get; set; } Property Value int LineIndex Line Index. Start on 0. public int LineIndex { get; set; } Property Value int Methods AtLineBegin(int, int) Creates a FileLineCharIndex at the beginning of a line (CharIndex = 0). public static FileLineCharIndex AtLineBegin(int fileIndex, int lineIndex) Parameters fileIndex int The zero-based file index. lineIndex int The zero-based line index. Returns FileLineCharIndex CompareTo(FileLineCharIndex) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. public int CompareTo(FileLineCharIndex other) Parameters other FileLineCharIndex An object to compare with this instance. Returns int A value that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes other in the sort order. Zero This instance occurs in the same position in the sort order as other. Greater than zero This instance follows other in the sort order. Equals(FileLineCharIndex) Indicates whether the current object is equal to another object of the same type. public bool Equals(FileLineCharIndex other) Parameters other FileLineCharIndex An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. GetFileLineIndex() Get FileLineIndex. public FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToUserString() Returns a user-friendly string representation. public string ToUserString() Returns string Operators operator ==(FileLineCharIndex, FileLineCharIndex) Returns true when both operands point to the same position, treating two null references as equal. public static bool operator ==(FileLineCharIndex left, FileLineCharIndex right) Parameters left FileLineCharIndex right FileLineCharIndex Returns bool operator >(FileLineCharIndex, FileLineCharIndex) Returns true when left orders after right; a null left is never after any value. public static bool operator >(FileLineCharIndex left, FileLineCharIndex right) Parameters left FileLineCharIndex right FileLineCharIndex Returns bool operator >=(FileLineCharIndex, FileLineCharIndex) Returns true when left orders at or after right; treats two null references as equal. public static bool operator >=(FileLineCharIndex left, FileLineCharIndex right) Parameters left FileLineCharIndex right FileLineCharIndex Returns bool operator !=(FileLineCharIndex, FileLineCharIndex) Returns true when the operands point to different positions. Inverse of operator ==(FileLineCharIndex, FileLineCharIndex). public static bool operator !=(FileLineCharIndex left, FileLineCharIndex right) Parameters left FileLineCharIndex right FileLineCharIndex Returns bool operator <(FileLineCharIndex, FileLineCharIndex) Returns true when left orders before right; a null left is treated as the lowest position. public static bool operator <(FileLineCharIndex left, FileLineCharIndex right) Parameters left FileLineCharIndex right FileLineCharIndex Returns bool operator <=(FileLineCharIndex, FileLineCharIndex) Returns true when left orders at or before right; a null left is always at-or-before any value. public static bool operator <=(FileLineCharIndex left, FileLineCharIndex right) Parameters left FileLineCharIndex right FileLineCharIndex Returns bool" }, "api/Hi.Common.FileLines.FileLineCharIndexSegment.html": { "href": "api/Hi.Common.FileLines.FileLineCharIndexSegment.html", @@ -542,17 +547,17 @@ "api/Hi.Common.FileLines.FileLineIndex.html": { "href": "api/Hi.Common.FileLines.FileLineIndex.html", "title": "Class FileLineIndex | HiAPI-C# 2025", - "summary": "Class FileLineIndex Namespace Hi.Common.FileLines Assembly HiGeom.dll Represents a location in a file by its file index and line number. public class FileLineIndex : IFileLineIndex, IGetFileLineIndex, IComparable, IMakeXmlSource, IToXElement, IToPresentDto Inheritance object FileLineIndex Implements IFileLineIndex IGetFileLineIndex IComparable IMakeXmlSource IToXElement IToPresentDto Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MathUtil.Clamp(T, T, T) FileLineUtil.GetFileNo(IFileLineIndex) FileLineUtil.GetLineNo(IFileLineIndex) FileLineUtil.MixedIndex(IFileLineIndex) FileLineUtil.MixedIndex(IGetFileLineIndex) XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FileLineIndex() Initializes a new instance of the FileLineIndex class. public FileLineIndex() FileLineIndex(IFileLineIndex) Initializes a new instance of the FileLineIndex class by copying another instance. public FileLineIndex(IFileLineIndex src) Parameters src IFileLineIndex The source FileLineIndex to copy from FileLineIndex(int, int) Initializes a new instance of the FileLineIndex class with specified indices. public FileLineIndex(int fileIndex, int lineIndex) Parameters fileIndex int The zero-based file index lineIndex int The zero-based line index FileLineIndex(XElement) Initializes a new instance of the FileLineIndex class from an XML element. public FileLineIndex(XElement src) Parameters src XElement The XML element containing the file and line indices Properties FileIndex File Index. Start on 0. public int FileIndex { get; set; } Property Value int FileNo Gets or sets the one-based file number (FileIndex + 1) public int FileNo { get; set; } Property Value int LineIndex Line Index. Start on 0. public int LineIndex { get; set; } Property Value int LineNo Gets or sets the one-based line number (LineIndex + 1) public int LineNo { get; set; } Property Value int XName Gets the XML element name used for serialization. public static string XName { get; } Property Value string Methods CompareTo(IFileLineIndex) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. public int CompareTo(IFileLineIndex other) Parameters other IFileLineIndex An object to compare with this instance. Returns int A value that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes other in the sort order. Zero This instance occurs in the same position in the sort order as other. Greater than zero This instance follows other in the sort order. Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. GetFileLineIndex() Get FileLineIndex. public FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. 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. ToPresentDto() Convert to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO object with type and object properties ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToUserString() Returns a user-friendly string representation of the file and line numbers. public string ToUserString() Returns string A string in the format “(FileNo:X,LineNo:Y)” ToXElement() Converts the current instance to an XElement. public XElement ToXElement() Returns XElement An XElement representing this index. Operators operator ==(FileLineIndex, FileLineIndex) Determines whether two FileLineIndex instances are equal. public static bool operator ==(FileLineIndex left, FileLineIndex right) Parameters left FileLineIndex right FileLineIndex Returns bool operator >(FileLineIndex, FileLineIndex) Determines whether left is greater than right. public static bool operator >(FileLineIndex left, FileLineIndex right) Parameters left FileLineIndex right FileLineIndex Returns bool operator >=(FileLineIndex, FileLineIndex) Determines whether left is greater than or equal to right. public static bool operator >=(FileLineIndex left, FileLineIndex right) Parameters left FileLineIndex right FileLineIndex Returns bool operator !=(FileLineIndex, FileLineIndex) Determines whether two FileLineIndex instances are not equal. public static bool operator !=(FileLineIndex left, FileLineIndex right) Parameters left FileLineIndex right FileLineIndex Returns bool operator <(FileLineIndex, FileLineIndex) Determines whether left is less than right. public static bool operator <(FileLineIndex left, FileLineIndex right) Parameters left FileLineIndex right FileLineIndex Returns bool operator <=(FileLineIndex, FileLineIndex) Determines whether left is less than or equal to right. public static bool operator <=(FileLineIndex left, FileLineIndex right) Parameters left FileLineIndex right FileLineIndex Returns bool" + "summary": "Class FileLineIndex Namespace Hi.Common.FileLines Assembly HiGeom.dll Represents a location in a file by its file index and line number. public class FileLineIndex : IFileLineIndex, IGetFileLineIndex, IComparable, IComparable, IMakeXmlSource, IToXElement, IToPresentDto Inheritance object FileLineIndex Implements IFileLineIndex IGetFileLineIndex IComparable IComparable IMakeXmlSource IToXElement IToPresentDto Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MathUtil.Clamp(T, T, T) FileLineUtil.CompareFileLine(IFileLineIndex, IFileLineIndex) FileLineUtil.GetFileNo(IFileLineIndex) FileLineUtil.GetLineNo(IFileLineIndex) XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors FileLineIndex() Initializes a new instance of the FileLineIndex class. public FileLineIndex() FileLineIndex(IFileLineIndex) Initializes a new instance of the FileLineIndex class by copying another instance. public FileLineIndex(IFileLineIndex src) Parameters src IFileLineIndex The source FileLineIndex to copy from FileLineIndex(int, int) Initializes a new instance of the FileLineIndex class with specified indices. public FileLineIndex(int fileIndex, int lineIndex) Parameters fileIndex int The zero-based file index lineIndex int The zero-based line index FileLineIndex(XElement) Initializes a new instance of the FileLineIndex class from an XML element. public FileLineIndex(XElement src) Parameters src XElement The XML element containing the file and line indices Properties FileIndex File Index. Start on 0. public int FileIndex { get; set; } Property Value int FileNo Gets or sets the one-based file number (FileIndex + 1) public int FileNo { get; set; } Property Value int LineIndex Line Index. Start on 0. public int LineIndex { get; set; } Property Value int LineNo Gets or sets the one-based line number (LineIndex + 1) public int LineNo { get; set; } Property Value int XName Gets the XML element name used for serialization. public static string XName { get; } Property Value string Methods CompareTo(FileLineIndex) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. public int CompareTo(FileLineIndex other) Parameters other FileLineIndex An object to compare with this instance. Returns int A value that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes other in the sort order. Zero This instance occurs in the same position in the sort order as other. Greater than zero This instance follows other in the sort order. CompareTo(IFileLineIndex) Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. public int CompareTo(IFileLineIndex other) Parameters other IFileLineIndex An object to compare with this instance. Returns int A value that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes other in the sort order. Zero This instance occurs in the same position in the sort order as other. Greater than zero This instance follows other in the sort order. Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. GetFileLineIndex() Get FileLineIndex. public FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. 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. ToPresentDto() Convert FileLineIndex to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO dictionary with Type, FileIndex, LineIndex keys ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToUserString() Returns a user-friendly string representation of the file and line numbers. public string ToUserString() Returns string A string in the format “(FileNo:X,LineNo:Y)” ToXElement() Converts the current instance to an XElement. public XElement ToXElement() Returns XElement An XElement representing this index. Operators operator ==(FileLineIndex, FileLineIndex) Determines whether two FileLineIndex instances are equal. public static bool operator ==(FileLineIndex left, FileLineIndex right) Parameters left FileLineIndex right FileLineIndex Returns bool operator >(FileLineIndex, FileLineIndex) Determines whether left is greater than right. public static bool operator >(FileLineIndex left, FileLineIndex right) Parameters left FileLineIndex right FileLineIndex Returns bool operator >=(FileLineIndex, FileLineIndex) Determines whether left is greater than or equal to right. public static bool operator >=(FileLineIndex left, FileLineIndex right) Parameters left FileLineIndex right FileLineIndex Returns bool operator !=(FileLineIndex, FileLineIndex) Determines whether two FileLineIndex instances are not equal. public static bool operator !=(FileLineIndex left, FileLineIndex right) Parameters left FileLineIndex right FileLineIndex Returns bool operator <(FileLineIndex, FileLineIndex) Determines whether left is less than right. public static bool operator <(FileLineIndex left, FileLineIndex right) Parameters left FileLineIndex right FileLineIndex Returns bool operator <=(FileLineIndex, FileLineIndex) Determines whether left is less than or equal to right. public static bool operator <=(FileLineIndex left, FileLineIndex right) Parameters left FileLineIndex right FileLineIndex Returns bool" }, "api/Hi.Common.FileLines.FileLineUtil.html": { "href": "api/Hi.Common.FileLines.FileLineUtil.html", "title": "Class FileLineUtil | HiAPI-C# 2025", - "summary": "Class FileLineUtil Namespace Hi.Common.FileLines Assembly HiGeom.dll Utility of IFileLineIndex. public static class FileLineUtil Inheritance object FileLineUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetFileNo(IFileLineIndex) Gets the file number (1-based) from the file line index. public static int GetFileNo(this IFileLineIndex src) Parameters src IFileLineIndex The file line index. Returns int The file number (1-based). GetLineNo(IFileLineIndex) Gets the line number (1-based) from the file line index. public static int GetLineNo(this IFileLineIndex src) Parameters src IFileLineIndex The file line index. Returns int The line number (1-based). GetMixedIndex(int, int) Creates a mixed index from file index and line index. public static int GetMixedIndex(int fileIndex, int lineIndex) Parameters fileIndex int The file index (0-based). lineIndex int The line index (0-based). Returns int A mixed index combining file and line indices. MixedIndex(IFileLineIndex) Mix FileIndex and LineIndex. Return FileIndex* 10_000_000 + LineIndex. public static int MixedIndex(this IFileLineIndex src) Parameters src IFileLineIndex src Returns int Mixed number MixedIndex(IGetFileLineIndex) Mix FileIndex and LineIndex. Return FileIndex* 10_000_000 + LineIndex. public static int MixedIndex(this IGetFileLineIndex src) Parameters src IGetFileLineIndex src Returns int Mixed number" + "summary": "Class FileLineUtil Namespace Hi.Common.FileLines Assembly HiGeom.dll Utility of IFileLineIndex. public static class FileLineUtil Inheritance object FileLineUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods CompareFileLine(IFileLineIndex, IFileLineIndex) Orders two file-line positions by FileIndex then LineIndex. Both operands must be non-null; callers decide how a missing (null) position sorts. public static int CompareFileLine(this IFileLineIndex a, IFileLineIndex b) Parameters a IFileLineIndex b IFileLineIndex Returns int GetFileNo(IFileLineIndex) Gets the file number (1-based) from the file line index. public static int GetFileNo(this IFileLineIndex src) Parameters src IFileLineIndex The file line index. Returns int The file number (1-based). GetLineNo(IFileLineIndex) Gets the line number (1-based) from the file line index. public static int GetLineNo(this IFileLineIndex src) Parameters src IFileLineIndex The file line index. Returns int The line number (1-based)." }, "api/Hi.Common.FileLines.FileUtil.html": { "href": "api/Hi.Common.FileLines.FileUtil.html", "title": "Class FileUtil | HiAPI-C# 2025", - "summary": "Class FileUtil Namespace Hi.Common.FileLines Assembly HiGeom.dll Utility to manage files. public static class FileUtil Inheritance object FileUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods CopyDirectory(string, string) Copies a directory and all its contents to a destination folder. public static void CopyDirectory(string sourceFolder, string destFolder) Parameters sourceFolder string Source directory path destFolder string Destination directory path CreateWithDirectoryAndGetFileStream(string) Creates or loads a file with directory. public static FileStream CreateWithDirectoryAndGetFileStream(string filePath) Parameters filePath string file path Returns FileStream file stream CreateWithDirectoryIfNotExisted(string) public static bool CreateWithDirectoryIfNotExisted(string filePath) Parameters filePath string Returns bool true if file created. EnsureDirectory(string) Ensures that the specified directory exists, creating it if necessary. public static void EnsureDirectory(string directory) Parameters directory string The directory path to ensure exists. GetAbsentPath(string, string) Gets a path that doesn't exist by appending a number to the base path. public static string GetAbsentPath(string pathWithoutExtension, string extension) Parameters pathWithoutExtension string The base path without extension. extension string The file extension. Returns string A path that doesn't exist. GetAbsentRelPath(string, string, string) Gets a relative path that doesn't exist by appending a number to the base path. public static string GetAbsentRelPath(string baseDirectory, string relPathWithoutExtension, string extension) Parameters baseDirectory string The base directory. relPathWithoutExtension string The relative path without extension. extension string The file extension. Returns string A relative path that doesn't exist. GetDescendentPath(string) Get descendent path if the path is descendent of current path; otherwise return path. public static string GetDescendentPath(string path) Parameters path string path Returns string descendent path if the path is descendent of current path; otherwise return path GetFileSizeString(FileInfo, string) Gets a formatted string representing the file size. public static string GetFileSizeString(this FileInfo fileInfo, string format = \"{0,6:###.00} {1,-2:##}\") Parameters fileInfo FileInfo The file information. format string The format string to use. Returns string A formatted string representing the file size. IsBinaryFile(string) Determines if a file is likely to be a binary file by checking for control characters. public static bool IsBinaryFile(string filePath) Parameters filePath string Path to the file to check Returns bool True if the file appears to be binary, false otherwise ReadAllTextWithFileShareAsync(string) Reads all text from a file with file sharing enabled. public static Task ReadAllTextWithFileShareAsync(string filePath) Parameters filePath string The path of the file to read. Returns Task A task that represents the asynchronous read operation, which wraps the file contents. ToIndexedFile(IEnumerable) Converts a collection of file paths to a collection of indexed files. public static IEnumerable ToIndexedFile(this IEnumerable files) Parameters files IEnumerable The collection of file paths. Returns IEnumerable A collection of indexed files." + "summary": "Class FileUtil Namespace Hi.Common.FileLines Assembly HiGeom.dll Utility to manage files. public static class FileUtil Inheritance object FileUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods CopyDirectory(string, string) Copies a directory and all its contents to a destination folder. public static void CopyDirectory(string sourceFolder, string destFolder) Parameters sourceFolder string Source directory path destFolder string Destination directory path CreateWithDirectoryAndGetFileStream(string) Creates or loads a file with directory. public static FileStream CreateWithDirectoryAndGetFileStream(string filePath) Parameters filePath string file path Returns FileStream file stream CreateWithDirectoryIfNotExisted(string) public static bool CreateWithDirectoryIfNotExisted(string filePath) Parameters filePath string Returns bool true if file created. DetectRoundTripEncoding(string) Detects a text encoding for filePath that survives a read-modify-write round trip byte for byte on untouched lines. public static Encoding DetectRoundTripEncoding(string filePath) Parameters filePath string The path of the file to sniff. Returns Encoding The encoding of the UTF-8 / UTF-16 byte-order mark when one is present; otherwise strict-validated UTF-8 (without a mark); otherwise Latin-1. Remarks The Latin-1 fallback maps every byte to the char of the same value, so a file in any ANSI-family encoding (GBK, Big5, Shift-JIS, ...) re-encodes to its original bytes. ASCII-keyed parsing is unaffected: those encodings never reuse bytes below 0x40 as trail bytes, so delimiters such as ‘;’ and ‘(’ cannot occur inside a multi-byte character. The BCL's default UTF-8 reader instead replaces every undecodable byte with U+FFFD, which irreversibly destroys such content on write-back. EnsureDirectory(string) Ensures that the specified directory exists, creating it if necessary. public static void EnsureDirectory(string directory) Parameters directory string The directory path to ensure exists. GetAbsentPath(string, string) Gets a path that doesn't exist by appending a number to the base path. public static string GetAbsentPath(string pathWithoutExtension, string extension) Parameters pathWithoutExtension string The base path without extension. extension string The file extension. Returns string A path that doesn't exist. GetAbsentRelPath(string, string, string) Gets a relative path that doesn't exist by appending a number to the base path. public static string GetAbsentRelPath(string baseDirectory, string relPathWithoutExtension, string extension) Parameters baseDirectory string The base directory. relPathWithoutExtension string The relative path without extension. extension string The file extension. Returns string A relative path that doesn't exist. GetDescendentPath(string) Get descendent path if the path is descendent of current path; otherwise return path. public static string GetDescendentPath(string path) Parameters path string path Returns string descendent path if the path is descendent of current path; otherwise return path GetFileSizeString(FileInfo, string) Gets a formatted string representing the file size. public static string GetFileSizeString(this FileInfo fileInfo, string format = \"{0,6:###.00} {1,-2:##}\") Parameters fileInfo FileInfo The file information. format string The format string to use. Returns string A formatted string representing the file size. IsBinaryFile(string) Determines if a file is likely to be a binary file by checking for control characters. public static bool IsBinaryFile(string filePath) Parameters filePath string Path to the file to check Returns bool True if the file appears to be binary, false otherwise ReadAllTextWithFileShareAsync(string) Reads all text from a file with file sharing enabled. public static Task ReadAllTextWithFileShareAsync(string filePath) Parameters filePath string The path of the file to read. Returns Task A task that represents the asynchronous read operation, which wraps the file contents. ToIndexedFile(IEnumerable) Converts a collection of file paths to a collection of indexed files. public static IEnumerable ToIndexedFile(this IEnumerable files) Parameters files IEnumerable The collection of file paths. Returns IEnumerable A collection of indexed files." }, "api/Hi.Common.FileLines.IFileChangedEventSupport.html": { "href": "api/Hi.Common.FileLines.IFileChangedEventSupport.html", @@ -567,17 +572,17 @@ "api/Hi.Common.FileLines.IFileLineCharIndex.html": { "href": "api/Hi.Common.FileLines.IFileLineCharIndex.html", "title": "Interface IFileLineCharIndex | HiAPI-C# 2025", - "summary": "Interface IFileLineCharIndex Namespace Hi.Common.FileLines Assembly HiGeom.dll Interface for a character-level position within a file: file, line, and character index. All indices are 0-based. public interface IFileLineCharIndex : IFileLineIndex, IGetFileLineIndex Inherited Members IFileLineIndex.FileIndex IFileLineIndex.LineIndex IGetFileLineIndex.GetFileLineIndex() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) FileLineUtil.GetFileNo(IFileLineIndex) FileLineUtil.GetLineNo(IFileLineIndex) FileLineUtil.MixedIndex(IFileLineIndex) FileLineUtil.MixedIndex(IGetFileLineIndex) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CharIndex Character index within the line. 0-based. int CharIndex { get; } Property Value int" + "summary": "Interface IFileLineCharIndex Namespace Hi.Common.FileLines Assembly HiGeom.dll Interface for a character-level position within a file: file, line, and character index. All indices are 0-based. public interface IFileLineCharIndex : IFileLineIndex, IGetFileLineIndex Inherited Members IFileLineIndex.FileIndex IFileLineIndex.LineIndex IGetFileLineIndex.GetFileLineIndex() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) FileLineUtil.CompareFileLine(IFileLineIndex, IFileLineIndex) FileLineUtil.GetFileNo(IFileLineIndex) FileLineUtil.GetLineNo(IFileLineIndex) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CharIndex Character index within the line. 0-based. int CharIndex { get; } Property Value int" }, "api/Hi.Common.FileLines.IFileLineIndex.html": { "href": "api/Hi.Common.FileLines.IFileLineIndex.html", "title": "Interface IFileLineIndex | HiAPI-C# 2025", - "summary": "Interface IFileLineIndex Namespace Hi.Common.FileLines Assembly HiGeom.dll Interface of file number and line number. public interface IFileLineIndex : IGetFileLineIndex Inherited Members IGetFileLineIndex.GetFileLineIndex() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) FileLineUtil.GetFileNo(IFileLineIndex) FileLineUtil.GetLineNo(IFileLineIndex) FileLineUtil.MixedIndex(IFileLineIndex) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) FileLineUtil.MixedIndex(IGetFileLineIndex) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties FileIndex File Index. Start on 0. int FileIndex { get; } Property Value int LineIndex Line Index. Start on 0. int LineIndex { get; } Property Value int" + "summary": "Interface IFileLineIndex Namespace Hi.Common.FileLines Assembly HiGeom.dll Interface of file number and line number. public interface IFileLineIndex : IGetFileLineIndex Inherited Members IGetFileLineIndex.GetFileLineIndex() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) FileLineUtil.CompareFileLine(IFileLineIndex, IFileLineIndex) FileLineUtil.GetFileNo(IFileLineIndex) FileLineUtil.GetLineNo(IFileLineIndex) 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 FileIndex File Index. Start on 0. int FileIndex { get; } Property Value int LineIndex Line Index. Start on 0. int LineIndex { get; } Property Value int" }, "api/Hi.Common.FileLines.IGetFileLineIndex.html": { "href": "api/Hi.Common.FileLines.IGetFileLineIndex.html", "title": "Interface IGetFileLineIndex | HiAPI-C# 2025", - "summary": "Interface IGetFileLineIndex Namespace Hi.Common.FileLines Assembly HiGeom.dll Interface of GetFileLineIndex(). public interface IGetFileLineIndex Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) FileLineUtil.MixedIndex(IGetFileLineIndex) 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 GetFileLineIndex() Get FileLineIndex. FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex" + "summary": "Interface IGetFileLineIndex Namespace Hi.Common.FileLines Assembly HiGeom.dll Interface of GetFileLineIndex(). public interface IGetFileLineIndex 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 GetFileLineIndex() Get FileLineIndex. FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex" }, "api/Hi.Common.FileLines.IGetIndexedFileLine.html": { "href": "api/Hi.Common.FileLines.IGetIndexedFileLine.html", @@ -587,7 +592,7 @@ "api/Hi.Common.FileLines.IIndexedFileLine.html": { "href": "api/Hi.Common.FileLines.IIndexedFileLine.html", "title": "Interface IIndexedFileLine | HiAPI-C# 2025", - "summary": "Interface IIndexedFileLine Namespace Hi.Common.FileLines Assembly HiGeom.dll Interface for a file line with associated file and line index information. public interface IIndexedFileLine : IFileLine, IFileLineIndex, IGetIndexedFileLine, IGetFileLineIndex Inherited Members IFileLine.FilePath IFileLine.Line IFileLineIndex.FileIndex IFileLineIndex.LineIndex IGetIndexedFileLine.GetIndexedFileLine() IGetFileLineIndex.GetFileLineIndex() Extension Methods FileLineUtil.GetFileNo(IFileLineIndex) FileLineUtil.GetLineNo(IFileLineIndex) FileLineUtil.MixedIndex(IFileLineIndex) FileLineUtil.MixedIndex(IGetFileLineIndex) 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)" + "summary": "Interface IIndexedFileLine Namespace Hi.Common.FileLines Assembly HiGeom.dll Interface for a file line with associated file and line index information. public interface IIndexedFileLine : IFileLine, IFileLineIndex, IGetIndexedFileLine, IGetFileLineIndex Inherited Members IFileLine.FilePath IFileLine.Line IFileLineIndex.FileIndex IFileLineIndex.LineIndex IGetIndexedFileLine.GetIndexedFileLine() IGetFileLineIndex.GetFileLineIndex() Extension Methods FileLineUtil.CompareFileLine(IFileLineIndex, IFileLineIndex) FileLineUtil.GetFileNo(IFileLineIndex) FileLineUtil.GetLineNo(IFileLineIndex) 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.FileLines.ILineChangedEventSupport.html": { "href": "api/Hi.Common.FileLines.ILineChangedEventSupport.html", @@ -602,12 +607,12 @@ "api/Hi.Common.FileLines.IndexedFileLine.html": { "href": "api/Hi.Common.FileLines.IndexedFileLine.html", "title": "Class IndexedFileLine | HiAPI-C# 2025", - "summary": "Class IndexedFileLine Namespace Hi.Common.FileLines Assembly HiGeom.dll Represents a line of text from a file with associated file and line information. public class IndexedFileLine : IIndexedFileLine, IFileLine, IFileLineIndex, IGetIndexedFileLine, IGetFileLineIndex Inheritance object IndexedFileLine Implements IIndexedFileLine IFileLine IFileLineIndex IGetIndexedFileLine IGetFileLineIndex Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods FileLineUtil.GetFileNo(IFileLineIndex) FileLineUtil.GetLineNo(IFileLineIndex) FileLineUtil.MixedIndex(IFileLineIndex) FileLineUtil.MixedIndex(IGetFileLineIndex) 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 IndexedFileLine() Initializes a new instance of the IndexedFileLine class. public IndexedFileLine() IndexedFileLine(IIndexedFileLine) Initializes a new instance of the IndexedFileLine class by copying from an IIndexedFileLine. public IndexedFileLine(IIndexedFileLine src) Parameters src IIndexedFileLine The source IIndexedFileLine to copy from. IndexedFileLine(IndexedFileLine) Initializes a new instance of the IndexedFileLine class by copying another instance. public IndexedFileLine(IndexedFileLine src) Parameters src IndexedFileLine The source IndexedFileLine to copy from. IndexedFileLine(int, string, int, string) Initializes a new instance of the IndexedFileLine class with the specified file information and line content. public IndexedFileLine(int fileIndex, string filePath, int lineIndex, string line) Parameters fileIndex int The zero-based index of the file. filePath string The path of the file. lineIndex int The zero-based index of the line within the file. line string The content of the line. Properties FileIndex File Index. Start on 0. public int FileIndex { get; set; } Property Value int FileNo FileIndex+1. public int FileNo { get; set; } Property Value int FilePath File path. public string FilePath { get; set; } Property Value string Line The line. public string Line { get; set; } Property Value string LineIndex Line Index. Start on 0. public int LineIndex { get; set; } Property Value int LineNo LineIndex+1. public int LineNo { get; set; } Property Value int Methods Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. Remarks Checks the equalty of FileIndex and LineIndex. GetFileLine() public IFileLine GetFileLine() Returns IFileLine GetFileLineIndex() Get FileLineIndex. public FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. Remarks The hashcode is composed of FileIndex and LineIndex. GetIndexedFileLine() Gets the file line associated with this object. public IndexedFileLine GetIndexedFileLine() Returns IndexedFileLine The file line object. ReadFile(int, string) Read file to IndexedFileLines. public static IEnumerable ReadFile(int fileIndex, string filePath) Parameters fileIndex int file number. If only one file in the scenerio, assign zero is prefered. filePath string file path Returns IEnumerable IndexedFileLines ReadFiles(List) Read files to IndexedFileLines. public static IEnumerable ReadFiles(List files) Parameters files List files Returns IEnumerable IndexedFileLines ToHumanString() Returns a human-readable string representation of this file line. public string ToHumanString() Returns string A formatted string with file number, path, line number, and line content. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + "summary": "Class IndexedFileLine Namespace Hi.Common.FileLines Assembly HiGeom.dll Represents a line of text from a file with associated file and line information. public class IndexedFileLine : IIndexedFileLine, IFileLine, IFileLineIndex, IGetIndexedFileLine, IGetFileLineIndex Inheritance object IndexedFileLine Implements IIndexedFileLine IFileLine IFileLineIndex IGetIndexedFileLine IGetFileLineIndex Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods FileLineUtil.CompareFileLine(IFileLineIndex, IFileLineIndex) FileLineUtil.GetFileNo(IFileLineIndex) FileLineUtil.GetLineNo(IFileLineIndex) 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 IndexedFileLine() Initializes a new instance of the IndexedFileLine class. public IndexedFileLine() IndexedFileLine(IIndexedFileLine) Initializes a new instance of the IndexedFileLine class by copying from an IIndexedFileLine. public IndexedFileLine(IIndexedFileLine src) Parameters src IIndexedFileLine The source IIndexedFileLine to copy from. IndexedFileLine(IndexedFileLine) Initializes a new instance of the IndexedFileLine class by copying another instance. public IndexedFileLine(IndexedFileLine src) Parameters src IndexedFileLine The source IndexedFileLine to copy from. IndexedFileLine(int, string, int, string) Initializes a new instance of the IndexedFileLine class with the specified file information and line content. public IndexedFileLine(int fileIndex, string filePath, int lineIndex, string line) Parameters fileIndex int The zero-based index of the file. filePath string The path of the file. lineIndex int The zero-based index of the line within the file. line string The content of the line. Properties FileIndex File Index. Start on 0. public int FileIndex { get; set; } Property Value int FileNo FileIndex+1. public int FileNo { get; set; } Property Value int FilePath File path. public string FilePath { get; set; } Property Value string Line The line. public string Line { get; set; } Property Value string LineIndex Line Index. Start on 0. public int LineIndex { get; set; } Property Value int LineNo LineIndex+1. public int LineNo { get; set; } Property Value int Methods Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. Remarks Checks the equalty of FileIndex and LineIndex. GetFileLine() public IFileLine GetFileLine() Returns IFileLine GetFileLineIndex() Get FileLineIndex. public FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. Remarks The hashcode is composed of FileIndex and LineIndex. GetIndexedFileLine() Gets the file line associated with this object. public IndexedFileLine GetIndexedFileLine() Returns IndexedFileLine The file line object. ReadFile(int, string) Read file to IndexedFileLines. public static IEnumerable ReadFile(int fileIndex, string filePath) Parameters fileIndex int file number. If only one file in the scenerio, assign zero is prefered. filePath string file path Returns IEnumerable IndexedFileLines ReadFiles(List) Read files to IndexedFileLines. public static IEnumerable ReadFiles(List files) Parameters files List files Returns IEnumerable IndexedFileLines ToHumanString() Returns a human-readable string representation of this file line. public string ToHumanString() Returns string A formatted string with file number, path, line number, and line content. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, "api/Hi.Common.FileLines.IndexedFileLineChar.html": { "href": "api/Hi.Common.FileLines.IndexedFileLineChar.html", "title": "Class IndexedFileLineChar | HiAPI-C# 2025", - "summary": "Class IndexedFileLineChar Namespace Hi.Common.FileLines Assembly HiGeom.dll Represents a character-level position within a file, with associated file path context. Analogous to IndexedFileLine but at character granularity. public class IndexedFileLineChar : IFileLineCharIndex, IFileLineIndex, IGetFileLineIndex, IEquatable Inheritance object IndexedFileLineChar Implements IFileLineCharIndex IFileLineIndex IGetFileLineIndex IEquatable Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods FileLineUtil.GetFileNo(IFileLineIndex) FileLineUtil.GetLineNo(IFileLineIndex) FileLineUtil.MixedIndex(IFileLineIndex) FileLineUtil.MixedIndex(IGetFileLineIndex) 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 IndexedFileLineChar() Initializes a new instance of the IndexedFileLineChar class. public IndexedFileLineChar() IndexedFileLineChar(IndexedFileLine, int) Creates an IndexedFileLineChar from an IndexedFileLine at the specified character index. public IndexedFileLineChar(IndexedFileLine src, int charIndex) Parameters src IndexedFileLine The source indexed file line. charIndex int The zero-based character index within the line. IndexedFileLineChar(IndexedFileLineChar) Initializes a new instance of the IndexedFileLineChar class by copying another instance. public IndexedFileLineChar(IndexedFileLineChar src) Parameters src IndexedFileLineChar The source to copy from. IndexedFileLineChar(int, string, int, int) Initializes a new instance of the IndexedFileLineChar class with specified values. public IndexedFileLineChar(int fileIndex, string filePath, int lineIndex, int charIndex) Parameters fileIndex int The zero-based file index. filePath string The file path. lineIndex int The zero-based line index. charIndex int The zero-based character index within the line. Properties CharIndex Character index within the line. 0-based. public int CharIndex { get; set; } Property Value int FileIndex File Index. Start on 0. public int FileIndex { get; set; } Property Value int FilePath File path. public string FilePath { get; set; } Property Value string LineIndex Line Index. Start on 0. public int LineIndex { get; set; } Property Value int Methods Equals(IndexedFileLineChar) Indicates whether the current object is equal to another object of the same type. public bool Equals(IndexedFileLineChar other) Parameters other IndexedFileLineChar An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. GetFileLineIndex() Get FileLineIndex. public FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. ToFileLineCharIndex() Converts to a FileLineCharIndex (without file path context). public FileLineCharIndex ToFileLineCharIndex() Returns FileLineCharIndex ToHumanString() Returns a human-readable string representation. public string ToHumanString() Returns string ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + "summary": "Class IndexedFileLineChar Namespace Hi.Common.FileLines Assembly HiGeom.dll Represents a character-level position within a file, with associated file path context. Analogous to IndexedFileLine but at character granularity. public class IndexedFileLineChar : IFileLineCharIndex, IFileLineIndex, IGetFileLineIndex, IEquatable Inheritance object IndexedFileLineChar Implements IFileLineCharIndex IFileLineIndex IGetFileLineIndex IEquatable Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods FileLineUtil.CompareFileLine(IFileLineIndex, IFileLineIndex) FileLineUtil.GetFileNo(IFileLineIndex) FileLineUtil.GetLineNo(IFileLineIndex) 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 IndexedFileLineChar() Initializes a new instance of the IndexedFileLineChar class. public IndexedFileLineChar() IndexedFileLineChar(IndexedFileLine, int) Creates an IndexedFileLineChar from an IndexedFileLine at the specified character index. public IndexedFileLineChar(IndexedFileLine src, int charIndex) Parameters src IndexedFileLine The source indexed file line. charIndex int The zero-based character index within the line. IndexedFileLineChar(IndexedFileLineChar) Initializes a new instance of the IndexedFileLineChar class by copying another instance. public IndexedFileLineChar(IndexedFileLineChar src) Parameters src IndexedFileLineChar The source to copy from. IndexedFileLineChar(int, string, int, int) Initializes a new instance of the IndexedFileLineChar class with specified values. public IndexedFileLineChar(int fileIndex, string filePath, int lineIndex, int charIndex) Parameters fileIndex int The zero-based file index. filePath string The file path. lineIndex int The zero-based line index. charIndex int The zero-based character index within the line. Properties CharIndex Character index within the line. 0-based. public int CharIndex { get; set; } Property Value int FileIndex File Index. Start on 0. public int FileIndex { get; set; } Property Value int FilePath File path. public string FilePath { get; set; } Property Value string LineIndex Line Index. Start on 0. public int LineIndex { get; set; } Property Value int Methods Equals(IndexedFileLineChar) Indicates whether the current object is equal to another object of the same type. public bool Equals(IndexedFileLineChar other) Parameters other IndexedFileLineChar An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. GetFileLineIndex() Get FileLineIndex. public FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. ToFileLineCharIndex() Converts to a FileLineCharIndex (without file path context). public FileLineCharIndex ToFileLineCharIndex() Returns FileLineCharIndex ToHumanString() Returns a human-readable string representation. public string ToHumanString() Returns string ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, "api/Hi.Common.FileLines.LineBeginEventArgs.html": { "href": "api/Hi.Common.FileLines.LineBeginEventArgs.html", @@ -639,6 +644,11 @@ "title": "Interface IClearCache | HiAPI-C# 2025", "summary": "Interface IClearCache Namespace Hi.Common Assembly HiGeom.dll Interface for objects that can clear their internal cache. public interface IClearCache 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 ClearCache() Clears any cached data held by the implementing object. void ClearCache()" }, + "api/Hi.Common.ICommandTextSource.html": { + "href": "api/Hi.Common.ICommandTextSource.html", + "title": "Interface ICommandTextSource | HiAPI-C# 2025", + "summary": "Interface ICommandTextSource Namespace Hi.Common Assembly HiGeom.dll A culture-bearing vocabulary commands compose their titles and labels from: it maps a vocabulary key — the English default text — onto that culture's text. The CALLER picks the source, so the presentation layer owns the language (no thread culture involved); the command keeps its composition and degradation rules. Presentation layers can implement their own source or take the engine-default one from GenTextSource(CultureInfo, params Type[]) ([CultureText] declarations overlaid by SetTextOverride(string, string, string) registrations). public interface ICommandTextSource 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 this[string] The text of key in this source's culture; the key itself when the source carries no entry — the key doubles as the English default. string this[string key] { get; } Parameters key string Vocabulary key — the English default text. Property Value string The culture's text, or the key itself." + }, "api/Hi.Common.IDuplicate.html": { "href": "api/Hi.Common.IDuplicate.html", "title": "Interface IDuplicate | HiAPI-C# 2025", @@ -677,7 +687,7 @@ "api/Hi.Common.IToPresentDto.html": { "href": "api/Hi.Common.IToPresentDto.html", "title": "Interface IToPresentDto | HiAPI-C# 2025", - "summary": "Interface IToPresentDto Namespace Hi.Common Assembly HiGeom.dll Interface for converting objects to presentation DTOs (Data Transfer Objects) for JSON serialization. public interface IToPresentDto 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 ToPresentDto() Convert to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. object ToPresentDto() Returns object DTO object with type and object properties" + "summary": "Interface IToPresentDto Namespace Hi.Common Assembly HiGeom.dll Interface for converting objects to presentation DTOs (Data Transfer Objects) for JSON serialization. public interface IToPresentDto 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 Implementations must not return anonymous types: release assemblies are obfuscated with only the public API kept, so an anonymous type gets renamed and loses its constructor parameter names, which makes System.Text.Json throw NotSupportedException when serializing it. Return a Dictionary instead — its keys are emitted verbatim as the JSON property names. Key by nameof of the mirrored member where one exists (nameof compiles to a string literal, so obfuscation cannot touch it); use a literal for marker keys such as “Type”. Methods ToPresentDto() Convert to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. object ToPresentDto() Returns object DTO object with type and object properties" }, "api/Hi.Common.IUpdateByContent.html": { "href": "api/Hi.Common.IUpdateByContent.html", @@ -697,7 +707,7 @@ "api/Hi.Common.IndexSegment.html": { "href": "api/Hi.Common.IndexSegment.html", "title": "Class IndexSegment | HiAPI-C# 2025", - "summary": "Class IndexSegment Namespace Hi.Common Assembly HiGeom.dll Represents a segment of indices with a beginning (inclusive) and ending (exclusive> point. Used for defining segment of data in collections or arrays. public class IndexSegment : IEquatable, IMakeXmlSource Inheritance object IndexSegment Implements IEquatable IMakeXmlSource Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IndexSegment() Initializes a new instance of the IndexSegment class. public IndexSegment() IndexSegment(IndexSegment) Initializes a new instance of the IndexSegment class by copying another instance. public IndexSegment(IndexSegment src) Parameters src IndexSegment The source index segment to copy from. IndexSegment(int, int) Initializes a new instance of the IndexSegment class with the specified begin and end indices. public IndexSegment(int begin, int end) Parameters begin int The beginning index (inclusive). end int The ending index (exclusive). IndexSegment(XElement) Initializes a new instance of the IndexSegment class from an XML element. public IndexSegment(XElement src) Parameters src XElement The XML element containing the index segment data. Fields XName The XML element name used for serialization. public static string XName Field Value string begin Begin index. Inclusive. public int begin Field Value int end End index. Exclusive. public int end Field Value int Properties Begin Gets or sets the beginning index of the segment (inclusive). public int Begin { get; set; } Property Value int End Gets or sets the ending index of the segment (exclusive). public int End { get; set; } Property Value int Length Gets the length of the segment (End - Begin). public int Length { get; } Property Value int Methods Any() Determines whether this index segment contains any indices. public bool Any() Returns bool true if the segment contains any indices; otherwise, false. Contains(int) Determines whether this index segment contains the specified index. public bool Contains(int index) Parameters index int The index to check. Returns bool true if the index is within the segment; otherwise, false. Enumerate() Enumerates all indices within this segment. public IEnumerable Enumerate() Returns IEnumerable An enumerable collection of all indices within the segment. Equals(IndexSegment) Determines whether the specified index segment is equal to the current index segment. public bool Equals(IndexSegment other) Parameters other IndexSegment The index segment to compare with the current index segment. Returns bool true if the specified index segment is equal to the current index segment; otherwise, false. Equals(object) Determines whether the specified object is equal to the current index segment. public override bool Equals(object obj) Parameters obj object The object to compare with the current index segment. Returns bool true if the specified object is equal to the current index segment; otherwise, false. Expand(int) Expands this index segment to include the specified value if needed. public void Expand(int v) Parameters v int The value to include in the segment. GetHashCode() Returns a hash code for this index segment. public override int GetHashCode() Returns int A hash code for the current index segment. GetIndexSegment(IList, int, int, Func) Gets an index segment from a list of data items by the specific group index. public static IndexSegment GetIndexSegment(IList steps, int seekingStartListIndex, int targetGroupIndex, Func dataToGroupIndexFunc) Parameters steps IList The list of data items. seekingStartListIndex int The start step index for seeking. targetGroupIndex int The target segment key. dataToGroupIndexFunc Func A function that extracts a segmentkey from a data item. Returns IndexSegment An index segment representing the range of indices. Type Parameters TData The type of data items. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToString() Returns a string representation of this index segment. public override string ToString() Returns string A string representation of the current index segment." + "summary": "Class IndexSegment Namespace Hi.Common Assembly HiGeom.dll Represents a segment of indices with a beginning (inclusive) and ending (exclusive> point. Used for defining segment of data in collections or arrays. public class IndexSegment : IEquatable, IMakeXmlSource Inheritance object IndexSegment Implements IEquatable IMakeXmlSource Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IndexSegment() Initializes a new instance of the IndexSegment class. public IndexSegment() IndexSegment(IndexSegment) Initializes a new instance of the IndexSegment class by copying another instance. public IndexSegment(IndexSegment src) Parameters src IndexSegment The source index segment to copy from. IndexSegment(int, int) Initializes a new instance of the IndexSegment class with the specified begin and end indices. public IndexSegment(int begin, int end) Parameters begin int The beginning index (inclusive). end int The ending index (exclusive). IndexSegment(XElement) Initializes a new instance of the IndexSegment class from an XML element. public IndexSegment(XElement src) Parameters src XElement The XML element containing the index segment data. Fields XName The XML element name used for serialization. public static string XName Field Value string begin Begin index. Inclusive. public int begin Field Value int end End index. Exclusive. public int end Field Value int Properties Begin Gets or sets the beginning index of the segment (inclusive). public int Begin { get; set; } Property Value int End Gets or sets the ending index of the segment (exclusive). public int End { get; set; } Property Value int Length Gets the length of the segment (End - Begin). public int Length { get; } Property Value int Methods Any() Determines whether this index segment contains any indices. public bool Any() Returns bool true if the segment contains any indices; otherwise, false. Contains(int) Determines whether this index segment contains the specified index. public bool Contains(int index) Parameters index int The index to check. Returns bool true if the index is within the segment; otherwise, false. Enumerate() Enumerates all indices within this segment. public IEnumerable Enumerate() Returns IEnumerable An enumerable collection of all indices within the segment. Equals(IndexSegment) Determines whether the specified index segment is equal to the current index segment. public bool Equals(IndexSegment other) Parameters other IndexSegment The index segment to compare with the current index segment. Returns bool true if the specified index segment is equal to the current index segment; otherwise, false. Equals(object) Determines whether the specified object is equal to the current index segment. public override bool Equals(object obj) Parameters obj object The object to compare with the current index segment. Returns bool true if the specified object is equal to the current index segment; otherwise, false. Expand(int) Expands this index segment to include the specified value if needed. public void Expand(int v) Parameters v int The value to include in the segment. GetHashCode() Returns a hash code for this index segment. public override int GetHashCode() Returns int A hash code for the current index segment. GetIndexSegment(IList, int, TKey, Func, TKey) Finds the contiguous run of items whose key equals targetGroupKey, scanning outward from seekingStartListIndex. public static IndexSegment GetIndexSegment(IList steps, int seekingStartListIndex, TKey targetGroupKey, Func keyFunc, TKey seekStartFallbackKey = null) where TKey : class, IComparable Parameters steps IList The list of data items. seekingStartListIndex int The start step index for seeking. targetGroupKey TKey The key of the segment to locate. keyFunc Func Extracts the ordering key from a data item; may return null for an item with no key. seekStartFallbackKey TKey Key used when the seeking-start item has none (a null cache lands in the equality branch). Returns IndexSegment An index segment representing the range of indices. Type Parameters TData The type of data items. TKey The ordering key type (e.g. a file-line position). 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToString() Returns a string representation of this index segment. public override string ToString() Returns string A string representation of the current index segment." }, "api/Hi.Common.IntegerKeyDictionaryConverter-1.html": { "href": "api/Hi.Common.IntegerKeyDictionaryConverter-1.html", @@ -722,7 +732,7 @@ "api/Hi.Common.JsonUtil.html": { "href": "api/Hi.Common.JsonUtil.html", "title": "Class JsonUtil | HiAPI-C# 2025", - "summary": "Class JsonUtil Namespace Hi.Common Assembly HiGeom.dll Helper utilities for reading and writing JSON files. public static class JsonUtil Inheritance object JsonUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods CallJsonArrayByPath(JsonObject, IEnumerable) Navigates or creates a JSON array path in the source JSON object. Creates missing intermediate objects and the final array as needed. public static JsonArray CallJsonArrayByPath(this JsonObject srcdst, IEnumerable jsonObjectPath) Parameters srcdst JsonObject The source JSON object to navigate. jsonObjectPath IEnumerable The path segments to navigate through. The last segment will be treated as an array. Returns JsonArray The JSON array at the specified path, creating it if it doesn't exist. Returns null if the path is empty. CallJsonObjectByPath(JsonObject, IEnumerable) Navigates or creates a JSON object path in the source JSON object. Creates missing intermediate objects as needed. public static JsonObject CallJsonObjectByPath(this JsonObject srcdst, IEnumerable jsonObjectPath) Parameters srcdst JsonObject The source JSON object to navigate. jsonObjectPath IEnumerable The path segments to navigate through. Returns JsonObject The JSON object at the specified path, creating it if it doesn't exist. GetDouble(JsonNode) Gets a double from a JsonNode that may hold int, long, or double. public static double? GetDouble(this JsonNode node) Parameters node JsonNode Returns double? GetJsonNodeByPath(JsonObject, List) Navigates a JSON object tree by path segments and returns the node at the end of the path. public static JsonNode GetJsonNodeByPath(this JsonObject root, List pathSegments) Parameters root JsonObject The root JSON object. pathSegments List The path segments to navigate through. Returns JsonNode The JSON node at the specified path, or null if the path does not exist. ToLeafCompactJsonString(JsonNode, JsonSerializerOptions) Serializes a JsonNode so that stem containers are indented but leaf containers (all children are primitive values) are written on a single compact line. Supports NaN / Infinity / -Infinity. public static string ToLeafCompactJsonString(this JsonNode src, JsonSerializerOptions options = null) Parameters src JsonNode options JsonSerializerOptions Returns string WritePartialJson(string, string, TConfig) Writes a config object into a named section of a JSON file; merges when file exists and overwrites the same section name. public static void WritePartialJson(string filePath, string configName, TConfig config) Parameters filePath string JSON file path configName string Section name to write config TConfig Section object to write Type Parameters TConfig Type of the config object" + "summary": "Class JsonUtil Namespace Hi.Common Assembly HiGeom.dll Helper utilities for reading and writing JSON files. public static class JsonUtil Inheritance object JsonUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties CompactNanOptions Compact (single-line) serializer options supporting NaN / Infinity / -Infinity as quoted literal strings. This is the exact leaf encoding ToLeafCompactJsonString(JsonNode, JsonSerializerOptions) uses, exposed so other serialization paths (e.g. freezing a parse tree to UTF-8 bytes) can guarantee a byte-identical projection after a serialize → parse round-trip. Null-valued entries are written explicitly. public static JsonSerializerOptions CompactNanOptions { get; } Property Value JsonSerializerOptions Methods CallJsonArrayByPath(JsonObject, IEnumerable) Navigates or creates a JSON array path in the source JSON object. Creates missing intermediate objects and the final array as needed. public static JsonArray CallJsonArrayByPath(this JsonObject srcdst, IEnumerable jsonObjectPath) Parameters srcdst JsonObject The source JSON object to navigate. jsonObjectPath IEnumerable The path segments to navigate through. The last segment will be treated as an array. Returns JsonArray The JSON array at the specified path, creating it if it doesn't exist. Returns null if the path is empty. CallJsonObjectByPath(JsonObject, IEnumerable) Navigates or creates a JSON object path in the source JSON object. Creates missing intermediate objects as needed. public static JsonObject CallJsonObjectByPath(this JsonObject srcdst, IEnumerable jsonObjectPath) Parameters srcdst JsonObject The source JSON object to navigate. jsonObjectPath IEnumerable The path segments to navigate through. Returns JsonObject The JSON object at the specified path, creating it if it doesn't exist. GetDouble(JsonNode) Gets a double from a JsonNode that may hold int, long, or double. Also maps the named floating-point literal strings “NaN”, “Infinity” and \"-Infinity\" — the quoted form AllowNamedFloatingPointLiterals writes for those values — back to their double constants, so a node re-parsed from serialized JSON reads the same as the live value. public static double? GetDouble(this JsonNode node) Parameters node JsonNode Returns double? GetJsonNodeByPath(JsonObject, List) Navigates a JSON object tree by path segments and returns the node at the end of the path. public static JsonNode GetJsonNodeByPath(this JsonObject root, List pathSegments) Parameters root JsonObject The root JSON object. pathSegments List The path segments to navigate through. Returns JsonNode The JSON node at the specified path, or null if the path does not exist. ToLeafCompactJsonString(JsonNode, JsonSerializerOptions) Serializes a JsonNode so that stem containers are indented but leaf containers (all children are primitive values) are written on a single compact line. Supports NaN / Infinity / -Infinity. public static string ToLeafCompactJsonString(this JsonNode src, JsonSerializerOptions options = null) Parameters src JsonNode options JsonSerializerOptions Returns string WritePartialJson(string, string, TConfig) Writes a config object into a named section of a JSON file; merges when file exists and overwrites the same section name. public static void WritePartialJson(string filePath, string configName, TConfig config) Parameters filePath string JSON file path configName string Section name to write config TConfig Section object to write Type Parameters TConfig Type of the config object" }, "api/Hi.Common.LooseRunner.MergedCancellationTokenRun.html": { "href": "api/Hi.Common.LooseRunner.MergedCancellationTokenRun.html", @@ -747,13 +757,18 @@ "api/Hi.Common.Messages.ActionProgress-1.html": { "href": "api/Hi.Common.Messages.ActionProgress-1.html", "title": "Class ActionProgress | HiAPI-C# 2025", - "summary": "Class ActionProgress Namespace Hi.Common.Messages Assembly HiGeom.dll Lightweight IProgress that delegates to an Action. Unlike Progress, does not capture SynchronizationContext and invokes the handler synchronously on the caller's thread. public class ActionProgress : IProgress Type Parameters T Inheritance object ActionProgress 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 ActionProgress(Action) Initializes a new instance that forwards each reported value to handler. public ActionProgress(Action handler) Parameters handler Action Delegate invoked synchronously by Report(T). Methods FromLogger(ILogger) Creates an IProgress that routes MultiTagMessage to the appropriate ILogger level. public static IProgress FromLogger(ILogger logger) Parameters logger ILogger Returns IProgress Report(T) Reports a progress update. public void Report(T value) Parameters value T The value of the updated progress." + "summary": "Class ActionProgress Namespace Hi.Common.Messages Assembly HiGeom.dll Lightweight IProgress that delegates to an Action. Unlike Progress, does not capture SynchronizationContext and invokes the handler synchronously on the caller's thread. public class ActionProgress : IProgress Type Parameters T Inheritance object ActionProgress 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 ActionProgress(Action) Initializes a new instance that forwards each reported value to handler. public ActionProgress(Action handler) Parameters handler Action Delegate invoked synchronously by Report(T). Methods FromLogger(ILogger) Creates an IProgress that routes an IMessage (or a raw Exception) to the appropriate ILogger level. public static IProgress FromLogger(ILogger logger) Parameters logger ILogger Returns IProgress Report(T) Reports a progress update. public void Report(T value) Parameters value T The value of the updated progress." }, "api/Hi.Common.Messages.BootstrapTheme.html": { "href": "api/Hi.Common.Messages.BootstrapTheme.html", "title": "Enum BootstrapTheme | HiAPI-C# 2025", "summary": "Enum BootstrapTheme Namespace Hi.Common.Messages Assembly HiGeom.dll Bootstrap theme colors for UI styling. public enum BootstrapTheme 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 danger = 5 Danger theme color (typically red). dark = 7 Dark theme color (typically black or very dark gray). info = 3 Information theme color (typically light blue). light = 6 Light theme color (typically white or very light gray). primary = 0 Primary theme color (typically blue). secondary = 1 Secondary theme color (typically gray). success = 2 Success theme color (typically green). warning = 4 Warning theme color (typically yellow)." }, + "api/Hi.Common.Messages.Category.html": { + "href": "api/Hi.Common.Messages.Category.html", + "title": "Enum Category | HiAPI-C# 2025", + "summary": "Enum Category Namespace Hi.Common.Messages Assembly HiGeom.dll Classification of an IMessage — the “what kind of concern” axis, orthogonal to the Severity importance axis it pairs with. Applies to every IMessage on the channel (lifecycle / progress notices, configuration checks, NC-pipeline diagnostics, …), not only NC messages. public enum Category 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 Configuration = 3 Missing or misconfigured end-user dependency / configuration (e.g. coordinate table, tool offset table, machine axis config, rapid feedrate config). System = 0 General program / pipeline output — lifecycle, progress, infrastructure, internal exceptions. The default when no more-specific category applies. Unsupported = 1 Recognized but unimplemented feature. Validation = 2 Manufacturing / physics feasibility check. Remarks Representative (Category × Severity) combinations: System + Message / Progress → lifecycle, progress, general program output 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 Configuration + Warning → dependency / config missing, using fallback Configuration + Error → dependency / config missing, cannot proceed" + }, "api/Hi.Common.Messages.DebugUtil.html": { "href": "api/Hi.Common.Messages.DebugUtil.html", "title": "Class DebugUtil | HiAPI-C# 2025", @@ -764,35 +779,55 @@ "title": "Class ExceptionUtil | HiAPI-C# 2025", "summary": "Class ExceptionUtil Namespace Hi.Common.Messages Assembly HiGeom.dll Provides utility methods for handling exceptions. public static class ExceptionUtil Inheritance object ExceptionUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods CatchExceptions(Task, Action) Continues the task and reports any exception via onException. public static Task CatchExceptions(this Task task, Action onException) Parameters task Task onException Action Returns Task CatchExceptions(Task, Action) Continues the task and reports exceptions via onException, silently ignoring TSilent. public static Task CatchExceptions(this Task task, Action onException) where TSilent : Exception Parameters task Task onException Action Returns Task Type Parameters TSilent" }, + "api/Hi.Common.Messages.IMessage.html": { + "href": "api/Hi.Common.Messages.IMessage.html", + "title": "Interface IMessage | HiAPI-C# 2025", + "summary": "Interface IMessage Namespace Hi.Common.Messages Assembly HiGeom.dll Common contract for a single reportable item on an IProgress channel — an NC diagnostic, a step-anchored notice, a simple message, or a progress fraction. Consumers (GUI / log) treat every kind uniformly through this view, while each concrete kind is still stored by its own owner (e.g. NcDiagnostic by NcDiagnosticProgress, ClStripPos by ClStrip) rather than being mixed into one shared collection. public interface IMessage 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 GetArgs() Gets the values interpolated into GetFormat(); null when GetFormat() is null, possibly empty for a hole-less template. Default interface method so external implementers are unaffected. object[] GetArgs() Returns object[] The interpolation arguments, or null when untemplated. GetCategory() Gets the classification — see Category. Category GetCategory() Returns Category The category of this message. GetDetail() Gets the optional detail payload or exception; null when not applicable. object GetDetail() Returns object The detail object, or null. GetFormat() Gets the composite-format template behind GetNotification() — a {0}-style .NET format string — when this message was produced from an interpolated template; null when the notification has no structured template. Together with GetArgs() this lets a consumer re-render the message in another language without losing the interpolated live values, while GetNotification() stays the invariant English rendering. Default interface method so external implementers are unaffected. string GetFormat() Returns string The composite format string, or null when untemplated. GetId() Gets the structured id used for filtering / suppression; may be null. string GetId() Returns string The message id, or null when not applicable. GetNotification() Gets the end-user friendly notification text. string GetNotification() Returns string The notification text. GetSeverity() Gets the importance level — see Severity. Severity GetSeverity() Returns Severity The severity of this message." + }, + "api/Hi.Common.Messages.IProgressMessage.html": { + "href": "api/Hi.Common.Messages.IProgressMessage.html", + "title": "Interface IProgressMessage | HiAPI-C# 2025", + "summary": "Interface IProgressMessage Namespace Hi.Common.Messages Assembly HiGeom.dll Marker for an IMessage that is itself a container of messages (a batch produced over the course of some scoped work) rather than a single leaf notice. A sink may give it special treatment — unrolling its accumulated children, in order, instead of storing the composite object itself. Empty by design: the contract is purely the marker. The children are exposed by the concrete type (e.g. StepScopedProgress.MessageList) and drained at the point that owns the ordering guarantee, so a consumer that does not recognize IProgressMessage simply treats the composite as an opaque IMessage. public interface IProgressMessage : IMessage Inherited Members IMessage.GetSeverity() IMessage.GetCategory() IMessage.GetId() IMessage.GetNotification() IMessage.GetDetail() IMessage.GetFormat() IMessage.GetArgs() 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.Messages.MessageBoardUtil.html": { "href": "api/Hi.Common.Messages.MessageBoardUtil.html", "title": "Class MessageBoardUtil | HiAPI-C# 2025", "summary": "Class MessageBoardUtil Namespace Hi.Common.Messages Assembly HiGeom.dll Utility class for displaying messages on a message board. public static class MessageBoardUtil Inheritance object MessageBoardUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties IsEnabled Gets or sets whether message board functionality is enabled. When disabled in console applications, message board functions have no effect. public static bool IsEnabled { get; set; } Property Value bool Methods ShowError(string, string) Shows an error message on the message board. public static void ShowError(string title, string message) Parameters title string Title of the message message string Content of the message ShowFailed(string, string) Shows a failure message on the message board. public static void ShowFailed(string title, string message) Parameters title string Title of the message message string Content of the message ShowMessage(string, string, BootstrapTheme) Displays a message on the message board with specified title and theme color. public static void ShowMessage(string title, string message, BootstrapTheme bootstrapThemeColor) Parameters title string The title of the message message string The content of the message bootstrapThemeColor BootstrapTheme The theme color for the message display ShowSuccess(string, string) Shows a success message on the message board. public static void ShowSuccess(string title, string message) Parameters title string Title of the message message string Content of the message ShowWarning(string, string) Shows a warning message on the message board. public static void ShowWarning(string title, string message) Parameters title string Title of the message message string Content of the message Events ShowMessageBoard Event that is triggered when a message needs to be displayed. public static event ShowMessageBoardDelegate ShowMessageBoard Event Type ShowMessageBoardDelegate" }, + "api/Hi.Common.Messages.MessageCollector.html": { + "href": "api/Hi.Common.Messages.MessageCollector.html", + "title": "Class MessageCollector | HiAPI-C# 2025", + "summary": "Class MessageCollector Namespace Hi.Common.Messages Assembly HiGeom.dll A minimal IProgress of IMessage that buffers every reported message into Messages. Intended as a per-call / per-request sink: a caller injects it into a have-both function (one that takes an IProgress messageProgress), runs the operation, then reads the collected messages back — e.g. to return them in an HTTP response so a REST / AI caller sees progress, success, and error notifications inline. Unlike the session / strip sinks (SessionProgress, StepDiagnosticProgress) it fires no events and holds no session or pipeline state; it is cheap to create and discard for the lifetime of a single call. public sealed class MessageCollector : IProgress Inheritance object MessageCollector Implements IProgress 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) MessageUtil.ConfigurationError(IProgress, string, string, object) MessageUtil.ConfigurationErrorFmt(IProgress, string, FormattableString, object) MessageUtil.ConfigurationMessage(IProgress, string, string, object) MessageUtil.ConfigurationMessageFmt(IProgress, string, FormattableString, object) MessageUtil.ConfigurationWarning(IProgress, string, string, object) MessageUtil.ConfigurationWarningFmt(IProgress, string, FormattableString, object) MessageUtil.SystemError(IProgress, string, string, object) MessageUtil.SystemErrorFmt(IProgress, string, FormattableString, object) MessageUtil.SystemMessage(IProgress, string, string, object) MessageUtil.SystemMessageFmt(IProgress, string, FormattableString, object) MessageUtil.SystemProgress(IProgress, string, string, object) MessageUtil.SystemProgressFmt(IProgress, string, FormattableString, object) MessageUtil.SystemSuccess(IProgress, string, string, object) MessageUtil.SystemSuccessFmt(IProgress, string, FormattableString, object) MessageUtil.SystemWarning(IProgress, string, string, object) MessageUtil.SystemWarningFmt(IProgress, string, FormattableString, object) MessageUtil.UnsupportedError(IProgress, string, string, object) MessageUtil.UnsupportedErrorFmt(IProgress, string, FormattableString, object) MessageUtil.UnsupportedMessage(IProgress, string, string, object) MessageUtil.UnsupportedMessageFmt(IProgress, string, FormattableString, object) MessageUtil.UnsupportedWarning(IProgress, string, string, object) MessageUtil.UnsupportedWarningFmt(IProgress, string, FormattableString, object) MessageUtil.ValidationError(IProgress, string, string, object) MessageUtil.ValidationErrorFmt(IProgress, string, FormattableString, object) MessageUtil.ValidationWarning(IProgress, string, string, object) MessageUtil.ValidationWarningFmt(IProgress, string, FormattableString, object) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Messages The messages reported so far, in arrival order. public List Messages { get; } Property Value List Methods Report(IMessage) Reports a progress update. public void Report(IMessage value) Parameters value IMessage The value of the updated progress." + }, "api/Hi.Common.Messages.MessageFlag.html": { "href": "api/Hi.Common.Messages.MessageFlag.html", "title": "Enum MessageFlag | HiAPI-C# 2025", "summary": "Enum MessageFlag Namespace Hi.Common.Messages Assembly HiGeom.dll Enumeration of common message types used for system notifications. public enum MessageFlag 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 Error = 1 General error messages. For exception which is consciously handled. Exception = 0 System error messages. For exception which is not consciously handled. Info = 7 System behavior that end user not need to know. The message make help to tracing end user behavior. Message = 6 Something else from the upper flags to tell the end user. Progress = 4 Progress update messages. Success = 5 Progress complete on success messages. Warning = 2 Warning messages." }, - "api/Hi.Common.Messages.MultiTagMessage.html": { - "href": "api/Hi.Common.Messages.MultiTagMessage.html", - "title": "Class MultiTagMessage | HiAPI-C# 2025", - "summary": "Class MultiTagMessage Namespace Hi.Common.Messages Assembly HiGeom.dll Represents a message with multiple tags for categorization and filtering. public class MultiTagMessage Inheritance object MultiTagMessage 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 MultiTagMessage(object, params string[]) Initializes a new instance of the MultiTagMessage class with the specified message and tags. public MultiTagMessage(object message, params string[] tags) Parameters message object The message content tags string[] The tags to associate with this message Properties Message Gets or sets the message content. public object Message { get; set; } Property Value object Tags Gets or sets the collection of tags associated with this message. public HashSet Tags { get; set; } Property Value HashSet Methods Error(string, params string[]) Creates a Error message. public static MultiTagMessage Error(string message, params string[] otherTags) Parameters message string The message content otherTags string[] Additional tags to associate with the message Returns MultiTagMessage A new MultiTagMessage tagged with Error Exception(Exception, params string[]) Creates a Exception message. public static MultiTagMessage Exception(Exception exception, params string[] otherTags) Parameters exception Exception The exception to log otherTags string[] Additional tags to associate with the message Returns MultiTagMessage A new MultiTagMessage tagged with Exception Info(string, params string[]) Creates a Info message. public static MultiTagMessage Info(string message, params string[] otherTags) Parameters message string The message content otherTags string[] Additional tags to associate with the message Returns MultiTagMessage A new MultiTagMessage tagged with Info Progress(string, params string[]) Creates a Progress message. public static MultiTagMessage Progress(string message, params string[] otherTags) Parameters message string The message content otherTags string[] Additional tags to associate with the message Returns MultiTagMessage A new MultiTagMessage tagged with Progress Success(string, params string[]) Creates a Success message. public static MultiTagMessage Success(string message, params string[] otherTags) Parameters message string The message content otherTags string[] Additional tags to associate with the message Returns MultiTagMessage A new MultiTagMessage tagged with Success ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. Warning(string, params string[]) Creates a Warning message. public static MultiTagMessage Warning(string message, params string[] otherTags) Parameters message string The message content otherTags string[] Additional tags to associate with the message Returns MultiTagMessage A new MultiTagMessage tagged with Warning" + "api/Hi.Common.Messages.MessageUtil.html": { + "href": "api/Hi.Common.Messages.MessageUtil.html", + "title": "Class MessageUtil | HiAPI-C# 2025", + "summary": "Class MessageUtil Namespace Hi.Common.Messages Assembly HiGeom.dll Extension helpers for reporting SimpleMessage records onto an IProgress of IMessage sink — the IMessage-channel counterpart of NcDiagnosticProgress's shorthand methods. Every helper is named {Category}{Severity} and is id-first; the structured id is used for filtering / suppression. All overloads are null-safe on host. Each helper has a {Category}{Severity}Fmt sibling taking a FormattableString: it keeps the interpolated template and values (Format / Args) so a client can re-render the message in another language, while the notification stays the invariant English rendering. The sibling must be opted into by name — an interpolated string literal passed to the string helper binds to string and is not captured. public static class MessageUtil Inheritance object MessageUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ConfigurationError(IProgress, string, string, object) Reports Configuration + Error (dependency/config missing, cannot proceed). public static void ConfigurationError(this IProgress host, string id, string text, object detail = null) Parameters host IProgress id string text string detail object ConfigurationErrorFmt(IProgress, string, FormattableString, object) Templated ConfigurationError(IProgress, string, string, object) — keeps format + args for localization. public static void ConfigurationErrorFmt(this IProgress host, string id, FormattableString text, object detail = null) Parameters host IProgress id string text FormattableString detail object ConfigurationMessage(IProgress, string, string, object) Reports Configuration + Message (dependency/config applied, informational). public static void ConfigurationMessage(this IProgress host, string id, string text, object detail = null) Parameters host IProgress id string text string detail object ConfigurationMessageFmt(IProgress, string, FormattableString, object) Templated ConfigurationMessage(IProgress, string, string, object) — keeps format + args for localization. public static void ConfigurationMessageFmt(this IProgress host, string id, FormattableString text, object detail = null) Parameters host IProgress id string text FormattableString detail object ConfigurationWarning(IProgress, string, string, object) Reports Configuration + Warning (dependency/config missing, using fallback). public static void ConfigurationWarning(this IProgress host, string id, string text, object detail = null) Parameters host IProgress id string text string detail object ConfigurationWarningFmt(IProgress, string, FormattableString, object) Templated ConfigurationWarning(IProgress, string, string, object) — keeps format + args for localization. public static void ConfigurationWarningFmt(this IProgress host, string id, FormattableString text, object detail = null) Parameters host IProgress id string text FormattableString detail object SystemError(IProgress, string, string, object) Reports System + Error (exception or unconsidered case). public static void SystemError(this IProgress host, string id, string text, object detail = null) Parameters host IProgress id string text string detail object SystemErrorFmt(IProgress, string, FormattableString, object) Templated SystemError(IProgress, string, string, object) — keeps format + args for localization. public static void SystemErrorFmt(this IProgress host, string id, FormattableString text, object detail = null) Parameters host IProgress id string text FormattableString detail object SystemMessage(IProgress, string, string, object) Reports System + Message (pipeline lifecycle / informational). public static void SystemMessage(this IProgress host, string id, string text, object detail = null) Parameters host IProgress id string text string detail object SystemMessageFmt(IProgress, string, FormattableString, object) Templated SystemMessage(IProgress, string, string, object) — keeps format + args for localization. public static void SystemMessageFmt(this IProgress host, string id, FormattableString text, object detail = null) Parameters host IProgress id string text FormattableString detail object SystemProgress(IProgress, string, string, object) Reports System + Progress (ongoing pipeline progress). public static void SystemProgress(this IProgress host, string id, string text, object detail = null) Parameters host IProgress id string text string detail object SystemProgressFmt(IProgress, string, FormattableString, object) Templated SystemProgress(IProgress, string, string, object) — keeps format + args for localization. public static void SystemProgressFmt(this IProgress host, string id, FormattableString text, object detail = null) Parameters host IProgress id string text FormattableString detail object SystemSuccess(IProgress, string, string, object) Reports System + Success (pipeline step completed). public static void SystemSuccess(this IProgress host, string id, string text, object detail = null) Parameters host IProgress id string text string detail object SystemSuccessFmt(IProgress, string, FormattableString, object) Templated SystemSuccess(IProgress, string, string, object) — keeps format + args for localization. public static void SystemSuccessFmt(this IProgress host, string id, FormattableString text, object detail = null) Parameters host IProgress id string text FormattableString detail object SystemWarning(IProgress, string, string, object) Reports System + Warning (pipeline anomaly, processing continues). public static void SystemWarning(this IProgress host, string id, string text, object detail = null) Parameters host IProgress id string text string detail object SystemWarningFmt(IProgress, string, FormattableString, object) Templated SystemWarning(IProgress, string, string, object) — keeps format + args for localization. public static void SystemWarningFmt(this IProgress host, string id, FormattableString text, object detail = null) Parameters host IProgress id string text FormattableString detail object UnsupportedError(IProgress, string, string, object) Reports Unsupported + Error (recognized but unimplemented, likely matters). public static void UnsupportedError(this IProgress host, string id, string text, object detail = null) Parameters host IProgress id string text string detail object UnsupportedErrorFmt(IProgress, string, FormattableString, object) Templated UnsupportedError(IProgress, string, string, object) — keeps format + args for localization. public static void UnsupportedErrorFmt(this IProgress host, string id, FormattableString text, object detail = null) Parameters host IProgress id string text FormattableString detail object UnsupportedMessage(IProgress, string, string, object) Reports Unsupported + Message (recognized, intentionally not simulated). public static void UnsupportedMessage(this IProgress host, string id, string text, object detail = null) Parameters host IProgress id string text string detail object UnsupportedMessageFmt(IProgress, string, FormattableString, object) Templated UnsupportedMessage(IProgress, string, string, object) — keeps format + args for localization. public static void UnsupportedMessageFmt(this IProgress host, string id, FormattableString text, object detail = null) Parameters host IProgress id string text FormattableString detail object UnsupportedWarning(IProgress, string, string, object) Reports Unsupported + Warning (recognized but unimplemented, likely harmless). public static void UnsupportedWarning(this IProgress host, string id, string text, object detail = null) Parameters host IProgress id string text string detail object UnsupportedWarningFmt(IProgress, string, FormattableString, object) Templated UnsupportedWarning(IProgress, string, string, object) — keeps format + args for localization. public static void UnsupportedWarningFmt(this IProgress host, string id, FormattableString text, object detail = null) Parameters host IProgress id string text FormattableString detail object ValidationError(IProgress, string, string, object) Reports Validation + Error (manufacturing/physics is unfeasible). public static void ValidationError(this IProgress host, string id, string text, object detail = null) Parameters host IProgress id string text string detail object ValidationErrorFmt(IProgress, string, FormattableString, object) Templated ValidationError(IProgress, string, string, object) — keeps format + args for localization. public static void ValidationErrorFmt(this IProgress host, string id, FormattableString text, object detail = null) Parameters host IProgress id string text FormattableString detail object ValidationWarning(IProgress, string, string, object) Reports Validation + Warning (manufacturing/physics may be unfeasible). public static void ValidationWarning(this IProgress host, string id, string text, object detail = null) Parameters host IProgress id string text string detail object ValidationWarningFmt(IProgress, string, FormattableString, object) Templated ValidationWarning(IProgress, string, string, object) — keeps format + args for localization. public static void ValidationWarningFmt(this IProgress host, string id, FormattableString text, object detail = null) Parameters host IProgress id string text FormattableString detail object" }, - "api/Hi.Common.Messages.MultiTagMessageUtil.html": { - "href": "api/Hi.Common.Messages.MultiTagMessageUtil.html", - "title": "Class MultiTagMessageUtil | HiAPI-C# 2025", - "summary": "Class MultiTagMessageUtil Namespace Hi.Common.Messages Assembly HiGeom.dll Utility methods for working with IProgress implementations. public static class MultiTagMessageUtil Inheritance object MultiTagMessageUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ReportError(IProgress, string, params string[]) Adds an Error message to the message host. public static void ReportError(this IProgress host, string message, params string[] otherTags) Parameters host IProgress The message host message string The message content otherTags string[] Additional tags to associate with the message ReportException(IProgress, Exception, params string[]) Adds an Exception message to the message host. public static void ReportException(this IProgress host, Exception exception, params string[] otherTags) Parameters host IProgress The message host exception Exception The exception to log otherTags string[] Additional tags to associate with the message ReportInfo(IProgress, string, params string[]) Adds an Info message to the message host. public static void ReportInfo(this IProgress host, string message, params string[] otherTags) Parameters host IProgress The message host message string The message content otherTags string[] Additional tags to associate with the message ReportMessage(IProgress, string, params string[]) Adds a message with the specified tags to the message host. public static void ReportMessage(this IProgress host, string msg, params string[] tags) Parameters host IProgress The message host msg string The message content tags string[] The tags to associate with the message ReportProgress(IProgress, string, params string[]) Adds a Progress message to the message host. public static void ReportProgress(this IProgress host, string message, params string[] otherTags) Parameters host IProgress The message host message string The message content otherTags string[] Additional tags to associate with the message ReportSuccess(IProgress, string, params string[]) Adds a Success message to the message host. public static void ReportSuccess(this IProgress host, string message, params string[] otherTags) Parameters host IProgress The message host message string The message content otherTags string[] Additional tags to associate with the message ReportWarning(IProgress, string, params string[]) Adds a warning message to the message host. public static void ReportWarning(this IProgress host, string message, params string[] otherTags) Parameters host IProgress The message host message string The message content otherTags string[] Additional tags to associate with the message" + "api/Hi.Common.Messages.Severity.html": { + "href": "api/Hi.Common.Messages.Severity.html", + "title": "Enum Severity | HiAPI-C# 2025", + "summary": "Enum Severity Namespace Hi.Common.Messages Assembly HiGeom.dll Importance level of an IMessage. Combined with Category to form the full meaning (e.g. Validation + Warning). Promoted from the former NcDiagnosticSeverity so non-NC messages (simple notices, progress fractions) share a single scale. public enum Severity 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 Error = 4 Definite issue — result may be incorrect. Message = 0 Informational status. Progress = 2 Ongoing progress / fraction update. Success = 1 Completed successfully. Warning = 3 Potential issue — processing continues." }, "api/Hi.Common.Messages.ShowMessageBoardDelegate.html": { "href": "api/Hi.Common.Messages.ShowMessageBoardDelegate.html", "title": "Delegate ShowMessageBoardDelegate | HiAPI-C# 2025", "summary": "Delegate ShowMessageBoardDelegate Namespace Hi.Common.Messages Assembly HiGeom.dll Delegate for showing message board notifications. public delegate void ShowMessageBoardDelegate(string title, string message, BootstrapTheme bootstrapThemeColor) Parameters title string Title of the message message string Content of the message bootstrapThemeColor BootstrapTheme Theme color for the message 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.Messages.SimpleMessage.html": { + "href": "api/Hi.Common.Messages.SimpleMessage.html", + "title": "Class SimpleMessage | HiAPI-C# 2025", + "summary": "Class SimpleMessage Namespace Hi.Common.Messages Assembly HiGeom.dll A plain IMessage with no anchor: severity, category, id, notification text and optional detail. This is the default carrier for ad-hoc messages that have no other home. When step context is available, a step-anchored decorator wraps a SimpleMessage to add the StepIndex / SentenceCarrier without the producer needing to know it. public class SimpleMessage : IMessage Inheritance object SimpleMessage Implements IMessage 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 SimpleMessage(Severity, FormattableString, Category, string, object) Initializes a templated instance: the interpolated template and its values are kept on Format / Args and Notification becomes the culture-invariant English rendering. An interpolated string literal passed to the string constructor is NOT captured here — call sites opt in through the *Fmt helpers on MessageUtil. public SimpleMessage(Severity severity, FormattableString notification, Category category = Category.System, string id = null, object detail = null) Parameters severity Severity Importance level. notification FormattableString Interpolated notification template. category Category Classification; defaults to System. id string Optional structured id. detail object Optional detail payload or exception. SimpleMessage(Severity, string, Category, string, object) Initializes a new instance of the SimpleMessage class. public SimpleMessage(Severity severity, string notification, Category category = Category.System, string id = null, object detail = null) Parameters severity Severity Importance level. notification string End-user friendly notification text. category Category Classification; defaults to System. id string Optional structured id. detail object Optional detail payload or exception. Properties Args Gets the values interpolated into Format; null when untemplated. public object[] Args { get; } Property Value object[] Category Gets the classification. public Category Category { get; } Property Value Category Detail Gets the optional detail payload or exception; null when not applicable. public object Detail { get; } Property Value object Format Gets the composite-format template behind Notification; null when the message was built from a plain string (untemplated). public string Format { get; } Property Value string Id Gets the structured id for filtering / suppression; may be null. public string Id { get; } Property Value string Notification Gets the end-user friendly notification text. public string Notification { get; } Property Value string Severity Gets the importance level. public Severity Severity { get; } Property Value Severity Methods GetArgs() Gets the values interpolated into GetFormat(); null when GetFormat() is null, possibly empty for a hole-less template. Default interface method so external implementers are unaffected. public object[] GetArgs() Returns object[] The interpolation arguments, or null when untemplated. GetCategory() Gets the classification — see Category. public Category GetCategory() Returns Category The category of this message. GetDetail() Gets the optional detail payload or exception; null when not applicable. public object GetDetail() Returns object The detail object, or null. GetFormat() Gets the composite-format template behind GetNotification() — a {0}-style .NET format string — when this message was produced from an interpolated template; null when the notification has no structured template. Together with GetArgs() this lets a consumer re-render the message in another language without losing the interpolated live values, while GetNotification() stays the invariant English rendering. Default interface method so external implementers are unaffected. public string GetFormat() Returns string The composite format string, or null when untemplated. GetId() Gets the structured id used for filtering / suppression; may be null. public string GetId() Returns string The message id, or null when not applicable. GetNotification() Gets the end-user friendly notification text. public string GetNotification() Returns string The notification text. GetSeverity() Gets the importance level — see Severity. public Severity GetSeverity() Returns Severity The severity of this message. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + }, "api/Hi.Common.Messages.html": { "href": "api/Hi.Common.Messages.html", "title": "Namespace Hi.Common.Messages | HiAPI-C# 2025", - "summary": "Namespace Hi.Common.Messages Classes ActionProgress Lightweight IProgress that delegates to an Action. Unlike Progress, does not capture SynchronizationContext and invokes the handler synchronously on the caller's thread. DebugUtil Debug utility provides functions: pause process, count execution time and show the count. ExceptionUtil Provides utility methods for handling exceptions. MessageBoardUtil Utility class for displaying messages on a message board. MultiTagMessage Represents a message with multiple tags for categorization and filtering. MultiTagMessageUtil Utility methods for working with IProgress implementations. Enums BootstrapTheme Bootstrap theme colors for UI styling. MessageFlag Enumeration of common message types used for system notifications. Delegates ShowMessageBoardDelegate Delegate for showing message board notifications." + "summary": "Namespace Hi.Common.Messages Classes ActionProgress Lightweight IProgress that delegates to an Action. Unlike Progress, does not capture SynchronizationContext and invokes the handler synchronously on the caller's thread. DebugUtil Debug utility provides functions: pause process, count execution time and show the count. ExceptionUtil Provides utility methods for handling exceptions. MessageBoardUtil Utility class for displaying messages on a message board. MessageCollector A minimal IProgress of IMessage that buffers every reported message into Messages. Intended as a per-call / per-request sink: a caller injects it into a have-both function (one that takes an IProgress messageProgress), runs the operation, then reads the collected messages back — e.g. to return them in an HTTP response so a REST / AI caller sees progress, success, and error notifications inline. Unlike the session / strip sinks (SessionProgress, StepDiagnosticProgress) it fires no events and holds no session or pipeline state; it is cheap to create and discard for the lifetime of a single call. MessageUtil Extension helpers for reporting SimpleMessage records onto an IProgress of IMessage sink — the IMessage-channel counterpart of NcDiagnosticProgress's shorthand methods. Every helper is named {Category}{Severity} and is id-first; the structured id is used for filtering / suppression. All overloads are null-safe on host. Each helper has a {Category}{Severity}Fmt sibling taking a FormattableString: it keeps the interpolated template and values (Format / Args) so a client can re-render the message in another language, while the notification stays the invariant English rendering. The sibling must be opted into by name — an interpolated string literal passed to the string helper binds to string and is not captured. SimpleMessage A plain IMessage with no anchor: severity, category, id, notification text and optional detail. This is the default carrier for ad-hoc messages that have no other home. When step context is available, a step-anchored decorator wraps a SimpleMessage to add the StepIndex / SentenceCarrier without the producer needing to know it. Interfaces IMessage Common contract for a single reportable item on an IProgress channel — an NC diagnostic, a step-anchored notice, a simple message, or a progress fraction. Consumers (GUI / log) treat every kind uniformly through this view, while each concrete kind is still stored by its own owner (e.g. NcDiagnostic by NcDiagnosticProgress, ClStripPos by ClStrip) rather than being mixed into one shared collection. IProgressMessage Marker for an IMessage that is itself a container of messages (a batch produced over the course of some scoped work) rather than a single leaf notice. A sink may give it special treatment — unrolling its accumulated children, in order, instead of storing the composite object itself. Empty by design: the contract is purely the marker. The children are exposed by the concrete type (e.g. StepScopedProgress.MessageList) and drained at the point that owns the ordering guarantee, so a consumer that does not recognize IProgressMessage simply treats the composite as an opaque IMessage. Enums BootstrapTheme Bootstrap theme colors for UI styling. Category Classification of an IMessage — the “what kind of concern” axis, orthogonal to the Severity importance axis it pairs with. Applies to every IMessage on the channel (lifecycle / progress notices, configuration checks, NC-pipeline diagnostics, …), not only NC messages. MessageFlag Enumeration of common message types used for system notifications. Severity Importance level of an IMessage. Combined with Category to form the full meaning (e.g. Validation + Warning). Promoted from the former NcDiagnosticSeverity so non-NC messages (simple notices, progress fractions) share a single scale. Delegates ShowMessageBoardDelegate Delegate for showing message board notifications." }, "api/Hi.Common.MinMaxUtils.IndexedMinMaxPos-2.html": { "href": "api/Hi.Common.MinMaxUtils.IndexedMinMaxPos-2.html", @@ -812,7 +847,7 @@ "api/Hi.Common.NameUtil.html": { "href": "api/Hi.Common.NameUtil.html", "title": "Class NameUtil | HiAPI-C# 2025", - "summary": "Class NameUtil Namespace Hi.Common Assembly HiGeom.dll Utility class for handling object names and display names. public static class NameUtil Inheritance object NameUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields UnsetText Default text used when a name is not set. public const string UnsetText = \"Unset\" Field Value string Methods GetSelectionName(object) Gets the selection name for an object, using custom implementation if available, or falling back to type display name or type name. public static string GetSelectionName(this object src) Parameters src object The source object to get the name for Returns string The selection name for the object GetSelectionName(Type) Gets the selection name for a type, using its DisplayName attribute if available, or falling back to the type name. public static string GetSelectionName(this Type type) Parameters type Type The type to get the name for Returns string The selection name for the type" + "summary": "Class NameUtil Namespace Hi.Common Assembly HiGeom.dll Utility class for handling object names and display names. public static class NameUtil Inheritance object NameUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields UnsetText Default text used when a name is not set. public const string UnsetText = \"Unset\" Field Value string Methods GetSelectionName(object) Gets the selection name for an object, using custom implementation if available, or falling back to type display name or type name. public static string GetSelectionName(this object src) Parameters src object The source object to get the name for Returns string The selection name for the object GetSelectionName(Type) Gets the selection name for a type, using its DisplayName attribute if available, or falling back to the type name. public static string GetSelectionName(this Type type) Parameters type Type The type to get the name for Returns string The selection name for the type SpacePascalWords(string) Spaces a PascalCase member name into display words: an underscore suffix is dropped and a space is inserted before each capital that starts a new word, so MachiningResolution_mm becomes “Machining Resolution” and ReadOnFirstOrWrite becomes “Read On First Or Write”. Consecutive capitals stay one word. public static string SpacePascalWords(string name) Parameters name string The member name to space. Returns string The spaced display words." }, "api/Hi.Common.NativeProgresses.NativeProgressFraction.html": { "href": "api/Hi.Common.NativeProgresses.NativeProgressFraction.html", @@ -842,7 +877,7 @@ "api/Hi.Common.PacePlayer.html": { "href": "api/Hi.Common.PacePlayer.html", "title": "Class PacePlayer | HiAPI-C# 2025", - "summary": "Class PacePlayer Namespace Hi.Common Assembly HiGeom.dll Controls the pace execution of a task. public class PacePlayer : IDisposable Inheritance object PacePlayer Implements 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PacePlayer(ILogger) Initializes a new instance with the specified logger for exception reporting. public PacePlayer(ILogger logger) Parameters logger ILogger Logger used by the player to report exceptions raised during pace execution. Properties CancellationToken Gets the cancellation token for the running task. public CancellationToken CancellationToken { get; } Property Value CancellationToken IsFinished Is the process finished from Start(). public bool IsFinished { get; } Property Value bool IsLocked Is started but not finished. IsLocked keeps true even if Pause() is called. The property is true if a task started and the task has not yet finished. public bool IsLocked { get; } Property Value bool IsRunning Is running. Not paused either finished. The property is true if a task started and the task has not yet finished and Pause() is not called. public bool IsRunning { get; } Property Value bool Logger Logger for reporting exceptions during task execution. public ILogger Logger { get; } Property Value ILogger MainAction Gets or sets the main action to be executed by the player. public Action MainAction { get; set; } Property Value Action Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) Releases the unmanaged resources and optionally releases the managed resources. protected virtual void Dispose(bool disposing) Parameters disposing bool true to release both managed and unmanaged resources; false to release only unmanaged resources. Pause() Pauses the execution. public void Pause() Reset() Resets the player to its initial state. public void Reset() Resume() Resumes the execution if paused. public void Resume() RunToNextPace() Runs to the next pace point. public void RunToNextPace() Start() Starts the main action execution. public void Start() Terminate() Terminates the execution by cancelling the task. public void Terminate() Wait() Waits for the task to complete. public void Wait() Events IsFinishedChangedEvent Event triggered when the IsFinished state changes. public event Action IsFinishedChangedEvent Event Type Action IsLockedChangedEvent Event triggered when the lock state changes. public event Action IsLockedChangedEvent Event Type Action IsRunningChangedEvent Event triggered when the running state changes. public event Action IsRunningChangedEvent Event Type Action ResetedEvent Event triggered after the player has been reset. public event Action ResetedEvent Event Type Action" + "summary": "Class PacePlayer Namespace Hi.Common Assembly HiGeom.dll Controls the pace execution of a task. public class PacePlayer : IDisposable Inheritance object PacePlayer Implements 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors PacePlayer(ILogger) Initializes a new instance with the specified logger for exception reporting. public PacePlayer(ILogger logger) Parameters logger ILogger Logger used by the player to report exceptions raised during pace execution. Properties CancellationToken Gets the cancellation token for the running task. public CancellationToken CancellationToken { get; } Property Value CancellationToken IsFinished Is the process finished from Start(). public bool IsFinished { get; } Property Value bool IsLocked Is started but not finished. IsLocked keeps true even if Pause() is called. The property is true if a task started and the task has not yet finished. public bool IsLocked { get; } Property Value bool IsRunning Is running. Not paused either finished. The property is true if a task started and the task has not yet finished and Pause() is not called. public bool IsRunning { get; } Property Value bool Logger Logger for reporting exceptions during task execution. public ILogger Logger { get; } Property Value ILogger MainAction Gets or sets the main action to be executed by the player. public Action MainAction { get; set; } Property Value Action RunCount Monotonically increasing count of runs started by Start(), incremented synchronously before the run's task launches (never reset). Serves as the run identity for status pollers: pairing this with IsFinished in one snapshot lets a client distinguish “the run I started has finished” from a stale Finished left by a previous run. 0 until the first run starts. public long RunCount { get; } Property Value long Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) Releases the unmanaged resources and optionally releases the managed resources. protected virtual void Dispose(bool disposing) Parameters disposing bool true to release both managed and unmanaged resources; false to release only unmanaged resources. Pause() Pauses the execution. public void Pause() Reset() Resets the player to its initial state. public void Reset() Resume() Resumes the execution if paused. public void Resume() RunToNextPace() Runs to the next pace point. public void RunToNextPace() Start() Starts the main action execution. public void Start() Terminate() Terminates the execution by cancelling the task. public void Terminate() Wait() Waits for the task to complete. public void Wait() Events IsFinishedChangedEvent Event triggered when the IsFinished state changes. public event Action IsFinishedChangedEvent Event Type Action IsLockedChangedEvent Event triggered when the lock state changes. public event Action IsLockedChangedEvent Event Type Action IsRunningChangedEvent Event triggered when the running state changes. public event Action IsRunningChangedEvent Event Type Action ResetedEvent Event triggered after the player has been reset. public event Action ResetedEvent Event Type Action" }, "api/Hi.Common.Pair-2.html": { "href": "api/Hi.Common.Pair-2.html", @@ -852,7 +887,7 @@ "api/Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html": { "href": "api/Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html", "title": "Class ParallelBulkReader | HiAPI-C# 2025", - "summary": "Class ParallelBulkReader Namespace Hi.Common.ParallelBulkUtils Assembly HiGeom.dll Parallel bulk reader that provides efficient data access with caching capabilities. Manages reading data in parallel with forward and backward caching to optimize performance. public class ParallelBulkReader : IDisposable where TData : class Type Parameters TData The type of data to read. Inheritance object ParallelBulkReader Implements 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ParallelBulkReader(int, int, int, ReadBulkDelegate, Func, Func, Action) Initializes a new instance of the ParallelBulkReader class. public ParallelBulkReader(int cacheBackwardDistance, int cacheForwardDistance, int cacheQueueLimit, ReadBulkDelegate readBulkFunc, Func getIndexFunc, Func countFunc, Action exceptionAction = null) Parameters cacheBackwardDistance int The distance to cache backward from the current index. cacheForwardDistance int The distance to cache forward from the current index. cacheQueueLimit int The maximum number of cache entries to maintain in the queue. readBulkFunc ReadBulkDelegate The function used to read bulk data. getIndexFunc Func The function used to extract an index from a data item. countFunc Func The function that returns the total count of available data items. exceptionAction Action Optional action invoked when an exception occurs in cache operations. Properties GetIndexFunc Gets the function used to extract an index from a data item. public Func GetIndexFunc { get; } Property Value Func Methods ClearCache() Clears all cached data and disposes of all cache entries. public void ClearCache() Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) Releases the unmanaged resources used by the ParallelBulkReader and optionally releases the managed resources. protected virtual void Dispose(bool disposing) Parameters disposing bool true to release both managed and unmanaged resources; false to release only unmanaged resources. GetStep(int) Gets a data item at the specified step index, with automatic caching. public TData GetStep(int stepIndex) Parameters stepIndex int The index of the step to retrieve. Returns TData The data item at the specified index." + "summary": "Class ParallelBulkReader Namespace Hi.Common.ParallelBulkUtils Assembly HiGeom.dll Parallel bulk reader that provides efficient data access with caching capabilities. Manages reading data in parallel with forward and backward caching to optimize performance. public class ParallelBulkReader : IDisposable where TData : class Type Parameters TData The type of data to read. Inheritance object ParallelBulkReader Implements 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ParallelBulkReader(int, int, int, ReadBulkDelegate, Func, Action) Initializes a new instance of the ParallelBulkReader class. public ParallelBulkReader(int cacheBackwardDistance, int cacheForwardDistance, int cacheQueueLimit, ReadBulkDelegate readBulkFunc, Func getIndexFunc, Action exceptionAction = null) Parameters cacheBackwardDistance int The distance to cache backward from the current index. cacheForwardDistance int The distance to cache forward from the current index. cacheQueueLimit int The maximum number of cache entries to maintain in the queue. readBulkFunc ReadBulkDelegate The function used to read bulk data. getIndexFunc Func The function used to extract an index from a data item. exceptionAction Action Optional action invoked when an exception occurs in cache operations. Properties GetIndexFunc Gets the function used to extract an index from a data item. public Func GetIndexFunc { get; } Property Value Func Methods ClearCache() Clears all cached data and disposes of all cache entries. public void ClearCache() Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) Releases the unmanaged resources used by the ParallelBulkReader and optionally releases the managed resources. protected virtual void Dispose(bool disposing) Parameters disposing bool true to release both managed and unmanaged resources; false to release only unmanaged resources. GetStep(int) Gets a data item at the specified step index, with automatic caching. public TData GetStep(int stepIndex) Parameters stepIndex int The index of the step to retrieve. Returns TData The data item at the specified index." }, "api/Hi.Common.ParallelBulkUtils.ParallelBulkWriter-1.html": { "href": "api/Hi.Common.ParallelBulkUtils.ParallelBulkWriter-1.html", @@ -867,7 +902,7 @@ "api/Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html": { "href": "api/Hi.Common.ParallelBulkUtils.SequentialBulkReader-1.html", "title": "Class SequentialBulkReader | HiAPI-C# 2025", - "summary": "Class SequentialBulkReader Namespace Hi.Common.ParallelBulkUtils Assembly HiGeom.dll Sequential bulk reader that provides efficient data access with caching capabilities. Unlike ParallelBulkReader, this reader processes data sequentially. public class SequentialBulkReader where TData : class Type Parameters TData The type of data to read. Inheritance object SequentialBulkReader 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 SequentialBulkReader(int, int, ReadBulkDelegate, Func, Func) Initializes a new instance of the SequentialBulkReader class. public SequentialBulkReader(int bulkListSize, int bulkSize, ReadBulkDelegate readBulkFunc, Func getIndexFunc, Func countFunc) Parameters bulkListSize int The number of bulk lists to maintain in the cache. bulkSize int The size of each bulk. readBulkFunc ReadBulkDelegate The function used to read bulk data. getIndexFunc Func The function used to extract an index from a data item. countFunc Func The function that returns the total count of available data items. Properties CountFunc Gets the function that returns the total count of available data items. public Func CountFunc { get; } Property Value Func GetIndexFunc Gets the function used to extract an index from a data item. public Func GetIndexFunc { get; } Property Value Func Methods ClearCache() Clears all cached data. public void ClearCache() GetStep(int) Gets a data item at the specified step index, with automatic caching. public TData GetStep(int stepIndex) Parameters stepIndex int The index of the step to retrieve. Returns TData The data item at the specified index." + "summary": "Class SequentialBulkReader Namespace Hi.Common.ParallelBulkUtils Assembly HiGeom.dll Sequential bulk reader that provides efficient data access with caching capabilities. Unlike ParallelBulkReader, this reader processes data sequentially. public class SequentialBulkReader where TData : class Type Parameters TData The type of data to read. Inheritance object SequentialBulkReader 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 SequentialBulkReader(int, int, ReadBulkDelegate, Func) Initializes a new instance of the SequentialBulkReader class. public SequentialBulkReader(int bulkListSize, int bulkSize, ReadBulkDelegate readBulkFunc, Func getIndexFunc) Parameters bulkListSize int The number of bulk lists to maintain in the cache. bulkSize int The size of each bulk. readBulkFunc ReadBulkDelegate The function used to read bulk data. getIndexFunc Func The function used to extract an index from a data item. Properties GetIndexFunc Gets the function used to extract an index from a data item. public Func GetIndexFunc { get; } Property Value Func Methods ClearCache() Clears all cached data. public void ClearCache() GetStep(int) Gets a data item at the specified step index, with automatic caching. public TData GetStep(int stepIndex) Parameters stepIndex int The index of the step to retrieve. Returns TData The data item at the specified index." }, "api/Hi.Common.ParallelBulkUtils.html": { "href": "api/Hi.Common.ParallelBulkUtils.html", @@ -907,7 +942,7 @@ "api/Hi.Common.ProgressFraction.html": { "href": "api/Hi.Common.ProgressFraction.html", "title": "Class ProgressFraction | HiAPI-C# 2025", - "summary": "Class ProgressFraction Namespace Hi.Common Assembly HiDisp.dll Represents a progress report implementation. public class ProgressFraction : IProgressFraction Inheritance object ProgressFraction Implements IProgressFraction 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 ProgressFraction(NativeProgressFraction) Initializes a new instance of the ProgressFraction class from a native progress report. public ProgressFraction(NativeProgressFraction src) Parameters src NativeProgressFraction The native progress report source. Properties Denominator Gets or sets the denominator value for progress calculation. public int Denominator { get; set; } Property Value int Detail Gets or sets the detailed information about the progress. public string Detail { get; set; } Property Value string Msg Gets or sets the message string. public string Msg { get; set; } Property Value string Numerator Gets or sets the numerator value for progress calculation. public int Numerator { get; set; } Property Value int Methods GetDenominator() Gets the denominator value for progress calculation. public int GetDenominator() Returns int The denominator value. GetDetail() Gets the detailed information about the progress. public string GetDetail() Returns string The detail string. GetMsg() Get message. public string GetMsg() Returns string The message string. GetNumerator() Gets the numerator value for progress calculation. public int GetNumerator() Returns int The numerator value." + "summary": "Class ProgressFraction Namespace Hi.Common Assembly HiDisp.dll Represents a progress report implementation. Also exposes an IMessage view (explicitly implemented) so a progress fraction can ride the unified message channel uniformly alongside SimpleMessage / NcDiagnostic: Progress + System, with Msg as the notification and Detail as the detail payload. public class ProgressFraction : IProgressFraction, IMessage Inheritance object ProgressFraction Implements IProgressFraction IMessage 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 ProgressFraction(NativeProgressFraction) Initializes a new instance of the ProgressFraction class from a native progress report. public ProgressFraction(NativeProgressFraction src) Parameters src NativeProgressFraction The native progress report source. Properties Denominator Gets or sets the denominator value for progress calculation. public int Denominator { get; set; } Property Value int Detail Gets or sets the detailed information about the progress. public string Detail { get; set; } Property Value string Msg Gets or sets the message string. public string Msg { get; set; } Property Value string Numerator Gets or sets the numerator value for progress calculation. public int Numerator { get; set; } Property Value int Methods GetDenominator() Gets the denominator value for progress calculation. public int GetDenominator() Returns int The denominator value. GetDetail() Gets the detailed information about the progress. public string GetDetail() Returns string The detail string. GetMsg() Get message. public string GetMsg() Returns string The message string. GetNumerator() Gets the numerator value for progress calculation. public int GetNumerator() Returns int The numerator value." }, "api/Hi.Common.QueueCacheUtils.QueueCacher-1.html": { "href": "api/Hi.Common.QueueCacheUtils.QueueCacher-1.html", @@ -929,10 +964,20 @@ "title": "Class Range | HiAPI-C# 2025", "summary": "Class Range Namespace Hi.Common Assembly HiGeom.dll Range from Min to Max. public class Range : IEquatable> Type Parameters T Any Type Inheritance object Range Implements IEquatable> Inherited Members object.Equals(object, object) 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 Range() Initializes a new instance of the Range class. public Range() Range(T, T) Initializes a new instance of the Range class with specified minimum and maximum values. public Range(T min, T max) Parameters min T The minimum value max T The maximum value Fields max Max. public T max Field Value T min Min. public T min Field Value T Properties Max Property form of max. public T Max { get; set; } Property Value T Min Property form of min. public T Min { get; set; } Property Value T ReversePole Gets a range with reversed poles (positive infinity to negative infinity). public static Range ReversePole { get; } Property Value Range Methods AtIter(int) Get element by iteration index. public T AtIter(int iter) Parameters iter int iteration index Returns T ref element AtIterRef(int) Get element by iteration index. public ref T AtIterRef(int iter) Parameters iter int iteration index Returns T ref element Equals(Range) Indicates whether the current object is equal to another object of the same type. public bool Equals(Range other) Parameters other Range An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. Expand(Range, double) Expands the range to include the specified value if necessary. public static void Expand(Range range, double v) Parameters range Range The range to expand v double The value to include in the range GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, + "api/Hi.Common.ResourceDefaultMarker.html": { + "href": "api/Hi.Common.ResourceDefaultMarker.html", + "title": "Class ResourceDefaultMarker | HiAPI-C# 2025", + "summary": "Class ResourceDefaultMarker Namespace Hi.Common Assembly HiGeom.dll File-name convention that marks a shipped resource item as a system-owned default: a file carries the token before its final extension (AlTiBN.default.CoatingMaterial), a folder-shaped resource carries it as a folder-name suffix (MachineTool/Table-B1.default/) with the files inside left untouched. public static class ResourceDefaultMarker Inheritance object ResourceDefaultMarker Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks Marked means system territory — the resource seeder may overwrite the item on version updates and delete marked items that are no longer shipped. Unmarked items belong to the user and are never touched. The marker is a declaration, not an enforcement: user edits to a marked file survive until the next shipped-version change overwrites them. Fields Token The marker token. Files embed it before the final extension; folders end with it. public const string Token = \".default\" Field Value string Methods IsMarkedFileName(string) Whether fileName carries the marker (contains .default.). public static bool IsMarkedFileName(string fileName) Parameters fileName string File name without directory. Returns bool IsMarkedFolderName(string) Whether folderName carries the marker (ends with .default). public static bool IsMarkedFolderName(string folderName) Parameters folderName string Folder name without directory. Returns bool StripFileName(string) Removes the marker from a marked file name (X.default.mp → X.mp); an unmarked name passes through. public static string StripFileName(string fileName) Parameters fileName string File name without directory. Returns string StripFolderName(string) Removes the marker from a marked folder name (CT-350.default → CT-350); an unmarked name passes through. public static string StripFolderName(string folderName) Parameters folderName string Folder name without directory. Returns string" + }, + "api/Hi.Common.ResourceLayout.html": { + "href": "api/Hi.Common.ResourceLayout.html", + "title": "Class ResourceLayout | HiAPI-C# 2025", + "summary": "Class ResourceLayout Namespace Hi.Common Assembly HiNc.dll Provides the relative folder paths that make up the shipped resource tree. public static class ResourceLayout Inheritance object ResourceLayout Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields CoatingMaterialFolder Gets the path to the coating material resource folder. public const string CoatingMaterialFolder = \"Resource/CoatingMaterial\" Field Value string ControllerFolder Gets the path to the CNC controller resource folder, holding the brand SoftNcRunner presets written by ControllerPresetWriter. public const string ControllerFolder = \"Resource/Controller\" Field Value string CutterFolder Gets the path to the cutter resource folder. public const string CutterFolder = \"Resource/Cutter\" Field Value string CuttingParameterFolder Gets the path to the cutting parameter resource folder. public const string CuttingParameterFolder = \"Resource/CuttingParameter\" Field Value string HolderFolder Gets the path to the holder resource folder. public const string HolderFolder = \"Resource/Holder\" Field Value string MachineToolFolder Gets the path to the machine tool resource folder. public const string MachineToolFolder = \"Resource/MachineTool\" Field Value string ResourceFolder Gets the path to the main resource folder. public const string ResourceFolder = \"Resource\" Field Value string SpindleCapabilityFolder Gets the path to the spindle capability resource folder. public const string SpindleCapabilityFolder = \"Resource/SpindleCapability\" Field Value string StructureMaterialFolder Gets the path to the structure material resource folder. public const string StructureMaterialFolder = \"Resource/StructureMaterial\" Field Value string WorkpieceMaterialFolder Gets the path to the workpiece material resource folder. public const string WorkpieceMaterialFolder = \"Resource/WorkpieceMaterial\" Field Value string" + }, "api/Hi.Common.ResourceUtil.html": { "href": "api/Hi.Common.ResourceUtil.html", "title": "Class ResourceUtil | HiAPI-C# 2025", - "summary": "Class ResourceUtil Namespace Hi.Common Assembly HiGeom.dll Utility class for working with resource managers and localized strings. public static class ResourceUtil Inheritance object ResourceUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields CoatingMaterialFolder Gets the path to the coating material resource folder. public const string CoatingMaterialFolder = \"Resource/CoatingMaterial\" Field Value string CutterFolder Gets the path to the cutter resource folder. public const string CutterFolder = \"Resource/Cutter\" Field Value string CuttingParameterFolder Gets the path to the cutting parameter resource folder. public const string CuttingParameterFolder = \"Resource/CuttingParameter\" Field Value string HolderFolder Gets the path to the holder resource folder. public const string HolderFolder = \"Resource/Holder\" Field Value string MachineToolFolder Gets the path to the machine tool resource folder. public const string MachineToolFolder = \"Resource/MachineTool\" Field Value string ResourceFolder Gets the path to the main resource folder. public const string ResourceFolder = \"Resource\" Field Value string SpindleCapabilityFolder Gets the path to the spindle capability resource folder. public const string SpindleCapabilityFolder = \"Resource/SpindleCapability\" Field Value string StructureMaterialFolder Gets the path to the structure material resource folder. public const string StructureMaterialFolder = \"Resource/StructureMaterial\" Field Value string WorkpieceMaterialFolder Gets the path to the workpiece material resource folder. public const string WorkpieceMaterialFolder = \"Resource/WorkpieceMaterial\" Field Value string Methods GetStringOrDefault(ResourceManager, string) get string by the name as key from resourceManager The default value is the name itself. public static string GetStringOrDefault(this ResourceManager resourceManager, string name) Parameters resourceManager ResourceManager name string Returns string GetStringOrDefault(ResourceManager, string, CultureInfo) get string by the name as key from resourceManager The default value is the name itself. public static string GetStringOrDefault(this ResourceManager resourceManager, string name, CultureInfo cultureInfo) Parameters resourceManager ResourceManager name string cultureInfo CultureInfo Returns string" + "summary": "Class ResourceUtil Namespace Hi.Common Assembly HiGeom.dll Utility class for working with resource managers and localized strings, and the home of the attribute-declared command vocabulary: the CultureTextAttribute declarations of an assembly, exposed as “type/member + culture → text” queries and as ICommandTextSource instances, with GUI-layer overrides layered on top (SetTextOverride(string, string, string)). public static class ResourceUtil Inheritance object ResourceUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GenTextSource(CultureInfo, params Type[]) Generates an ICommandTextSource carrying culture, resolving keys against the CultureTextAttribute declarations of the vocabTypes' assemblies plus the registered overrides — the engine-default localizer a caller injects into title-composing commands. public static ICommandTextSource GenTextSource(CultureInfo culture, params Type[] vocabTypes) Parameters culture CultureInfo Culture the source carries; null takes the current UI culture. vocabTypes Type[] Types anchoring the assemblies whose declarations feed the source. Returns ICommandTextSource The text source. GetStringOrDefault(ResourceManager, string) get string by the name as key from resourceManager The default value is the name itself. public static string GetStringOrDefault(this ResourceManager resourceManager, string name) Parameters resourceManager ResourceManager name string Returns string GetStringOrDefault(ResourceManager, string, CultureInfo) get string by the name as key from resourceManager The default value is the name itself. public static string GetStringOrDefault(this ResourceManager resourceManager, string name, CultureInfo cultureInfo) Parameters resourceManager ResourceManager name string cultureInfo CultureInfo Returns string GetText(MemberInfo, CultureInfo) The text of member's vocabulary key in culture — the “type/member + culture → text” query. Resolution walks the culture's parent chain; on each level a registered override (SetTextOverride(string, string, string)) outranks the member assembly's CultureTextAttribute declaration. With no match the key itself — the English default — is returned. public static string GetText(MemberInfo member, CultureInfo culture) Parameters member MemberInfo The type or member owning the vocabulary key. culture CultureInfo Wanted culture; null takes the current UI culture. Returns string The culture's text, or the key itself. SetTextOverride(string, string, string) Registers a GUI-layer text for a vocabulary key in one culture. An override outranks the assembly's own CultureTextAttribute declaration in that culture, and may add a culture the assembly never declared. Process-level; typically called once at GUI startup. public static void SetTextOverride(string cultureName, string key, string text) Parameters cultureName string Culture name the text is written in (e.g. zh-Hant). key string Vocabulary key — the English default text. text string The overriding text; null removes the override." }, "api/Hi.Common.RoutineBlocker.html": { "href": "api/Hi.Common.RoutineBlocker.html", @@ -997,7 +1042,7 @@ "api/Hi.Common.XmlUtils.ProjectApiVersion.html": { "href": "api/Hi.Common.XmlUtils.ProjectApiVersion.html", "title": "Class ProjectApiVersion | HiAPI-C# 2025", - "summary": "Class ProjectApiVersion Namespace Hi.Common.XmlUtils Assembly HiGeom.dll 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(). public class ProjectApiVersion Inheritance object ProjectApiVersion 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 ProjectApiVersion(Version) Initializes a new instance carrying the specified version. public ProjectApiVersion(Version version) Parameters version Version API version read from the project XML; may be null when the source file did not record a version. Properties Version API version stamped on the source project file at save time. public Version Version { get; } Property Value Version Methods IsOlderThan(Version) Returns true if the source file was saved by an API version older than version. Returns false when the source version is unknown (null). public bool IsOlderThan(Version version) Parameters version Version Returns bool" + "summary": "Class ProjectApiVersion Namespace Hi.Common.XmlUtils Assembly HiGeom.dll 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(). public class ProjectApiVersion Inheritance object ProjectApiVersion 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 ProjectApiVersion(Version) Initializes a new instance carrying the specified version. public ProjectApiVersion(Version version) Parameters version Version API version read from the project XML; may be null when the source file did not record a version. Properties Version API version stamped on the source project file at save time. public Version Version { get; } Property Value Version Methods IsOlderThan(Version) Returns true if the source file was saved by an API version older than version. Returns false when the source version is unknown (null) — without the explicit guard, Version's comparison operator ranks a null left operand as OLDEST and every legacy patch would fire on an unversioned file, contradicting this contract that version-gated upgrades rely on. public bool IsOlderThan(Version version) Parameters version Version Returns bool" }, "api/Hi.Common.XmlUtils.SetFileDelegate.html": { "href": "api/Hi.Common.XmlUtils.SetFileDelegate.html", @@ -1007,7 +1052,7 @@ "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 an object from an XML element with relative file path context. 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 Separating baseDirectory and relFile keeps data packages relocatable: moving the whole base directory only requires updating the directory string, not every internal path." + "summary": "Delegate XFactory.XGeneratorDelegate Namespace Hi.Common.XmlUtils Assembly HiGeom.dll Delegate for generating an object from an XML element with relative file path context. 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 Separating baseDirectory and relFile keeps data packages relocatable: moving the whole base directory only requires updating the directory string, not every internal path." }, "api/Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html": { "href": "api/Hi.Common.XmlUtils.XFactory.XmlExceptionDelegate.html", @@ -1017,12 +1062,12 @@ "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 for generating objects from XML elements using registered generator functions. public 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() 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 Each XFactory instance owns its own Generators registry. A process-wide Default singleton serves the common case (single shared factory across the simulation pipeline); other instances can be created for test isolation or parallel pipelines that need disjoint registries. Types that participate in XML round-trip expose a public static void Reg(XFactory factory = null) method that adds themselves (and chains Reg(factory) on dependents) to the given factory's Generators. Boot roots (e.g. LocalProjectService.Reg()) call the top-level Reg() once at startup with the default factory. The static Gen / GenByChild / GenByFile entry points always read from Default. Callers that need to deserialize from a custom factory's registry must look up the delegate via factory.Generators[xname] directly. Properties Default Process-wide default factory used by the static Gen family. Reg-style methods register here when called with no explicit factory argument. public static XFactory Default { get; } Property Value XFactory Generators XML-name → generator-function map for this factory instance. Populated by each type's Reg(this) call. public Dictionary Generators { get; } Property Value Dictionary Methods GenByChild(XElement, string, IProgress, bool, object[]) Generates an object of type T from the first child element (discards relative file path). 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 baseDirectory string relFile string progress IProgress enableRebase bool res object[] Returns T Type Parameters T 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 relFile string progress IProgress enableRebase bool res object[] Returns T Type Parameters T GenFileRefSourceByChild(XElement, string, IProgress, bool, object[]) Generates a FileRefSource from the first child 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 GenListSkippingUnloadable(IEnumerable, string, IProgress, bool, object[]) Deserializes each element of elements into a T, skipping — instead of throwing on — any element whose XName is not registered (e.g. a renamed or removed component) or whose generator throws. Each skipped element is reported to progress as a Warning. Use when a partially-loadable list (such as a saved pipeline whose schema has drifted while a feature is in development) is preferable to aborting the whole load. public static List GenListSkippingUnloadable(IEnumerable elements, string baseDirectory, IProgress progress, bool enableRebase = true, object[] res = null) where T : class Parameters elements IEnumerable baseDirectory string progress IProgress enableRebase bool res object[] Returns List Type Parameters T Gen(XElement, string, IProgress, bool, object[]) Generates an object of type T from an XML element (discards relative file path). public static T Gen(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 Gen(XElement, string, out string, IProgress, bool, object[]) Generates an object of type T from an XML element using Default. 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 baseDirectory string relFile string progress IProgress enableRebase bool res object[] Returns T Type Parameters T" + "summary": "Class XFactory Namespace Hi.Common.XmlUtils Assembly HiGeom.dll Factory for generating objects from XML elements using registered generator functions. public 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() 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 Each XFactory instance owns its own Generators registry. A process-wide Default singleton serves the common case (single shared factory across the simulation pipeline); other instances can be created for test isolation or parallel pipelines that need disjoint registries. Types that participate in XML round-trip expose a public static void Reg(XFactory factory = null) method that adds themselves (and chains Reg(factory) on dependents) to the given factory's Generators. Boot roots (e.g. LocalProjectService.Reg()) call the top-level Reg() once at startup with the default factory. The static Gen / GenByChild / GenByFile entry points always read from Default. Callers that need to deserialize from a custom factory's registry must look up the delegate via factory.Generators[xname] directly. Properties Default Process-wide default factory used by the static Gen family. Reg-style methods register here when called with no explicit factory argument. public static XFactory Default { get; } Property Value XFactory Generators XML-name → generator-function map for this factory instance. Populated by each type's Reg(this) call. Concurrent so that parallel Reg calls (e.g. independent test classes each booting the registration graph) can TryAdd without corrupting the map. public ConcurrentDictionary Generators { get; } Property Value ConcurrentDictionary Methods GenByChild(XElement, string, IProgress, bool, object[]) Generates an object of type T from the first child element (discards relative file path). 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 baseDirectory string relFile string progress IProgress enableRebase bool res object[] Returns T Type Parameters T 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 relFile string progress IProgress enableRebase bool res object[] Returns T Type Parameters T GenFileRefSourceByChild(XElement, string, IProgress, bool, object[]) Generates a FileRefSource from the first child 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 GenListSkippingUnloadable(IEnumerable, string, IProgress, bool, object[]) Deserializes each element of elements into a T, skipping — instead of throwing on — any element whose XName is not registered (e.g. a renamed or removed component) or whose generator throws. Each skipped element is reported to progress as a Warning. Use when a partially-loadable list (such as a saved pipeline whose schema has drifted while a feature is in development) is preferable to aborting the whole load. public static List GenListSkippingUnloadable(IEnumerable elements, string baseDirectory, IProgress progress, bool enableRebase = true, object[] res = null) where T : class Parameters elements IEnumerable baseDirectory string progress IProgress enableRebase bool res object[] Returns List Type Parameters T Gen(XElement, string, IProgress, bool, object[]) Generates an object of type T from an XML element (discards relative file path). public static T Gen(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 Gen(XElement, string, out string, IProgress, bool, object[]) Generates an object of type T from an XML element using Default. 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 baseDirectory string relFile string progress IProgress enableRebase bool res object[] Returns T Type Parameters T" }, "api/Hi.Common.XmlUtils.XmlUtil.html": { "href": "api/Hi.Common.XmlUtils.XmlUtil.html", "title": "Class XmlUtil | HiAPI-C# 2025", - "summary": "Class XmlUtil Namespace Hi.Common.XmlUtils Assembly HiGeom.dll Utility for managing XML. public static class XmlUtil Inheritance object XmlUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields SelfHostName Constant representing self-hosted XML content. Used for legacy compatibility. public const string SelfHostName = \"SelfHost\" Field Value string XmlFileXName The XML element name used for file references. public const string XmlFileXName = \"XmlSource\" Field Value string Methods GetDictionaryByXmlSource(XElement, string, IProgress, bool) Deserializes a dictionary of objects from an XML element. public static Dictionary GetDictionaryByXmlSource(this XElement src, string baseDirectory, IProgress progress, bool enableRebase = true) where T : class Parameters src XElement The source XML element containing the serialized dictionary baseDirectory string The base directory for resolving paths progress IProgress Optional progress reporter for the XML parsing chain enableRebase bool Whether to rebase the directory to the file's location Returns Dictionary A dictionary containing the deserialized objects Type Parameters T The type of objects to deserialize into the dictionary GetFirstChildElement(XElement) Gets the first child element of the source XElement. public static XElement GetFirstChildElement(this XElement src) Parameters src XElement The source XElement Returns XElement The first child element, or null if no children exist GetNameNoteXElementList(INameNote) Creates a list of XML elements representing the name and note properties of an INameNote object. public static List GetNameNoteXElementList(this INameNote src) Parameters src INameNote The source INameNote object Returns List A list of XML elements containing the name and note GetOrDefault(XElement, string, T) If xpath exist, return value by xpath ; Otherwise, return defaultValue. The xpath must indicates solely one XElement. public static T GetOrDefault(this XElement src, string xpath, T defaultValue) where T : IConvertible Parameters src XElement local root element xpath string xpath defaultValue T default value Returns T If xpath exist, return value by xpath ; Otherwise, return defaultValue. Type Parameters T type of defaultValue LoadFromFileRef(XElement, string, out string) Unwraps a file reference XML element to load its actual content. public static XElement LoadFromFileRef(this XElement src, string baseDirectory, out string relFile) Parameters src XElement The source XML element that may be a file reference 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 Returns XElement If src is a file reference element, returns the XML content loaded from the referenced file; otherwise, returns the original element LoadWithFileRefSupport(XElement, string, SetFileDelegate) Unwraps an XML element if it contains a file reference element. public static XElement LoadWithFileRefSupport(this XElement src, string baseDirectory, SetFileDelegate setFileAction) Parameters src XElement The source XML element that may contain a file reference baseDirectory string The base directory for resolving paths setFileAction SetFileDelegate Action to execute with the file path, or null if no file reference is found Returns XElement If the source element contains a file reference, returns the XML content loaded from the referenced file; otherwise, returns the original element MakeXmlSourceToFile(IMakeXmlSource, string, bool) Creates an XML source file from the provided source at the specified file path. public static void MakeXmlSourceToFile(this IMakeXmlSource src, string filePath, bool exhibitionOnly = false) Parameters src IMakeXmlSource The source that implements IMakeXmlSource interface. filePath string The path where the XML file will be created. exhibitionOnly bool See MakeXmlSource(string, string, bool) for parameter description. MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) Creates an XML representation of an object and optionally saves it to a file with path rebasing. public static XElement MakeXmlSourceToFileRef(this IMakeXmlSource src, string baseDirectory, string relFile, bool exhibitionOnly) Parameters src IMakeXmlSource The source object to serialize baseDirectory string The base directory for resolving paths relFile string The relative file path to save the XML to, or null to not save to a file exhibitionOnly bool See MakeXmlSource(string, string, bool) for parameter description. Returns XElement If relFile is null or empty, returns the XML representation of the object; otherwise, saves the XML to the specified file and returns a file reference element MakeXmlSource(IDictionary, string, bool) Creates an XML representation of a dictionary of XML-serializable objects. public static XElement MakeXmlSource(this IDictionary dictionary, string baseDirectory, bool exhibitionOnly) where T : IMakeXmlSource Parameters dictionary IDictionary The dictionary to serialize baseDirectory string The base directory for resolving paths exhibitionOnly bool See MakeXmlSource(string, string, bool) for parameter description. Returns XElement An XML element containing the serialized dictionary Type Parameters T The type of objects in the dictionary, must implement IMakeXmlSource SaveToByteArrayAsync(IMakeXmlSource, string) Asynchronously saves an XML source to a byte array. public static Task SaveToByteArrayAsync(this IMakeXmlSource src, string baseDirectory) Parameters src IMakeXmlSource The XML source to save baseDirectory string The base directory for resolving paths Returns Task A byte array containing the serialized XML data SaveToFileRef(XElement, string, string, bool) Wraps an XML element in a file reference element or returns it as-is. public static XElement SaveToFileRef(this XElement src, string baseDirectory, string sourceFile, bool exhibitionOnly) Parameters src XElement The source XML element to wrap baseDirectory string The base directory for resolving paths sourceFile string The relative file path to save the element to, or null to return the element as-is exhibitionOnly bool See MakeXmlSource(string, string, bool) for parameter description. Returns XElement If sourceFile is null, returns the original element; otherwise, saves the element to the specified file and returns a file reference element SetNameNote(INameNote, XElement) Sets the name and note properties of an INameNote object from an XML element. public static void SetNameNote(this INameNote dst, XElement src) Parameters dst INameNote The destination INameNote object to update src XElement The source XML element containing the name and note values SetOrGenerate(XElement, string, T, string) Sets a value at the specified XPath, creating the path if it doesn't exist. public static void SetOrGenerate(this XElement src, string xpath, T value, string comment = null) where T : IConvertible Parameters src XElement The source XElement xpath string The XPath to set the value at value T The value to set comment string Optional comment to add above the element Type Parameters T The type of value to set" + "summary": "Class XmlUtil Namespace Hi.Common.XmlUtils Assembly HiGeom.dll Utility for managing XML. public static class XmlUtil Inheritance object XmlUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields SelfHostName Constant representing self-hosted XML content. Used for legacy compatibility. public const string SelfHostName = \"SelfHost\" Field Value string XmlFileXName The XML element name used for file references. public const string XmlFileXName = \"XmlSource\" Field Value string Methods GetDictionaryByXmlSource(XElement, string, IProgress, bool) Deserializes a dictionary of objects from an XML element. public static Dictionary GetDictionaryByXmlSource(this XElement src, string baseDirectory, IProgress progress, bool enableRebase = true) where T : class Parameters src XElement The source XML element containing the serialized dictionary baseDirectory string The base directory for resolving paths progress IProgress Optional progress reporter for the XML parsing chain enableRebase bool Whether to rebase the directory to the file's location Returns Dictionary A dictionary containing the deserialized objects Type Parameters T The type of objects to deserialize into the dictionary GetFirstChildElement(XElement) Gets the first child element of the source XElement. public static XElement GetFirstChildElement(this XElement src) Parameters src XElement The source XElement Returns XElement The first child element, or null if no children exist GetNameNoteXElementList(INameNote) Creates a list of XML elements representing the name and note properties of an INameNote object. public static List GetNameNoteXElementList(this INameNote src) Parameters src INameNote The source INameNote object Returns List A list of XML elements containing the name and note GetOrDefault(XElement, string, T) If xpath exist, return value by xpath ; Otherwise, return defaultValue. The xpath must indicates solely one XElement. public static T GetOrDefault(this XElement src, string xpath, T defaultValue) where T : IConvertible Parameters src XElement local root element xpath string xpath defaultValue T default value Returns T If xpath exist, return value by xpath ; Otherwise, return defaultValue. Type Parameters T type of defaultValue LoadFromFileRef(XElement, string, out string) Unwraps a file reference XML element to load its actual content. public static XElement LoadFromFileRef(this XElement src, string baseDirectory, out string relFile) Parameters src XElement The source XML element that may be a file reference 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 Returns XElement If src is a file reference element, returns the XML content loaded from the referenced file; otherwise, returns the original element LoadWithFileRefSupport(XElement, string, SetFileDelegate) Unwraps an XML element if it contains a file reference element. public static XElement LoadWithFileRefSupport(this XElement src, string baseDirectory, SetFileDelegate setFileAction) Parameters src XElement The source XML element that may contain a file reference baseDirectory string The base directory for resolving paths setFileAction SetFileDelegate Action to execute with the file path, or null if no file reference is found Returns XElement If the source element contains a file reference, returns the XML content loaded from the referenced file; otherwise, returns the original element MakeXmlSourceToFile(IMakeXmlSource, string, bool) Creates an XML source file from the provided source at the specified file path. public static void MakeXmlSourceToFile(this IMakeXmlSource src, string filePath, bool exhibitionOnly = false) Parameters src IMakeXmlSource The source that implements IMakeXmlSource interface. filePath string The path where the XML file will be created. exhibitionOnly bool See MakeXmlSource(string, string, bool) for parameter description. MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) Creates an XML representation of an object and optionally saves it to a file with path rebasing. public static XElement MakeXmlSourceToFileRef(this IMakeXmlSource src, string baseDirectory, string relFile, bool exhibitionOnly) Parameters src IMakeXmlSource The source object to serialize baseDirectory string The base directory for resolving paths relFile string The relative file path to save the XML to, or null to not save to a file exhibitionOnly bool See MakeXmlSource(string, string, bool) for parameter description. Returns XElement If relFile is null or empty, returns the XML representation of the object; otherwise, saves the XML to the specified file and returns a file reference element MakeXmlSource(IDictionary, string, bool) Creates an XML representation of a dictionary of XML-serializable objects. public static XElement MakeXmlSource(this IDictionary dictionary, string baseDirectory, bool exhibitionOnly) where T : IMakeXmlSource Parameters dictionary IDictionary The dictionary to serialize baseDirectory string The base directory for resolving paths exhibitionOnly bool See MakeXmlSource(string, string, bool) for parameter description. Returns XElement An XML element containing the serialized dictionary Type Parameters T The type of objects in the dictionary, must implement IMakeXmlSource SaveToByteArrayAsync(IMakeXmlSource, string) Asynchronously saves an XML source to a byte array. public static Task SaveToByteArrayAsync(this IMakeXmlSource src, string baseDirectory) Parameters src IMakeXmlSource The XML source to save baseDirectory string The base directory for resolving paths Returns Task A byte array containing the serialized XML data SaveToFileRef(XElement, string, string, bool) Wraps an XML element in a file reference element or returns it as-is. public static XElement SaveToFileRef(this XElement src, string baseDirectory, string sourceFile, bool exhibitionOnly) Parameters src XElement The source XML element to wrap baseDirectory string The base directory for resolving paths sourceFile string The relative file path to save the element to, or null to return the element as-is exhibitionOnly bool See MakeXmlSource(string, string, bool) for parameter description. Returns XElement If sourceFile is null, returns the original element; otherwise, saves the element to the specified file and returns a file reference element SetNameNote(INameNote, XElement) Sets the name and note properties of an INameNote object from an XML element. public static void SetNameNote(this INameNote dst, XElement src) Parameters dst INameNote The destination INameNote object to update src XElement The source XML element containing the name and note values SetOrGenerate(XElement, string, T, string) Sets a value at the specified XPath, creating the path if it doesn't exist. public static void SetOrGenerate(this XElement src, string xpath, T value, string comment = null) where T : IConvertible Parameters src XElement The source XElement xpath string The XPath to set the value at value T The value to set comment string Optional comment to add above the element Type Parameters T The type of value to set" }, "api/Hi.Common.XmlUtils.html": { "href": "api/Hi.Common.XmlUtils.html", @@ -1032,7 +1077,7 @@ "api/Hi.Common.html": { "href": "api/Hi.Common.html", "title": "Namespace Hi.Common | HiAPI-C# 2025", - "summary": "Namespace Hi.Common Classes BinIoUtil Utility class for binary I/O operations. BitUtil Utility for bit control for integer. BlockingTimer Timer use one task and delay each event call. The delay time is Period, counted from the previous trigger to the nest trigger. The first function call does no intending delay. If the execution time is over the Period, no delay between the triggers. BytesUtil Utility class for byte array operations and memory size conversions. ConcurrentTimeCounter Thread-safe utility for measuring and tracking execution time across multiple tasks. ConsoleUtil Utility class for console window operations. CppLogUtil Internal Use Only. CultureUtil Utility class for managing culture and localization settings. DuplicateUtil Utility methods for duplication operations. EnumUtil Utility class for enum operations. EnumerablePlayer Run enumerable with Pause(), Resume() and etc. functions. IndexSegment Represents a segment of indices with a beginning (inclusive) and ending (exclusive> point. Used for defining segment of data in collections or arrays. IntegerKeyDictionaryConverter Converts dictionaries with string keys to dictionaries with integer keys for more efficient storage and lookup. IntegerKeyDictionaryConverter Generic version of IntegerKeyDictionaryConverter that works with a specific value type. InternalException Exception that represents an internal error that should never occur during normal operation. Used to indicate programming errors or unexpected states that require developer attention. InvokeUtil Utility class for method invocation operations. JsonUtil Helper utilities for reading and writing JSON files. LooseRunner Provides a mechanism for running actions asynchronously in a loose manner. Only the most recent action is executed and previous pending actions are discarded. ManualUtil Utility class for handling manual and documentation files with culture support. MaskUtil Utility for bits masking. NameUtil Utility class for handling object names and display names. PacePlayee Represents an entity that can be controlled by the pace player. PacePlayer Controls the pace execution of a task. Pair Editable pair values. ProgressFraction Represents a progress report implementation. Range Range from Min to Max. ResourceUtil Utility class for working with resource managers and localized strings. RoutineBlocker Block the thread to the given delay from the previous block. SeqPairUtil Utility class for SeqPair operations. SeqPair Represents a sequence pair containing previous and current values. Used to track sequential state changes of a value. ServerFileExplorerConfig Configuration for server file explorer functionality. StringLocalizer Provides localization functionality for strings using resource managers. StringUtil Utility for managing text. TaskUtil Utility class for Task-related operations. TimeCounter A utility counts the average/total time consume between the Bound(object) areas. The count of time consume for the given key starts at the first time (and the odd time) calling Bound(object); stops and accumulates at the second time (and the even time). Interfaces IAbstractNote Interface for objects that provide an abstract description or note. IBinaryIo Interface for binary input/output operations. Extends IWriteBin to provide both read and write capabilities. IClearCache Interface for objects that can clear their internal cache. IDuplicate Interface for objects that support deep cloning/duplication. IGetQuantityByKey Interface for retrieving a quantity value using a string key. IGetSelectionName Interface for objects that can provide a name for selection purposes. INameNote Interface for objects that have a name and note property. IPreferredFileName Interface for objects that can specify a preferred file name. Generally used to suggest a name when generating or saving files. IProgressFraction Interface for progress reporting functionality. ISourceFile Interface for objects that have a source file. IToPresentDto Interface for converting objects to presentation DTOs (Data Transfer Objects) for JSON serialization. IUpdateByContent Interface for objects that can update themselves based on their content. IUriGetter Interface for retrieving a URI string. IWriteBin Interface for writing binary data. Enums SearchResult Represents the result of a search operation. Delegates CppLogUtil.LogDelegate Internal Use Only. LooseRunner.MergedCancellationTokenRun Delegate for actions that accept a merged cancellation token. The merged token combines the runner's disposal token with an optional external cancellation token." + "summary": "Namespace Hi.Common Classes BinIoUtil Utility class for binary I/O operations. BitUtil Utility for bit control for integer. BlockingTimer Timer use one task and delay each event call. The delay time is Period, counted from the previous trigger to the nest trigger. The first function call does no intending delay. If the execution time is over the Period, no delay between the triggers. BytesUtil Utility class for byte array operations and memory size conversions. ConcurrentTimeCounter Thread-safe utility for measuring and tracking execution time across multiple tasks. ConsoleUtil Utility class for console window operations. CppLogUtil Internal Use Only. CultureTextAttribute Declares one culture's text for one vocabulary key on the member carrying the attribute — the static wording of command titles and labels, owned by the declaring library as a DEFAULT: a GUI layer may override it or add cultures the library never declared (see SetTextOverride(string, string, string)), and a culture left undeclared is not an error — lookups fall back toward the English key. The key defaults to the member's own display name: its DisplayNameAttribute value when present, otherwise the member name spaced into words (SpacePascalWords(string)). Set Key to declare a word the member does not itself name (a shared switch word, a mode label). Apply the attribute once per culture. CultureUtil The English culture the engine formats and parses with, and the one call that pins a thread to it. DuplicateUtil Utility methods for duplication operations. EnumUtil Utility class for enum operations. EnumerablePlayer Run enumerable with Pause(), Resume() and etc. functions. IndexSegment Represents a segment of indices with a beginning (inclusive) and ending (exclusive> point. Used for defining segment of data in collections or arrays. IntegerKeyDictionaryConverter Converts dictionaries with string keys to dictionaries with integer keys for more efficient storage and lookup. IntegerKeyDictionaryConverter Generic version of IntegerKeyDictionaryConverter that works with a specific value type. InternalException Exception that represents an internal error that should never occur during normal operation. Used to indicate programming errors or unexpected states that require developer attention. InvokeUtil Utility class for method invocation operations. JsonUtil Helper utilities for reading and writing JSON files. LooseRunner Provides a mechanism for running actions asynchronously in a loose manner. Only the most recent action is executed and previous pending actions are discarded. ManualUtil Utility class for handling manual and documentation files with culture support. MaskUtil Utility for bits masking. NameUtil Utility class for handling object names and display names. PacePlayee Represents an entity that can be controlled by the pace player. PacePlayer Controls the pace execution of a task. Pair Editable pair values. ProgressFraction Represents a progress report implementation. Also exposes an IMessage view (explicitly implemented) so a progress fraction can ride the unified message channel uniformly alongside SimpleMessage / NcDiagnostic: Progress + System, with Msg as the notification and Detail as the detail payload. Range Range from Min to Max. ResourceDefaultMarker File-name convention that marks a shipped resource item as a system-owned default: a file carries the token before its final extension (AlTiBN.default.CoatingMaterial), a folder-shaped resource carries it as a folder-name suffix (MachineTool/Table-B1.default/) with the files inside left untouched. ResourceLayout Provides the relative folder paths that make up the shipped resource tree. ResourceUtil Utility class for working with resource managers and localized strings, and the home of the attribute-declared command vocabulary: the CultureTextAttribute declarations of an assembly, exposed as “type/member + culture → text” queries and as ICommandTextSource instances, with GUI-layer overrides layered on top (SetTextOverride(string, string, string)). RoutineBlocker Block the thread to the given delay from the previous block. SeqPairUtil Utility class for SeqPair operations. SeqPair Represents a sequence pair containing previous and current values. Used to track sequential state changes of a value. ServerFileExplorerConfig Configuration for server file explorer functionality. StringLocalizer Provides localization functionality for strings using resource managers. StringUtil Utility for managing text. TaskUtil Utility class for Task-related operations. TimeCounter A utility counts the average/total time consume between the Bound(object) areas. The count of time consume for the given key starts at the first time (and the odd time) calling Bound(object); stops and accumulates at the second time (and the even time). Interfaces IAbstractNote Interface for objects that provide an abstract description or note. IBinaryIo Interface for binary input/output operations. Extends IWriteBin to provide both read and write capabilities. IClearCache Interface for objects that can clear their internal cache. ICommandTextSource A culture-bearing vocabulary commands compose their titles and labels from: it maps a vocabulary key — the English default text — onto that culture's text. The CALLER picks the source, so the presentation layer owns the language (no thread culture involved); the command keeps its composition and degradation rules. Presentation layers can implement their own source or take the engine-default one from GenTextSource(CultureInfo, params Type[]) ([CultureText] declarations overlaid by SetTextOverride(string, string, string) registrations). IDuplicate Interface for objects that support deep cloning/duplication. IGetQuantityByKey Interface for retrieving a quantity value using a string key. IGetSelectionName Interface for objects that can provide a name for selection purposes. INameNote Interface for objects that have a name and note property. IPreferredFileName Interface for objects that can specify a preferred file name. Generally used to suggest a name when generating or saving files. IProgressFraction Interface for progress reporting functionality. ISourceFile Interface for objects that have a source file. IToPresentDto Interface for converting objects to presentation DTOs (Data Transfer Objects) for JSON serialization. IUpdateByContent Interface for objects that can update themselves based on their content. IUriGetter Interface for retrieving a URI string. IWriteBin Interface for writing binary data. Enums SearchResult Represents the result of a search operation. Delegates CppLogUtil.LogDelegate Internal Use Only. LooseRunner.MergedCancellationTokenRun Delegate for actions that accept a merged cancellation token. The merged token combines the runner's disposal token with an optional external cancellation token." }, "api/Hi.CutterLocations.ClPath.ClCircleArc.html": { "href": "api/Hi.CutterLocations.ClPath.ClCircleArc.html", @@ -1057,12 +1102,12 @@ "api/Hi.CutterLocations.ClStrips.ClStrip.html": { "href": "api/Hi.CutterLocations.ClStrips.ClStrip.html", "title": "Class ClStrip | HiAPI-C# 2025", - "summary": "Class ClStrip Namespace Hi.CutterLocations.ClStrips Assembly HiMech.dll Represents a CL (Cutter Location) strip for 3D display. This class manages the display and interaction of cutter location points and lines. public class ClStrip : IDisplayee, IExpandToBox3d, IDisposable Inheritance object ClStrip Implements IDisplayee IExpandToBox3d 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) BoundSelectorUtil.GetStepRange(ClStrip, BoundSelectorPair) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ClStrip(int) Initializes a new instance of the ClStrip class. public ClStrip(int cap = 2048) Parameters cap int The initial capacity of the strip Fields InternalMachiningStepSelected Host wiring hook invoked when a strip position selects a machining step (low-level; prefer MachiningStepSelected for UI). public Action InternalMachiningStepSelected Field Value Action slice_distance The distance between slices for efficient rendering. public const int slice_distance = 8192 Field Value int Properties AbsDispEnd Gets the absolute display end position. If the display end is set to -1, returns the total number of positions. public int AbsDispEnd { get; } Property Value int CallRefreshDrawing internal use public bool CallRefreshDrawing { get; } Property Value bool ChartRange Synchoronized Chart Time Range. Always not null. The members' value is possible to be null for the un-available status. public Range ChartRange { get; } Property Value Range IsKeepingDispAlive Keep the disp range to at least two dots while the stripe length enough. public bool IsKeepingDispAlive { get; set; } Property Value bool IsShowDot Gets or sets whether to display dots at each position. public bool IsShowDot { get; set; } Property Value bool StripPoses Gets the list of strip positions. Do not add or remove elements directly. public SynList StripPoses { get; } Property Value SynList StripPosesClearLock Gets the lock for thread-safe operations on strip positions. public ReaderWriterLockSlim StripPosesClearLock { get; } Property Value ReaderWriterLockSlim StripPosesCount Gets the thread-safe count of strip positions. public int StripPosesCount { get; } Property Value int Methods Add(object, DVec3d) Adds a new position to the strip. public ClStripPos Add(object state, DVec3d programCl) Parameters state object The state object associated with the position programCl DVec3d The cutter location Returns ClStripPos The newly created strip position Clear(object) Clears all strip positions and resets the display state. public void Clear(object sender) Parameters sender object The object that initiated this clear operation Display(Bind) Displays the strip. public void Display(Bind bind) Parameters bind Bind The binding context for display Dispose() Disposes of the resources used by this strip. public void Dispose() Dispose(bool) Disposes of the resources used by this strip. protected virtual void Dispose(bool disposing) Parameters disposing bool Whether this is being called from Dispose ExpandToBox3d(Box3d) Expands the given box to include all strip positions. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The box to expand GetDispBegin() Gets the current display begin position. public int GetDispBegin() Returns int The display begin position GetDispEnd() Gets the current display end position. A value of -1 indicates that the display should follow the end of the strip. public int GetDispEnd() Returns int The display end position GetEnteredPos() Gets the currently entered position. public ClStripPos GetEnteredPos() Returns ClStripPos The entered position GetFittingView(Mat4d, Mat4d) Gets a scaled fitting view based on the strip display range. public Mat4d GetFittingView(Mat4d sketchView, Mat4d clStripZeroToRoot = null) Parameters sketchView Mat4d The sketch view matrix clStripZeroToRoot Mat4d The transformation from strip zero to root Returns Mat4d The scaled fitting view matrix GetSelectedPos() Gets the currently selected position. public ClStripPos GetSelectedPos() Returns ClStripPos The selected position GetStripPos(int, bool) Gets a strip position by index. public ClStripPos GetStripPos(int index, bool isLocked = false) Parameters index int The index of the position isLocked bool Whether the strip positions are already locked Returns ClStripPos The strip position at the specified index LimitChartRange(bool) Limits the chart range based on the time range of the strip positions. public void LimitChartRange(bool isLocked) Parameters isLocked bool Whether the strip positions are locked. RefreshDrawing() Marks the drawing for refresh. public void RefreshDrawing() RefreshDrawingInRendering(bool) internal use public void RefreshDrawingInRendering(bool isLocked) Parameters isLocked bool SetDispBegin(int, object) Sets the display begin position. public void SetDispBegin(int value, object caller) Parameters value int The new display begin position caller object The object that initiated this change SetDispEnd(int, object) Sets the display end position. A value of -1 indicates that the display should follow the end of the strip. public void SetDispEnd(int value, object caller) Parameters value int The new display end position caller object The object that initiated this change SetDispSegment(int, int, object) Sets the display range for the cutter location strip. This method sets both the beginning and ending positions of the display range. public void SetDispSegment(int beginIndex, int endIndex, object caller) Parameters beginIndex int The beginning index of the display range. Will be clamped to [0, StripPoses.Count - 1]. endIndex int The ending index of the display range. A value of -1 indicates that the display should follow the end of the strip. Values greater than or equal to StripPoses.Count will be converted to -1. Will be clamped to [-1, StripPoses.Count]. caller object The caller object that requests the display range change. Used for event notifications. SetEnteredPos(ClStripPos, object) Sets the currently entered position. public void SetEnteredPos(ClStripPos value, object sender) Parameters value ClStripPos The new entered position sender object The object that initiated this change SetSelectedPos(ClStripPos, object) Sets the currently selected position. public void SetSelectedPos(ClStripPos value, object sender) Parameters value ClStripPos The new selected position sender object The object that initiated this change ShrinkAttachmentMemory(CancellationToken?) Shrinks the attachment memory for all positions. public void ShrinkAttachmentMemory(CancellationToken? cancellationToken = null) Parameters cancellationToken CancellationToken? StripPosesThreadSafeSelect(Func) Thread-safe selection of strip positions. public List StripPosesThreadSafeSelect(Func func) Parameters func Func The function to transform each strip position Returns List A list of transformed strip positions Type Parameters T The type of the selected data UpdateDispSegmentByChartRange(object) Updates the display segment based on the current chart range. public void UpdateDispSegmentByChartRange(object caller) Parameters caller object The caller object that triggered the update. Events AbsDispEndChanged Event raised when the absolute display end position changes. public event EventHandler AbsDispEndChanged Event Type EventHandler DispBeginChanged Event raised when the display begin position changes. public event EventHandler DispBeginChanged Event Type EventHandler DispEndChanged Event raised when the display end position changes. public event EventHandler DispEndChanged Event Type EventHandler DrawingRefreshing Event raised when the drawing is being refreshed. public event EventHandler DrawingRefreshing Event Type EventHandler MachiningStepSelected The same effecting position as PosSelected but with more convenient arguments for the end-user. public event Action MachiningStepSelected Event Type Action PosAdded Event raised when a new position is added to the strip. public event Action PosAdded Event Type Action PosEntered Event raised when the mouse enters a position. public event EventHandler PosEntered Event Type EventHandler PosSelected Event raised when a position is selected. public event EventHandler PosSelected Event Type EventHandler StaticPosSelected Static event raised when any position is selected. public static event EventHandler StaticPosSelected Event Type EventHandler" + "summary": "Class ClStrip Namespace Hi.CutterLocations.ClStrips Assembly HiMech.dll Represents a CL (Cutter Location) strip for 3D display. This class manages the display and interaction of cutter location points and lines. public class ClStrip : IDisplayee, IExpandToBox3d, IDisposable Inheritance object ClStrip Implements IDisplayee IExpandToBox3d 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) BoundSelectorUtil.GetStepRange(ClStrip, BoundSelectorPair) DispUtil.Display(IDisplayee, Bind, Mat4d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ClStrip(int) Initializes a new instance of the ClStrip class. public ClStrip(int cap = 2048) Parameters cap int The initial capacity of the strip Fields InternalMachiningStepSelected Host wiring hook invoked when a strip position selects a machining step (low-level; prefer MachiningStepSelected for UI). public Action InternalMachiningStepSelected Field Value Action slice_distance The distance between slices for efficient rendering. public const int slice_distance = 8192 Field Value int Properties AbsDispEnd Gets the absolute display end position. If the display end is set to -1, returns the total number of positions. public int AbsDispEnd { get; } Property Value int CallRefreshDrawing internal use public bool CallRefreshDrawing { get; } Property Value bool ChartRange Synchoronized Chart Time Range. Always not null. The members' value is possible to be null for the un-available status. public Range ChartRange { get; } Property Value Range IsKeepingDispAlive Keep the disp range to at least two dots while the stripe length enough. public bool IsKeepingDispAlive { get; set; } Property Value bool IsShowDot Gets or sets whether to display dots at each position. public bool IsShowDot { get; set; } Property Value bool LastRefreshHadUncoveredRecolor True when the last RefreshDrawingInRendering(bool) re-stamped at least one position whose attachment is not covered by the native color table. Only then do stale colors remain baked in the workpiece display caches, so the whole-tree clean after the re-stamp is still required; covered recolors reach the screen through the table without any clean. public bool LastRefreshHadUncoveredRecolor { get; } Property Value bool StripPoses Gets the list of strip positions. Do not add or remove elements directly. public SynList StripPoses { get; } Property Value SynList StripPosesClearLock Gets the lock for thread-safe operations on strip positions. public ReaderWriterLockSlim StripPosesClearLock { get; } Property Value ReaderWriterLockSlim StripPosesCount Gets the thread-safe count of strip positions. public int StripPosesCount { get; } Property Value int StripPosesRetirer Optional sink for retiring abandoned ClStripPos when the strip is cleared. Injected by the owner (MachiningActRunner) to route through WorkpieceService.RetireAttachments — detach the poses from the live runtime tree under its render barrier, then free them in the background. When null, the poses are freed directly on CubeTree's background chain. public Action> StripPosesRetirer { get; set; } Property Value Action> Methods Add(object, DVec3d) Adds a new position to the strip. public ClStripPos Add(object state, DVec3d programCl) Parameters state object The state object associated with the position programCl DVec3d The cutter location Returns ClStripPos The newly created strip position Clear(object) Clears all strip positions and resets the display state. public void Clear(object sender) Parameters sender object The object that initiated this clear operation Display(Bind) Displays the strip. public void Display(Bind bind) Parameters bind Bind The binding context for display Dispose() Disposes of the resources used by this strip. public void Dispose() Dispose(bool) Disposes of the resources used by this strip. protected virtual void Dispose(bool disposing) Parameters disposing bool Whether this is being called from Dispose ExpandToBox3d(Box3d) Expands the given box to include all strip positions. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The box to expand GetDispBegin() Gets the current display begin position. public int GetDispBegin() Returns int The display begin position GetDispEnd() Gets the current display end position. A value of -1 indicates that the display should follow the end of the strip. public int GetDispEnd() Returns int The display end position GetEnteredPos() Gets the currently entered position. public ClStripPos GetEnteredPos() Returns ClStripPos The entered position GetFittingView(Mat4d, Mat4d) Gets a scaled fitting view based on the strip display range. public Mat4d GetFittingView(Mat4d sketchView, Mat4d clStripZeroToRoot = null) Parameters sketchView Mat4d The sketch view matrix clStripZeroToRoot Mat4d The transformation from strip zero to root Returns Mat4d The scaled fitting view matrix GetSelectedPos() Gets the currently selected position. public ClStripPos GetSelectedPos() Returns ClStripPos The selected position GetStripPos(int, bool) Gets a strip position by index. public ClStripPos GetStripPos(int index, bool isLocked = false) Parameters index int The index of the position isLocked bool Whether the strip positions are already locked Returns ClStripPos The strip position at the specified index LimitChartRange(bool) Limits the chart range based on the time range of the strip positions. public void LimitChartRange(bool isLocked) Parameters isLocked bool Whether the strip positions are locked. RefreshDrawing() Marks the drawing for refresh. public void RefreshDrawing() RefreshDrawingInRendering(bool) internal use public void RefreshDrawingInRendering(bool isLocked) Parameters isLocked bool SetDispBegin(int, object) Sets the display begin position. public void SetDispBegin(int value, object caller) Parameters value int The new display begin position caller object The object that initiated this change SetDispEnd(int, object) Sets the display end position. A value of -1 indicates that the display should follow the end of the strip. public void SetDispEnd(int value, object caller) Parameters value int The new display end position caller object The object that initiated this change SetDispSegment(int, int, object) Sets the display range for the cutter location strip. This method sets both the beginning and ending positions of the display range. public void SetDispSegment(int beginIndex, int endIndex, object caller) Parameters beginIndex int The beginning index of the display range. Will be clamped to [0, StripPoses.Count - 1]. endIndex int The ending index of the display range. A value of -1 indicates that the display should follow the end of the strip. Values greater than or equal to StripPoses.Count will be converted to -1. Will be clamped to [-1, StripPoses.Count]. caller object The caller object that requests the display range change. Used for event notifications. SetEnteredPos(ClStripPos, object) Sets the currently entered position. public void SetEnteredPos(ClStripPos value, object sender) Parameters value ClStripPos The new entered position sender object The object that initiated this change SetSelectedPos(ClStripPos, object) Sets the currently selected position. public void SetSelectedPos(ClStripPos value, object sender) Parameters value ClStripPos The new selected position sender object The object that initiated this change ShrinkAttachmentMemory(CancellationToken?) Shrinks the attachment memory for all positions. public void ShrinkAttachmentMemory(CancellationToken? cancellationToken = null) Parameters cancellationToken CancellationToken? StripPosesThreadSafeSelect(Func) Thread-safe selection of strip positions. public List StripPosesThreadSafeSelect(Func func) Parameters func Func The function to transform each strip position Returns List A list of transformed strip positions Type Parameters T The type of the selected data UpdateDispSegmentByChartRange(object) Updates the display segment based on the current chart range. public void UpdateDispSegmentByChartRange(object caller) Parameters caller object The caller object that triggered the update. Events AbsDispEndChanged Event raised when the absolute display end position changes. public event EventHandler AbsDispEndChanged Event Type EventHandler Cleared Event raised after Clear(object) has emptied StripPoses, so list-style consumers (e.g. a step table) can reset without polling. public event Action Cleared Event Type Action DispBeginChanged Event raised when the display begin position changes. public event EventHandler DispBeginChanged Event Type EventHandler DispEndChanged Event raised when the display end position changes. public event EventHandler DispEndChanged Event Type EventHandler DrawingRefreshed Event raised after the strip drawing has been refreshed — pos colors re-stamped from their states and the drawing slices rebuilt (see RefreshDrawingInRendering(bool)). Subscribers that cache colors baked from the strip attachments (e.g. a meshed workpiece's display cache) should invalidate on this event. public event EventHandler DrawingRefreshed Event Type EventHandler MachiningStepSelected The same effecting position as PosSelected but with more convenient arguments for the end-user. public event Action MachiningStepSelected Event Type Action PosAdded Event raised when a new position is added to the strip. public event Action PosAdded Event Type Action PosEntered Event raised when the mouse enters a position. public event EventHandler PosEntered Event Type EventHandler PosSelected Event raised when a position is selected. public event EventHandler PosSelected Event Type EventHandler StaticPosSelected Static event raised when any position is selected. public static event EventHandler StaticPosSelected Event Type EventHandler" }, "api/Hi.CutterLocations.ClStrips.ClStripPos.html": { "href": "api/Hi.CutterLocations.ClStrips.ClStripPos.html", "title": "Class ClStripPos | HiAPI-C# 2025", - "summary": "Class ClStripPos Namespace Hi.CutterLocations.ClStrips Assembly HiMech.dll Represents a position in a cutter location strip, containing program coordinates and state information. public class ClStripPos : CbtrPickable, IGetPickable, IDisposable, IGetProgramCl Inheritance object Pickable CbtrPickable ClStripPos Implements IGetPickable IDisposable IGetProgramCl Inherited Members CbtrPickable.Rgb CbtrPickable.AttachmentPriority CbtrPickable.Highlight(bool) CbtrPickable.CleanLinkedCbtrNodesDrawingCache() CbtrPickable.ShrinkToFitNodeMap() Pickable.Pickables Pickable.mark Pickable.PickingID Pickable.GetPickable() Pickable.Dispose() 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) Properties Index Gets the index of this position in the strip. public int Index { get; } Property Value int MachiningStep Gets or sets the milling step associated with this position. This is a convenience property that casts the State to MachiningStep. public MachiningStep MachiningStep { get; set; } Property Value MachiningStep ProgramCl Gets the program coordinates of this position. public DVec3d ProgramCl { get; } Property Value DVec3d State Gets or sets the state object associated with this position. When the state changes, the color is automatically refreshed. public object State { get; set; } Property Value object Methods Display(Bind) public void Display(Bind bind) Parameters bind Bind Dispose(bool) protected override void Dispose(bool disposing) Parameters disposing bool GetLastTime(bool) If time is not set, return the time from the last setted step. public TimeSpan? GetLastTime(bool isLocked = false) Parameters isLocked bool Returns TimeSpan? GetProgramCl() Get CL (Cutter Location). Where Point is tool tip position; Normal is tool orientation. public DVec3d GetProgramCl() Returns DVec3d CL OnKeyDown(key_event_t, DispEngine) Behavior on key down. public override void OnKeyDown(key_event_t e, DispEngine dispEngine) Parameters e key_event_t event dispEngine DispEngine display engine OnKeyUp(key_event_t, DispEngine) Behavior on key up public override void OnKeyUp(key_event_t e, DispEngine dispEngine) Parameters e key_event_t event dispEngine DispEngine display engine OnMouseDown(mouse_button_event_t, DispEngine) Behavior on mouse down public override void OnMouseDown(mouse_button_event_t e, DispEngine dispEngine) Parameters e mouse_button_event_t event dispEngine DispEngine display engine OnMouseEnter(ui_event_type, DispEngine) Behavior on mouse enter public override void OnMouseEnter(ui_event_type e, DispEngine dispEngine) Parameters e ui_event_type event type dispEngine DispEngine display engine OnMouseLeave(ui_event_type, DispEngine) Behavior on mouse leave public override void OnMouseLeave(ui_event_type e, DispEngine dispEngine) Parameters e ui_event_type event type dispEngine DispEngine display engine OnMouseMove(mouse_move_event_t, DispEngine) Behavior on mouse move public override void OnMouseMove(mouse_move_event_t e, DispEngine dispEngine) Parameters e mouse_move_event_t event dispEngine DispEngine display engine OnMouseUp(mouse_button_event_t, DispEngine) Behavior on mouse up public override void OnMouseUp(mouse_button_event_t e, DispEngine dispEngine) Parameters e mouse_button_event_t event dispEngine DispEngine display engine OnMouseWheel(mouse_wheel_event_t, DispEngine) Behavior on mouse wheel public override void OnMouseWheel(mouse_wheel_event_t e, DispEngine dispEngine) Parameters e mouse_wheel_event_t event dispEngine DispEngine display engine ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + "summary": "Class ClStripPos Namespace Hi.CutterLocations.ClStrips Assembly HiMech.dll Represents a position in a cutter location strip, containing program coordinates and state information. public class ClStripPos : CbtrPickable, IGetPickable, IDisposable, IGetProgramCl, IMotionStepIndex Inheritance object Pickable CbtrPickable ClStripPos Implements IGetPickable IDisposable IGetProgramCl IMotionStepIndex Inherited Members CbtrPickable.Rgb CbtrPickable.IsColorTableCovered CbtrPickable.AttachmentPriority CbtrPickable.Highlight(bool) CbtrPickable.CleanAttachedCbtrNodesDrawingCache() CbtrPickable.ShrinkToFitNodeMap() Pickable.Pickables Pickable.mark Pickable.PickingID Pickable.GetPickable() Pickable.Dispose() 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) Properties Index Gets the index of this position in the strip. This is also the step's execution-order ordinal — exposed via StepIndex. public int Index { get; } Property Value int MachiningStep Gets or sets the milling step associated with this position. This is a convenience property that casts the State to MachiningStep. public MachiningStep MachiningStep { get; set; } Property Value MachiningStep ProgramCl Gets the program coordinates of this position. public DVec3d ProgramCl { get; } Property Value DVec3d State Gets or sets the state object associated with this position. When the state changes, the color is automatically refreshed. public object State { get; set; } Property Value object Methods Display(Bind) public void Display(Bind bind) Parameters bind Bind Dispose(bool) protected override void Dispose(bool disposing) Parameters disposing bool GetLastTime(bool) If time is not set, return the time from the last setted step. public TimeSpan? GetLastTime(bool isLocked = false) Parameters isLocked bool Returns TimeSpan? GetProgramCl() Get CL (Cutter Location). Where Point is tool tip position; Normal is tool orientation. public DVec3d GetProgramCl() Returns DVec3d CL OnKeyDown(key_event_t, DispEngine) Behavior on key down. public override void OnKeyDown(key_event_t e, DispEngine dispEngine) Parameters e key_event_t event dispEngine DispEngine display engine OnKeyUp(key_event_t, DispEngine) Behavior on key up public override void OnKeyUp(key_event_t e, DispEngine dispEngine) Parameters e key_event_t event dispEngine DispEngine display engine OnMouseDown(mouse_button_event_t, DispEngine) Behavior on mouse down public override void OnMouseDown(mouse_button_event_t e, DispEngine dispEngine) Parameters e mouse_button_event_t event dispEngine DispEngine display engine OnMouseEnter(ui_event_type, DispEngine) Behavior on mouse enter public override void OnMouseEnter(ui_event_type e, DispEngine dispEngine) Parameters e ui_event_type event type dispEngine DispEngine display engine OnMouseLeave(ui_event_type, DispEngine) Behavior on mouse leave public override void OnMouseLeave(ui_event_type e, DispEngine dispEngine) Parameters e ui_event_type event type dispEngine DispEngine display engine OnMouseMove(mouse_move_event_t, DispEngine) Behavior on mouse move public override void OnMouseMove(mouse_move_event_t e, DispEngine dispEngine) Parameters e mouse_move_event_t event dispEngine DispEngine display engine OnMouseUp(mouse_button_event_t, DispEngine) Behavior on mouse up public override void OnMouseUp(mouse_button_event_t e, DispEngine dispEngine) Parameters e mouse_button_event_t event dispEngine DispEngine display engine OnMouseWheel(mouse_wheel_event_t, DispEngine) Behavior on mouse wheel public override void OnMouseWheel(mouse_wheel_event_t e, DispEngine dispEngine) Parameters e mouse_wheel_event_t event dispEngine DispEngine display engine ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, "api/Hi.CutterLocations.ClStrips.RgbFunc.html": { "href": "api/Hi.CutterLocations.ClStrips.RgbFunc.html", @@ -1117,7 +1162,7 @@ "api/Hi.Disp.DispEngine.html": { "href": "api/Hi.Disp.DispEngine.html", "title": "Class DispEngine | HiAPI-C# 2025", - "summary": "Class DispEngine Namespace Hi.Disp Assembly HiDisp.dll HiAPI display engine. public class DispEngine : IDisposable, IGetDispEngine Inheritance object DispEngine Implements IDisposable IGetDispEngine 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 DispEngine is the core rendering and interaction engine for HiAPI applications. Related Documentation Using RenderingCanvas with DispEngine Building Your Own Rendering Canvas The DispEngine provides a unified API for handling rendering, user interaction, and touch gestures across different UI frameworks. Constructors DispEngine(IDisplayee) Ctor. The SetViewToHomeView() is called in this function. public DispEngine(IDisplayee displayee) Parameters displayee IDisplayee The displayee to render. DispEngine(params IDisplayee[]) Ctor. public DispEngine(params IDisplayee[] displayees) Parameters displayees IDisplayee[] displayees to render. Fields CoreDll Core dll path. public const string CoreDll = \"core.dll\" Field Value string defaultFontFile The default font file path used by the display engine. public const string defaultFontFile = \"Font/WCL06.ttf\" Field Value string Properties BackgroundColor Background color public Vec3d BackgroundColor { get; set; } Property Value Vec3d BackgroundOpacity Background opacity. Range is from 0 to 1. public double BackgroundOpacity { get; set; } Property Value double ContextProjDepth Gets the projection depth of the current context. public static double ContextProjDepth { get; } Property Value double CursorOffsetX Internal Use. public int CursorOffsetX { get; } Property Value int CursorOffsetY Internal Use. public int CursorOffsetY { get; } Property Value int CursorX Internal Use. public int CursorX { get; set; } Property Value int CursorY Internal Use. public int CursorY { get; set; } Property Value int Displayee Displayee to be rendered in the rendering loop. The SetViewToHomeView() is called in this function. public IDisplayee Displayee { get; set; } Property Value IDisplayee EnableSuppressDefaultLogo Get or Set to Enable Suppress Default Logo. public static bool EnableSuppressDefaultLogo { get; set; } Property Value bool Exceptions InvalidOperationException Thrown when SuppressDefaultLogo license is not logged in. FontFile Font file. public static string FontFile { get; set; } Property Value string IsOnDispThread Gets a value indicating whether the current thread is the display thread. public static bool IsOnDispThread { get; } Property Value bool IsVisible The anime stop running if the value is false; otherwise, the anime starts or keeps running. public bool IsVisible { get; set; } Property Value bool Model public Mat4d Model { get; set; } Property Value Mat4d Model matrix in MVP convention. This Model matrix is the first matrix in Hi.Disp.Bind.modelMatStack. PixelProj public Mat4d PixelProj { get; set; } Property Value Mat4d Pixel part of Projection matrix in MVP convention. Projection matrix = ScaleProj * PixelProj; PreCursorX Internal Use. public int PreCursorX { get; set; } Property Value int PreCursorY Internal Use. public int PreCursorY { get; set; } Property Value int PrincipleView public Mat4d PrincipleView { get; set; } Property Value Mat4d view = PrincipleView * SketchView. Where view matrix is in MVP convention. Remarks The default value is new Mat4d(new Vec3d(1, 0, 0), -Math.PI / 2). This make the 2D plane from xy plane to xz plane. The xz plane is much suit for 3D engineering display. RefreshingPeriod Image refreshing period. public TimeSpan RefreshingPeriod { get; set; } Property Value TimeSpan ScaleProj public Mat4d ScaleProj { get; set; } Property Value Mat4d Scale part of Projection matrix in MVP convention. Projection matrix = ScaleProj * PixelProj; SketchView view = PrincipleView * SketchView. Where view matrix is in MVP convention. public Mat4d SketchView { get; set; } Property Value Mat4d Methods ClearCache() Clears the display engine cache. public void ClearCache() DeleteDispContext() Deletes the current display context. public static void DeleteDispContext() Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool EnqueueDispose(IDisposable) Enqueues a disposable object to be disposed on the display thread. public static Task EnqueueDispose(IDisposable disposable) Parameters disposable IDisposable The disposable object to be disposed Returns Task A task representing the disposal operation EnqueueTask(Task) Enqueues a task to be executed on the display thread. public static Task EnqueueTask(Task task) Parameters task Task The task to be executed Returns Task The enqueued task EnqueueTask(Task) Enqueues a task to be executed on the display thread. public static Task EnqueueTask(Task task) Parameters task Task The task to be executed Returns Task The enqueued task Type Parameters T The type of the task result ~DispEngine() protected ~DispEngine() FinishDisp() Elegantly end the rendering core. Probably not essential. public static void FinishDisp() GetDispEngine() Get DispEngine. public DispEngine GetDispEngine() Returns DispEngine DispEngine Init(string) Initializes the display engine system. public static void Init(string fontFile = null) Parameters fontFile string The font file to use. If null, the default font file will be used. IsKeyPressed(string) Checks if a specific keyboard key is currently pressed. Delegates to IsKeyPressed(string). public bool IsKeyPressed(string key) Parameters key string Key string (W3C KeyboardEvent.key value, e.g. “Alt”, “ArrowLeft”). Returns bool True if the specified key is pressed; otherwise, false. IsMouseButtonPressed(long) Checks if a specific mouse button is currently pressed. Delegates to IsMouseButtonPressed(long). public bool IsMouseButtonPressed(long mouseButton) Parameters mouseButton long The mouse button to check, typically a value from the HiMouseButton enumeration. Returns bool True if the specified mouse button is pressed; otherwise, false. KeyDown(string) Key down. This function is typically called in the GUI implementation for keyboard interaction. public void KeyDown(string key) Parameters key string Key string (W3C KeyboardEvent.key value, e.g. “Alt”, “ArrowLeft”, “a”). KeyDownTransform(string, key_table__transform_view_by_key_pressing_t) Transform SketchView by key. Home, F1, F2, F3, F4 call SetViewToHomeView(), SetViewToFrontView(), SetViewToRightView(), SetViewToTopView(), SetViewToIsometricView() respectively. PageDown and PageUp scale the SketchView. Left, Right, Down, Up translate the SketchView; Press Shift make these keys to rotate the SketchView. public void KeyDownTransform(string key, key_table__transform_view_by_key_pressing_t table) Parameters key string The key that was pressed, typically a value from the HiKey enumeration. table key_table__transform_view_by_key_pressing_t A table defining which keys trigger different transformation operations. Remarks This method is typically called from key down event handlers in the GUI implementation. KeyUp(string) Key up. This function is typically called in the GUI implementation for keyboard interaction. public void KeyUp(string key) Parameters key string Key string (W3C KeyboardEvent.key value). LockGlContext() Lock a opengl context. The function is only used for native OpenGL rendering. After lock the gl context, It should be unlock by UnlockGlContext(nint). public static nint LockGlContext() Returns nint Remarks If any other lock requires LockGlContext, the lock should better set inside LockGlContext. or it is easy to occur race condition. see design pattern of “Solid” class for reference. MouseButtonDown(long) Mouse button down. This function is typically called in the GUI implementation for mouse interaction. public void MouseButtonDown(long button) Parameters button long button MouseButtonUp(long) Mouse button up. This function is typically called in the GUI implementation for mouse interaction. public void MouseButtonUp(long button) Parameters button long button MouseDragTransform(int, int, mouse_button_table__transform_view_by_mouse_drag_t) Transform the view by mouse drag. If drag by left mouse button, Translate(double, double) is performed; If drag by right mouse button, Rotate(double, double) is performed. public void MouseDragTransform(int x, int y, mouse_button_table__transform_view_by_mouse_drag_t mouse_button_table) Parameters x int The current x-coordinate of the mouse cursor. y int The current y-coordinate of the mouse cursor. mouse_button_table mouse_button_table__transform_view_by_mouse_drag_t A table defining which mouse buttons trigger different transformation operations. Remarks The mouse_button_table__transform_view_by_mouse_drag_t structure allows you to configure which mouse buttons perform which transformations: var buttonTable = new mouse_button_table__transform_view_by_mouse_drag_t { LEFT_BUTTON = (long)HiMouseButton.Left, // For translation RIGHT_BUTTON = (long)HiMouseButton.Right // For rotation }; This method is typically called from mouse move event handlers when buttons are pressed. MouseMove(int, int) Mouse move. This function is typically called in the GUI implementation for mouse interaction. public void MouseMove(int x, int y) Parameters x int cursor X position y int cursor Y position MouseWheel(int, int) Mouse wheel move. This function is typically called in the GUI implementation for mouse interaction. public void MouseWheel(int deltaX, int deltaY) Parameters deltaX int mouse wheel delta X deltaY int mouse wheel delta Y. The traditional mouse wheel. MouseWheelTransform(int, int, double) Scale SketchView by mouse wheel. public void MouseWheelTransform(int deltaX, int deltaY, double zooming_ratio = 0.2) Parameters deltaX int mouse wheel delta X deltaY int mouse wheel delta Y. The traditional mouse wheel. zooming_ratio double The ratio used for zooming. Default is 0.2. Resize(int, int) Resize the opengl context. public void Resize(int w, int h) Parameters w int width of the viewport h int height of the viewport Rotate(double, double) Rotate the SketchView. Usually used by mouse drag on window. The rotation axis is along (delta_y, 0, delta_x). The rotation rad is 5 * Math.Sqrt(delta_y * delta_y + delta_x * delta_x) / window_height. public void Rotate(double delta_x, double delta_y) Parameters delta_x double delta x in window coordinate delta_y double delta y in window coordinate RotateAndScaleByTouchPad(Vec2d, Vec2d, Vec2d, Vec2d) Rotate and scale the SketchView based on touch pad gestures. public void RotateAndScaleByTouchPad(Vec2d prePosA, Vec2d curPosA, Vec2d prePosB, Vec2d curPosB) Parameters prePosA Vec2d The previous position of the first touch point. curPosA Vec2d The current position of the first touch point. prePosB Vec2d The previous position of the second touch point. curPosB Vec2d The current position of the second touch point. Remarks The method detects two types of gestures: Pinch gesture: When the distance between touch points changes, it triggers zooming via MouseWheelTransform(int, int, double) Rotation/Pan gesture: When touch points move together, it triggers rotation via Rotate(double, double) This method is typically used to implement touchpad or multi-touch gestures in custom UI implementations. RotateWithoutHeightAdjustment(double, double) Rotate the SketchView. Usually used by keyboard command. The rotation axis is along (delta_y, 0, delta_x). The rotation rad is Math.ToRad(Math.Sqrt(delta_y * delta_y + delta_x * delta_x)). public void RotateWithoutHeightAdjustment(double delta_x, double delta_y) Parameters delta_x double delta x in window coordinate delta_y double delta y in window coordinate SetViewToFrontView() Set the SketchView to front view. public void SetViewToFrontView() SetViewToHomeView() Set the SketchView to home view(front view). This is the same as SetViewToFrontView(). public void SetViewToHomeView() SetViewToIsometricView() Set the SketchView to isometric view. public void SetViewToIsometricView() SetViewToRightView() Set the SketchView to side view. public void SetViewToRightView() SetViewToTopView() Set the SketchView to top view. public void SetViewToTopView() Snapshot(string) Snapshot to BMP file with current canvas size. public void Snapshot(string filePath) Parameters filePath string Snapshot(string, int, int) Snapshot to BMP file. public void Snapshot(string filePath, int panelWidth, int panelHeight) Parameters filePath string panelWidth int panelHeight int Start(int, int) Start a thread of keeping Swapping buffers of OpenGL context. If the thread has running, this function does nothing. public void Start(int panelWidth, int panelHeight) Parameters panelWidth int panel width panelHeight int panel height Terminate() Terminate the opengl context swapping buffers thread from Start(int, int). If the thread has not running, this function does nothing. public void Terminate() TouchDown(int, int, int) Tracks a new touch point in the DispEngine's touch gesture system. public void TouchDown(int touchId, int x, int y) Parameters touchId int A unique identifier for the touch point. x int The x-coordinate of the touch point in screen coordinates. y int The y-coordinate of the touch point in screen coordinates. Remarks When a touch point is added, the method: Stores the touch point in the internal tracking dictionary If this is the first touch point, simulates a mouse move and left button press TouchMove(int, int, int) Updates the position of an existing touch point. public void TouchMove(int touchId, int x, int y) Parameters touchId int The unique identifier of the touch point to update. x int The new x-coordinate of the touch point in screen coordinates. y int The new y-coordinate of the touch point in screen coordinates. Remarks The method handles different gestures based on the number of active touch points: Single touch: Performs panning (translation) like mouse dragging Two touches: Performs pinch-to-zoom and rotation gestures TouchUp(int) Removes a touch point from tracking when the touch is released. public void TouchUp(int touchId) Parameters touchId int The unique identifier of the touch point to remove. Remarks When a touch point is released, the method: Removes the touch point from internal tracking dictionaries If all touch points are released, simulates a mouse button release If transitioning from multi-touch to single-touch, updates the mouse position to prevent “teleportation” Translate(double, double) Translate the SketchView. Usually used by mouse drag on window. The translation is (delta_x * 2.0 / h, 0, -delta_y* 2.0 / h). Where h is window height. public void Translate(double delta_x, double delta_y) Parameters delta_x double delta x in window coordinate delta_y double delta y in window coordinate TurnBackView() Rotate view 180 degrees around Z axis to switch to back view. public void TurnBackView() UnlockGlContext(nint) Unlock opengl context. The function is only used for native OpenGL rendering. The function unlock the opengl context for LockGlContext(). public static void UnlockGlContext(nint disp_torch_p) Parameters disp_torch_p nint Events FinishingDisp Event at the begining of FinishDisp() public static event Action FinishingDisp Event Type Action ImageRequestAfterBufferSwapped Triggered after swap buffer of gl context. public event DispEngine.ImageRequestedDelegate ImageRequestAfterBufferSwapped Event Type DispEngine.ImageRequestedDelegate" + "summary": "Class DispEngine Namespace Hi.Disp Assembly HiDisp.dll HiAPI display engine. public class DispEngine : IDisposable, IGetDispEngine Inheritance object DispEngine Implements IDisposable IGetDispEngine 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 DispEngine is the core rendering and interaction engine for HiAPI applications. Related Documentation Using RenderingCanvas with DispEngine Building Your Own Rendering Canvas The DispEngine provides a unified API for handling rendering, user interaction, and touch gestures across different UI frameworks. Constructors DispEngine(IDisplayee) Ctor. The SetViewToHomeView() is called in this function. public DispEngine(IDisplayee displayee) Parameters displayee IDisplayee The displayee to render. DispEngine(params IDisplayee[]) Ctor. public DispEngine(params IDisplayee[] displayees) Parameters displayees IDisplayee[] displayees to render. Fields CoreDll Core dll path. public const string CoreDll = \"core.dll\" Field Value string defaultFontFile Sentinel selecting the embedded default font (Noto Sans CJK TC, SIL Open Font License 1.1). Passing this value (or null) to Init(string) loads the embedded font from memory without writing any file to disk. This is not a path; no file of this name is looked up or created. public const string defaultFontFile = \"(embedded)\" Field Value string Properties BackgroundColor Background color public Vec3d BackgroundColor { get; set; } Property Value Vec3d BackgroundOpacity Background opacity. Range is from 0 to 1. public double BackgroundOpacity { get; set; } Property Value double ContextProjDepth Gets the projection depth of the current context. public static double ContextProjDepth { get; } Property Value double CursorOffsetX Internal Use. public int CursorOffsetX { get; } Property Value int CursorOffsetY Internal Use. public int CursorOffsetY { get; } Property Value int CursorX Internal Use. public int CursorX { get; set; } Property Value int CursorY Internal Use. public int CursorY { get; set; } Property Value int Displayee Displayee to be rendered in the rendering loop. The SetViewToHomeView() is called in this function. public IDisplayee Displayee { get; set; } Property Value IDisplayee EnableSuppressDefaultLogo Get or Set to Enable Suppress Default Logo. public static bool EnableSuppressDefaultLogo { get; set; } Property Value bool Exceptions InvalidOperationException Thrown when SuppressDefaultLogo license is not logged in. FontFile Font file. Null while the embedded default font (loaded from memory) is in use. public static string FontFile { get; set; } Property Value string IdleBackoffHeartbeat Idle backoff heartbeat. While the rendered image stays identical, no input arrives and progressive refinement has converged, the engine re-renders only once per this interval instead of every RefreshingPeriod. Zero (the default) disables the backoff. Any input, scene invalidation or an explicit ClearCache() restores the full refresh rate immediately. public TimeSpan IdleBackoffHeartbeat { set; } Property Value TimeSpan IsDisposed Gets a value indicating whether this engine has been disposed. All native-backed members become no-ops afterwards (value getters return neutral defaults). public bool IsDisposed { get; } Property Value bool IsOnDispThread Gets a value indicating whether the current thread is the display thread. public static bool IsOnDispThread { get; } Property Value bool IsVisible The anime stop running if the value is false; otherwise, the anime starts or keeps running. public bool IsVisible { get; set; } Property Value bool Model public Mat4d Model { get; set; } Property Value Mat4d Model matrix in MVP convention. This Model matrix is the first matrix in Hi.Disp.Bind.modelMatStack. PixelProj public Mat4d PixelProj { get; set; } Property Value Mat4d Pixel part of Projection matrix in MVP convention. Projection matrix = ScaleProj * PixelProj; PreCursorX Internal Use. public int PreCursorX { get; set; } Property Value int PreCursorY Internal Use. public int PreCursorY { get; set; } Property Value int PrincipleView public Mat4d PrincipleView { get; set; } Property Value Mat4d view = PrincipleView * SketchView. Where view matrix is in MVP convention. Remarks The default value is new Mat4d(new Vec3d(1, 0, 0), -Math.PI / 2). This make the 2D plane from xy plane to xz plane. The xz plane is much suit for 3D engineering display. RefreshingPeriod Image refreshing period. public TimeSpan RefreshingPeriod { get; set; } Property Value TimeSpan ScaleProj public Mat4d ScaleProj { get; set; } Property Value Mat4d Scale part of Projection matrix in MVP convention. Projection matrix = ScaleProj * PixelProj; SketchView view = PrincipleView * SketchView. Where view matrix is in MVP convention. public Mat4d SketchView { get; set; } Property Value Mat4d SuppressHoverPickWhileDragging When true, mouse moves with a button held do not trigger the hover pick pass (which re-renders the whole scene in picking mode). Enable this for hosts whose drags are pure camera transforms; keep the default (false) when API users drag a picked object via Pickable events. public bool SuppressHoverPickWhileDragging { set; } Property Value bool Methods ClearCache() Clears the display engine cache. public void ClearCache() DeleteDispContext() Deletes the current display context. public static void DeleteDispContext() Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool EnqueueDispose(IDisposable) Enqueues a disposable object to be disposed on the display thread. public static Task EnqueueDispose(IDisposable disposable) Parameters disposable IDisposable The disposable object to be disposed Returns Task A task representing the disposal operation EnqueueTask(Task) Enqueues a task to be executed on the display thread. public static Task EnqueueTask(Task task) Parameters task Task The task to be executed Returns Task The enqueued task EnqueueTask(Task) Enqueues a task to be executed on the display thread. public static Task EnqueueTask(Task task) Parameters task Task The task to be executed Returns Task The enqueued task Type Parameters T The type of the task result ~DispEngine() protected ~DispEngine() FinishDisp() Elegantly end the rendering core. Probably not essential. public static void FinishDisp() GetDispEngine() Get DispEngine. public DispEngine GetDispEngine() Returns DispEngine DispEngine Init(string) Initializes the display engine system. public static void Init(string fontFile = null) Parameters fontFile string The font file to use. If null, the embedded default font is loaded from memory and no file is written to disk. IsKeyPressed(string) Checks if a specific keyboard key is currently pressed. Delegates to IsKeyPressed(string). public bool IsKeyPressed(string key) Parameters key string Key string (W3C KeyboardEvent.key value, e.g. “Alt”, “ArrowLeft”). Returns bool True if the specified key is pressed; otherwise, false. IsMouseButtonPressed(long) Checks if a specific mouse button is currently pressed. Delegates to IsMouseButtonPressed(long). public bool IsMouseButtonPressed(long mouseButton) Parameters mouseButton long The mouse button to check, typically a value from the HiMouseButton enumeration. Returns bool True if the specified mouse button is pressed; otherwise, false. KeyDown(string) Key down. This function is typically called in the GUI implementation for keyboard interaction. public void KeyDown(string key) Parameters key string Key string (W3C KeyboardEvent.key value, e.g. “Alt”, “ArrowLeft”, “a”). KeyDownTransform(string, key_table__transform_view_by_key_pressing_t) Transform SketchView by key. Home, F1, F2, F3, F4 call SetViewToHomeView(), SetViewToFrontView(), SetViewToRightView(), SetViewToTopView(), SetViewToIsometricView() respectively. PageDown and PageUp scale the SketchView. Left, Right, Down, Up translate the SketchView; Press Shift make these keys to rotate the SketchView. public void KeyDownTransform(string key, key_table__transform_view_by_key_pressing_t table) Parameters key string The key that was pressed, typically a value from the HiKey enumeration. table key_table__transform_view_by_key_pressing_t A table defining which keys trigger different transformation operations. Remarks This method is typically called from key down event handlers in the GUI implementation. KeyUp(string) Key up. This function is typically called in the GUI implementation for keyboard interaction. public void KeyUp(string key) Parameters key string Key string (W3C KeyboardEvent.key value). LockGlContext() Lock a opengl context. The function is only used for native OpenGL rendering. After lock the gl context, It should be unlock by UnlockGlContext(nint). public static nint LockGlContext() Returns nint Remarks If any other lock requires LockGlContext, the lock should better set inside LockGlContext. or it is easy to occur race condition. see design pattern of “Solid” class for reference. MouseButtonDown(long) Mouse button down. This function is typically called in the GUI implementation for mouse interaction. public void MouseButtonDown(long button) Parameters button long button MouseButtonUp(long) Mouse button up. This function is typically called in the GUI implementation for mouse interaction. public void MouseButtonUp(long button) Parameters button long button MouseDragTransform(int, int, mouse_button_table__transform_view_by_mouse_drag_t) Transform the view by mouse drag. If drag by left mouse button, Translate(double, double) is performed; If drag by right mouse button, Rotate(double, double) is performed. public void MouseDragTransform(int x, int y, mouse_button_table__transform_view_by_mouse_drag_t mouse_button_table) Parameters x int The current x-coordinate of the mouse cursor. y int The current y-coordinate of the mouse cursor. mouse_button_table mouse_button_table__transform_view_by_mouse_drag_t A table defining which mouse buttons trigger different transformation operations. Remarks The mouse_button_table__transform_view_by_mouse_drag_t structure allows you to configure which mouse buttons perform which transformations: var buttonTable = new mouse_button_table__transform_view_by_mouse_drag_t { LEFT_BUTTON = (long)HiMouseButton.Left, // For translation RIGHT_BUTTON = (long)HiMouseButton.Right // For rotation }; This method is typically called from mouse move event handlers when buttons are pressed. MouseMove(int, int) Mouse move. This function is typically called in the GUI implementation for mouse interaction. public void MouseMove(int x, int y) Parameters x int cursor X position y int cursor Y position MouseWheel(int, int) Mouse wheel move. This function is typically called in the GUI implementation for mouse interaction. public void MouseWheel(int deltaX, int deltaY) Parameters deltaX int mouse wheel delta X deltaY int mouse wheel delta Y. The traditional mouse wheel. MouseWheelTransform(int, int, double) Scale SketchView by mouse wheel. public void MouseWheelTransform(int deltaX, int deltaY, double zooming_ratio = 0.2) Parameters deltaX int mouse wheel delta X deltaY int mouse wheel delta Y. The traditional mouse wheel. zooming_ratio double The ratio used for zooming. Default is 0.2. Resize(int, int) Resize the opengl context. public void Resize(int w, int h) Parameters w int width of the viewport h int height of the viewport Rotate(double, double) Rotate the SketchView. Usually used by mouse drag on window. The rotation axis is along (delta_y, 0, delta_x). The rotation rad is 5 * Math.Sqrt(delta_y * delta_y + delta_x * delta_x) / window_height. public void Rotate(double delta_x, double delta_y) Parameters delta_x double delta x in window coordinate delta_y double delta y in window coordinate RotateAndScaleByTouchPad(Vec2d, Vec2d, Vec2d, Vec2d) Rotate and scale the SketchView based on touch pad gestures. public void RotateAndScaleByTouchPad(Vec2d prePosA, Vec2d curPosA, Vec2d prePosB, Vec2d curPosB) Parameters prePosA Vec2d The previous position of the first touch point. curPosA Vec2d The current position of the first touch point. prePosB Vec2d The previous position of the second touch point. curPosB Vec2d The current position of the second touch point. Remarks The method detects two types of gestures: Pinch gesture: When the distance between touch points changes, it triggers zooming via MouseWheelTransform(int, int, double) Rotation/Pan gesture: When touch points move together, it triggers rotation via Rotate(double, double) This method is typically used to implement touchpad or multi-touch gestures in custom UI implementations. RotateWithoutHeightAdjustment(double, double) Rotate the SketchView. Usually used by keyboard command. The rotation axis is along (delta_y, 0, delta_x). The rotation rad is Math.ToRad(Math.Sqrt(delta_y * delta_y + delta_x * delta_x)). public void RotateWithoutHeightAdjustment(double delta_x, double delta_y) Parameters delta_x double delta x in window coordinate delta_y double delta y in window coordinate SetViewToFrontView() Set the SketchView to front view. public void SetViewToFrontView() SetViewToHomeView() Set the SketchView to home view(front view). This is the same as SetViewToFrontView(). public void SetViewToHomeView() SetViewToIsometricView() Set the SketchView to isometric view. public void SetViewToIsometricView() SetViewToRightView() Set the SketchView to side view. public void SetViewToRightView() SetViewToTopView() Set the SketchView to top view. public void SetViewToTopView() Snapshot(string) Snapshot to BMP file with current canvas size. public void Snapshot(string filePath) Parameters filePath string Snapshot(string, int, int) Snapshot to BMP file. public void Snapshot(string filePath, int panelWidth, int panelHeight) Parameters filePath string panelWidth int panelHeight int Start(int, int) Start a thread of keeping Swapping buffers of OpenGL context. If the thread has running, this function does nothing. public void Start(int panelWidth, int panelHeight) Parameters panelWidth int panel width panelHeight int panel height Terminate() Terminate the opengl context swapping buffers thread from Start(int, int). If the thread has not running, this function does nothing. public void Terminate() TouchDown(int, int, int) Tracks a new touch point in the DispEngine's touch gesture system. public void TouchDown(int touchId, int x, int y) Parameters touchId int A unique identifier for the touch point. x int The x-coordinate of the touch point in screen coordinates. y int The y-coordinate of the touch point in screen coordinates. Remarks When a touch point is added, the method: Stores the touch point in the internal tracking dictionary If this is the first touch point, simulates a mouse move and left button press TouchMove(int, int, int) Updates the position of an existing touch point. public void TouchMove(int touchId, int x, int y) Parameters touchId int The unique identifier of the touch point to update. x int The new x-coordinate of the touch point in screen coordinates. y int The new y-coordinate of the touch point in screen coordinates. Remarks The method handles different gestures based on the number of active touch points: Single touch: Performs panning (translation) like mouse dragging Two touches: Performs pinch-to-zoom and rotation gestures TouchUp(int) Removes a touch point from tracking when the touch is released. public void TouchUp(int touchId) Parameters touchId int The unique identifier of the touch point to remove. Remarks When a touch point is released, the method: Removes the touch point from internal tracking dictionaries If all touch points are released, simulates a mouse button release If transitioning from multi-touch to single-touch, updates the mouse position to prevent “teleportation” Translate(double, double) Translate the SketchView. Usually used by mouse drag on window. The translation is (delta_x * 2.0 / h, 0, -delta_y* 2.0 / h). Where h is window height. public void Translate(double delta_x, double delta_y) Parameters delta_x double delta x in window coordinate delta_y double delta y in window coordinate TurnBackView() Rotate view 180 degrees around Z axis to switch to back view. public void TurnBackView() UnlockGlContext(nint) Unlock opengl context. The function is only used for native OpenGL rendering. The function unlock the opengl context for LockGlContext(). public static void UnlockGlContext(nint disp_torch_p) Parameters disp_torch_p nint Events FinishingDisp Event at the begining of FinishDisp() public static event Action FinishingDisp Event Type Action ImageRequestAfterBufferSwapped Triggered after swap buffer of gl context. public event DispEngine.ImageRequestedDelegate ImageRequestAfterBufferSwapped Event Type DispEngine.ImageRequestedDelegate" }, "api/Hi.Disp.DispEngineConfig.html": { "href": "api/Hi.Disp.DispEngineConfig.html", @@ -1132,7 +1177,7 @@ "api/Hi.Disp.DispList.html": { "href": "api/Hi.Disp.DispList.html", "title": "Class DispList | HiAPI-C# 2025", - "summary": "Class DispList Namespace Hi.Disp Assembly HiDisp.dll A combination of IDisplayee and SynList. public class DispList : SynList, IList, ICollection, IEnumerable, IEnumerable, IDisplayee, IExpandToBox3d Inheritance object SynList DispList Implements IList ICollection IEnumerable IEnumerable IDisplayee IExpandToBox3d Inherited Members SynList.Lock SynList.this[int] SynList.Count SynList.IsReadOnly SynList.Data SynList.Add(IDisplayee) SynList.Clear() SynList.Contains(IDisplayee) SynList.CopyTo(IDisplayee[], int) SynList.GetEnumerator() SynList.IndexOf(IDisplayee) SynList.Insert(int, IDisplayee) SynList.Remove(IDisplayee) SynList.RemoveAt(int) SynList.ToList() 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) DispUtil.Display(IDisplayee, Bind, Mat4d) StringUtil.ToDotSplitedString(IEnumerable) ListUtil.GetCeilBySeek(IList, TKey, Func, out TItem, out int, int, SeekDirection) ListUtil.GetCeilIndexBySeek(IList, TKey, Func, out int, int, SeekDirection) ListUtil.GetCeilIndex(IList, ItemKey, Func, out int) ListUtil.GetCeilIndex(IList, TKey, Func, out int) ListUtil.GetCeil(IList, TKey, Func, out Item) ListUtil.GetFloorBySeek(IList, TKey, Func, out TItem, out int, int, SeekDirection) ListUtil.GetFloorIndexBySeek(IList, TKey, Func, out int, int, SeekDirection) ListUtil.GetFloorIndex(IList, ItemKey, Func, out int) ListUtil.GetFloorIndex(IList, TKey, Func, out int) ListUtil.GetFloor(IList, TKey, Func, out Item) ListUtil.GetIndexBasedEnumerable(IList) ListUtil.GetIndexBasedEnumerable(IList, int, int) ListUtil.GetIndexByBinarySearch(IList, TItem) ListUtil.GetIndexByBinarySearch(IList, TItem, IComparer) ListUtil.GetIndexByBinarySearch(IList, TSearch, Func) ListUtil.GetNearestIndex(IList, TItemKey, Func, out int) ListUtil.GetNearestIndex(IList, TItemKey, Func, Func, out int) ListUtil.GetSubList(IList, int, int) ListUtil.Swap(IList, int, int) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors DispList(DispList) public DispList(DispList src) Parameters src DispList DispList(params IDisplayee[]) public DispList(params IDisplayee[] displayees) Parameters displayees IDisplayee[] DispList(IEnumerable) public DispList(IEnumerable src) Parameters src IEnumerable DispList(int) public DispList(int cap = 8) Parameters cap int Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box" + "summary": "Class DispList Namespace Hi.Disp Assembly HiDisp.dll A combination of IDisplayee and SynList. public class DispList : SynList, IList, ICollection, IEnumerable, IEnumerable, IDisplayee, IExpandToBox3d Inheritance object SynList DispList Implements IList ICollection IEnumerable IEnumerable IDisplayee IExpandToBox3d Inherited Members SynList.Lock SynList.this[int] SynList.Count SynList.IsReadOnly SynList.Data SynList.Add(IDisplayee) SynList.AddAndGetIndex(IDisplayee) SynList.Clear() SynList.Contains(IDisplayee) SynList.CopyTo(IDisplayee[], int) SynList.GetEnumerator() SynList.IndexOf(IDisplayee) SynList.Insert(int, IDisplayee) SynList.Remove(IDisplayee) SynList.RemoveAt(int) SynList.ToList() 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) DispUtil.Display(IDisplayee, Bind, Mat4d) StringUtil.ToDotSplitedString(IEnumerable) ListUtil.GetCeilBySeek(IList, TKey, Func, out TItem, out int, int, SeekDirection) ListUtil.GetCeilIndexBySeek(IList, TKey, Func, out int, int, SeekDirection) ListUtil.GetCeilIndex(IList, ItemKey, Func, out int) ListUtil.GetCeilIndex(IList, TKey, Func, out int) ListUtil.GetCeil(IList, TKey, Func, out Item) ListUtil.GetFloorBySeek(IList, TKey, Func, out TItem, out int, int, SeekDirection) ListUtil.GetFloorIndexBySeek(IList, TKey, Func, out int, int, SeekDirection) ListUtil.GetFloorIndex(IList, ItemKey, Func, out int) ListUtil.GetFloorIndex(IList, TKey, Func, out int) ListUtil.GetFloor(IList, TKey, Func, out Item) ListUtil.GetIndexBasedEnumerable(IList) ListUtil.GetIndexBasedEnumerable(IList, int, int) ListUtil.GetIndexByBinarySearch(IList, TItem) ListUtil.GetIndexByBinarySearch(IList, TItem, IComparer) ListUtil.GetIndexByBinarySearch(IList, TSearch, Func) ListUtil.GetNearestIndex(IList, TItemKey, Func, out int) ListUtil.GetNearestIndex(IList, TItemKey, Func, Func, out int) ListUtil.GetSubList(IList, int, int) ListUtil.Swap(IList, int, int) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors DispList(DispList) public DispList(DispList src) Parameters src DispList DispList(params IDisplayee[]) public DispList(params IDisplayee[] displayees) Parameters displayees IDisplayee[] DispList(IEnumerable) public DispList(IEnumerable src) Parameters src IEnumerable DispList(int) public DispList(int cap = 8) Parameters cap int Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box" }, "api/Hi.Disp.DispUtil.html": { "href": "api/Hi.Disp.DispUtil.html", @@ -1182,7 +1227,7 @@ "api/Hi.Disp.GL.html": { "href": "api/Hi.Disp.GL.html", "title": "Class GL | HiAPI-C# 2025", - "summary": "Class GL Namespace Hi.Disp Assembly HiDisp.dll Native opengl functions wrapper. public static class GL Inheritance object GL Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields GL_ACTIVE_ATTRIBUTES public const int GL_ACTIVE_ATTRIBUTES = 35721 Field Value int GL_ACTIVE_ATTRIBUTE_MAX_LENGTH public const int GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 35722 Field Value int GL_ACTIVE_TEXTURE public const int GL_ACTIVE_TEXTURE = 34016 Field Value int GL_ACTIVE_UNIFORMS public const int GL_ACTIVE_UNIFORMS = 35718 Field Value int GL_ACTIVE_UNIFORM_BLOCKS public const int GL_ACTIVE_UNIFORM_BLOCKS = 35382 Field Value int GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH public const int GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 35381 Field Value int GL_ACTIVE_UNIFORM_MAX_LENGTH public const int GL_ACTIVE_UNIFORM_MAX_LENGTH = 35719 Field Value int GL_ALIASED_LINE_WIDTH_RANGE public const int GL_ALIASED_LINE_WIDTH_RANGE = 33902 Field Value int GL_ALPHA public const int GL_ALPHA = 6406 Field Value int GL_ALREADY_SIGNALED public const int GL_ALREADY_SIGNALED = 37146 Field Value int GL_ALWAYS public const int GL_ALWAYS = 519 Field Value int GL_AND public const int GL_AND = 5377 Field Value int GL_AND_INVERTED public const int GL_AND_INVERTED = 5380 Field Value int GL_AND_REVERSE public const int GL_AND_REVERSE = 5378 Field Value int GL_ANY_SAMPLES_PASSED public const int GL_ANY_SAMPLES_PASSED = 35887 Field Value int GL_ARRAY_BUFFER public const int GL_ARRAY_BUFFER = 34962 Field Value int GL_ARRAY_BUFFER_BINDING public const int GL_ARRAY_BUFFER_BINDING = 34964 Field Value int GL_ATTACHED_SHADERS public const int GL_ATTACHED_SHADERS = 35717 Field Value int GL_BACK public const int GL_BACK = 1029 Field Value int GL_BACK_LEFT public const int GL_BACK_LEFT = 1026 Field Value int GL_BACK_RIGHT public const int GL_BACK_RIGHT = 1027 Field Value int GL_BGR public const int GL_BGR = 32992 Field Value int GL_BGRA public const int GL_BGRA = 32993 Field Value int GL_BGRA_INTEGER public const int GL_BGRA_INTEGER = 36251 Field Value int GL_BGR_INTEGER public const int GL_BGR_INTEGER = 36250 Field Value int GL_BLEND public const int GL_BLEND = 3042 Field Value int GL_BLEND_COLOR public const int GL_BLEND_COLOR = 32773 Field Value int GL_BLEND_DST public const int GL_BLEND_DST = 3040 Field Value int GL_BLEND_DST_ALPHA public const int GL_BLEND_DST_ALPHA = 32970 Field Value int GL_BLEND_DST_RGB public const int GL_BLEND_DST_RGB = 32968 Field Value int GL_BLEND_EQUATION public const int GL_BLEND_EQUATION = 32777 Field Value int GL_BLEND_EQUATION_ALPHA public const int GL_BLEND_EQUATION_ALPHA = 34877 Field Value int GL_BLEND_EQUATION_RGB public const int GL_BLEND_EQUATION_RGB = 32777 Field Value int GL_BLEND_SRC public const int GL_BLEND_SRC = 3041 Field Value int GL_BLEND_SRC_ALPHA public const int GL_BLEND_SRC_ALPHA = 32971 Field Value int GL_BLEND_SRC_RGB public const int GL_BLEND_SRC_RGB = 32969 Field Value int GL_BLUE public const int GL_BLUE = 6405 Field Value int GL_BLUE_INTEGER public const int GL_BLUE_INTEGER = 36246 Field Value int GL_BOOL public const int GL_BOOL = 35670 Field Value int GL_BOOL_VEC2 public const int GL_BOOL_VEC2 = 35671 Field Value int GL_BOOL_VEC3 public const int GL_BOOL_VEC3 = 35672 Field Value int GL_BOOL_VEC4 public const int GL_BOOL_VEC4 = 35673 Field Value int GL_BUFFER_ACCESS public const int GL_BUFFER_ACCESS = 35003 Field Value int GL_BUFFER_ACCESS_FLAGS public const int GL_BUFFER_ACCESS_FLAGS = 37151 Field Value int GL_BUFFER_MAPPED public const int GL_BUFFER_MAPPED = 35004 Field Value int GL_BUFFER_MAP_LENGTH public const int GL_BUFFER_MAP_LENGTH = 37152 Field Value int GL_BUFFER_MAP_OFFSET public const int GL_BUFFER_MAP_OFFSET = 37153 Field Value int GL_BUFFER_MAP_POINTER public const int GL_BUFFER_MAP_POINTER = 35005 Field Value int GL_BUFFER_SIZE public const int GL_BUFFER_SIZE = 34660 Field Value int GL_BUFFER_USAGE public const int GL_BUFFER_USAGE = 34661 Field Value int GL_BYTE public const int GL_BYTE = 5120 Field Value int GL_CCW public const int GL_CCW = 2305 Field Value int GL_CLAMP_READ_COLOR public const int GL_CLAMP_READ_COLOR = 35100 Field Value int GL_CLAMP_TO_BORDER public const int GL_CLAMP_TO_BORDER = 33069 Field Value int GL_CLAMP_TO_EDGE public const int GL_CLAMP_TO_EDGE = 33071 Field Value int GL_CLEAR public const int GL_CLEAR = 5376 Field Value int GL_CLIP_DISTANCE0 public const int GL_CLIP_DISTANCE0 = 12288 Field Value int GL_CLIP_DISTANCE1 public const int GL_CLIP_DISTANCE1 = 12289 Field Value int GL_CLIP_DISTANCE2 public const int GL_CLIP_DISTANCE2 = 12290 Field Value int GL_CLIP_DISTANCE3 public const int GL_CLIP_DISTANCE3 = 12291 Field Value int GL_CLIP_DISTANCE4 public const int GL_CLIP_DISTANCE4 = 12292 Field Value int GL_CLIP_DISTANCE5 public const int GL_CLIP_DISTANCE5 = 12293 Field Value int GL_CLIP_DISTANCE6 public const int GL_CLIP_DISTANCE6 = 12294 Field Value int GL_CLIP_DISTANCE7 public const int GL_CLIP_DISTANCE7 = 12295 Field Value int GL_COLOR public const int GL_COLOR = 6144 Field Value int GL_COLOR_ATTACHMENT0 public const int GL_COLOR_ATTACHMENT0 = 36064 Field Value int GL_COLOR_ATTACHMENT1 public const int GL_COLOR_ATTACHMENT1 = 36065 Field Value int GL_COLOR_ATTACHMENT10 public const int GL_COLOR_ATTACHMENT10 = 36074 Field Value int GL_COLOR_ATTACHMENT11 public const int GL_COLOR_ATTACHMENT11 = 36075 Field Value int GL_COLOR_ATTACHMENT12 public const int GL_COLOR_ATTACHMENT12 = 36076 Field Value int GL_COLOR_ATTACHMENT13 public const int GL_COLOR_ATTACHMENT13 = 36077 Field Value int GL_COLOR_ATTACHMENT14 public const int GL_COLOR_ATTACHMENT14 = 36078 Field Value int GL_COLOR_ATTACHMENT15 public const int GL_COLOR_ATTACHMENT15 = 36079 Field Value int GL_COLOR_ATTACHMENT16 public const int GL_COLOR_ATTACHMENT16 = 36080 Field Value int GL_COLOR_ATTACHMENT17 public const int GL_COLOR_ATTACHMENT17 = 36081 Field Value int GL_COLOR_ATTACHMENT18 public const int GL_COLOR_ATTACHMENT18 = 36082 Field Value int GL_COLOR_ATTACHMENT19 public const int GL_COLOR_ATTACHMENT19 = 36083 Field Value int GL_COLOR_ATTACHMENT2 public const int GL_COLOR_ATTACHMENT2 = 36066 Field Value int GL_COLOR_ATTACHMENT20 public const int GL_COLOR_ATTACHMENT20 = 36084 Field Value int GL_COLOR_ATTACHMENT21 public const int GL_COLOR_ATTACHMENT21 = 36085 Field Value int GL_COLOR_ATTACHMENT22 public const int GL_COLOR_ATTACHMENT22 = 36086 Field Value int GL_COLOR_ATTACHMENT23 public const int GL_COLOR_ATTACHMENT23 = 36087 Field Value int GL_COLOR_ATTACHMENT24 public const int GL_COLOR_ATTACHMENT24 = 36088 Field Value int GL_COLOR_ATTACHMENT25 public const int GL_COLOR_ATTACHMENT25 = 36089 Field Value int GL_COLOR_ATTACHMENT26 public const int GL_COLOR_ATTACHMENT26 = 36090 Field Value int GL_COLOR_ATTACHMENT27 public const int GL_COLOR_ATTACHMENT27 = 36091 Field Value int GL_COLOR_ATTACHMENT28 public const int GL_COLOR_ATTACHMENT28 = 36092 Field Value int GL_COLOR_ATTACHMENT29 public const int GL_COLOR_ATTACHMENT29 = 36093 Field Value int GL_COLOR_ATTACHMENT3 public const int GL_COLOR_ATTACHMENT3 = 36067 Field Value int GL_COLOR_ATTACHMENT30 public const int GL_COLOR_ATTACHMENT30 = 36094 Field Value int GL_COLOR_ATTACHMENT31 public const int GL_COLOR_ATTACHMENT31 = 36095 Field Value int GL_COLOR_ATTACHMENT4 public const int GL_COLOR_ATTACHMENT4 = 36068 Field Value int GL_COLOR_ATTACHMENT5 public const int GL_COLOR_ATTACHMENT5 = 36069 Field Value int GL_COLOR_ATTACHMENT6 public const int GL_COLOR_ATTACHMENT6 = 36070 Field Value int GL_COLOR_ATTACHMENT7 public const int GL_COLOR_ATTACHMENT7 = 36071 Field Value int GL_COLOR_ATTACHMENT8 public const int GL_COLOR_ATTACHMENT8 = 36072 Field Value int GL_COLOR_ATTACHMENT9 public const int GL_COLOR_ATTACHMENT9 = 36073 Field Value int GL_COLOR_BUFFER_BIT public const int GL_COLOR_BUFFER_BIT = 16384 Field Value int GL_COLOR_CLEAR_VALUE public const int GL_COLOR_CLEAR_VALUE = 3106 Field Value int GL_COLOR_LOGIC_OP public const int GL_COLOR_LOGIC_OP = 3058 Field Value int GL_COLOR_WRITEMASK public const int GL_COLOR_WRITEMASK = 3107 Field Value int GL_COMPARE_REF_TO_TEXTURE public const int GL_COMPARE_REF_TO_TEXTURE = 34894 Field Value int GL_COMPILE_STATUS public const int GL_COMPILE_STATUS = 35713 Field Value int GL_COMPRESSED_RED public const int GL_COMPRESSED_RED = 33317 Field Value int GL_COMPRESSED_RED_RGTC1 public const int GL_COMPRESSED_RED_RGTC1 = 36283 Field Value int GL_COMPRESSED_RG public const int GL_COMPRESSED_RG = 33318 Field Value int GL_COMPRESSED_RGB public const int GL_COMPRESSED_RGB = 34029 Field Value int GL_COMPRESSED_RGBA public const int GL_COMPRESSED_RGBA = 34030 Field Value int GL_COMPRESSED_RG_RGTC2 public const int GL_COMPRESSED_RG_RGTC2 = 36285 Field Value int GL_COMPRESSED_SIGNED_RED_RGTC1 public const int GL_COMPRESSED_SIGNED_RED_RGTC1 = 36284 Field Value int GL_COMPRESSED_SIGNED_RG_RGTC2 public const int GL_COMPRESSED_SIGNED_RG_RGTC2 = 36286 Field Value int GL_COMPRESSED_SRGB public const int GL_COMPRESSED_SRGB = 35912 Field Value int GL_COMPRESSED_SRGB_ALPHA public const int GL_COMPRESSED_SRGB_ALPHA = 35913 Field Value int GL_COMPRESSED_TEXTURE_FORMATS public const int GL_COMPRESSED_TEXTURE_FORMATS = 34467 Field Value int GL_CONDITION_SATISFIED public const int GL_CONDITION_SATISFIED = 37148 Field Value int GL_CONSTANT_ALPHA public const int GL_CONSTANT_ALPHA = 32771 Field Value int GL_CONSTANT_COLOR public const int GL_CONSTANT_COLOR = 32769 Field Value int GL_CONTEXT_COMPATIBILITY_PROFILE_BIT public const int GL_CONTEXT_COMPATIBILITY_PROFILE_BIT = 2 Field Value int GL_CONTEXT_CORE_PROFILE_BIT public const int GL_CONTEXT_CORE_PROFILE_BIT = 1 Field Value int GL_CONTEXT_FLAGS public const int GL_CONTEXT_FLAGS = 33310 Field Value int GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT public const int GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = 1 Field Value int GL_CONTEXT_PROFILE_MASK public const int GL_CONTEXT_PROFILE_MASK = 37158 Field Value int GL_COPY public const int GL_COPY = 5379 Field Value int GL_COPY_INVERTED public const int GL_COPY_INVERTED = 5388 Field Value int GL_COPY_READ_BUFFER public const int GL_COPY_READ_BUFFER = 36662 Field Value int GL_COPY_WRITE_BUFFER public const int GL_COPY_WRITE_BUFFER = 36663 Field Value int GL_CULL_FACE public const int GL_CULL_FACE = 2884 Field Value int GL_CULL_FACE_MODE public const int GL_CULL_FACE_MODE = 2885 Field Value int GL_CURRENT_PROGRAM public const int GL_CURRENT_PROGRAM = 35725 Field Value int GL_CURRENT_QUERY public const int GL_CURRENT_QUERY = 34917 Field Value int GL_CURRENT_VERTEX_ATTRIB public const int GL_CURRENT_VERTEX_ATTRIB = 34342 Field Value int GL_CW public const int GL_CW = 2304 Field Value int GL_DECR public const int GL_DECR = 7683 Field Value int GL_DECR_WRAP public const int GL_DECR_WRAP = 34056 Field Value int GL_DELETE_STATUS public const int GL_DELETE_STATUS = 35712 Field Value int GL_DEPTH public const int GL_DEPTH = 6145 Field Value int GL_DEPTH24_STENCIL8 public const int GL_DEPTH24_STENCIL8 = 35056 Field Value int GL_DEPTH32F_STENCIL8 public const int GL_DEPTH32F_STENCIL8 = 36013 Field Value int GL_DEPTH_ATTACHMENT public const int GL_DEPTH_ATTACHMENT = 36096 Field Value int GL_DEPTH_BUFFER_BIT public const int GL_DEPTH_BUFFER_BIT = 256 Field Value int GL_DEPTH_CLAMP public const int GL_DEPTH_CLAMP = 34383 Field Value int GL_DEPTH_CLEAR_VALUE public const int GL_DEPTH_CLEAR_VALUE = 2931 Field Value int GL_DEPTH_COMPONENT public const int GL_DEPTH_COMPONENT = 6402 Field Value int GL_DEPTH_COMPONENT16 public const int GL_DEPTH_COMPONENT16 = 33189 Field Value int GL_DEPTH_COMPONENT24 public const int GL_DEPTH_COMPONENT24 = 33190 Field Value int GL_DEPTH_COMPONENT32 public const int GL_DEPTH_COMPONENT32 = 33191 Field Value int GL_DEPTH_COMPONENT32F public const int GL_DEPTH_COMPONENT32F = 36012 Field Value int GL_DEPTH_FUNC public const int GL_DEPTH_FUNC = 2932 Field Value int GL_DEPTH_RANGE public const int GL_DEPTH_RANGE = 2928 Field Value int GL_DEPTH_STENCIL public const int GL_DEPTH_STENCIL = 34041 Field Value int GL_DEPTH_STENCIL_ATTACHMENT public const int GL_DEPTH_STENCIL_ATTACHMENT = 33306 Field Value int GL_DEPTH_TEST public const int GL_DEPTH_TEST = 2929 Field Value int GL_DEPTH_WRITEMASK public const int GL_DEPTH_WRITEMASK = 2930 Field Value int GL_DITHER public const int GL_DITHER = 3024 Field Value int GL_DONT_CARE public const int GL_DONT_CARE = 4352 Field Value int GL_DOUBLE public const int GL_DOUBLE = 5130 Field Value int GL_DOUBLEBUFFER public const int GL_DOUBLEBUFFER = 3122 Field Value int GL_DRAW_BUFFER public const int GL_DRAW_BUFFER = 3073 Field Value int GL_DRAW_BUFFER0 public const int GL_DRAW_BUFFER0 = 34853 Field Value int GL_DRAW_BUFFER1 public const int GL_DRAW_BUFFER1 = 34854 Field Value int GL_DRAW_BUFFER10 public const int GL_DRAW_BUFFER10 = 34863 Field Value int GL_DRAW_BUFFER11 public const int GL_DRAW_BUFFER11 = 34864 Field Value int GL_DRAW_BUFFER12 public const int GL_DRAW_BUFFER12 = 34865 Field Value int GL_DRAW_BUFFER13 public const int GL_DRAW_BUFFER13 = 34866 Field Value int GL_DRAW_BUFFER14 public const int GL_DRAW_BUFFER14 = 34867 Field Value int GL_DRAW_BUFFER15 public const int GL_DRAW_BUFFER15 = 34868 Field Value int GL_DRAW_BUFFER2 public const int GL_DRAW_BUFFER2 = 34855 Field Value int GL_DRAW_BUFFER3 public const int GL_DRAW_BUFFER3 = 34856 Field Value int GL_DRAW_BUFFER4 public const int GL_DRAW_BUFFER4 = 34857 Field Value int GL_DRAW_BUFFER5 public const int GL_DRAW_BUFFER5 = 34858 Field Value int GL_DRAW_BUFFER6 public const int GL_DRAW_BUFFER6 = 34859 Field Value int GL_DRAW_BUFFER7 public const int GL_DRAW_BUFFER7 = 34860 Field Value int GL_DRAW_BUFFER8 public const int GL_DRAW_BUFFER8 = 34861 Field Value int GL_DRAW_BUFFER9 public const int GL_DRAW_BUFFER9 = 34862 Field Value int GL_DRAW_FRAMEBUFFER public const int GL_DRAW_FRAMEBUFFER = 36009 Field Value int GL_DRAW_FRAMEBUFFER_BINDING public const int GL_DRAW_FRAMEBUFFER_BINDING = 36006 Field Value int GL_DST_ALPHA public const int GL_DST_ALPHA = 772 Field Value int GL_DST_COLOR public const int GL_DST_COLOR = 774 Field Value int GL_DYNAMIC_COPY public const int GL_DYNAMIC_COPY = 35050 Field Value int GL_DYNAMIC_DRAW public const int GL_DYNAMIC_DRAW = 35048 Field Value int GL_DYNAMIC_READ public const int GL_DYNAMIC_READ = 35049 Field Value int GL_ELEMENT_ARRAY_BUFFER public const int GL_ELEMENT_ARRAY_BUFFER = 34963 Field Value int GL_ELEMENT_ARRAY_BUFFER_BINDING public const int GL_ELEMENT_ARRAY_BUFFER_BINDING = 34965 Field Value int GL_EQUAL public const int GL_EQUAL = 514 Field Value int GL_EQUIV public const int GL_EQUIV = 5385 Field Value int GL_EXTENSIONS public const int GL_EXTENSIONS = 7939 Field Value int GL_FALSE public const int GL_FALSE = 0 Field Value int GL_FASTEST public const int GL_FASTEST = 4353 Field Value int GL_FILL public const int GL_FILL = 6914 Field Value int GL_FIRST_VERTEX_CONVENTION public const int GL_FIRST_VERTEX_CONVENTION = 36429 Field Value int GL_FIXED_ONLY public const int GL_FIXED_ONLY = 35101 Field Value int GL_FLOAT public const int GL_FLOAT = 5126 Field Value int GL_FLOAT_32_UNSIGNED_INT_24_8_REV public const int GL_FLOAT_32_UNSIGNED_INT_24_8_REV = 36269 Field Value int GL_FLOAT_MAT2 public const int GL_FLOAT_MAT2 = 35674 Field Value int GL_FLOAT_MAT2x3 public const int GL_FLOAT_MAT2x3 = 35685 Field Value int GL_FLOAT_MAT2x4 public const int GL_FLOAT_MAT2x4 = 35686 Field Value int GL_FLOAT_MAT3 public const int GL_FLOAT_MAT3 = 35675 Field Value int GL_FLOAT_MAT3x2 public const int GL_FLOAT_MAT3x2 = 35687 Field Value int GL_FLOAT_MAT3x4 public const int GL_FLOAT_MAT3x4 = 35688 Field Value int GL_FLOAT_MAT4 public const int GL_FLOAT_MAT4 = 35676 Field Value int GL_FLOAT_MAT4x2 public const int GL_FLOAT_MAT4x2 = 35689 Field Value int GL_FLOAT_MAT4x3 public const int GL_FLOAT_MAT4x3 = 35690 Field Value int GL_FLOAT_VEC2 public const int GL_FLOAT_VEC2 = 35664 Field Value int GL_FLOAT_VEC3 public const int GL_FLOAT_VEC3 = 35665 Field Value int GL_FLOAT_VEC4 public const int GL_FLOAT_VEC4 = 35666 Field Value int GL_FRAGMENT_SHADER public const int GL_FRAGMENT_SHADER = 35632 Field Value int GL_FRAGMENT_SHADER_DERIVATIVE_HINT public const int GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 35723 Field Value int GL_FRAMEBUFFER public const int GL_FRAMEBUFFER = 36160 Field Value int GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE public const int GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 33301 Field Value int GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE public const int GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 33300 Field Value int GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING public const int GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 33296 Field Value int GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE public const int GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 33297 Field Value int GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE public const int GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 33302 Field Value int GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE public const int GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 33299 Field Value int GL_FRAMEBUFFER_ATTACHMENT_LAYERED public const int GL_FRAMEBUFFER_ATTACHMENT_LAYERED = 36263 Field Value int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME public const int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 36049 Field Value int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE public const int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 36048 Field Value int GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE public const int GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE = 33298 Field Value int GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE public const int GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 33303 Field Value int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE public const int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 36051 Field Value int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER public const int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 36052 Field Value int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL public const int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 36050 Field Value int GL_FRAMEBUFFER_BINDING public const int GL_FRAMEBUFFER_BINDING = 36006 Field Value int GL_FRAMEBUFFER_COMPLETE public const int GL_FRAMEBUFFER_COMPLETE = 36053 Field Value int GL_FRAMEBUFFER_DEFAULT public const int GL_FRAMEBUFFER_DEFAULT = 33304 Field Value int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT public const int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 36054 Field Value int GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER public const int GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 36059 Field Value int GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS public const int GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 36264 Field Value int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT public const int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 36055 Field Value int GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE public const int GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 36182 Field Value int GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER public const int GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 36060 Field Value int GL_FRAMEBUFFER_SRGB public const int GL_FRAMEBUFFER_SRGB = 36281 Field Value int GL_FRAMEBUFFER_UNDEFINED public const int GL_FRAMEBUFFER_UNDEFINED = 33305 Field Value int GL_FRAMEBUFFER_UNSUPPORTED public const int GL_FRAMEBUFFER_UNSUPPORTED = 36061 Field Value int GL_FRONT public const int GL_FRONT = 1028 Field Value int GL_FRONT_AND_BACK public const int GL_FRONT_AND_BACK = 1032 Field Value int GL_FRONT_FACE public const int GL_FRONT_FACE = 2886 Field Value int GL_FRONT_LEFT public const int GL_FRONT_LEFT = 1024 Field Value int GL_FRONT_RIGHT public const int GL_FRONT_RIGHT = 1025 Field Value int GL_FUNC_ADD public const int GL_FUNC_ADD = 32774 Field Value int GL_FUNC_REVERSE_SUBTRACT public const int GL_FUNC_REVERSE_SUBTRACT = 32779 Field Value int GL_FUNC_SUBTRACT public const int GL_FUNC_SUBTRACT = 32778 Field Value int GL_GEOMETRY_INPUT_TYPE public const int GL_GEOMETRY_INPUT_TYPE = 35095 Field Value int GL_GEOMETRY_OUTPUT_TYPE public const int GL_GEOMETRY_OUTPUT_TYPE = 35096 Field Value int GL_GEOMETRY_SHADER public const int GL_GEOMETRY_SHADER = 36313 Field Value int GL_GEOMETRY_VERTICES_OUT public const int GL_GEOMETRY_VERTICES_OUT = 35094 Field Value int GL_GEQUAL public const int GL_GEQUAL = 518 Field Value int GL_GREATER public const int GL_GREATER = 516 Field Value int GL_GREEN public const int GL_GREEN = 6404 Field Value int GL_GREEN_INTEGER public const int GL_GREEN_INTEGER = 36245 Field Value int GL_INCR public const int GL_INCR = 7682 Field Value int GL_INCR_WRAP public const int GL_INCR_WRAP = 34055 Field Value int GL_INFO_LOG_LENGTH public const int GL_INFO_LOG_LENGTH = 35716 Field Value int GL_INT public const int GL_INT = 5124 Field Value int GL_INTERLEAVED_ATTRIBS public const int GL_INTERLEAVED_ATTRIBS = 35980 Field Value int GL_INT_2_10_10_10_REV public const int GL_INT_2_10_10_10_REV = 36255 Field Value int GL_INT_SAMPLER_1D public const int GL_INT_SAMPLER_1D = 36297 Field Value int GL_INT_SAMPLER_1D_ARRAY public const int GL_INT_SAMPLER_1D_ARRAY = 36302 Field Value int GL_INT_SAMPLER_2D public const int GL_INT_SAMPLER_2D = 36298 Field Value int GL_INT_SAMPLER_2D_ARRAY public const int GL_INT_SAMPLER_2D_ARRAY = 36303 Field Value int GL_INT_SAMPLER_2D_MULTISAMPLE public const int GL_INT_SAMPLER_2D_MULTISAMPLE = 37129 Field Value int GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY public const int GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 37132 Field Value int GL_INT_SAMPLER_2D_RECT public const int GL_INT_SAMPLER_2D_RECT = 36301 Field Value int GL_INT_SAMPLER_3D public const int GL_INT_SAMPLER_3D = 36299 Field Value int GL_INT_SAMPLER_BUFFER public const int GL_INT_SAMPLER_BUFFER = 36304 Field Value int GL_INT_SAMPLER_CUBE public const int GL_INT_SAMPLER_CUBE = 36300 Field Value int GL_INT_VEC2 public const int GL_INT_VEC2 = 35667 Field Value int GL_INT_VEC3 public const int GL_INT_VEC3 = 35668 Field Value int GL_INT_VEC4 public const int GL_INT_VEC4 = 35669 Field Value int GL_INVALID_ENUM public const int GL_INVALID_ENUM = 1280 Field Value int GL_INVALID_FRAMEBUFFER_OPERATION public const int GL_INVALID_FRAMEBUFFER_OPERATION = 1286 Field Value int GL_INVALID_INDEX public const uint GL_INVALID_INDEX = 4294967295 Field Value uint GL_INVALID_OPERATION public const int GL_INVALID_OPERATION = 1282 Field Value int GL_INVALID_VALUE public const int GL_INVALID_VALUE = 1281 Field Value int GL_INVERT public const int GL_INVERT = 5386 Field Value int GL_KEEP public const int GL_KEEP = 7680 Field Value int GL_LAST_VERTEX_CONVENTION public const int GL_LAST_VERTEX_CONVENTION = 36430 Field Value int GL_LEFT public const int GL_LEFT = 1030 Field Value int GL_LEQUAL public const int GL_LEQUAL = 515 Field Value int GL_LESS public const int GL_LESS = 513 Field Value int GL_LINE public const int GL_LINE = 6913 Field Value int GL_LINEAR public const int GL_LINEAR = 9729 Field Value int GL_LINEAR_MIPMAP_LINEAR public const int GL_LINEAR_MIPMAP_LINEAR = 9987 Field Value int GL_LINEAR_MIPMAP_NEAREST public const int GL_LINEAR_MIPMAP_NEAREST = 9985 Field Value int GL_LINES public const int GL_LINES = 1 Field Value int GL_LINES_ADJACENCY public const int GL_LINES_ADJACENCY = 10 Field Value int GL_LINE_LOOP public const int GL_LINE_LOOP = 2 Field Value int GL_LINE_SMOOTH public const int GL_LINE_SMOOTH = 2848 Field Value int GL_LINE_SMOOTH_HINT public const int GL_LINE_SMOOTH_HINT = 3154 Field Value int GL_LINE_STRIP public const int GL_LINE_STRIP = 3 Field Value int GL_LINE_STRIP_ADJACENCY public const int GL_LINE_STRIP_ADJACENCY = 11 Field Value int GL_LINE_WIDTH public const int GL_LINE_WIDTH = 2849 Field Value int GL_LINE_WIDTH_GRANULARITY public const int GL_LINE_WIDTH_GRANULARITY = 2851 Field Value int GL_LINE_WIDTH_RANGE public const int GL_LINE_WIDTH_RANGE = 2850 Field Value int GL_LINK_STATUS public const int GL_LINK_STATUS = 35714 Field Value int GL_LOGIC_OP_MODE public const int GL_LOGIC_OP_MODE = 3056 Field Value int GL_LOWER_LEFT public const int GL_LOWER_LEFT = 36001 Field Value int GL_MAJOR_VERSION public const int GL_MAJOR_VERSION = 33307 Field Value int GL_MAP_FLUSH_EXPLICIT_BIT public const int GL_MAP_FLUSH_EXPLICIT_BIT = 16 Field Value int GL_MAP_INVALIDATE_BUFFER_BIT public const int GL_MAP_INVALIDATE_BUFFER_BIT = 8 Field Value int GL_MAP_INVALIDATE_RANGE_BIT public const int GL_MAP_INVALIDATE_RANGE_BIT = 4 Field Value int GL_MAP_READ_BIT public const int GL_MAP_READ_BIT = 1 Field Value int GL_MAP_UNSYNCHRONIZED_BIT public const int GL_MAP_UNSYNCHRONIZED_BIT = 32 Field Value int GL_MAP_WRITE_BIT public const int GL_MAP_WRITE_BIT = 2 Field Value int GL_MAX public const int GL_MAX = 32776 Field Value int GL_MAX_3D_TEXTURE_SIZE public const int GL_MAX_3D_TEXTURE_SIZE = 32883 Field Value int GL_MAX_ARRAY_TEXTURE_LAYERS public const int GL_MAX_ARRAY_TEXTURE_LAYERS = 35071 Field Value int GL_MAX_CLIP_DISTANCES public const int GL_MAX_CLIP_DISTANCES = 3378 Field Value int GL_MAX_COLOR_ATTACHMENTS public const int GL_MAX_COLOR_ATTACHMENTS = 36063 Field Value int GL_MAX_COLOR_TEXTURE_SAMPLES public const int GL_MAX_COLOR_TEXTURE_SAMPLES = 37134 Field Value int GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS public const int GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 35379 Field Value int GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS public const int GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 35378 Field Value int GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS public const int GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661 Field Value int GL_MAX_COMBINED_UNIFORM_BLOCKS public const int GL_MAX_COMBINED_UNIFORM_BLOCKS = 35374 Field Value int GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS public const int GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 35377 Field Value int GL_MAX_CUBE_MAP_TEXTURE_SIZE public const int GL_MAX_CUBE_MAP_TEXTURE_SIZE = 34076 Field Value int GL_MAX_DEPTH_TEXTURE_SAMPLES public const int GL_MAX_DEPTH_TEXTURE_SAMPLES = 37135 Field Value int GL_MAX_DRAW_BUFFERS public const int GL_MAX_DRAW_BUFFERS = 34852 Field Value int GL_MAX_DUAL_SOURCE_DRAW_BUFFERS public const int GL_MAX_DUAL_SOURCE_DRAW_BUFFERS = 35068 Field Value int GL_MAX_ELEMENTS_INDICES public const int GL_MAX_ELEMENTS_INDICES = 33001 Field Value int GL_MAX_ELEMENTS_VERTICES public const int GL_MAX_ELEMENTS_VERTICES = 33000 Field Value int GL_MAX_FRAGMENT_INPUT_COMPONENTS public const int GL_MAX_FRAGMENT_INPUT_COMPONENTS = 37157 Field Value int GL_MAX_FRAGMENT_UNIFORM_BLOCKS public const int GL_MAX_FRAGMENT_UNIFORM_BLOCKS = 35373 Field Value int GL_MAX_FRAGMENT_UNIFORM_COMPONENTS public const int GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = 35657 Field Value int GL_MAX_GEOMETRY_INPUT_COMPONENTS public const int GL_MAX_GEOMETRY_INPUT_COMPONENTS = 37155 Field Value int GL_MAX_GEOMETRY_OUTPUT_COMPONENTS public const int GL_MAX_GEOMETRY_OUTPUT_COMPONENTS = 37156 Field Value int GL_MAX_GEOMETRY_OUTPUT_VERTICES public const int GL_MAX_GEOMETRY_OUTPUT_VERTICES = 36320 Field Value int GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS public const int GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 35881 Field Value int GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS public const int GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 36321 Field Value int GL_MAX_GEOMETRY_UNIFORM_BLOCKS public const int GL_MAX_GEOMETRY_UNIFORM_BLOCKS = 35372 Field Value int GL_MAX_GEOMETRY_UNIFORM_COMPONENTS public const int GL_MAX_GEOMETRY_UNIFORM_COMPONENTS = 36319 Field Value int GL_MAX_INTEGER_SAMPLES public const int GL_MAX_INTEGER_SAMPLES = 37136 Field Value int GL_MAX_PROGRAM_TEXEL_OFFSET public const int GL_MAX_PROGRAM_TEXEL_OFFSET = 35077 Field Value int GL_MAX_RECTANGLE_TEXTURE_SIZE public const int GL_MAX_RECTANGLE_TEXTURE_SIZE = 34040 Field Value int GL_MAX_RENDERBUFFER_SIZE public const int GL_MAX_RENDERBUFFER_SIZE = 34024 Field Value int GL_MAX_SAMPLES public const int GL_MAX_SAMPLES = 36183 Field Value int GL_MAX_SAMPLE_MASK_WORDS public const int GL_MAX_SAMPLE_MASK_WORDS = 36441 Field Value int GL_MAX_SERVER_WAIT_TIMEOUT public const int GL_MAX_SERVER_WAIT_TIMEOUT = 37137 Field Value int GL_MAX_TEXTURE_BUFFER_SIZE public const int GL_MAX_TEXTURE_BUFFER_SIZE = 35883 Field Value int GL_MAX_TEXTURE_IMAGE_UNITS public const int GL_MAX_TEXTURE_IMAGE_UNITS = 34930 Field Value int GL_MAX_TEXTURE_LOD_BIAS public const int GL_MAX_TEXTURE_LOD_BIAS = 34045 Field Value int GL_MAX_TEXTURE_SIZE public const int GL_MAX_TEXTURE_SIZE = 3379 Field Value int GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS public const int GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 35978 Field Value int GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS public const int GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 35979 Field Value int GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS public const int GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 35968 Field Value int GL_MAX_UNIFORM_BLOCK_SIZE public const int GL_MAX_UNIFORM_BLOCK_SIZE = 35376 Field Value int GL_MAX_UNIFORM_BUFFER_BINDINGS public const int GL_MAX_UNIFORM_BUFFER_BINDINGS = 35375 Field Value int GL_MAX_VARYING_COMPONENTS public const int GL_MAX_VARYING_COMPONENTS = 35659 Field Value int GL_MAX_VARYING_FLOATS public const int GL_MAX_VARYING_FLOATS = 35659 Field Value int GL_MAX_VERTEX_ATTRIBS public const int GL_MAX_VERTEX_ATTRIBS = 34921 Field Value int GL_MAX_VERTEX_OUTPUT_COMPONENTS public const int GL_MAX_VERTEX_OUTPUT_COMPONENTS = 37154 Field Value int GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS public const int GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660 Field Value int GL_MAX_VERTEX_UNIFORM_BLOCKS public const int GL_MAX_VERTEX_UNIFORM_BLOCKS = 35371 Field Value int GL_MAX_VERTEX_UNIFORM_COMPONENTS public const int GL_MAX_VERTEX_UNIFORM_COMPONENTS = 35658 Field Value int GL_MAX_VIEWPORT_DIMS public const int GL_MAX_VIEWPORT_DIMS = 3386 Field Value int GL_MIN public const int GL_MIN = 32775 Field Value int GL_MINOR_VERSION public const int GL_MINOR_VERSION = 33308 Field Value int GL_MIN_PROGRAM_TEXEL_OFFSET public const int GL_MIN_PROGRAM_TEXEL_OFFSET = 35076 Field Value int GL_MIRRORED_REPEAT public const int GL_MIRRORED_REPEAT = 33648 Field Value int GL_MULTISAMPLE public const int GL_MULTISAMPLE = 32925 Field Value int GL_NAND public const int GL_NAND = 5390 Field Value int GL_NEAREST public const int GL_NEAREST = 9728 Field Value int GL_NEAREST_MIPMAP_LINEAR public const int GL_NEAREST_MIPMAP_LINEAR = 9986 Field Value int GL_NEAREST_MIPMAP_NEAREST public const int GL_NEAREST_MIPMAP_NEAREST = 9984 Field Value int GL_NEVER public const int GL_NEVER = 512 Field Value int GL_NICEST public const int GL_NICEST = 4354 Field Value int GL_NONE public const int GL_NONE = 0 Field Value int GL_NOOP public const int GL_NOOP = 5381 Field Value int GL_NOR public const int GL_NOR = 5384 Field Value int GL_NOTEQUAL public const int GL_NOTEQUAL = 517 Field Value int GL_NO_ERROR public const int GL_NO_ERROR = 0 Field Value int GL_NUM_COMPRESSED_TEXTURE_FORMATS public const int GL_NUM_COMPRESSED_TEXTURE_FORMATS = 34466 Field Value int GL_NUM_EXTENSIONS public const int GL_NUM_EXTENSIONS = 33309 Field Value int GL_OBJECT_TYPE public const int GL_OBJECT_TYPE = 37138 Field Value int GL_ONE public const int GL_ONE = 1 Field Value int GL_ONE_MINUS_CONSTANT_ALPHA public const int GL_ONE_MINUS_CONSTANT_ALPHA = 32772 Field Value int GL_ONE_MINUS_CONSTANT_COLOR public const int GL_ONE_MINUS_CONSTANT_COLOR = 32770 Field Value int GL_ONE_MINUS_DST_ALPHA public const int GL_ONE_MINUS_DST_ALPHA = 773 Field Value int GL_ONE_MINUS_DST_COLOR public const int GL_ONE_MINUS_DST_COLOR = 775 Field Value int GL_ONE_MINUS_SRC1_ALPHA public const int GL_ONE_MINUS_SRC1_ALPHA = 35067 Field Value int GL_ONE_MINUS_SRC1_COLOR public const int GL_ONE_MINUS_SRC1_COLOR = 35066 Field Value int GL_ONE_MINUS_SRC_ALPHA public const int GL_ONE_MINUS_SRC_ALPHA = 771 Field Value int GL_ONE_MINUS_SRC_COLOR public const int GL_ONE_MINUS_SRC_COLOR = 769 Field Value int GL_OR public const int GL_OR = 5383 Field Value int GL_OR_INVERTED public const int GL_OR_INVERTED = 5389 Field Value int GL_OR_REVERSE public const int GL_OR_REVERSE = 5387 Field Value int GL_OUT_OF_MEMORY public const int GL_OUT_OF_MEMORY = 1285 Field Value int GL_PACK_ALIGNMENT public const int GL_PACK_ALIGNMENT = 3333 Field Value int GL_PACK_IMAGE_HEIGHT public const int GL_PACK_IMAGE_HEIGHT = 32876 Field Value int GL_PACK_LSB_FIRST public const int GL_PACK_LSB_FIRST = 3329 Field Value int GL_PACK_ROW_LENGTH public const int GL_PACK_ROW_LENGTH = 3330 Field Value int GL_PACK_SKIP_IMAGES public const int GL_PACK_SKIP_IMAGES = 32875 Field Value int GL_PACK_SKIP_PIXELS public const int GL_PACK_SKIP_PIXELS = 3332 Field Value int GL_PACK_SKIP_ROWS public const int GL_PACK_SKIP_ROWS = 3331 Field Value int GL_PACK_SWAP_BYTES public const int GL_PACK_SWAP_BYTES = 3328 Field Value int GL_PIXEL_PACK_BUFFER public const int GL_PIXEL_PACK_BUFFER = 35051 Field Value int GL_PIXEL_PACK_BUFFER_BINDING public const int GL_PIXEL_PACK_BUFFER_BINDING = 35053 Field Value int GL_PIXEL_UNPACK_BUFFER public const int GL_PIXEL_UNPACK_BUFFER = 35052 Field Value int GL_PIXEL_UNPACK_BUFFER_BINDING public const int GL_PIXEL_UNPACK_BUFFER_BINDING = 35055 Field Value int GL_POINT public const int GL_POINT = 6912 Field Value int GL_POINTS public const int GL_POINTS = 0 Field Value int GL_POINT_FADE_THRESHOLD_SIZE public const int GL_POINT_FADE_THRESHOLD_SIZE = 33064 Field Value int GL_POINT_SIZE public const int GL_POINT_SIZE = 2833 Field Value int GL_POINT_SIZE_GRANULARITY public const int GL_POINT_SIZE_GRANULARITY = 2835 Field Value int GL_POINT_SIZE_RANGE public const int GL_POINT_SIZE_RANGE = 2834 Field Value int GL_POINT_SPRITE_COORD_ORIGIN public const int GL_POINT_SPRITE_COORD_ORIGIN = 36000 Field Value int GL_POLYGON_MODE public const int GL_POLYGON_MODE = 2880 Field Value int GL_POLYGON_OFFSET_FACTOR public const int GL_POLYGON_OFFSET_FACTOR = 32824 Field Value int GL_POLYGON_OFFSET_FILL public const int GL_POLYGON_OFFSET_FILL = 32823 Field Value int GL_POLYGON_OFFSET_LINE public const int GL_POLYGON_OFFSET_LINE = 10754 Field Value int GL_POLYGON_OFFSET_POINT public const int GL_POLYGON_OFFSET_POINT = 10753 Field Value int GL_POLYGON_OFFSET_UNITS public const int GL_POLYGON_OFFSET_UNITS = 10752 Field Value int GL_POLYGON_SMOOTH public const int GL_POLYGON_SMOOTH = 2881 Field Value int GL_POLYGON_SMOOTH_HINT public const int GL_POLYGON_SMOOTH_HINT = 3155 Field Value int GL_PRIMITIVES_GENERATED public const int GL_PRIMITIVES_GENERATED = 35975 Field Value int GL_PRIMITIVE_RESTART public const int GL_PRIMITIVE_RESTART = 36765 Field Value int GL_PRIMITIVE_RESTART_INDEX public const int GL_PRIMITIVE_RESTART_INDEX = 36766 Field Value int GL_PROGRAM_POINT_SIZE public const int GL_PROGRAM_POINT_SIZE = 34370 Field Value int GL_PROVOKING_VERTEX public const int GL_PROVOKING_VERTEX = 36431 Field Value int GL_PROXY_TEXTURE_1D public const int GL_PROXY_TEXTURE_1D = 32867 Field Value int GL_PROXY_TEXTURE_1D_ARRAY public const int GL_PROXY_TEXTURE_1D_ARRAY = 35865 Field Value int GL_PROXY_TEXTURE_2D public const int GL_PROXY_TEXTURE_2D = 32868 Field Value int GL_PROXY_TEXTURE_2D_ARRAY public const int GL_PROXY_TEXTURE_2D_ARRAY = 35867 Field Value int GL_PROXY_TEXTURE_2D_MULTISAMPLE public const int GL_PROXY_TEXTURE_2D_MULTISAMPLE = 37121 Field Value int GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY public const int GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 37123 Field Value int GL_PROXY_TEXTURE_3D public const int GL_PROXY_TEXTURE_3D = 32880 Field Value int GL_PROXY_TEXTURE_CUBE_MAP public const int GL_PROXY_TEXTURE_CUBE_MAP = 34075 Field Value int GL_PROXY_TEXTURE_RECTANGLE public const int GL_PROXY_TEXTURE_RECTANGLE = 34039 Field Value int GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION public const int GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 36428 Field Value int GL_QUERY_BY_REGION_NO_WAIT public const int GL_QUERY_BY_REGION_NO_WAIT = 36374 Field Value int GL_QUERY_BY_REGION_WAIT public const int GL_QUERY_BY_REGION_WAIT = 36373 Field Value int GL_QUERY_COUNTER_BITS public const int GL_QUERY_COUNTER_BITS = 34916 Field Value int GL_QUERY_NO_WAIT public const int GL_QUERY_NO_WAIT = 36372 Field Value int GL_QUERY_RESULT public const int GL_QUERY_RESULT = 34918 Field Value int GL_QUERY_RESULT_AVAILABLE public const int GL_QUERY_RESULT_AVAILABLE = 34919 Field Value int GL_QUERY_WAIT public const int GL_QUERY_WAIT = 36371 Field Value int GL_R11F_G11F_B10F public const int GL_R11F_G11F_B10F = 35898 Field Value int GL_R16 public const int GL_R16 = 33322 Field Value int GL_R16F public const int GL_R16F = 33325 Field Value int GL_R16I public const int GL_R16I = 33331 Field Value int GL_R16UI public const int GL_R16UI = 33332 Field Value int GL_R16_SNORM public const int GL_R16_SNORM = 36760 Field Value int GL_R32F public const int GL_R32F = 33326 Field Value int GL_R32I public const int GL_R32I = 33333 Field Value int GL_R32UI public const int GL_R32UI = 33334 Field Value int GL_R3_G3_B2 public const int GL_R3_G3_B2 = 10768 Field Value int GL_R8 public const int GL_R8 = 33321 Field Value int GL_R8I public const int GL_R8I = 33329 Field Value int GL_R8UI public const int GL_R8UI = 33330 Field Value int GL_R8_SNORM public const int GL_R8_SNORM = 36756 Field Value int GL_RASTERIZER_DISCARD public const int GL_RASTERIZER_DISCARD = 35977 Field Value int GL_READ_BUFFER public const int GL_READ_BUFFER = 3074 Field Value int GL_READ_FRAMEBUFFER public const int GL_READ_FRAMEBUFFER = 36008 Field Value int GL_READ_FRAMEBUFFER_BINDING public const int GL_READ_FRAMEBUFFER_BINDING = 36010 Field Value int GL_READ_ONLY public const int GL_READ_ONLY = 35000 Field Value int GL_READ_WRITE public const int GL_READ_WRITE = 35002 Field Value int GL_RED public const int GL_RED = 6403 Field Value int GL_RED_INTEGER public const int GL_RED_INTEGER = 36244 Field Value int GL_RENDERBUFFER public const int GL_RENDERBUFFER = 36161 Field Value int GL_RENDERBUFFER_ALPHA_SIZE public const int GL_RENDERBUFFER_ALPHA_SIZE = 36179 Field Value int GL_RENDERBUFFER_BINDING public const int GL_RENDERBUFFER_BINDING = 36007 Field Value int GL_RENDERBUFFER_BLUE_SIZE public const int GL_RENDERBUFFER_BLUE_SIZE = 36178 Field Value int GL_RENDERBUFFER_DEPTH_SIZE public const int GL_RENDERBUFFER_DEPTH_SIZE = 36180 Field Value int GL_RENDERBUFFER_GREEN_SIZE public const int GL_RENDERBUFFER_GREEN_SIZE = 36177 Field Value int GL_RENDERBUFFER_HEIGHT public const int GL_RENDERBUFFER_HEIGHT = 36163 Field Value int GL_RENDERBUFFER_INTERNAL_FORMAT public const int GL_RENDERBUFFER_INTERNAL_FORMAT = 36164 Field Value int GL_RENDERBUFFER_RED_SIZE public const int GL_RENDERBUFFER_RED_SIZE = 36176 Field Value int GL_RENDERBUFFER_SAMPLES public const int GL_RENDERBUFFER_SAMPLES = 36011 Field Value int GL_RENDERBUFFER_STENCIL_SIZE public const int GL_RENDERBUFFER_STENCIL_SIZE = 36181 Field Value int GL_RENDERBUFFER_WIDTH public const int GL_RENDERBUFFER_WIDTH = 36162 Field Value int GL_RENDERER public const int GL_RENDERER = 7937 Field Value int GL_REPEAT public const int GL_REPEAT = 10497 Field Value int GL_REPLACE public const int GL_REPLACE = 7681 Field Value int GL_RG public const int GL_RG = 33319 Field Value int GL_RG16 public const int GL_RG16 = 33324 Field Value int GL_RG16F public const int GL_RG16F = 33327 Field Value int GL_RG16I public const int GL_RG16I = 33337 Field Value int GL_RG16UI public const int GL_RG16UI = 33338 Field Value int GL_RG16_SNORM public const int GL_RG16_SNORM = 36761 Field Value int GL_RG32F public const int GL_RG32F = 33328 Field Value int GL_RG32I public const int GL_RG32I = 33339 Field Value int GL_RG32UI public const int GL_RG32UI = 33340 Field Value int GL_RG8 public const int GL_RG8 = 33323 Field Value int GL_RG8I public const int GL_RG8I = 33335 Field Value int GL_RG8UI public const int GL_RG8UI = 33336 Field Value int GL_RG8_SNORM public const int GL_RG8_SNORM = 36757 Field Value int GL_RGB public const int GL_RGB = 6407 Field Value int GL_RGB10 public const int GL_RGB10 = 32850 Field Value int GL_RGB10_A2 public const int GL_RGB10_A2 = 32857 Field Value int GL_RGB10_A2UI public const int GL_RGB10_A2UI = 36975 Field Value int GL_RGB12 public const int GL_RGB12 = 32851 Field Value int GL_RGB16 public const int GL_RGB16 = 32852 Field Value int GL_RGB16F public const int GL_RGB16F = 34843 Field Value int GL_RGB16I public const int GL_RGB16I = 36233 Field Value int GL_RGB16UI public const int GL_RGB16UI = 36215 Field Value int GL_RGB16_SNORM public const int GL_RGB16_SNORM = 36762 Field Value int GL_RGB32F public const int GL_RGB32F = 34837 Field Value int GL_RGB32I public const int GL_RGB32I = 36227 Field Value int GL_RGB32UI public const int GL_RGB32UI = 36209 Field Value int GL_RGB4 public const int GL_RGB4 = 32847 Field Value int GL_RGB5 public const int GL_RGB5 = 32848 Field Value int GL_RGB5_A1 public const int GL_RGB5_A1 = 32855 Field Value int GL_RGB8 public const int GL_RGB8 = 32849 Field Value int GL_RGB8I public const int GL_RGB8I = 36239 Field Value int GL_RGB8UI public const int GL_RGB8UI = 36221 Field Value int GL_RGB8_SNORM public const int GL_RGB8_SNORM = 36758 Field Value int GL_RGB9_E5 public const int GL_RGB9_E5 = 35901 Field Value int GL_RGBA public const int GL_RGBA = 6408 Field Value int GL_RGBA12 public const int GL_RGBA12 = 32858 Field Value int GL_RGBA16 public const int GL_RGBA16 = 32859 Field Value int GL_RGBA16F public const int GL_RGBA16F = 34842 Field Value int GL_RGBA16I public const int GL_RGBA16I = 36232 Field Value int GL_RGBA16UI public const int GL_RGBA16UI = 36214 Field Value int GL_RGBA16_SNORM public const int GL_RGBA16_SNORM = 36763 Field Value int GL_RGBA2 public const int GL_RGBA2 = 32853 Field Value int GL_RGBA32F public const int GL_RGBA32F = 34836 Field Value int GL_RGBA32I public const int GL_RGBA32I = 36226 Field Value int GL_RGBA32UI public const int GL_RGBA32UI = 36208 Field Value int GL_RGBA4 public const int GL_RGBA4 = 32854 Field Value int GL_RGBA8 public const int GL_RGBA8 = 32856 Field Value int GL_RGBA8I public const int GL_RGBA8I = 36238 Field Value int GL_RGBA8UI public const int GL_RGBA8UI = 36220 Field Value int GL_RGBA8_SNORM public const int GL_RGBA8_SNORM = 36759 Field Value int GL_RGBA_INTEGER public const int GL_RGBA_INTEGER = 36249 Field Value int GL_RGB_INTEGER public const int GL_RGB_INTEGER = 36248 Field Value int GL_RG_INTEGER public const int GL_RG_INTEGER = 33320 Field Value int GL_RIGHT public const int GL_RIGHT = 1031 Field Value int GL_SAMPLER_1D public const int GL_SAMPLER_1D = 35677 Field Value int GL_SAMPLER_1D_ARRAY public const int GL_SAMPLER_1D_ARRAY = 36288 Field Value int GL_SAMPLER_1D_ARRAY_SHADOW public const int GL_SAMPLER_1D_ARRAY_SHADOW = 36291 Field Value int GL_SAMPLER_1D_SHADOW public const int GL_SAMPLER_1D_SHADOW = 35681 Field Value int GL_SAMPLER_2D public const int GL_SAMPLER_2D = 35678 Field Value int GL_SAMPLER_2D_ARRAY public const int GL_SAMPLER_2D_ARRAY = 36289 Field Value int GL_SAMPLER_2D_ARRAY_SHADOW public const int GL_SAMPLER_2D_ARRAY_SHADOW = 36292 Field Value int GL_SAMPLER_2D_MULTISAMPLE public const int GL_SAMPLER_2D_MULTISAMPLE = 37128 Field Value int GL_SAMPLER_2D_MULTISAMPLE_ARRAY public const int GL_SAMPLER_2D_MULTISAMPLE_ARRAY = 37131 Field Value int GL_SAMPLER_2D_RECT public const int GL_SAMPLER_2D_RECT = 35683 Field Value int GL_SAMPLER_2D_RECT_SHADOW public const int GL_SAMPLER_2D_RECT_SHADOW = 35684 Field Value int GL_SAMPLER_2D_SHADOW public const int GL_SAMPLER_2D_SHADOW = 35682 Field Value int GL_SAMPLER_3D public const int GL_SAMPLER_3D = 35679 Field Value int GL_SAMPLER_BINDING public const int GL_SAMPLER_BINDING = 35097 Field Value int GL_SAMPLER_BUFFER public const int GL_SAMPLER_BUFFER = 36290 Field Value int GL_SAMPLER_CUBE public const int GL_SAMPLER_CUBE = 35680 Field Value int GL_SAMPLER_CUBE_SHADOW public const int GL_SAMPLER_CUBE_SHADOW = 36293 Field Value int GL_SAMPLES public const int GL_SAMPLES = 32937 Field Value int GL_SAMPLES_PASSED public const int GL_SAMPLES_PASSED = 35092 Field Value int GL_SAMPLE_ALPHA_TO_COVERAGE public const int GL_SAMPLE_ALPHA_TO_COVERAGE = 32926 Field Value int GL_SAMPLE_ALPHA_TO_ONE public const int GL_SAMPLE_ALPHA_TO_ONE = 32927 Field Value int GL_SAMPLE_BUFFERS public const int GL_SAMPLE_BUFFERS = 32936 Field Value int GL_SAMPLE_COVERAGE public const int GL_SAMPLE_COVERAGE = 32928 Field Value int GL_SAMPLE_COVERAGE_INVERT public const int GL_SAMPLE_COVERAGE_INVERT = 32939 Field Value int GL_SAMPLE_COVERAGE_VALUE public const int GL_SAMPLE_COVERAGE_VALUE = 32938 Field Value int GL_SAMPLE_MASK public const int GL_SAMPLE_MASK = 36433 Field Value int GL_SAMPLE_MASK_VALUE public const int GL_SAMPLE_MASK_VALUE = 36434 Field Value int GL_SAMPLE_POSITION public const int GL_SAMPLE_POSITION = 36432 Field Value int GL_SCISSOR_BOX public const int GL_SCISSOR_BOX = 3088 Field Value int GL_SCISSOR_TEST public const int GL_SCISSOR_TEST = 3089 Field Value int GL_SEPARATE_ATTRIBS public const int GL_SEPARATE_ATTRIBS = 35981 Field Value int GL_SET public const int GL_SET = 5391 Field Value int GL_SHADER_SOURCE_LENGTH public const int GL_SHADER_SOURCE_LENGTH = 35720 Field Value int GL_SHADER_TYPE public const int GL_SHADER_TYPE = 35663 Field Value int GL_SHADING_LANGUAGE_VERSION public const int GL_SHADING_LANGUAGE_VERSION = 35724 Field Value int GL_SHORT public const int GL_SHORT = 5122 Field Value int GL_SIGNALED public const int GL_SIGNALED = 37145 Field Value int GL_SIGNED_NORMALIZED public const int GL_SIGNED_NORMALIZED = 36764 Field Value int GL_SMOOTH_LINE_WIDTH_GRANULARITY public const int GL_SMOOTH_LINE_WIDTH_GRANULARITY = 2851 Field Value int GL_SMOOTH_LINE_WIDTH_RANGE public const int GL_SMOOTH_LINE_WIDTH_RANGE = 2850 Field Value int GL_SMOOTH_POINT_SIZE_GRANULARITY public const int GL_SMOOTH_POINT_SIZE_GRANULARITY = 2835 Field Value int GL_SMOOTH_POINT_SIZE_RANGE public const int GL_SMOOTH_POINT_SIZE_RANGE = 2834 Field Value int GL_SRC1_ALPHA public const int GL_SRC1_ALPHA = 34185 Field Value int GL_SRC1_COLOR public const int GL_SRC1_COLOR = 35065 Field Value int GL_SRC_ALPHA public const int GL_SRC_ALPHA = 770 Field Value int GL_SRC_ALPHA_SATURATE public const int GL_SRC_ALPHA_SATURATE = 776 Field Value int GL_SRC_COLOR public const int GL_SRC_COLOR = 768 Field Value int GL_SRGB public const int GL_SRGB = 35904 Field Value int GL_SRGB8 public const int GL_SRGB8 = 35905 Field Value int GL_SRGB8_ALPHA8 public const int GL_SRGB8_ALPHA8 = 35907 Field Value int GL_SRGB_ALPHA public const int GL_SRGB_ALPHA = 35906 Field Value int GL_STATIC_COPY public const int GL_STATIC_COPY = 35046 Field Value int GL_STATIC_DRAW public const int GL_STATIC_DRAW = 35044 Field Value int GL_STATIC_READ public const int GL_STATIC_READ = 35045 Field Value int GL_STENCIL public const int GL_STENCIL = 6146 Field Value int GL_STENCIL_ATTACHMENT public const int GL_STENCIL_ATTACHMENT = 36128 Field Value int GL_STENCIL_BACK_FAIL public const int GL_STENCIL_BACK_FAIL = 34817 Field Value int GL_STENCIL_BACK_FUNC public const int GL_STENCIL_BACK_FUNC = 34816 Field Value int GL_STENCIL_BACK_PASS_DEPTH_FAIL public const int GL_STENCIL_BACK_PASS_DEPTH_FAIL = 34818 Field Value int GL_STENCIL_BACK_PASS_DEPTH_PASS public const int GL_STENCIL_BACK_PASS_DEPTH_PASS = 34819 Field Value int GL_STENCIL_BACK_REF public const int GL_STENCIL_BACK_REF = 36003 Field Value int GL_STENCIL_BACK_VALUE_MASK public const int GL_STENCIL_BACK_VALUE_MASK = 36004 Field Value int GL_STENCIL_BACK_WRITEMASK public const int GL_STENCIL_BACK_WRITEMASK = 36005 Field Value int GL_STENCIL_BUFFER_BIT public const int GL_STENCIL_BUFFER_BIT = 1024 Field Value int GL_STENCIL_CLEAR_VALUE public const int GL_STENCIL_CLEAR_VALUE = 2961 Field Value int GL_STENCIL_FAIL public const int GL_STENCIL_FAIL = 2964 Field Value int GL_STENCIL_FUNC public const int GL_STENCIL_FUNC = 2962 Field Value int GL_STENCIL_INDEX public const int GL_STENCIL_INDEX = 6401 Field Value int GL_STENCIL_INDEX1 public const int GL_STENCIL_INDEX1 = 36166 Field Value int GL_STENCIL_INDEX16 public const int GL_STENCIL_INDEX16 = 36169 Field Value int GL_STENCIL_INDEX4 public const int GL_STENCIL_INDEX4 = 36167 Field Value int GL_STENCIL_INDEX8 public const int GL_STENCIL_INDEX8 = 36168 Field Value int GL_STENCIL_PASS_DEPTH_FAIL public const int GL_STENCIL_PASS_DEPTH_FAIL = 2965 Field Value int GL_STENCIL_PASS_DEPTH_PASS public const int GL_STENCIL_PASS_DEPTH_PASS = 2966 Field Value int GL_STENCIL_REF public const int GL_STENCIL_REF = 2967 Field Value int GL_STENCIL_TEST public const int GL_STENCIL_TEST = 2960 Field Value int GL_STENCIL_VALUE_MASK public const int GL_STENCIL_VALUE_MASK = 2963 Field Value int GL_STENCIL_WRITEMASK public const int GL_STENCIL_WRITEMASK = 2968 Field Value int GL_STEREO public const int GL_STEREO = 3123 Field Value int GL_STREAM_COPY public const int GL_STREAM_COPY = 35042 Field Value int GL_STREAM_DRAW public const int GL_STREAM_DRAW = 35040 Field Value int GL_STREAM_READ public const int GL_STREAM_READ = 35041 Field Value int GL_SUBPIXEL_BITS public const int GL_SUBPIXEL_BITS = 3408 Field Value int GL_SYNC_CONDITION public const int GL_SYNC_CONDITION = 37139 Field Value int GL_SYNC_FENCE public const int GL_SYNC_FENCE = 37142 Field Value int GL_SYNC_FLAGS public const int GL_SYNC_FLAGS = 37141 Field Value int GL_SYNC_FLUSH_COMMANDS_BIT public const int GL_SYNC_FLUSH_COMMANDS_BIT = 1 Field Value int GL_SYNC_GPU_COMMANDS_COMPLETE public const int GL_SYNC_GPU_COMMANDS_COMPLETE = 37143 Field Value int GL_SYNC_STATUS public const int GL_SYNC_STATUS = 37140 Field Value int GL_TEXTURE public const int GL_TEXTURE = 5890 Field Value int GL_TEXTURE0 public const int GL_TEXTURE0 = 33984 Field Value int GL_TEXTURE1 public const int GL_TEXTURE1 = 33985 Field Value int GL_TEXTURE10 public const int GL_TEXTURE10 = 33994 Field Value int GL_TEXTURE11 public const int GL_TEXTURE11 = 33995 Field Value int GL_TEXTURE12 public const int GL_TEXTURE12 = 33996 Field Value int GL_TEXTURE13 public const int GL_TEXTURE13 = 33997 Field Value int GL_TEXTURE14 public const int GL_TEXTURE14 = 33998 Field Value int GL_TEXTURE15 public const int GL_TEXTURE15 = 33999 Field Value int GL_TEXTURE16 public const int GL_TEXTURE16 = 34000 Field Value int GL_TEXTURE17 public const int GL_TEXTURE17 = 34001 Field Value int GL_TEXTURE18 public const int GL_TEXTURE18 = 34002 Field Value int GL_TEXTURE19 public const int GL_TEXTURE19 = 34003 Field Value int GL_TEXTURE2 public const int GL_TEXTURE2 = 33986 Field Value int GL_TEXTURE20 public const int GL_TEXTURE20 = 34004 Field Value int GL_TEXTURE21 public const int GL_TEXTURE21 = 34005 Field Value int GL_TEXTURE22 public const int GL_TEXTURE22 = 34006 Field Value int GL_TEXTURE23 public const int GL_TEXTURE23 = 34007 Field Value int GL_TEXTURE24 public const int GL_TEXTURE24 = 34008 Field Value int GL_TEXTURE25 public const int GL_TEXTURE25 = 34009 Field Value int GL_TEXTURE26 public const int GL_TEXTURE26 = 34010 Field Value int GL_TEXTURE27 public const int GL_TEXTURE27 = 34011 Field Value int GL_TEXTURE28 public const int GL_TEXTURE28 = 34012 Field Value int GL_TEXTURE29 public const int GL_TEXTURE29 = 34013 Field Value int GL_TEXTURE3 public const int GL_TEXTURE3 = 33987 Field Value int GL_TEXTURE30 public const int GL_TEXTURE30 = 34014 Field Value int GL_TEXTURE31 public const int GL_TEXTURE31 = 34015 Field Value int GL_TEXTURE4 public const int GL_TEXTURE4 = 33988 Field Value int GL_TEXTURE5 public const int GL_TEXTURE5 = 33989 Field Value int GL_TEXTURE6 public const int GL_TEXTURE6 = 33990 Field Value int GL_TEXTURE7 public const int GL_TEXTURE7 = 33991 Field Value int GL_TEXTURE8 public const int GL_TEXTURE8 = 33992 Field Value int GL_TEXTURE9 public const int GL_TEXTURE9 = 33993 Field Value int GL_TEXTURE_1D public const int GL_TEXTURE_1D = 3552 Field Value int GL_TEXTURE_1D_ARRAY public const int GL_TEXTURE_1D_ARRAY = 35864 Field Value int GL_TEXTURE_2D public const int GL_TEXTURE_2D = 3553 Field Value int GL_TEXTURE_2D_ARRAY public const int GL_TEXTURE_2D_ARRAY = 35866 Field Value int GL_TEXTURE_2D_MULTISAMPLE public const int GL_TEXTURE_2D_MULTISAMPLE = 37120 Field Value int GL_TEXTURE_2D_MULTISAMPLE_ARRAY public const int GL_TEXTURE_2D_MULTISAMPLE_ARRAY = 37122 Field Value int GL_TEXTURE_3D public const int GL_TEXTURE_3D = 32879 Field Value int GL_TEXTURE_ALPHA_SIZE public const int GL_TEXTURE_ALPHA_SIZE = 32863 Field Value int GL_TEXTURE_ALPHA_TYPE public const int GL_TEXTURE_ALPHA_TYPE = 35859 Field Value int GL_TEXTURE_BASE_LEVEL public const int GL_TEXTURE_BASE_LEVEL = 33084 Field Value int GL_TEXTURE_BINDING_1D public const int GL_TEXTURE_BINDING_1D = 32872 Field Value int GL_TEXTURE_BINDING_1D_ARRAY public const int GL_TEXTURE_BINDING_1D_ARRAY = 35868 Field Value int GL_TEXTURE_BINDING_2D public const int GL_TEXTURE_BINDING_2D = 32873 Field Value int GL_TEXTURE_BINDING_2D_ARRAY public const int GL_TEXTURE_BINDING_2D_ARRAY = 35869 Field Value int GL_TEXTURE_BINDING_2D_MULTISAMPLE public const int GL_TEXTURE_BINDING_2D_MULTISAMPLE = 37124 Field Value int GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY public const int GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 37125 Field Value int GL_TEXTURE_BINDING_3D public const int GL_TEXTURE_BINDING_3D = 32874 Field Value int GL_TEXTURE_BINDING_BUFFER public const int GL_TEXTURE_BINDING_BUFFER = 35884 Field Value int GL_TEXTURE_BINDING_CUBE_MAP public const int GL_TEXTURE_BINDING_CUBE_MAP = 34068 Field Value int GL_TEXTURE_BINDING_RECTANGLE public const int GL_TEXTURE_BINDING_RECTANGLE = 34038 Field Value int GL_TEXTURE_BLUE_SIZE public const int GL_TEXTURE_BLUE_SIZE = 32862 Field Value int GL_TEXTURE_BLUE_TYPE public const int GL_TEXTURE_BLUE_TYPE = 35858 Field Value int GL_TEXTURE_BORDER_COLOR public const int GL_TEXTURE_BORDER_COLOR = 4100 Field Value int GL_TEXTURE_BUFFER public const int GL_TEXTURE_BUFFER = 35882 Field Value int GL_TEXTURE_BUFFER_DATA_STORE_BINDING public const int GL_TEXTURE_BUFFER_DATA_STORE_BINDING = 35885 Field Value int GL_TEXTURE_COMPARE_FUNC public const int GL_TEXTURE_COMPARE_FUNC = 34893 Field Value int GL_TEXTURE_COMPARE_MODE public const int GL_TEXTURE_COMPARE_MODE = 34892 Field Value int GL_TEXTURE_COMPRESSED public const int GL_TEXTURE_COMPRESSED = 34465 Field Value int GL_TEXTURE_COMPRESSED_IMAGE_SIZE public const int GL_TEXTURE_COMPRESSED_IMAGE_SIZE = 34464 Field Value int GL_TEXTURE_COMPRESSION_HINT public const int GL_TEXTURE_COMPRESSION_HINT = 34031 Field Value int GL_TEXTURE_CUBE_MAP public const int GL_TEXTURE_CUBE_MAP = 34067 Field Value int GL_TEXTURE_CUBE_MAP_NEGATIVE_X public const int GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 34070 Field Value int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y public const int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072 Field Value int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z public const int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074 Field Value int GL_TEXTURE_CUBE_MAP_POSITIVE_X public const int GL_TEXTURE_CUBE_MAP_POSITIVE_X = 34069 Field Value int GL_TEXTURE_CUBE_MAP_POSITIVE_Y public const int GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 34071 Field Value int GL_TEXTURE_CUBE_MAP_POSITIVE_Z public const int GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 34073 Field Value int GL_TEXTURE_CUBE_MAP_SEAMLESS public const int GL_TEXTURE_CUBE_MAP_SEAMLESS = 34895 Field Value int GL_TEXTURE_DEPTH public const int GL_TEXTURE_DEPTH = 32881 Field Value int GL_TEXTURE_DEPTH_SIZE public const int GL_TEXTURE_DEPTH_SIZE = 34890 Field Value int GL_TEXTURE_DEPTH_TYPE public const int GL_TEXTURE_DEPTH_TYPE = 35862 Field Value int GL_TEXTURE_FIXED_SAMPLE_LOCATIONS public const int GL_TEXTURE_FIXED_SAMPLE_LOCATIONS = 37127 Field Value int GL_TEXTURE_GREEN_SIZE public const int GL_TEXTURE_GREEN_SIZE = 32861 Field Value int GL_TEXTURE_GREEN_TYPE public const int GL_TEXTURE_GREEN_TYPE = 35857 Field Value int GL_TEXTURE_HEIGHT public const int GL_TEXTURE_HEIGHT = 4097 Field Value int GL_TEXTURE_INTERNAL_FORMAT public const int GL_TEXTURE_INTERNAL_FORMAT = 4099 Field Value int GL_TEXTURE_LOD_BIAS public const int GL_TEXTURE_LOD_BIAS = 34049 Field Value int GL_TEXTURE_MAG_FILTER public const int GL_TEXTURE_MAG_FILTER = 10240 Field Value int GL_TEXTURE_MAX_LEVEL public const int GL_TEXTURE_MAX_LEVEL = 33085 Field Value int GL_TEXTURE_MAX_LOD public const int GL_TEXTURE_MAX_LOD = 33083 Field Value int GL_TEXTURE_MIN_FILTER public const int GL_TEXTURE_MIN_FILTER = 10241 Field Value int GL_TEXTURE_MIN_LOD public const int GL_TEXTURE_MIN_LOD = 33082 Field Value int GL_TEXTURE_RECTANGLE public const int GL_TEXTURE_RECTANGLE = 34037 Field Value int GL_TEXTURE_RED_SIZE public const int GL_TEXTURE_RED_SIZE = 32860 Field Value int GL_TEXTURE_RED_TYPE public const int GL_TEXTURE_RED_TYPE = 35856 Field Value int GL_TEXTURE_SAMPLES public const int GL_TEXTURE_SAMPLES = 37126 Field Value int GL_TEXTURE_SHARED_SIZE public const int GL_TEXTURE_SHARED_SIZE = 35903 Field Value int GL_TEXTURE_STENCIL_SIZE public const int GL_TEXTURE_STENCIL_SIZE = 35057 Field Value int GL_TEXTURE_SWIZZLE_A public const int GL_TEXTURE_SWIZZLE_A = 36421 Field Value int GL_TEXTURE_SWIZZLE_B public const int GL_TEXTURE_SWIZZLE_B = 36420 Field Value int GL_TEXTURE_SWIZZLE_G public const int GL_TEXTURE_SWIZZLE_G = 36419 Field Value int GL_TEXTURE_SWIZZLE_R public const int GL_TEXTURE_SWIZZLE_R = 36418 Field Value int GL_TEXTURE_SWIZZLE_RGBA public const int GL_TEXTURE_SWIZZLE_RGBA = 36422 Field Value int GL_TEXTURE_WIDTH public const int GL_TEXTURE_WIDTH = 4096 Field Value int GL_TEXTURE_WRAP_R public const int GL_TEXTURE_WRAP_R = 32882 Field Value int GL_TEXTURE_WRAP_S public const int GL_TEXTURE_WRAP_S = 10242 Field Value int GL_TEXTURE_WRAP_T public const int GL_TEXTURE_WRAP_T = 10243 Field Value int GL_TIMEOUT_EXPIRED public const int GL_TIMEOUT_EXPIRED = 37147 Field Value int GL_TIMEOUT_IGNORED public const ulong GL_TIMEOUT_IGNORED = 18446744073709551615 Field Value ulong GL_TIMESTAMP public const int GL_TIMESTAMP = 36392 Field Value int GL_TIME_ELAPSED public const int GL_TIME_ELAPSED = 35007 Field Value int GL_TRANSFORM_FEEDBACK_BUFFER public const int GL_TRANSFORM_FEEDBACK_BUFFER = 35982 Field Value int GL_TRANSFORM_FEEDBACK_BUFFER_BINDING public const int GL_TRANSFORM_FEEDBACK_BUFFER_BINDING = 35983 Field Value int GL_TRANSFORM_FEEDBACK_BUFFER_MODE public const int GL_TRANSFORM_FEEDBACK_BUFFER_MODE = 35967 Field Value int GL_TRANSFORM_FEEDBACK_BUFFER_SIZE public const int GL_TRANSFORM_FEEDBACK_BUFFER_SIZE = 35973 Field Value int GL_TRANSFORM_FEEDBACK_BUFFER_START public const int GL_TRANSFORM_FEEDBACK_BUFFER_START = 35972 Field Value int GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN public const int GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 35976 Field Value int GL_TRANSFORM_FEEDBACK_VARYINGS public const int GL_TRANSFORM_FEEDBACK_VARYINGS = 35971 Field Value int GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH public const int GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 35958 Field Value int GL_TRIANGLES public const int GL_TRIANGLES = 4 Field Value int GL_TRIANGLES_ADJACENCY public const int GL_TRIANGLES_ADJACENCY = 12 Field Value int GL_TRIANGLE_FAN public const int GL_TRIANGLE_FAN = 6 Field Value int GL_TRIANGLE_STRIP public const int GL_TRIANGLE_STRIP = 5 Field Value int GL_TRIANGLE_STRIP_ADJACENCY public const int GL_TRIANGLE_STRIP_ADJACENCY = 13 Field Value int GL_TRUE public const int GL_TRUE = 1 Field Value int GL_UInt16_FLOAT public const int GL_UInt16_FLOAT = 5131 Field Value int GL_UNIFORM_ARRAY_STRIDE public const int GL_UNIFORM_ARRAY_STRIDE = 35388 Field Value int GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS public const int GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS = 35394 Field Value int GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES public const int GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 35395 Field Value int GL_UNIFORM_BLOCK_BINDING public const int GL_UNIFORM_BLOCK_BINDING = 35391 Field Value int GL_UNIFORM_BLOCK_DATA_SIZE public const int GL_UNIFORM_BLOCK_DATA_SIZE = 35392 Field Value int GL_UNIFORM_BLOCK_INDEX public const int GL_UNIFORM_BLOCK_INDEX = 35386 Field Value int GL_UNIFORM_BLOCK_NAME_LENGTH public const int GL_UNIFORM_BLOCK_NAME_LENGTH = 35393 Field Value int GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER public const int GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 35398 Field Value int GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER public const int GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = 35397 Field Value int GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER public const int GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 35396 Field Value int GL_UNIFORM_BUFFER public const int GL_UNIFORM_BUFFER = 35345 Field Value int GL_UNIFORM_BUFFER_BINDING public const int GL_UNIFORM_BUFFER_BINDING = 35368 Field Value int GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT public const int GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 35380 Field Value int GL_UNIFORM_BUFFER_SIZE public const int GL_UNIFORM_BUFFER_SIZE = 35370 Field Value int GL_UNIFORM_BUFFER_START public const int GL_UNIFORM_BUFFER_START = 35369 Field Value int GL_UNIFORM_IS_ROW_MAJOR public const int GL_UNIFORM_IS_ROW_MAJOR = 35390 Field Value int GL_UNIFORM_MATRIX_STRIDE public const int GL_UNIFORM_MATRIX_STRIDE = 35389 Field Value int GL_UNIFORM_NAME_LENGTH public const int GL_UNIFORM_NAME_LENGTH = 35385 Field Value int GL_UNIFORM_OFFSET public const int GL_UNIFORM_OFFSET = 35387 Field Value int GL_UNIFORM_SIZE public const int GL_UNIFORM_SIZE = 35384 Field Value int GL_UNIFORM_TYPE public const int GL_UNIFORM_TYPE = 35383 Field Value int GL_UNPACK_ALIGNMENT public const int GL_UNPACK_ALIGNMENT = 3317 Field Value int GL_UNPACK_IMAGE_HEIGHT public const int GL_UNPACK_IMAGE_HEIGHT = 32878 Field Value int GL_UNPACK_LSB_FIRST public const int GL_UNPACK_LSB_FIRST = 3313 Field Value int GL_UNPACK_ROW_LENGTH public const int GL_UNPACK_ROW_LENGTH = 3314 Field Value int GL_UNPACK_SKIP_IMAGES public const int GL_UNPACK_SKIP_IMAGES = 32877 Field Value int GL_UNPACK_SKIP_PIXELS public const int GL_UNPACK_SKIP_PIXELS = 3316 Field Value int GL_UNPACK_SKIP_ROWS public const int GL_UNPACK_SKIP_ROWS = 3315 Field Value int GL_UNPACK_SWAP_BYTES public const int GL_UNPACK_SWAP_BYTES = 3312 Field Value int GL_UNSIGNALED public const int GL_UNSIGNALED = 37144 Field Value int GL_UNSIGNED_BYTE public const int GL_UNSIGNED_BYTE = 5121 Field Value int GL_UNSIGNED_BYTE_2_3_3_REV public const int GL_UNSIGNED_BYTE_2_3_3_REV = 33634 Field Value int GL_UNSIGNED_BYTE_3_3_2 public const int GL_UNSIGNED_BYTE_3_3_2 = 32818 Field Value int GL_UNSIGNED_INT public const int GL_UNSIGNED_INT = 5125 Field Value int GL_UNSIGNED_INT_10F_11F_11F_REV public const int GL_UNSIGNED_INT_10F_11F_11F_REV = 35899 Field Value int GL_UNSIGNED_INT_10_10_10_2 public const int GL_UNSIGNED_INT_10_10_10_2 = 32822 Field Value int GL_UNSIGNED_INT_24_8 public const int GL_UNSIGNED_INT_24_8 = 34042 Field Value int GL_UNSIGNED_INT_2_10_10_10_REV public const int GL_UNSIGNED_INT_2_10_10_10_REV = 33640 Field Value int GL_UNSIGNED_INT_5_9_9_9_REV public const int GL_UNSIGNED_INT_5_9_9_9_REV = 35902 Field Value int GL_UNSIGNED_INT_8_8_8_8 public const int GL_UNSIGNED_INT_8_8_8_8 = 32821 Field Value int GL_UNSIGNED_INT_8_8_8_8_REV public const int GL_UNSIGNED_INT_8_8_8_8_REV = 33639 Field Value int GL_UNSIGNED_INT_SAMPLER_1D public const int GL_UNSIGNED_INT_SAMPLER_1D = 36305 Field Value int GL_UNSIGNED_INT_SAMPLER_1D_ARRAY public const int GL_UNSIGNED_INT_SAMPLER_1D_ARRAY = 36310 Field Value int GL_UNSIGNED_INT_SAMPLER_2D public const int GL_UNSIGNED_INT_SAMPLER_2D = 36306 Field Value int GL_UNSIGNED_INT_SAMPLER_2D_ARRAY public const int GL_UNSIGNED_INT_SAMPLER_2D_ARRAY = 36311 Field Value int GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE public const int GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 37130 Field Value int GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY public const int GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 37133 Field Value int GL_UNSIGNED_INT_SAMPLER_2D_RECT public const int GL_UNSIGNED_INT_SAMPLER_2D_RECT = 36309 Field Value int GL_UNSIGNED_INT_SAMPLER_3D public const int GL_UNSIGNED_INT_SAMPLER_3D = 36307 Field Value int GL_UNSIGNED_INT_SAMPLER_BUFFER public const int GL_UNSIGNED_INT_SAMPLER_BUFFER = 36312 Field Value int GL_UNSIGNED_INT_SAMPLER_CUBE public const int GL_UNSIGNED_INT_SAMPLER_CUBE = 36308 Field Value int GL_UNSIGNED_INT_VEC2 public const int GL_UNSIGNED_INT_VEC2 = 36294 Field Value int GL_UNSIGNED_INT_VEC3 public const int GL_UNSIGNED_INT_VEC3 = 36295 Field Value int GL_UNSIGNED_INT_VEC4 public const int GL_UNSIGNED_INT_VEC4 = 36296 Field Value int GL_UNSIGNED_NORMALIZED public const int GL_UNSIGNED_NORMALIZED = 35863 Field Value int GL_UNSIGNED_SHORT public const int GL_UNSIGNED_SHORT = 5123 Field Value int GL_UNSIGNED_SHORT_1_5_5_5_REV public const int GL_UNSIGNED_SHORT_1_5_5_5_REV = 33638 Field Value int GL_UNSIGNED_SHORT_4_4_4_4 public const int GL_UNSIGNED_SHORT_4_4_4_4 = 32819 Field Value int GL_UNSIGNED_SHORT_4_4_4_4_REV public const int GL_UNSIGNED_SHORT_4_4_4_4_REV = 33637 Field Value int GL_UNSIGNED_SHORT_5_5_5_1 public const int GL_UNSIGNED_SHORT_5_5_5_1 = 32820 Field Value int GL_UNSIGNED_SHORT_5_6_5 public const int GL_UNSIGNED_SHORT_5_6_5 = 33635 Field Value int GL_UNSIGNED_SHORT_5_6_5_REV public const int GL_UNSIGNED_SHORT_5_6_5_REV = 33636 Field Value int GL_UPPER_LEFT public const int GL_UPPER_LEFT = 36002 Field Value int GL_VALIDATE_STATUS public const int GL_VALIDATE_STATUS = 35715 Field Value int GL_VENDOR public const int GL_VENDOR = 7936 Field Value int GL_VERSION public const int GL_VERSION = 7938 Field Value int GL_VERTEX_ARRAY_BINDING public const int GL_VERTEX_ARRAY_BINDING = 34229 Field Value int GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING public const int GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 34975 Field Value int GL_VERTEX_ATTRIB_ARRAY_DIVISOR public const int GL_VERTEX_ATTRIB_ARRAY_DIVISOR = 35070 Field Value int GL_VERTEX_ATTRIB_ARRAY_ENABLED public const int GL_VERTEX_ATTRIB_ARRAY_ENABLED = 34338 Field Value int GL_VERTEX_ATTRIB_ARRAY_INTEGER public const int GL_VERTEX_ATTRIB_ARRAY_INTEGER = 35069 Field Value int GL_VERTEX_ATTRIB_ARRAY_NORMALIZED public const int GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 34922 Field Value int GL_VERTEX_ATTRIB_ARRAY_POINTER public const int GL_VERTEX_ATTRIB_ARRAY_POINTER = 34373 Field Value int GL_VERTEX_ATTRIB_ARRAY_SIZE public const int GL_VERTEX_ATTRIB_ARRAY_SIZE = 34339 Field Value int GL_VERTEX_ATTRIB_ARRAY_STRIDE public const int GL_VERTEX_ATTRIB_ARRAY_STRIDE = 34340 Field Value int GL_VERTEX_ATTRIB_ARRAY_TYPE public const int GL_VERTEX_ATTRIB_ARRAY_TYPE = 34341 Field Value int GL_VERTEX_PROGRAM_POINT_SIZE public const int GL_VERTEX_PROGRAM_POINT_SIZE = 34370 Field Value int GL_VERTEX_SHADER public const int GL_VERTEX_SHADER = 35633 Field Value int GL_VIEWPORT public const int GL_VIEWPORT = 2978 Field Value int GL_WAIT_FAILED public const int GL_WAIT_FAILED = 37149 Field Value int GL_WRITE_ONLY public const int GL_WRITE_ONLY = 35001 Field Value int GL_XOR public const int GL_XOR = 5382 Field Value int GL_ZERO public const int GL_ZERO = 0 Field Value int Methods glAccum(uint, float) public static extern void glAccum(uint op, float value) Parameters op uint value float glActiveProgramEXT(uint) public static extern void glActiveProgramEXT(uint program) Parameters program uint glActiveShaderProgram(uint, uint) public static extern void glActiveShaderProgram(uint pipeline, uint program) Parameters pipeline uint program uint glActiveStencilFaceEXT(uint) public static extern void glActiveStencilFaceEXT(uint face) Parameters face uint glActiveTexture(uint) public static extern void glActiveTexture(uint texture) Parameters texture uint glActiveTextureARB(uint) public static extern void glActiveTextureARB(uint texture) Parameters texture uint glActiveVaryingNV(uint, string) public static extern void glActiveVaryingNV(uint program, string name) Parameters program uint name string glAlphaFragmentOp1ATI(uint, uint, uint, uint, uint, uint) public static extern void glAlphaFragmentOp1ATI(uint op, uint dst, uint dstMod, uint arg1, uint arg1Rep, uint arg1Mod) Parameters op uint dst uint dstMod uint arg1 uint arg1Rep uint arg1Mod uint glAlphaFragmentOp2ATI(uint, uint, uint, uint, uint, uint, uint, uint, uint) public static extern void glAlphaFragmentOp2ATI(uint op, uint dst, uint dstMod, uint arg1, uint arg1Rep, uint arg1Mod, uint arg2, uint arg2Rep, uint arg2Mod) Parameters op uint dst uint dstMod uint arg1 uint arg1Rep uint arg1Mod uint arg2 uint arg2Rep uint arg2Mod uint glAlphaFragmentOp3ATI(uint, uint, uint, uint, uint, uint, uint, uint, uint, uint, uint, uint) public static extern void glAlphaFragmentOp3ATI(uint op, uint dst, uint dstMod, uint arg1, uint arg1Rep, uint arg1Mod, uint arg2, uint arg2Rep, uint arg2Mod, uint arg3, uint arg3Rep, uint arg3Mod) Parameters op uint dst uint dstMod uint arg1 uint arg1Rep uint arg1Mod uint arg2 uint arg2Rep uint arg2Mod uint arg3 uint arg3Rep uint arg3Mod uint glAlphaFunc(uint, float) public static extern void glAlphaFunc(uint func, float @ref) Parameters func uint ref float glApplyTextureEXT(uint) public static extern void glApplyTextureEXT(uint mode) Parameters mode uint glAreProgramsResidentNV(int, uint*, bool*) public static extern bool glAreProgramsResidentNV(int n, uint* programs, bool* residences) Parameters n int programs uint* residences bool* Returns bool glAreTexturesResident(int, uint*, bool*) public static extern bool glAreTexturesResident(int n, uint* textures, bool* residences) Parameters n int textures uint* residences bool* Returns bool glAreTexturesResidentEXT(int, uint*, bool*) public static extern bool glAreTexturesResidentEXT(int n, uint* textures, bool* residences) Parameters n int textures uint* residences bool* Returns bool glArrayElement(int) public static extern void glArrayElement(int i) Parameters i int glArrayElementEXT(int) public static extern void glArrayElementEXT(int i) Parameters i int glArrayObjectATI(uint, int, uint, int, uint, uint) public static extern void glArrayObjectATI(uint array, int size, uint type, int stride, uint buffer, uint offset) Parameters array uint size int type uint stride int buffer uint offset uint glAsyncMarkerSGIX(uint) public static extern void glAsyncMarkerSGIX(uint marker) Parameters marker uint glAttachObjectARB(uint, uint) public static extern void glAttachObjectARB(uint containerObj, uint obj) Parameters containerObj uint obj uint glAttachShader(uint, uint) public static extern void glAttachShader(uint program, uint shader) Parameters program uint shader uint glBegin(uint) public static extern void glBegin(uint mode) Parameters mode uint glBeginConditionalRender(uint, uint) public static extern void glBeginConditionalRender(uint id, uint mode) Parameters id uint mode uint glBeginConditionalRenderNV(uint, uint) public static extern void glBeginConditionalRenderNV(uint id, uint mode) Parameters id uint mode uint glBeginFragmentShaderATI() public static extern void glBeginFragmentShaderATI() glBeginOcclusionQueryNV(uint) public static extern void glBeginOcclusionQueryNV(uint id) Parameters id uint glBeginPerfMonitorAMD(uint) public static extern void glBeginPerfMonitorAMD(uint monitor) Parameters monitor uint glBeginQuery(uint, uint) public static extern void glBeginQuery(uint target, uint id) Parameters target uint id uint glBeginQueryARB(uint, uint) public static extern void glBeginQueryARB(uint target, uint id) Parameters target uint id uint glBeginQueryIndexed(uint, uint, uint) public static extern void glBeginQueryIndexed(uint target, uint index, uint id) Parameters target uint index uint id uint glBeginTransformFeedback(uint) public static extern void glBeginTransformFeedback(uint primitiveMode) Parameters primitiveMode uint glBeginTransformFeedbackEXT(uint) public static extern void glBeginTransformFeedbackEXT(uint primitiveMode) Parameters primitiveMode uint glBeginTransformFeedbackNV(uint) public static extern void glBeginTransformFeedbackNV(uint primitiveMode) Parameters primitiveMode uint glBeginVertexShaderEXT() public static extern void glBeginVertexShaderEXT() glBeginVideoCaptureNV(uint) public static extern void glBeginVideoCaptureNV(uint video_capture_slot) Parameters video_capture_slot uint glBindAttribLocation(uint, uint, string) public static extern void glBindAttribLocation(uint program, uint index, string name) Parameters program uint index uint name string glBindAttribLocationARB(uint, uint, string) public static extern void glBindAttribLocationARB(uint programObj, uint index, string name) Parameters programObj uint index uint name string glBindBuffer(uint, uint) public static extern void glBindBuffer(uint target, uint buffer) Parameters target uint buffer uint glBindBufferARB(uint, uint) public static extern void glBindBufferARB(uint target, uint buffer) Parameters target uint buffer uint glBindBufferBase(uint, uint, uint) public static extern void glBindBufferBase(uint target, uint index, uint buffer) Parameters target uint index uint buffer uint glBindBufferBaseEXT(uint, uint, uint) public static extern void glBindBufferBaseEXT(uint target, uint index, uint buffer) Parameters target uint index uint buffer uint glBindBufferBaseNV(uint, uint, uint) public static extern void glBindBufferBaseNV(uint target, uint index, uint buffer) Parameters target uint index uint buffer uint glBindBufferOffsetEXT(uint, uint, uint, nint) public static extern void glBindBufferOffsetEXT(uint target, uint index, uint buffer, nint offset) Parameters target uint index uint buffer uint offset nint glBindBufferOffsetNV(uint, uint, uint, nint) public static extern void glBindBufferOffsetNV(uint target, uint index, uint buffer, nint offset) Parameters target uint index uint buffer uint offset nint glBindBufferRange(uint, uint, uint, nint, nint) public static extern void glBindBufferRange(uint target, uint index, uint buffer, nint offset, nint size) Parameters target uint index uint buffer uint offset nint size nint glBindBufferRangeEXT(uint, uint, uint, nint, nint) public static extern void glBindBufferRangeEXT(uint target, uint index, uint buffer, nint offset, nint size) Parameters target uint index uint buffer uint offset nint size nint glBindBufferRangeNV(uint, uint, uint, nint, nint) public static extern void glBindBufferRangeNV(uint target, uint index, uint buffer, nint offset, nint size) Parameters target uint index uint buffer uint offset nint size nint glBindFragDataLocation(uint, uint, string) public static extern void glBindFragDataLocation(uint program, uint color, string name) Parameters program uint color uint name string glBindFragDataLocationEXT(uint, uint, string) public static extern void glBindFragDataLocationEXT(uint program, uint color, string name) Parameters program uint color uint name string glBindFragDataLocationIndexed(uint, uint, uint, string) public static extern void glBindFragDataLocationIndexed(uint program, uint colorNumber, uint index, string name) Parameters program uint colorNumber uint index uint name string glBindFragmentShaderATI(uint) public static extern void glBindFragmentShaderATI(uint id) Parameters id uint glBindFramebuffer(uint, uint) public static extern void glBindFramebuffer(uint target, uint framebuffer) Parameters target uint framebuffer uint glBindFramebufferEXT(uint, uint) public static extern void glBindFramebufferEXT(uint target, uint framebuffer) Parameters target uint framebuffer uint glBindImageTextureEXT(uint, uint, int, bool, int, uint, int) public static extern void glBindImageTextureEXT(uint index, uint texture, int level, bool layered, int layer, uint access, int format) Parameters index uint texture uint level int layered bool layer int access uint format int glBindLightParameterEXT(uint, uint) public static extern int glBindLightParameterEXT(uint light, uint value) Parameters light uint value uint Returns int glBindMaterialParameterEXT(uint, uint) public static extern int glBindMaterialParameterEXT(uint face, uint value) Parameters face uint value uint Returns int glBindMultiTextureEXT(uint, uint, uint) public static extern void glBindMultiTextureEXT(uint texunit, uint target, uint texture) Parameters texunit uint target uint texture uint glBindParameterEXT(uint) public static extern int glBindParameterEXT(uint value) Parameters value uint Returns int glBindProgramARB(uint, uint) public static extern void glBindProgramARB(uint target, uint program) Parameters target uint program uint glBindProgramNV(uint, uint) public static extern void glBindProgramNV(uint target, uint id) Parameters target uint id uint glBindProgramPipeline(uint) public static extern void glBindProgramPipeline(uint pipeline) Parameters pipeline uint glBindRenderbuffer(uint, uint) public static extern void glBindRenderbuffer(uint target, uint renderbuffer) Parameters target uint renderbuffer uint glBindRenderbufferEXT(uint, uint) public static extern void glBindRenderbufferEXT(uint target, uint renderbuffer) Parameters target uint renderbuffer uint glBindSampler(uint, uint) public static extern void glBindSampler(uint unit, uint sampler) Parameters unit uint sampler uint glBindTexGenParameterEXT(uint, uint, uint) public static extern int glBindTexGenParameterEXT(uint unit, uint coord, uint value) Parameters unit uint coord uint value uint Returns int glBindTexture(uint, uint) public static extern void glBindTexture(uint target, uint texture) Parameters target uint texture uint glBindTextureEXT(uint, uint) public static extern void glBindTextureEXT(uint target, uint texture) Parameters target uint texture uint glBindTextureUnitParameterEXT(uint, uint) public static extern int glBindTextureUnitParameterEXT(uint unit, uint value) Parameters unit uint value uint Returns int glBindTransformFeedback(uint, uint) public static extern void glBindTransformFeedback(uint target, uint id) Parameters target uint id uint glBindTransformFeedbackNV(uint, uint) public static extern void glBindTransformFeedbackNV(uint target, uint id) Parameters target uint id uint glBindVertexArray(uint) public static extern void glBindVertexArray(uint array) Parameters array uint glBindVertexArrayAPPLE(uint) public static extern void glBindVertexArrayAPPLE(uint array) Parameters array uint glBindVertexShaderEXT(uint) public static extern void glBindVertexShaderEXT(uint id) Parameters id uint glBindVideoCaptureStreamBufferNV(uint, uint, uint, nint) public static extern void glBindVideoCaptureStreamBufferNV(uint video_capture_slot, uint stream, uint frame_region, nint offset) Parameters video_capture_slot uint stream uint frame_region uint offset nint glBindVideoCaptureStreamTextureNV(uint, uint, uint, uint, uint) public static extern void glBindVideoCaptureStreamTextureNV(uint video_capture_slot, uint stream, uint frame_region, uint target, uint texture) Parameters video_capture_slot uint stream uint frame_region uint target uint texture uint glBinormal3bEXT(sbyte, sbyte, sbyte) public static extern void glBinormal3bEXT(sbyte bx, sbyte by, sbyte bz) Parameters bx sbyte by sbyte bz sbyte glBinormal3bvEXT(sbyte*) public static extern void glBinormal3bvEXT(sbyte* v) Parameters v sbyte* glBinormal3dEXT(double, double, double) public static extern void glBinormal3dEXT(double bx, double by, double bz) Parameters bx double by double bz double glBinormal3dvEXT(double*) public static extern void glBinormal3dvEXT(double* v) Parameters v double* glBinormal3fEXT(float, float, float) public static extern void glBinormal3fEXT(float bx, float by, float bz) Parameters bx float by float bz float glBinormal3fvEXT(float*) public static extern void glBinormal3fvEXT(float* v) Parameters v float* glBinormal3iEXT(int, int, int) public static extern void glBinormal3iEXT(int bx, int by, int bz) Parameters bx int by int bz int glBinormal3ivEXT(int*) public static extern void glBinormal3ivEXT(int* v) Parameters v int* glBinormal3sEXT(short, short, short) public static extern void glBinormal3sEXT(short bx, short by, short bz) Parameters bx short by short bz short glBinormal3svEXT(short*) public static extern void glBinormal3svEXT(short* v) Parameters v short* glBinormalPointerEXT(uint, int, nint) public static extern void glBinormalPointerEXT(uint type, int stride, nint pointer) Parameters type uint stride int pointer nint glBitmap(int, int, float, float, float, float, byte*) public static extern void glBitmap(int width, int height, float xorig, float yorig, float xmove, float ymove, byte* bitmap) Parameters width int height int xorig float yorig float xmove float ymove float bitmap byte* glBlendColor(float, float, float, float) public static extern void glBlendColor(float red, float green, float blue, float alpha) Parameters red float green float blue float alpha float glBlendColorEXT(float, float, float, float) public static extern void glBlendColorEXT(float red, float green, float blue, float alpha) Parameters red float green float blue float alpha float glBlendEquation(uint) public static extern void glBlendEquation(uint mode) Parameters mode uint glBlendEquationEXT(uint) public static extern void glBlendEquationEXT(uint mode) Parameters mode uint glBlendEquationIndexedAMD(uint, uint) public static extern void glBlendEquationIndexedAMD(uint buf, uint mode) Parameters buf uint mode uint glBlendEquationSeparate(uint, uint) public static extern void glBlendEquationSeparate(uint modeRGB, uint modeAlpha) Parameters modeRGB uint modeAlpha uint glBlendEquationSeparateEXT(uint, uint) public static extern void glBlendEquationSeparateEXT(uint modeRGB, uint modeAlpha) Parameters modeRGB uint modeAlpha uint glBlendEquationSeparateIndexedAMD(uint, uint, uint) public static extern void glBlendEquationSeparateIndexedAMD(uint buf, uint modeRGB, uint modeAlpha) Parameters buf uint modeRGB uint modeAlpha uint glBlendEquationSeparatei(uint, uint, uint) public static extern void glBlendEquationSeparatei(uint buf, uint modeRGB, uint modeAlpha) Parameters buf uint modeRGB uint modeAlpha uint glBlendEquationSeparateiARB(uint, uint, uint) public static extern void glBlendEquationSeparateiARB(uint buf, uint modeRGB, uint modeAlpha) Parameters buf uint modeRGB uint modeAlpha uint glBlendEquationi(uint, uint) public static extern void glBlendEquationi(uint buf, uint mode) Parameters buf uint mode uint glBlendEquationiARB(uint, uint) public static extern void glBlendEquationiARB(uint buf, uint mode) Parameters buf uint mode uint glBlendFunc(uint, uint) public static extern void glBlendFunc(uint sfactor, uint dfactor) Parameters sfactor uint dfactor uint glBlendFuncIndexedAMD(uint, uint, uint) public static extern void glBlendFuncIndexedAMD(uint buf, uint src, uint dst) Parameters buf uint src uint dst uint glBlendFuncSeparate(uint, uint, uint, uint) public static extern void glBlendFuncSeparate(uint sfactorRGB, uint dfactorRGB, uint sfactorAlpha, uint dfactorAlpha) Parameters sfactorRGB uint dfactorRGB uint sfactorAlpha uint dfactorAlpha uint glBlendFuncSeparateEXT(uint, uint, uint, uint) public static extern void glBlendFuncSeparateEXT(uint sfactorRGB, uint dfactorRGB, uint sfactorAlpha, uint dfactorAlpha) Parameters sfactorRGB uint dfactorRGB uint sfactorAlpha uint dfactorAlpha uint glBlendFuncSeparateINGR(uint, uint, uint, uint) public static extern void glBlendFuncSeparateINGR(uint sfactorRGB, uint dfactorRGB, uint sfactorAlpha, uint dfactorAlpha) Parameters sfactorRGB uint dfactorRGB uint sfactorAlpha uint dfactorAlpha uint glBlendFuncSeparateIndexedAMD(uint, uint, uint, uint, uint) public static extern void glBlendFuncSeparateIndexedAMD(uint buf, uint srcRGB, uint dstRGB, uint srcAlpha, uint dstAlpha) Parameters buf uint srcRGB uint dstRGB uint srcAlpha uint dstAlpha uint glBlendFuncSeparatei(uint, uint, uint, uint, uint) public static extern void glBlendFuncSeparatei(uint buf, uint srcRGB, uint dstRGB, uint srcAlpha, uint dstAlpha) Parameters buf uint srcRGB uint dstRGB uint srcAlpha uint dstAlpha uint glBlendFuncSeparateiARB(uint, uint, uint, uint, uint) public static extern void glBlendFuncSeparateiARB(uint buf, uint srcRGB, uint dstRGB, uint srcAlpha, uint dstAlpha) Parameters buf uint srcRGB uint dstRGB uint srcAlpha uint dstAlpha uint glBlendFunci(uint, uint, uint) public static extern void glBlendFunci(uint buf, uint src, uint dst) Parameters buf uint src uint dst uint glBlendFunciARB(uint, uint, uint) public static extern void glBlendFunciARB(uint buf, uint src, uint dst) Parameters buf uint src uint dst uint glBlitFramebuffer(int, int, int, int, int, int, int, int, uint, uint) public static extern void glBlitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, uint filter) Parameters srcX0 int srcY0 int srcX1 int srcY1 int dstX0 int dstY0 int dstX1 int dstY1 int mask uint filter uint glBlitFramebufferEXT(int, int, int, int, int, int, int, int, uint, uint) public static extern void glBlitFramebufferEXT(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, uint filter) Parameters srcX0 int srcY0 int srcX1 int srcY1 int dstX0 int dstY0 int dstX1 int dstY1 int mask uint filter uint glBufferAddressRangeNV(uint, uint, ulong, nint) public static extern void glBufferAddressRangeNV(uint pname, uint index, ulong address, nint length) Parameters pname uint index uint address ulong length nint glBufferData(uint, nint, nint, uint) public static extern void glBufferData(uint target, nint size, nint data, uint usage) Parameters target uint size nint data nint usage uint glBufferDataARB(uint, nint, nint, uint) public static extern void glBufferDataARB(uint target, nint size, nint data, uint usage) Parameters target uint size nint data nint usage uint glBufferParameteriAPPLE(uint, uint, int) public static extern void glBufferParameteriAPPLE(uint target, uint pname, int param) Parameters target uint pname uint param int glBufferSubData(uint, nint, nint, nint) public static extern void glBufferSubData(uint target, nint offset, nint size, nint data) Parameters target uint offset nint size nint data nint glBufferSubDataARB(uint, nint, nint, nint) public static extern void glBufferSubDataARB(uint target, nint offset, nint size, nint data) Parameters target uint offset nint size nint data nint glCallList(uint) public static extern void glCallList(uint list) Parameters list uint glCallLists(int, uint, nint) public static extern void glCallLists(int n, uint type, nint lists) Parameters n int type uint lists nint glCheckFramebufferStatus(uint) public static extern uint glCheckFramebufferStatus(uint target) Parameters target uint Returns uint glCheckFramebufferStatusEXT(uint) public static extern uint glCheckFramebufferStatusEXT(uint target) Parameters target uint Returns uint glCheckNamedFramebufferStatusEXT(uint, uint) public static extern uint glCheckNamedFramebufferStatusEXT(uint framebuffer, uint target) Parameters framebuffer uint target uint Returns uint glClampColor(uint, uint) public static extern void glClampColor(uint target, uint clamp) Parameters target uint clamp uint glClampColorARB(uint, uint) public static extern void glClampColorARB(uint target, uint clamp) Parameters target uint clamp uint glClear(uint) public static extern void glClear(uint mask) Parameters mask uint glClearAccum(float, float, float, float) public static extern void glClearAccum(float red, float green, float blue, float alpha) Parameters red float green float blue float alpha float glClearBufferfi(uint, int, float, int) public static extern void glClearBufferfi(uint buffer, int drawbuffer, float depth, int stencil) Parameters buffer uint drawbuffer int depth float stencil int glClearBufferfv(uint, int, float*) public static extern void glClearBufferfv(uint buffer, int drawbuffer, float* value) Parameters buffer uint drawbuffer int value float* glClearBufferiv(uint, int, int*) public static extern void glClearBufferiv(uint buffer, int drawbuffer, int* value) Parameters buffer uint drawbuffer int value int* glClearBufferuiv(uint, int, uint*) public static extern void glClearBufferuiv(uint buffer, int drawbuffer, uint* value) Parameters buffer uint drawbuffer int value uint* glClearColor(float, float, float, float) public static extern void glClearColor(float red, float green, float blue, float alpha) Parameters red float green float blue float alpha float glClearColorIiEXT(int, int, int, int) public static extern void glClearColorIiEXT(int red, int green, int blue, int alpha) Parameters red int green int blue int alpha int glClearColorIuiEXT(uint, uint, uint, uint) public static extern void glClearColorIuiEXT(uint red, uint green, uint blue, uint alpha) Parameters red uint green uint blue uint alpha uint glClearDepth(double) public static extern void glClearDepth(double depth) Parameters depth double glClearDepthdNV(double) public static extern void glClearDepthdNV(double depth) Parameters depth double glClearDepthf(float) public static extern void glClearDepthf(float d) Parameters d float glClearIndex(float) public static extern void glClearIndex(float c) Parameters c float glClearStencil(int) public static extern void glClearStencil(int s) Parameters s int glClientActiveTexture(uint) public static extern void glClientActiveTexture(uint texture) Parameters texture uint glClientActiveTextureARB(uint) public static extern void glClientActiveTextureARB(uint texture) Parameters texture uint glClientActiveVertexStreamATI(uint) public static extern void glClientActiveVertexStreamATI(uint stream) Parameters stream uint glClientAttribDefaultEXT(uint) public static extern void glClientAttribDefaultEXT(uint mask) Parameters mask uint glClientWaitSync(nint, uint, ulong) public static extern uint glClientWaitSync(nint sync, uint flags, ulong timeout) Parameters sync nint flags uint timeout ulong Returns uint glClipPlane(uint, double*) public static extern void glClipPlane(uint plane, double* equation) Parameters plane uint equation double* glColor3b(sbyte, sbyte, sbyte) public static extern void glColor3b(sbyte red, sbyte green, sbyte blue) Parameters red sbyte green sbyte blue sbyte glColor3bv(sbyte*) public static extern void glColor3bv(sbyte* v) Parameters v sbyte* glColor3d(double, double, double) public static extern void glColor3d(double red, double green, double blue) Parameters red double green double blue double glColor3dv(double*) public static extern void glColor3dv(double* v) Parameters v double* glColor3f(float, float, float) public static extern void glColor3f(float red, float green, float blue) Parameters red float green float blue float glColor3fVertex3fSUN(float, float, float, float, float, float) public static extern void glColor3fVertex3fSUN(float r, float g, float b, float x, float y, float z) Parameters r float g float b float x float y float z float glColor3fVertex3fvSUN(float*, float*) public static extern void glColor3fVertex3fvSUN(float* c, float* v) Parameters c float* v float* glColor3fv(float*) public static extern void glColor3fv(float* v) Parameters v float* glColor3hNV(ushort, ushort, ushort) public static extern void glColor3hNV(ushort red, ushort green, ushort blue) Parameters red ushort green ushort blue ushort glColor3hvNV(ushort*) public static extern void glColor3hvNV(ushort* v) Parameters v ushort* glColor3i(int, int, int) public static extern void glColor3i(int red, int green, int blue) Parameters red int green int blue int glColor3iv(int*) public static extern void glColor3iv(int* v) Parameters v int* glColor3s(short, short, short) public static extern void glColor3s(short red, short green, short blue) Parameters red short green short blue short glColor3sv(short*) public static extern void glColor3sv(short* v) Parameters v short* glColor3ub(byte, byte, byte) public static extern void glColor3ub(byte red, byte green, byte blue) Parameters red byte green byte blue byte glColor3ubv(byte*) public static extern void glColor3ubv(byte* v) Parameters v byte* glColor3ui(uint, uint, uint) public static extern void glColor3ui(uint red, uint green, uint blue) Parameters red uint green uint blue uint glColor3uiv(uint*) public static extern void glColor3uiv(uint* v) Parameters v uint* glColor3us(ushort, ushort, ushort) public static extern void glColor3us(ushort red, ushort green, ushort blue) Parameters red ushort green ushort blue ushort glColor3usv(ushort*) public static extern void glColor3usv(ushort* v) Parameters v ushort* glColor4b(sbyte, sbyte, sbyte, sbyte) public static extern void glColor4b(sbyte red, sbyte green, sbyte blue, sbyte alpha) Parameters red sbyte green sbyte blue sbyte alpha sbyte glColor4bv(sbyte*) public static extern void glColor4bv(sbyte* v) Parameters v sbyte* glColor4d(double, double, double, double) public static extern void glColor4d(double red, double green, double blue, double alpha) Parameters red double green double blue double alpha double glColor4dv(double*) public static extern void glColor4dv(double* v) Parameters v double* glColor4f(float, float, float, float) public static extern void glColor4f(float red, float green, float blue, float alpha) Parameters red float green float blue float alpha float glColor4fNormal3fVertex3fSUN(float, float, float, float, float, float, float, float, float, float) public static extern void glColor4fNormal3fVertex3fSUN(float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z) Parameters r float g float b float a float nx float ny float nz float x float y float z float glColor4fNormal3fVertex3fvSUN(float*, float*, float*) public static extern void glColor4fNormal3fVertex3fvSUN(float* c, float* n, float* v) Parameters c float* n float* v float* glColor4fv(float*) public static extern void glColor4fv(float* v) Parameters v float* glColor4hNV(ushort, ushort, ushort, ushort) public static extern void glColor4hNV(ushort red, ushort green, ushort blue, ushort alpha) Parameters red ushort green ushort blue ushort alpha ushort glColor4hvNV(ushort*) public static extern void glColor4hvNV(ushort* v) Parameters v ushort* glColor4i(int, int, int, int) public static extern void glColor4i(int red, int green, int blue, int alpha) Parameters red int green int blue int alpha int glColor4iv(int*) public static extern void glColor4iv(int* v) Parameters v int* glColor4s(short, short, short, short) public static extern void glColor4s(short red, short green, short blue, short alpha) Parameters red short green short blue short alpha short glColor4sv(short*) public static extern void glColor4sv(short* v) Parameters v short* glColor4ub(byte, byte, byte, byte) public static extern void glColor4ub(byte red, byte green, byte blue, byte alpha) Parameters red byte green byte blue byte alpha byte glColor4ubVertex2fSUN(byte, byte, byte, byte, float, float) public static extern void glColor4ubVertex2fSUN(byte r, byte g, byte b, byte a, float x, float y) Parameters r byte g byte b byte a byte x float y float glColor4ubVertex2fvSUN(byte*, float*) public static extern void glColor4ubVertex2fvSUN(byte* c, float* v) Parameters c byte* v float* glColor4ubVertex3fSUN(byte, byte, byte, byte, float, float, float) public static extern void glColor4ubVertex3fSUN(byte r, byte g, byte b, byte a, float x, float y, float z) Parameters r byte g byte b byte a byte x float y float z float glColor4ubVertex3fvSUN(byte*, float*) public static extern void glColor4ubVertex3fvSUN(byte* c, float* v) Parameters c byte* v float* glColor4ubv(byte*) public static extern void glColor4ubv(byte* v) Parameters v byte* glColor4ui(uint, uint, uint, uint) public static extern void glColor4ui(uint red, uint green, uint blue, uint alpha) Parameters red uint green uint blue uint alpha uint glColor4uiv(uint*) public static extern void glColor4uiv(uint* v) Parameters v uint* glColor4us(ushort, ushort, ushort, ushort) public static extern void glColor4us(ushort red, ushort green, ushort blue, ushort alpha) Parameters red ushort green ushort blue ushort alpha ushort glColor4usv(ushort*) public static extern void glColor4usv(ushort* v) Parameters v ushort* glColorFormatNV(int, uint, int) public static extern void glColorFormatNV(int size, uint type, int stride) Parameters size int type uint stride int glColorFragmentOp1ATI(uint, uint, uint, uint, uint, uint, uint) public static extern void glColorFragmentOp1ATI(uint op, uint dst, uint dstMask, uint dstMod, uint arg1, uint arg1Rep, uint arg1Mod) Parameters op uint dst uint dstMask uint dstMod uint arg1 uint arg1Rep uint arg1Mod uint glColorFragmentOp2ATI(uint, uint, uint, uint, uint, uint, uint, uint, uint, uint) public static extern void glColorFragmentOp2ATI(uint op, uint dst, uint dstMask, uint dstMod, uint arg1, uint arg1Rep, uint arg1Mod, uint arg2, uint arg2Rep, uint arg2Mod) Parameters op uint dst uint dstMask uint dstMod uint arg1 uint arg1Rep uint arg1Mod uint arg2 uint arg2Rep uint arg2Mod uint glColorFragmentOp3ATI(uint, uint, uint, uint, uint, uint, uint, uint, uint, uint, uint, uint, uint) public static extern void glColorFragmentOp3ATI(uint op, uint dst, uint dstMask, uint dstMod, uint arg1, uint arg1Rep, uint arg1Mod, uint arg2, uint arg2Rep, uint arg2Mod, uint arg3, uint arg3Rep, uint arg3Mod) Parameters op uint dst uint dstMask uint dstMod uint arg1 uint arg1Rep uint arg1Mod uint arg2 uint arg2Rep uint arg2Mod uint arg3 uint arg3Rep uint arg3Mod uint glColorMask(bool, bool, bool, bool) public static extern void glColorMask(bool red, bool green, bool blue, bool alpha) Parameters red bool green bool blue bool alpha bool glColorMaskIndexedEXT(uint, bool, bool, bool, bool) public static extern void glColorMaskIndexedEXT(uint index, bool r, bool g, bool b, bool a) Parameters index uint r bool g bool b bool a bool glColorMaski(uint, bool, bool, bool, bool) public static extern void glColorMaski(uint index, bool r, bool g, bool b, bool a) Parameters index uint r bool g bool b bool a bool glColorMaterial(uint, uint) public static extern void glColorMaterial(uint face, uint mode) Parameters face uint mode uint glColorP3ui(uint, uint) public static extern void glColorP3ui(uint type, uint color) Parameters type uint color uint glColorP3uiv(uint, uint*) public static extern void glColorP3uiv(uint type, uint* color) Parameters type uint color uint* glColorP4ui(uint, uint) public static extern void glColorP4ui(uint type, uint color) Parameters type uint color uint glColorP4uiv(uint, uint*) public static extern void glColorP4uiv(uint type, uint* color) Parameters type uint color uint* glColorPointer(int, uint, int, nint) public static extern void glColorPointer(int size, uint type, int stride, nint pointer) Parameters size int type uint stride int pointer nint glColorPointerEXT(int, uint, int, int, nint) public static extern void glColorPointerEXT(int size, uint type, int stride, int count, nint pointer) Parameters size int type uint stride int count int pointer nint glColorPointerListIBM(int, uint, int, nint, int) public static extern void glColorPointerListIBM(int size, uint type, int stride, nint pointer, int ptrstride) Parameters size int type uint stride int pointer nint ptrstride int glColorPointervINTEL(int, uint, nint) public static extern void glColorPointervINTEL(int size, uint type, nint pointer) Parameters size int type uint pointer nint glColorSubTable(uint, int, int, uint, uint, nint) public static extern void glColorSubTable(uint target, int start, int count, uint format, uint type, nint data) Parameters target uint start int count int format uint type uint data nint glColorSubTableEXT(uint, int, int, uint, uint, nint) public static extern void glColorSubTableEXT(uint target, int start, int count, uint format, uint type, nint data) Parameters target uint start int count int format uint type uint data nint glColorTable(uint, uint, int, uint, uint, nint) public static extern void glColorTable(uint target, uint internalformat, int width, uint format, uint type, nint table) Parameters target uint internalformat uint width int format uint type uint table nint glColorTableEXT(uint, uint, int, uint, uint, nint) public static extern void glColorTableEXT(uint target, uint internalFormat, int width, uint format, uint type, nint table) Parameters target uint internalFormat uint width int format uint type uint table nint glColorTableParameterfv(uint, uint, float*) public static extern void glColorTableParameterfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glColorTableParameterfvSGI(uint, uint, float*) public static extern void glColorTableParameterfvSGI(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glColorTableParameteriv(uint, uint, int*) public static extern void glColorTableParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glColorTableParameterivSGI(uint, uint, int*) public static extern void glColorTableParameterivSGI(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glColorTableSGI(uint, uint, int, uint, uint, nint) public static extern void glColorTableSGI(uint target, uint internalformat, int width, uint format, uint type, nint table) Parameters target uint internalformat uint width int format uint type uint table nint glCombinerInputNV(uint, uint, uint, uint, uint, uint) public static extern void glCombinerInputNV(uint stage, uint portion, uint variable, uint input, uint mapping, uint componentUsage) Parameters stage uint portion uint variable uint input uint mapping uint componentUsage uint glCombinerOutputNV(uint, uint, uint, uint, uint, uint, uint, bool, bool, bool) public static extern void glCombinerOutputNV(uint stage, uint portion, uint abOutput, uint cdOutput, uint sumOutput, uint scale, uint bias, bool abDotProduct, bool cdDotProduct, bool muxSum) Parameters stage uint portion uint abOutput uint cdOutput uint sumOutput uint scale uint bias uint abDotProduct bool cdDotProduct bool muxSum bool glCombinerParameterfNV(uint, float) public static extern void glCombinerParameterfNV(uint pname, float param) Parameters pname uint param float glCombinerParameterfvNV(uint, float*) public static extern void glCombinerParameterfvNV(uint pname, float* @params) Parameters pname uint params float* glCombinerParameteriNV(uint, int) public static extern void glCombinerParameteriNV(uint pname, int param) Parameters pname uint param int glCombinerParameterivNV(uint, int*) public static extern void glCombinerParameterivNV(uint pname, int* @params) Parameters pname uint params int* glCombinerStageParameterfvNV(uint, uint, float*) public static extern void glCombinerStageParameterfvNV(uint stage, uint pname, float* @params) Parameters stage uint pname uint params float* glCompileShader(uint) public static extern void glCompileShader(uint shader) Parameters shader uint glCompileShaderARB(uint) public static extern void glCompileShaderARB(uint shaderObj) Parameters shaderObj uint glCompileShaderIncludeARB(uint, int, string[], int*) public static extern void glCompileShaderIncludeARB(uint shader, int count, string[] path, int* length) Parameters shader uint count int path string[] length int* glCompressedMultiTexImage1DEXT(uint, uint, int, uint, int, int, int, nint) public static extern void glCompressedMultiTexImage1DEXT(uint texunit, uint target, int level, uint internalformat, int width, int border, int imageSize, nint bits) Parameters texunit uint target uint level int internalformat uint width int border int imageSize int bits nint glCompressedMultiTexImage2DEXT(uint, uint, int, uint, int, int, int, int, nint) public static extern void glCompressedMultiTexImage2DEXT(uint texunit, uint target, int level, uint internalformat, int width, int height, int border, int imageSize, nint bits) Parameters texunit uint target uint level int internalformat uint width int height int border int imageSize int bits nint glCompressedMultiTexImage3DEXT(uint, uint, int, uint, int, int, int, int, int, nint) public static extern void glCompressedMultiTexImage3DEXT(uint texunit, uint target, int level, uint internalformat, int width, int height, int depth, int border, int imageSize, nint bits) Parameters texunit uint target uint level int internalformat uint width int height int depth int border int imageSize int bits nint glCompressedMultiTexSubImage1DEXT(uint, uint, int, int, int, uint, int, nint) public static extern void glCompressedMultiTexSubImage1DEXT(uint texunit, uint target, int level, int xoffset, int width, uint format, int imageSize, nint bits) Parameters texunit uint target uint level int xoffset int width int format uint imageSize int bits nint glCompressedMultiTexSubImage2DEXT(uint, uint, int, int, int, int, int, uint, int, nint) public static extern void glCompressedMultiTexSubImage2DEXT(uint texunit, uint target, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, nint bits) Parameters texunit uint target uint level int xoffset int yoffset int width int height int format uint imageSize int bits nint glCompressedMultiTexSubImage3DEXT(uint, uint, int, int, int, int, int, int, int, uint, int, nint) public static extern void glCompressedMultiTexSubImage3DEXT(uint texunit, uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, nint bits) Parameters texunit uint target uint level int xoffset int yoffset int zoffset int width int height int depth int format uint imageSize int bits nint glCompressedTexImage1D(uint, int, uint, int, int, int, nint) public static extern void glCompressedTexImage1D(uint target, int level, uint internalformat, int width, int border, int imageSize, nint data) Parameters target uint level int internalformat uint width int border int imageSize int data nint glCompressedTexImage1DARB(uint, int, uint, int, int, int, nint) public static extern void glCompressedTexImage1DARB(uint target, int level, uint internalformat, int width, int border, int imageSize, nint data) Parameters target uint level int internalformat uint width int border int imageSize int data nint glCompressedTexImage2D(uint, int, uint, int, int, int, int, nint) public static extern void glCompressedTexImage2D(uint target, int level, uint internalformat, int width, int height, int border, int imageSize, nint data) Parameters target uint level int internalformat uint width int height int border int imageSize int data nint glCompressedTexImage2DARB(uint, int, uint, int, int, int, int, nint) public static extern void glCompressedTexImage2DARB(uint target, int level, uint internalformat, int width, int height, int border, int imageSize, nint data) Parameters target uint level int internalformat uint width int height int border int imageSize int data nint glCompressedTexImage3D(uint, int, uint, int, int, int, int, int, nint) public static extern void glCompressedTexImage3D(uint target, int level, uint internalformat, int width, int height, int depth, int border, int imageSize, nint data) Parameters target uint level int internalformat uint width int height int depth int border int imageSize int data nint glCompressedTexImage3DARB(uint, int, uint, int, int, int, int, int, nint) public static extern void glCompressedTexImage3DARB(uint target, int level, uint internalformat, int width, int height, int depth, int border, int imageSize, nint data) Parameters target uint level int internalformat uint width int height int depth int border int imageSize int data nint glCompressedTexSubImage1D(uint, int, int, int, uint, int, nint) public static extern void glCompressedTexSubImage1D(uint target, int level, int xoffset, int width, uint format, int imageSize, nint data) Parameters target uint level int xoffset int width int format uint imageSize int data nint glCompressedTexSubImage1DARB(uint, int, int, int, uint, int, nint) public static extern void glCompressedTexSubImage1DARB(uint target, int level, int xoffset, int width, uint format, int imageSize, nint data) Parameters target uint level int xoffset int width int format uint imageSize int data nint glCompressedTexSubImage2D(uint, int, int, int, int, int, uint, int, nint) public static extern void glCompressedTexSubImage2D(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, nint data) Parameters target uint level int xoffset int yoffset int width int height int format uint imageSize int data nint glCompressedTexSubImage2DARB(uint, int, int, int, int, int, uint, int, nint) public static extern void glCompressedTexSubImage2DARB(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, nint data) Parameters target uint level int xoffset int yoffset int width int height int format uint imageSize int data nint glCompressedTexSubImage3D(uint, int, int, int, int, int, int, int, uint, int, nint) public static extern void glCompressedTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, nint data) Parameters target uint level int xoffset int yoffset int zoffset int width int height int depth int format uint imageSize int data nint glCompressedTexSubImage3DARB(uint, int, int, int, int, int, int, int, uint, int, nint) public static extern void glCompressedTexSubImage3DARB(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, nint data) Parameters target uint level int xoffset int yoffset int zoffset int width int height int depth int format uint imageSize int data nint glCompressedTextureImage1DEXT(uint, uint, int, uint, int, int, int, nint) public static extern void glCompressedTextureImage1DEXT(uint texture, uint target, int level, uint internalformat, int width, int border, int imageSize, nint bits) Parameters texture uint target uint level int internalformat uint width int border int imageSize int bits nint glCompressedTextureImage2DEXT(uint, uint, int, uint, int, int, int, int, nint) public static extern void glCompressedTextureImage2DEXT(uint texture, uint target, int level, uint internalformat, int width, int height, int border, int imageSize, nint bits) Parameters texture uint target uint level int internalformat uint width int height int border int imageSize int bits nint glCompressedTextureImage3DEXT(uint, uint, int, uint, int, int, int, int, int, nint) public static extern void glCompressedTextureImage3DEXT(uint texture, uint target, int level, uint internalformat, int width, int height, int depth, int border, int imageSize, nint bits) Parameters texture uint target uint level int internalformat uint width int height int depth int border int imageSize int bits nint glCompressedTextureSubImage1DEXT(uint, uint, int, int, int, uint, int, nint) public static extern void glCompressedTextureSubImage1DEXT(uint texture, uint target, int level, int xoffset, int width, uint format, int imageSize, nint bits) Parameters texture uint target uint level int xoffset int width int format uint imageSize int bits nint glCompressedTextureSubImage2DEXT(uint, uint, int, int, int, int, int, uint, int, nint) public static extern void glCompressedTextureSubImage2DEXT(uint texture, uint target, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, nint bits) Parameters texture uint target uint level int xoffset int yoffset int width int height int format uint imageSize int bits nint glCompressedTextureSubImage3DEXT(uint, uint, int, int, int, int, int, int, int, uint, int, nint) public static extern void glCompressedTextureSubImage3DEXT(uint texture, uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, nint bits) Parameters texture uint target uint level int xoffset int yoffset int zoffset int width int height int depth int format uint imageSize int bits nint glConvolutionFilter1D(uint, uint, int, uint, uint, nint) public static extern void glConvolutionFilter1D(uint target, uint internalformat, int width, uint format, uint type, nint image) Parameters target uint internalformat uint width int format uint type uint image nint glConvolutionFilter1DEXT(uint, uint, int, uint, uint, nint) public static extern void glConvolutionFilter1DEXT(uint target, uint internalformat, int width, uint format, uint type, nint image) Parameters target uint internalformat uint width int format uint type uint image nint glConvolutionFilter2D(uint, uint, int, int, uint, uint, nint) public static extern void glConvolutionFilter2D(uint target, uint internalformat, int width, int height, uint format, uint type, nint image) Parameters target uint internalformat uint width int height int format uint type uint image nint glConvolutionFilter2DEXT(uint, uint, int, int, uint, uint, nint) public static extern void glConvolutionFilter2DEXT(uint target, uint internalformat, int width, int height, uint format, uint type, nint image) Parameters target uint internalformat uint width int height int format uint type uint image nint glConvolutionParameterf(uint, uint, float) public static extern void glConvolutionParameterf(uint target, uint pname, float @params) Parameters target uint pname uint params float glConvolutionParameterfEXT(uint, uint, float) public static extern void glConvolutionParameterfEXT(uint target, uint pname, float @params) Parameters target uint pname uint params float glConvolutionParameterfv(uint, uint, float*) public static extern void glConvolutionParameterfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glConvolutionParameterfvEXT(uint, uint, float*) public static extern void glConvolutionParameterfvEXT(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glConvolutionParameteri(uint, uint, int) public static extern void glConvolutionParameteri(uint target, uint pname, int @params) Parameters target uint pname uint params int glConvolutionParameteriEXT(uint, uint, int) public static extern void glConvolutionParameteriEXT(uint target, uint pname, int @params) Parameters target uint pname uint params int glConvolutionParameteriv(uint, uint, int*) public static extern void glConvolutionParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glConvolutionParameterivEXT(uint, uint, int*) public static extern void glConvolutionParameterivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glCopyBufferSubData(uint, uint, nint, nint, nint) public static extern void glCopyBufferSubData(uint readTarget, uint writeTarget, nint readOffset, nint writeOffset, nint size) Parameters readTarget uint writeTarget uint readOffset nint writeOffset nint size nint glCopyColorSubTable(uint, int, int, int, int) public static extern void glCopyColorSubTable(uint target, int start, int x, int y, int width) Parameters target uint start int x int y int width int glCopyColorSubTableEXT(uint, int, int, int, int) public static extern void glCopyColorSubTableEXT(uint target, int start, int x, int y, int width) Parameters target uint start int x int y int width int glCopyColorTable(uint, uint, int, int, int) public static extern void glCopyColorTable(uint target, uint internalformat, int x, int y, int width) Parameters target uint internalformat uint x int y int width int glCopyColorTableSGI(uint, uint, int, int, int) public static extern void glCopyColorTableSGI(uint target, uint internalformat, int x, int y, int width) Parameters target uint internalformat uint x int y int width int glCopyConvolutionFilter1D(uint, uint, int, int, int) public static extern void glCopyConvolutionFilter1D(uint target, uint internalformat, int x, int y, int width) Parameters target uint internalformat uint x int y int width int glCopyConvolutionFilter1DEXT(uint, uint, int, int, int) public static extern void glCopyConvolutionFilter1DEXT(uint target, uint internalformat, int x, int y, int width) Parameters target uint internalformat uint x int y int width int glCopyConvolutionFilter2D(uint, uint, int, int, int, int) public static extern void glCopyConvolutionFilter2D(uint target, uint internalformat, int x, int y, int width, int height) Parameters target uint internalformat uint x int y int width int height int glCopyConvolutionFilter2DEXT(uint, uint, int, int, int, int) public static extern void glCopyConvolutionFilter2DEXT(uint target, uint internalformat, int x, int y, int width, int height) Parameters target uint internalformat uint x int y int width int height int glCopyImageSubDataNV(uint, uint, int, int, int, int, uint, uint, int, int, int, int, int, int, int) public static extern void glCopyImageSubDataNV(uint srcName, uint srcTarget, int srcLevel, int srcX, int srcY, int srcZ, uint dstName, uint dstTarget, int dstLevel, int dstX, int dstY, int dstZ, int width, int height, int depth) Parameters srcName uint srcTarget uint srcLevel int srcX int srcY int srcZ int dstName uint dstTarget uint dstLevel int dstX int dstY int dstZ int width int height int depth int glCopyMultiTexImage1DEXT(uint, uint, int, uint, int, int, int, int) public static extern void glCopyMultiTexImage1DEXT(uint texunit, uint target, int level, uint internalformat, int x, int y, int width, int border) Parameters texunit uint target uint level int internalformat uint x int y int width int border int glCopyMultiTexImage2DEXT(uint, uint, int, uint, int, int, int, int, int) public static extern void glCopyMultiTexImage2DEXT(uint texunit, uint target, int level, uint internalformat, int x, int y, int width, int height, int border) Parameters texunit uint target uint level int internalformat uint x int y int width int height int border int glCopyMultiTexSubImage1DEXT(uint, uint, int, int, int, int, int) public static extern void glCopyMultiTexSubImage1DEXT(uint texunit, uint target, int level, int xoffset, int x, int y, int width) Parameters texunit uint target uint level int xoffset int x int y int width int glCopyMultiTexSubImage2DEXT(uint, uint, int, int, int, int, int, int, int) public static extern void glCopyMultiTexSubImage2DEXT(uint texunit, uint target, int level, int xoffset, int yoffset, int x, int y, int width, int height) Parameters texunit uint target uint level int xoffset int yoffset int x int y int width int height int glCopyMultiTexSubImage3DEXT(uint, uint, int, int, int, int, int, int, int, int) public static extern void glCopyMultiTexSubImage3DEXT(uint texunit, uint target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) Parameters texunit uint target uint level int xoffset int yoffset int zoffset int x int y int width int height int glCopyPixels(int, int, int, int, uint) public static extern void glCopyPixels(int x, int y, int width, int height, uint type) Parameters x int y int width int height int type uint glCopyTexImage1D(uint, int, uint, int, int, int, int) public static extern void glCopyTexImage1D(uint target, int level, uint internalformat, int x, int y, int width, int border) Parameters target uint level int internalformat uint x int y int width int border int glCopyTexImage1DEXT(uint, int, uint, int, int, int, int) public static extern void glCopyTexImage1DEXT(uint target, int level, uint internalformat, int x, int y, int width, int border) Parameters target uint level int internalformat uint x int y int width int border int glCopyTexImage2D(uint, int, uint, int, int, int, int, int) public static extern void glCopyTexImage2D(uint target, int level, uint internalformat, int x, int y, int width, int height, int border) Parameters target uint level int internalformat uint x int y int width int height int border int glCopyTexImage2DEXT(uint, int, uint, int, int, int, int, int) public static extern void glCopyTexImage2DEXT(uint target, int level, uint internalformat, int x, int y, int width, int height, int border) Parameters target uint level int internalformat uint x int y int width int height int border int glCopyTexSubImage1D(uint, int, int, int, int, int) public static extern void glCopyTexSubImage1D(uint target, int level, int xoffset, int x, int y, int width) Parameters target uint level int xoffset int x int y int width int glCopyTexSubImage1DEXT(uint, int, int, int, int, int) public static extern void glCopyTexSubImage1DEXT(uint target, int level, int xoffset, int x, int y, int width) Parameters target uint level int xoffset int x int y int width int glCopyTexSubImage2D(uint, int, int, int, int, int, int, int) public static extern void glCopyTexSubImage2D(uint target, int level, int xoffset, int yoffset, int x, int y, int width, int height) Parameters target uint level int xoffset int yoffset int x int y int width int height int glCopyTexSubImage2DEXT(uint, int, int, int, int, int, int, int) public static extern void glCopyTexSubImage2DEXT(uint target, int level, int xoffset, int yoffset, int x, int y, int width, int height) Parameters target uint level int xoffset int yoffset int x int y int width int height int glCopyTexSubImage3D(uint, int, int, int, int, int, int, int, int) public static extern void glCopyTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) Parameters target uint level int xoffset int yoffset int zoffset int x int y int width int height int glCopyTexSubImage3DEXT(uint, int, int, int, int, int, int, int, int) public static extern void glCopyTexSubImage3DEXT(uint target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) Parameters target uint level int xoffset int yoffset int zoffset int x int y int width int height int glCopyTextureImage1DEXT(uint, uint, int, uint, int, int, int, int) public static extern void glCopyTextureImage1DEXT(uint texture, uint target, int level, uint internalformat, int x, int y, int width, int border) Parameters texture uint target uint level int internalformat uint x int y int width int border int glCopyTextureImage2DEXT(uint, uint, int, uint, int, int, int, int, int) public static extern void glCopyTextureImage2DEXT(uint texture, uint target, int level, uint internalformat, int x, int y, int width, int height, int border) Parameters texture uint target uint level int internalformat uint x int y int width int height int border int glCopyTextureSubImage1DEXT(uint, uint, int, int, int, int, int) public static extern void glCopyTextureSubImage1DEXT(uint texture, uint target, int level, int xoffset, int x, int y, int width) Parameters texture uint target uint level int xoffset int x int y int width int glCopyTextureSubImage2DEXT(uint, uint, int, int, int, int, int, int, int) public static extern void glCopyTextureSubImage2DEXT(uint texture, uint target, int level, int xoffset, int yoffset, int x, int y, int width, int height) Parameters texture uint target uint level int xoffset int yoffset int x int y int width int height int glCopyTextureSubImage3DEXT(uint, uint, int, int, int, int, int, int, int, int) public static extern void glCopyTextureSubImage3DEXT(uint texture, uint target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) Parameters texture uint target uint level int xoffset int yoffset int zoffset int x int y int width int height int glCreateProgram() public static extern int glCreateProgram() Returns int glCreateProgramObjectARB() public static extern int glCreateProgramObjectARB() Returns int glCreateShader(uint) public static extern int glCreateShader(uint type) Parameters type uint Returns int glCreateShaderObjectARB(uint) public static extern int glCreateShaderObjectARB(uint shaderType) Parameters shaderType uint Returns int glCreateShaderProgramEXT(uint, string) public static extern int glCreateShaderProgramEXT(uint type, string @string) Parameters type uint string string Returns int glCreateShaderProgramv(uint, int, string[]) public static extern int glCreateShaderProgramv(uint type, int count, string[] strings) Parameters type uint count int strings string[] Returns int glCreateSyncFromCLeventARB(nint, nint, uint) public static extern nint glCreateSyncFromCLeventARB(nint context, nint @event, uint flags) Parameters context nint event nint flags uint Returns nint glCullFace(uint) public static extern void glCullFace(uint mode) Parameters mode uint glCullParameterdvEXT(uint, double*) public static extern void glCullParameterdvEXT(uint pname, double* @params) Parameters pname uint params double* glCullParameterfvEXT(uint, float*) public static extern void glCullParameterfvEXT(uint pname, float* @params) Parameters pname uint params float* glCurrentPaletteMatrixARB(int) public static extern void glCurrentPaletteMatrixARB(int index) Parameters index int glDebugMessageControlARB(uint, uint, uint, int, uint*, bool) public static extern void glDebugMessageControlARB(uint source, uint type, uint severity, int count, uint* ids, bool enabled) Parameters source uint type uint severity uint count int ids uint* enabled bool glDebugMessageEnableAMD(uint, uint, int, uint*, bool) public static extern void glDebugMessageEnableAMD(uint category, uint severity, int count, uint* ids, bool enabled) Parameters category uint severity uint count int ids uint* enabled bool glDebugMessageInsertAMD(uint, uint, uint, int, string) public static extern void glDebugMessageInsertAMD(uint category, uint severity, uint id, int length, string buf) Parameters category uint severity uint id uint length int buf string glDebugMessageInsertARB(uint, uint, uint, uint, int, string) public static extern void glDebugMessageInsertARB(uint source, uint type, uint id, uint severity, int length, string buf) Parameters source uint type uint id uint severity uint length int buf string glDeformSGIX(uint) public static extern void glDeformSGIX(uint mask) Parameters mask uint glDeformationMap3dSGIX(uint, double, double, int, int, double, double, int, int, double, double, int, int, double*) public static extern void glDeformationMap3dSGIX(uint target, double u1, double u2, int ustride, int uorder, double v1, double v2, int vstride, int vorder, double w1, double w2, int wstride, int worder, double* points) Parameters target uint u1 double u2 double ustride int uorder int v1 double v2 double vstride int vorder int w1 double w2 double wstride int worder int points double* glDeformationMap3fSGIX(uint, float, float, int, int, float, float, int, int, float, float, int, int, float*) public static extern void glDeformationMap3fSGIX(uint target, float u1, float u2, int ustride, int uorder, float v1, float v2, int vstride, int vorder, float w1, float w2, int wstride, int worder, float* points) Parameters target uint u1 float u2 float ustride int uorder int v1 float v2 float vstride int vorder int w1 float w2 float wstride int worder int points float* glDeleteAsyncMarkersSGIX(uint, int) public static extern void glDeleteAsyncMarkersSGIX(uint marker, int range) Parameters marker uint range int glDeleteBuffers(int, uint*) public static extern void glDeleteBuffers(int n, uint* buffers) Parameters n int buffers uint* glDeleteBuffersARB(int, uint*) public static extern void glDeleteBuffersARB(int n, uint* buffers) Parameters n int buffers uint* glDeleteFencesAPPLE(int, uint*) public static extern void glDeleteFencesAPPLE(int n, uint* fences) Parameters n int fences uint* glDeleteFencesNV(int, uint*) public static extern void glDeleteFencesNV(int n, uint* fences) Parameters n int fences uint* glDeleteFragmentShaderATI(uint) public static extern void glDeleteFragmentShaderATI(uint id) Parameters id uint glDeleteFramebuffers(int, uint*) public static extern void glDeleteFramebuffers(int n, uint* framebuffers) Parameters n int framebuffers uint* glDeleteFramebuffersEXT(int, uint*) public static extern void glDeleteFramebuffersEXT(int n, uint* framebuffers) Parameters n int framebuffers uint* glDeleteLists(uint, int) public static extern void glDeleteLists(uint list, int range) Parameters list uint range int glDeleteNamedStringARB(int, string) public static extern void glDeleteNamedStringARB(int namelen, string name) Parameters namelen int name string glDeleteNamesAMD(uint, uint, uint*) public static extern void glDeleteNamesAMD(uint identifier, uint num, uint* names) Parameters identifier uint num uint names uint* glDeleteObjectARB(uint) public static extern void glDeleteObjectARB(uint obj) Parameters obj uint glDeleteOcclusionQueriesNV(int, uint*) public static extern void glDeleteOcclusionQueriesNV(int n, uint* ids) Parameters n int ids uint* glDeletePerfMonitorsAMD(int, uint*) public static extern void glDeletePerfMonitorsAMD(int n, uint* monitors) Parameters n int monitors uint* glDeleteProgram(uint) public static extern void glDeleteProgram(uint program) Parameters program uint glDeleteProgramPipelines(int, uint*) public static extern void glDeleteProgramPipelines(int n, uint* pipelines) Parameters n int pipelines uint* glDeleteProgramsARB(int, uint*) public static extern void glDeleteProgramsARB(int n, uint* programs) Parameters n int programs uint* glDeleteProgramsNV(int, uint*) public static extern void glDeleteProgramsNV(int n, uint* programs) Parameters n int programs uint* glDeleteQueries(int, uint*) public static extern void glDeleteQueries(int n, uint* ids) Parameters n int ids uint* glDeleteQueriesARB(int, uint*) public static extern void glDeleteQueriesARB(int n, uint* ids) Parameters n int ids uint* glDeleteRenderbuffers(int, uint*) public static extern void glDeleteRenderbuffers(int n, uint* renderbuffers) Parameters n int renderbuffers uint* glDeleteRenderbuffersEXT(int, uint*) public static extern void glDeleteRenderbuffersEXT(int n, uint* renderbuffers) Parameters n int renderbuffers uint* glDeleteSamplers(int, uint*) public static extern void glDeleteSamplers(int count, uint* samplers) Parameters count int samplers uint* glDeleteShader(uint) public static extern void glDeleteShader(uint shader) Parameters shader uint glDeleteSync(nint) public static extern void glDeleteSync(nint sync) Parameters sync nint glDeleteTextures(int, uint*) public static extern void glDeleteTextures(int n, uint* textures) Parameters n int textures uint* glDeleteTexturesEXT(int, uint*) public static extern void glDeleteTexturesEXT(int n, uint* textures) Parameters n int textures uint* glDeleteTransformFeedbacks(int, uint*) public static extern void glDeleteTransformFeedbacks(int n, uint* ids) Parameters n int ids uint* glDeleteTransformFeedbacksNV(int, uint*) public static extern void glDeleteTransformFeedbacksNV(int n, uint* ids) Parameters n int ids uint* glDeleteVertexArrays(int, uint*) public static extern void glDeleteVertexArrays(int n, uint* arrays) Parameters n int arrays uint* glDeleteVertexArraysAPPLE(int, uint*) public static extern void glDeleteVertexArraysAPPLE(int n, uint* arrays) Parameters n int arrays uint* glDeleteVertexShaderEXT(uint) public static extern void glDeleteVertexShaderEXT(uint id) Parameters id uint glDepthBoundsEXT(double, double) public static extern void glDepthBoundsEXT(double zmin, double zmax) Parameters zmin double zmax double glDepthBoundsdNV(double, double) public static extern void glDepthBoundsdNV(double zmin, double zmax) Parameters zmin double zmax double glDepthFunc(uint) public static extern void glDepthFunc(uint func) Parameters func uint glDepthMask(bool) public static extern void glDepthMask(bool flag) Parameters flag bool glDepthRange(double, double) public static extern void glDepthRange(double near, double far) Parameters near double far double glDepthRangeArrayv(uint, int, double*) public static extern void glDepthRangeArrayv(uint first, int count, double* v) Parameters first uint count int v double* glDepthRangeIndexed(uint, double, double) public static extern void glDepthRangeIndexed(uint index, double n, double f) Parameters index uint n double f double glDepthRangedNV(double, double) public static extern void glDepthRangedNV(double zNear, double zFar) Parameters zNear double zFar double glDepthRangef(float, float) public static extern void glDepthRangef(float n, float f) Parameters n float f float glDetachObjectARB(uint, uint) public static extern void glDetachObjectARB(uint containerObj, uint attachedObj) Parameters containerObj uint attachedObj uint glDetachShader(uint, uint) public static extern void glDetachShader(uint program, uint shader) Parameters program uint shader uint glDetailTexFuncSGIS(uint, int, float*) public static extern void glDetailTexFuncSGIS(uint target, int n, float* points) Parameters target uint n int points float* glDisable(uint) public static extern void glDisable(uint cap) Parameters cap uint glDisableClientState(uint) public static extern void glDisableClientState(uint array) Parameters array uint glDisableClientStateIndexedEXT(uint, uint) public static extern void glDisableClientStateIndexedEXT(uint array, uint index) Parameters array uint index uint glDisableIndexedEXT(uint, uint) public static extern void glDisableIndexedEXT(uint target, uint index) Parameters target uint index uint glDisableVariantClientStateEXT(uint) public static extern void glDisableVariantClientStateEXT(uint id) Parameters id uint glDisableVertexAttribAPPLE(uint, uint) public static extern void glDisableVertexAttribAPPLE(uint index, uint pname) Parameters index uint pname uint glDisableVertexAttribArray(uint) public static extern void glDisableVertexAttribArray(uint index) Parameters index uint glDisableVertexAttribArrayARB(uint) public static extern void glDisableVertexAttribArrayARB(uint index) Parameters index uint glDisablei(uint, uint) public static extern void glDisablei(uint target, uint index) Parameters target uint index uint glDrawArrays(uint, int, int) public static extern void glDrawArrays(uint mode, int first, int count) Parameters mode uint first int count int glDrawArraysEXT(uint, int, int) public static extern void glDrawArraysEXT(uint mode, int first, int count) Parameters mode uint first int count int glDrawArraysIndirect(uint, nint) public static extern void glDrawArraysIndirect(uint mode, nint indirect) Parameters mode uint indirect nint glDrawArraysInstanced(uint, int, int, int) public static extern void glDrawArraysInstanced(uint mode, int first, int count, int primcount) Parameters mode uint first int count int primcount int glDrawArraysInstancedARB(uint, int, int, int) public static extern void glDrawArraysInstancedARB(uint mode, int first, int count, int primcount) Parameters mode uint first int count int primcount int glDrawArraysInstancedEXT(uint, int, int, int) public static extern void glDrawArraysInstancedEXT(uint mode, int start, int count, int primcount) Parameters mode uint start int count int primcount int glDrawBuffer(uint) public static extern void glDrawBuffer(uint mode) Parameters mode uint glDrawBuffers(int, uint*) public static extern void glDrawBuffers(int n, uint* bufs) Parameters n int bufs uint* glDrawBuffersARB(int, uint*) public static extern void glDrawBuffersARB(int n, uint* bufs) Parameters n int bufs uint* glDrawBuffersATI(int, uint*) public static extern void glDrawBuffersATI(int n, uint* bufs) Parameters n int bufs uint* glDrawElementArrayAPPLE(uint, int, int) public static extern void glDrawElementArrayAPPLE(uint mode, int first, int count) Parameters mode uint first int count int glDrawElementArrayATI(uint, int) public static extern void glDrawElementArrayATI(uint mode, int count) Parameters mode uint count int glDrawElements(uint, int, uint, nint) public static extern void glDrawElements(uint mode, int count, uint type, nint indices) Parameters mode uint count int type uint indices nint glDrawElementsBaseVertex(uint, int, uint, nint, int) public static extern void glDrawElementsBaseVertex(uint mode, int count, uint type, nint indices, int basevertex) Parameters mode uint count int type uint indices nint basevertex int glDrawElementsIndirect(uint, uint, nint) public static extern void glDrawElementsIndirect(uint mode, uint type, nint indirect) Parameters mode uint type uint indirect nint glDrawElementsInstanced(uint, int, uint, nint, int) public static extern void glDrawElementsInstanced(uint mode, int count, uint type, nint indices, int primcount) Parameters mode uint count int type uint indices nint primcount int glDrawElementsInstancedARB(uint, int, uint, nint, int) public static extern void glDrawElementsInstancedARB(uint mode, int count, uint type, nint indices, int primcount) Parameters mode uint count int type uint indices nint primcount int glDrawElementsInstancedBaseVertex(uint, int, uint, nint, int, int) public static extern void glDrawElementsInstancedBaseVertex(uint mode, int count, uint type, nint indices, int primcount, int basevertex) Parameters mode uint count int type uint indices nint primcount int basevertex int glDrawElementsInstancedEXT(uint, int, uint, nint, int) public static extern void glDrawElementsInstancedEXT(uint mode, int count, uint type, nint indices, int primcount) Parameters mode uint count int type uint indices nint primcount int glDrawMeshArraysSUN(uint, int, int, int) public static extern void glDrawMeshArraysSUN(uint mode, int first, int count, int width) Parameters mode uint first int count int width int glDrawPixels(int, int, uint, uint, nint) public static extern void glDrawPixels(int width, int height, uint format, uint type, nint pixels) Parameters width int height int format uint type uint pixels nint glDrawRangeElementArrayAPPLE(uint, uint, uint, int, int) public static extern void glDrawRangeElementArrayAPPLE(uint mode, uint start, uint end, int first, int count) Parameters mode uint start uint end uint first int count int glDrawRangeElementArrayATI(uint, uint, uint, int) public static extern void glDrawRangeElementArrayATI(uint mode, uint start, uint end, int count) Parameters mode uint start uint end uint count int glDrawRangeElements(uint, uint, uint, int, uint, nint) public static extern void glDrawRangeElements(uint mode, uint start, uint end, int count, uint type, nint indices) Parameters mode uint start uint end uint count int type uint indices nint glDrawRangeElementsBaseVertex(uint, uint, uint, int, uint, nint, int) public static extern void glDrawRangeElementsBaseVertex(uint mode, uint start, uint end, int count, uint type, nint indices, int basevertex) Parameters mode uint start uint end uint count int type uint indices nint basevertex int glDrawRangeElementsEXT(uint, uint, uint, int, uint, nint) public static extern void glDrawRangeElementsEXT(uint mode, uint start, uint end, int count, uint type, nint indices) Parameters mode uint start uint end uint count int type uint indices nint glDrawTransformFeedback(uint, uint) public static extern void glDrawTransformFeedback(uint mode, uint id) Parameters mode uint id uint glDrawTransformFeedbackNV(uint, uint) public static extern void glDrawTransformFeedbackNV(uint mode, uint id) Parameters mode uint id uint glDrawTransformFeedbackStream(uint, uint, uint) public static extern void glDrawTransformFeedbackStream(uint mode, uint id, uint stream) Parameters mode uint id uint stream uint glEdgeFlag(bool) public static extern void glEdgeFlag(bool flag) Parameters flag bool glEdgeFlagFormatNV(int) public static extern void glEdgeFlagFormatNV(int stride) Parameters stride int glEdgeFlagPointer(int, nint) public static extern void glEdgeFlagPointer(int stride, nint pointer) Parameters stride int pointer nint glEdgeFlagPointerEXT(int, int, bool*) public static extern void glEdgeFlagPointerEXT(int stride, int count, bool* pointer) Parameters stride int count int pointer bool* glEdgeFlagPointerListIBM(int, bool*, int) public static extern void glEdgeFlagPointerListIBM(int stride, bool* pointer, int ptrstride) Parameters stride int pointer bool* ptrstride int glEdgeFlagv(bool*) public static extern void glEdgeFlagv(bool* flag) Parameters flag bool* glElementPointerAPPLE(uint, nint) public static extern void glElementPointerAPPLE(uint type, nint pointer) Parameters type uint pointer nint glElementPointerATI(uint, nint) public static extern void glElementPointerATI(uint type, nint pointer) Parameters type uint pointer nint glEnable(uint) public static extern void glEnable(uint cap) Parameters cap uint glEnableClientState(uint) public static extern void glEnableClientState(uint array) Parameters array uint glEnableClientStateIndexedEXT(uint, uint) public static extern void glEnableClientStateIndexedEXT(uint array, uint index) Parameters array uint index uint glEnableIndexedEXT(uint, uint) public static extern void glEnableIndexedEXT(uint target, uint index) Parameters target uint index uint glEnableVariantClientStateEXT(uint) public static extern void glEnableVariantClientStateEXT(uint id) Parameters id uint glEnableVertexAttribAPPLE(uint, uint) public static extern void glEnableVertexAttribAPPLE(uint index, uint pname) Parameters index uint pname uint glEnableVertexAttribArray(uint) public static extern void glEnableVertexAttribArray(uint index) Parameters index uint glEnableVertexAttribArrayARB(uint) public static extern void glEnableVertexAttribArrayARB(uint index) Parameters index uint glEnablei(uint, uint) public static extern void glEnablei(uint target, uint index) Parameters target uint index uint glEnd() public static extern void glEnd() glEndConditionalRender() public static extern void glEndConditionalRender() glEndConditionalRenderNV() public static extern void glEndConditionalRenderNV() glEndFragmentShaderATI() public static extern void glEndFragmentShaderATI() glEndList() public static extern void glEndList() glEndOcclusionQueryNV() public static extern void glEndOcclusionQueryNV() glEndPerfMonitorAMD(uint) public static extern void glEndPerfMonitorAMD(uint monitor) Parameters monitor uint glEndQuery(uint) public static extern void glEndQuery(uint target) Parameters target uint glEndQueryARB(uint) public static extern void glEndQueryARB(uint target) Parameters target uint glEndQueryIndexed(uint, uint) public static extern void glEndQueryIndexed(uint target, uint index) Parameters target uint index uint glEndTransformFeedback() public static extern void glEndTransformFeedback() glEndTransformFeedbackEXT() public static extern void glEndTransformFeedbackEXT() glEndTransformFeedbackNV() public static extern void glEndTransformFeedbackNV() glEndVertexShaderEXT() public static extern void glEndVertexShaderEXT() glEndVideoCaptureNV(uint) public static extern void glEndVideoCaptureNV(uint video_capture_slot) Parameters video_capture_slot uint glEvalCoord1d(double) public static extern void glEvalCoord1d(double u) Parameters u double glEvalCoord1dv(double*) public static extern void glEvalCoord1dv(double* u) Parameters u double* glEvalCoord1f(float) public static extern void glEvalCoord1f(float u) Parameters u float glEvalCoord1fv(float*) public static extern void glEvalCoord1fv(float* u) Parameters u float* glEvalCoord2d(double, double) public static extern void glEvalCoord2d(double u, double v) Parameters u double v double glEvalCoord2dv(double*) public static extern void glEvalCoord2dv(double* u) Parameters u double* glEvalCoord2f(float, float) public static extern void glEvalCoord2f(float u, float v) Parameters u float v float glEvalCoord2fv(float*) public static extern void glEvalCoord2fv(float* u) Parameters u float* glEvalMapsNV(uint, uint) public static extern void glEvalMapsNV(uint target, uint mode) Parameters target uint mode uint glEvalMesh1(uint, int, int) public static extern void glEvalMesh1(uint mode, int i1, int i2) Parameters mode uint i1 int i2 int glEvalMesh2(uint, int, int, int, int) public static extern void glEvalMesh2(uint mode, int i1, int i2, int j1, int j2) Parameters mode uint i1 int i2 int j1 int j2 int glEvalPoint1(int) public static extern void glEvalPoint1(int i) Parameters i int glEvalPoint2(int, int) public static extern void glEvalPoint2(int i, int j) Parameters i int j int glExecuteProgramNV(uint, uint, float*) public static extern void glExecuteProgramNV(uint target, uint id, float* @params) Parameters target uint id uint params float* glExtractComponentEXT(uint, uint, uint) public static extern void glExtractComponentEXT(uint res, uint src, uint num) Parameters res uint src uint num uint glFeedbackBuffer(int, uint, float*) public static extern void glFeedbackBuffer(int size, uint type, float* buffer) Parameters size int type uint buffer float* glFenceSync(uint, uint) public static extern nint glFenceSync(uint condition, uint flags) Parameters condition uint flags uint Returns nint glFinalCombinerInputNV(uint, uint, uint, uint) public static extern void glFinalCombinerInputNV(uint variable, uint input, uint mapping, uint componentUsage) Parameters variable uint input uint mapping uint componentUsage uint glFinish() public static extern void glFinish() glFinishAsyncSGIX(uint*) public static extern int glFinishAsyncSGIX(uint* markerp) Parameters markerp uint* Returns int glFinishFenceAPPLE(uint) public static extern void glFinishFenceAPPLE(uint fence) Parameters fence uint glFinishFenceNV(uint) public static extern void glFinishFenceNV(uint fence) Parameters fence uint glFinishObjectAPPLE(uint, int) public static extern void glFinishObjectAPPLE(uint @object, int name) Parameters object uint name int glFinishTextureSUNX() public static extern void glFinishTextureSUNX() glFlush() public static extern void glFlush() glFlushMappedBufferRange(uint, nint, nint) public static extern void glFlushMappedBufferRange(uint target, nint offset, nint length) Parameters target uint offset nint length nint glFlushMappedBufferRangeAPPLE(uint, nint, nint) public static extern void glFlushMappedBufferRangeAPPLE(uint target, nint offset, nint size) Parameters target uint offset nint size nint glFlushMappedNamedBufferRangeEXT(uint, nint, nint) public static extern void glFlushMappedNamedBufferRangeEXT(uint buffer, nint offset, nint length) Parameters buffer uint offset nint length nint glFlushPixelDataRangeNV(uint) public static extern void glFlushPixelDataRangeNV(uint target) Parameters target uint glFlushRasterSGIX() public static extern void glFlushRasterSGIX() glFlushVertexArrayRangeAPPLE(int, nint) public static extern void glFlushVertexArrayRangeAPPLE(int length, nint pointer) Parameters length int pointer nint glFlushVertexArrayRangeNV() public static extern void glFlushVertexArrayRangeNV() glFogCoordFormatNV(uint, int) public static extern void glFogCoordFormatNV(uint type, int stride) Parameters type uint stride int glFogCoordPointer(uint, int, nint) public static extern void glFogCoordPointer(uint type, int stride, nint pointer) Parameters type uint stride int pointer nint glFogCoordPointerEXT(uint, int, nint) public static extern void glFogCoordPointerEXT(uint type, int stride, nint pointer) Parameters type uint stride int pointer nint glFogCoordPointerListIBM(uint, int, nint, int) public static extern void glFogCoordPointerListIBM(uint type, int stride, nint pointer, int ptrstride) Parameters type uint stride int pointer nint ptrstride int glFogCoordd(double) public static extern void glFogCoordd(double coord) Parameters coord double glFogCoorddEXT(double) public static extern void glFogCoorddEXT(double coord) Parameters coord double glFogCoorddv(double*) public static extern void glFogCoorddv(double* coord) Parameters coord double* glFogCoorddvEXT(double*) public static extern void glFogCoorddvEXT(double* coord) Parameters coord double* glFogCoordf(float) public static extern void glFogCoordf(float coord) Parameters coord float glFogCoordfEXT(float) public static extern void glFogCoordfEXT(float coord) Parameters coord float glFogCoordfv(float*) public static extern void glFogCoordfv(float* coord) Parameters coord float* glFogCoordfvEXT(float*) public static extern void glFogCoordfvEXT(float* coord) Parameters coord float* glFogCoordhNV(ushort) public static extern void glFogCoordhNV(ushort fog) Parameters fog ushort glFogCoordhvNV(ushort*) public static extern void glFogCoordhvNV(ushort* fog) Parameters fog ushort* glFogFuncSGIS(int, float*) public static extern void glFogFuncSGIS(int n, float* points) Parameters n int points float* glFogf(uint, float) public static extern void glFogf(uint pname, float param) Parameters pname uint param float glFogfv(uint, float*) public static extern void glFogfv(uint pname, float* @params) Parameters pname uint params float* glFogi(uint, int) public static extern void glFogi(uint pname, int param) Parameters pname uint param int glFogiv(uint, int*) public static extern void glFogiv(uint pname, int* @params) Parameters pname uint params int* glFragmentColorMaterialSGIX(uint, uint) public static extern void glFragmentColorMaterialSGIX(uint face, uint mode) Parameters face uint mode uint glFragmentLightModelfSGIX(uint, float) public static extern void glFragmentLightModelfSGIX(uint pname, float param) Parameters pname uint param float glFragmentLightModelfvSGIX(uint, float*) public static extern void glFragmentLightModelfvSGIX(uint pname, float* @params) Parameters pname uint params float* glFragmentLightModeliSGIX(uint, int) public static extern void glFragmentLightModeliSGIX(uint pname, int param) Parameters pname uint param int glFragmentLightModelivSGIX(uint, int*) public static extern void glFragmentLightModelivSGIX(uint pname, int* @params) Parameters pname uint params int* glFragmentLightfSGIX(uint, uint, float) public static extern void glFragmentLightfSGIX(uint light, uint pname, float param) Parameters light uint pname uint param float glFragmentLightfvSGIX(uint, uint, float*) public static extern void glFragmentLightfvSGIX(uint light, uint pname, float* @params) Parameters light uint pname uint params float* glFragmentLightiSGIX(uint, uint, int) public static extern void glFragmentLightiSGIX(uint light, uint pname, int param) Parameters light uint pname uint param int glFragmentLightivSGIX(uint, uint, int*) public static extern void glFragmentLightivSGIX(uint light, uint pname, int* @params) Parameters light uint pname uint params int* glFragmentMaterialfSGIX(uint, uint, float) public static extern void glFragmentMaterialfSGIX(uint face, uint pname, float param) Parameters face uint pname uint param float glFragmentMaterialfvSGIX(uint, uint, float*) public static extern void glFragmentMaterialfvSGIX(uint face, uint pname, float* @params) Parameters face uint pname uint params float* glFragmentMaterialiSGIX(uint, uint, int) public static extern void glFragmentMaterialiSGIX(uint face, uint pname, int param) Parameters face uint pname uint param int glFragmentMaterialivSGIX(uint, uint, int*) public static extern void glFragmentMaterialivSGIX(uint face, uint pname, int* @params) Parameters face uint pname uint params int* glFrameTerminatorGREMEDY() public static extern void glFrameTerminatorGREMEDY() glFrameZoomSGIX(int) public static extern void glFrameZoomSGIX(int factor) Parameters factor int glFramebufferDrawBufferEXT(uint, uint) public static extern void glFramebufferDrawBufferEXT(uint framebuffer, uint mode) Parameters framebuffer uint mode uint glFramebufferDrawBuffersEXT(uint, int, uint*) public static extern void glFramebufferDrawBuffersEXT(uint framebuffer, int n, uint* bufs) Parameters framebuffer uint n int bufs uint* glFramebufferReadBufferEXT(uint, uint) public static extern void glFramebufferReadBufferEXT(uint framebuffer, uint mode) Parameters framebuffer uint mode uint glFramebufferRenderbuffer(uint, uint, uint, uint) public static extern void glFramebufferRenderbuffer(uint target, uint attachment, uint renderbuffertarget, uint renderbuffer) Parameters target uint attachment uint renderbuffertarget uint renderbuffer uint glFramebufferRenderbufferEXT(uint, uint, uint, uint) public static extern void glFramebufferRenderbufferEXT(uint target, uint attachment, uint renderbuffertarget, uint renderbuffer) Parameters target uint attachment uint renderbuffertarget uint renderbuffer uint glFramebufferTexture(uint, uint, uint, int) public static extern void glFramebufferTexture(uint target, uint attachment, uint texture, int level) Parameters target uint attachment uint texture uint level int glFramebufferTexture1D(uint, uint, uint, uint, int) public static extern void glFramebufferTexture1D(uint target, uint attachment, uint textarget, uint texture, int level) Parameters target uint attachment uint textarget uint texture uint level int glFramebufferTexture1DEXT(uint, uint, uint, uint, int) public static extern void glFramebufferTexture1DEXT(uint target, uint attachment, uint textarget, uint texture, int level) Parameters target uint attachment uint textarget uint texture uint level int glFramebufferTexture2D(uint, uint, uint, uint, int) public static extern void glFramebufferTexture2D(uint target, uint attachment, uint textarget, uint texture, int level) Parameters target uint attachment uint textarget uint texture uint level int glFramebufferTexture2DEXT(uint, uint, uint, uint, int) public static extern void glFramebufferTexture2DEXT(uint target, uint attachment, uint textarget, uint texture, int level) Parameters target uint attachment uint textarget uint texture uint level int glFramebufferTexture3D(uint, uint, uint, uint, int, int) public static extern void glFramebufferTexture3D(uint target, uint attachment, uint textarget, uint texture, int level, int zoffset) Parameters target uint attachment uint textarget uint texture uint level int zoffset int glFramebufferTexture3DEXT(uint, uint, uint, uint, int, int) public static extern void glFramebufferTexture3DEXT(uint target, uint attachment, uint textarget, uint texture, int level, int zoffset) Parameters target uint attachment uint textarget uint texture uint level int zoffset int glFramebufferTextureARB(uint, uint, uint, int) public static extern void glFramebufferTextureARB(uint target, uint attachment, uint texture, int level) Parameters target uint attachment uint texture uint level int glFramebufferTextureEXT(uint, uint, uint, int) public static extern void glFramebufferTextureEXT(uint target, uint attachment, uint texture, int level) Parameters target uint attachment uint texture uint level int glFramebufferTextureFaceARB(uint, uint, uint, int, uint) public static extern void glFramebufferTextureFaceARB(uint target, uint attachment, uint texture, int level, uint face) Parameters target uint attachment uint texture uint level int face uint glFramebufferTextureFaceEXT(uint, uint, uint, int, uint) public static extern void glFramebufferTextureFaceEXT(uint target, uint attachment, uint texture, int level, uint face) Parameters target uint attachment uint texture uint level int face uint glFramebufferTextureLayer(uint, uint, uint, int, int) public static extern void glFramebufferTextureLayer(uint target, uint attachment, uint texture, int level, int layer) Parameters target uint attachment uint texture uint level int layer int glFramebufferTextureLayerARB(uint, uint, uint, int, int) public static extern void glFramebufferTextureLayerARB(uint target, uint attachment, uint texture, int level, int layer) Parameters target uint attachment uint texture uint level int layer int glFramebufferTextureLayerEXT(uint, uint, uint, int, int) public static extern void glFramebufferTextureLayerEXT(uint target, uint attachment, uint texture, int level, int layer) Parameters target uint attachment uint texture uint level int layer int glFreeObjectBufferATI(uint) public static extern void glFreeObjectBufferATI(uint buffer) Parameters buffer uint glFrontFace(uint) public static extern void glFrontFace(uint mode) Parameters mode uint glFrustum(double, double, double, double, double, double) public static extern void glFrustum(double left, double right, double bottom, double top, double zNear, double zFar) Parameters left double right double bottom double top double zNear double zFar double glGenAsyncMarkersSGIX(int) public static extern int glGenAsyncMarkersSGIX(int range) Parameters range int Returns int glGenBuffers(int, uint*) public static extern void glGenBuffers(int n, uint* buffers) Parameters n int buffers uint* glGenBuffersARB(int, uint*) public static extern void glGenBuffersARB(int n, uint* buffers) Parameters n int buffers uint* glGenFencesAPPLE(int, uint*) public static extern void glGenFencesAPPLE(int n, uint* fences) Parameters n int fences uint* glGenFencesNV(int, uint*) public static extern void glGenFencesNV(int n, uint* fences) Parameters n int fences uint* glGenFragmentShadersATI(uint) public static extern int glGenFragmentShadersATI(uint range) Parameters range uint Returns int glGenFramebuffers(int, uint*) public static extern void glGenFramebuffers(int n, uint* framebuffers) Parameters n int framebuffers uint* glGenFramebuffersEXT(int, uint*) public static extern void glGenFramebuffersEXT(int n, uint* framebuffers) Parameters n int framebuffers uint* glGenLists(int) public static extern int glGenLists(int range) Parameters range int Returns int glGenNamesAMD(uint, uint, uint*) public static extern void glGenNamesAMD(uint identifier, uint num, uint* names) Parameters identifier uint num uint names uint* glGenOcclusionQueriesNV(int, uint*) public static extern void glGenOcclusionQueriesNV(int n, uint* ids) Parameters n int ids uint* glGenPerfMonitorsAMD(int, uint*) public static extern void glGenPerfMonitorsAMD(int n, uint* monitors) Parameters n int monitors uint* glGenProgramPipelines(int, uint*) public static extern void glGenProgramPipelines(int n, uint* pipelines) Parameters n int pipelines uint* glGenProgramsARB(int, uint*) public static extern void glGenProgramsARB(int n, uint* programs) Parameters n int programs uint* glGenProgramsNV(int, uint*) public static extern void glGenProgramsNV(int n, uint* programs) Parameters n int programs uint* glGenQueries(int, uint*) public static extern void glGenQueries(int n, uint* ids) Parameters n int ids uint* glGenQueriesARB(int, uint*) public static extern void glGenQueriesARB(int n, uint* ids) Parameters n int ids uint* glGenRenderbuffers(int, uint*) public static extern void glGenRenderbuffers(int n, uint* renderbuffers) Parameters n int renderbuffers uint* glGenRenderbuffersEXT(int, uint*) public static extern void glGenRenderbuffersEXT(int n, uint* renderbuffers) Parameters n int renderbuffers uint* glGenSamplers(int, uint*) public static extern void glGenSamplers(int count, uint* samplers) Parameters count int samplers uint* glGenSymbolsEXT(uint, uint, uint, uint) public static extern int glGenSymbolsEXT(uint datatype, uint storagetype, uint range, uint components) Parameters datatype uint storagetype uint range uint components uint Returns int glGenTextures(int, uint*) public static extern void glGenTextures(int n, uint* textures) Parameters n int textures uint* glGenTexturesEXT(int, uint*) public static extern void glGenTexturesEXT(int n, uint* textures) Parameters n int textures uint* glGenTransformFeedbacks(int, uint*) public static extern void glGenTransformFeedbacks(int n, uint* ids) Parameters n int ids uint* glGenTransformFeedbacksNV(int, uint*) public static extern void glGenTransformFeedbacksNV(int n, uint* ids) Parameters n int ids uint* glGenVertexArrays(int, uint*) public static extern void glGenVertexArrays(int n, uint* arrays) Parameters n int arrays uint* glGenVertexArraysAPPLE(int, uint*) public static extern void glGenVertexArraysAPPLE(int n, uint* arrays) Parameters n int arrays uint* glGenVertexShadersEXT(uint) public static extern int glGenVertexShadersEXT(uint range) Parameters range uint Returns int glGenerateMipmap(uint) public static extern void glGenerateMipmap(uint target) Parameters target uint glGenerateMipmapEXT(uint) public static extern void glGenerateMipmapEXT(uint target) Parameters target uint glGenerateMultiTexMipmapEXT(uint, uint) public static extern void glGenerateMultiTexMipmapEXT(uint texunit, uint target) Parameters texunit uint target uint glGenerateTextureMipmapEXT(uint, uint) public static extern void glGenerateTextureMipmapEXT(uint texture, uint target) Parameters texture uint target uint glGetActiveAttrib(uint, uint, int, int*, int*, uint*, StringBuilder) public static extern void glGetActiveAttrib(uint program, uint index, int bufSize, int* length, int* size, uint* type, StringBuilder name) Parameters program uint index uint bufSize int length int* size int* type uint* name StringBuilder glGetActiveAttribARB(uint, uint, int, int*, int*, uint*, StringBuilder) public static extern void glGetActiveAttribARB(uint programObj, uint index, int maxLength, int* length, int* size, uint* type, StringBuilder name) Parameters programObj uint index uint maxLength int length int* size int* type uint* name StringBuilder glGetActiveSubroutineName(uint, uint, uint, int, int*, StringBuilder) public static extern void glGetActiveSubroutineName(uint program, uint shadertype, uint index, int bufsize, int* length, StringBuilder name) Parameters program uint shadertype uint index uint bufsize int length int* name StringBuilder glGetActiveSubroutineUniformName(uint, uint, uint, int, int*, StringBuilder) public static extern void glGetActiveSubroutineUniformName(uint program, uint shadertype, uint index, int bufsize, int* length, StringBuilder name) Parameters program uint shadertype uint index uint bufsize int length int* name StringBuilder glGetActiveSubroutineUniformiv(uint, uint, uint, uint, int*) public static extern void glGetActiveSubroutineUniformiv(uint program, uint shadertype, uint index, uint pname, int* values) Parameters program uint shadertype uint index uint pname uint values int* glGetActiveUniform(uint, uint, int, int*, int*, uint*, StringBuilder) public static extern void glGetActiveUniform(uint program, uint index, int bufSize, int* length, int* size, uint* type, StringBuilder name) Parameters program uint index uint bufSize int length int* size int* type uint* name StringBuilder glGetActiveUniformARB(uint, uint, int, int*, int*, uint*, StringBuilder) public static extern void glGetActiveUniformARB(uint programObj, uint index, int maxLength, int* length, int* size, uint* type, StringBuilder name) Parameters programObj uint index uint maxLength int length int* size int* type uint* name StringBuilder glGetActiveUniformBlockName(uint, uint, int, int*, StringBuilder) public static extern void glGetActiveUniformBlockName(uint program, uint uniformBlockIndex, int bufSize, int* length, StringBuilder uniformBlockName) Parameters program uint uniformBlockIndex uint bufSize int length int* uniformBlockName StringBuilder glGetActiveUniformBlockiv(uint, uint, uint, int*) public static extern void glGetActiveUniformBlockiv(uint program, uint uniformBlockIndex, uint pname, int* @params) Parameters program uint uniformBlockIndex uint pname uint params int* glGetActiveUniformName(uint, uint, int, int*, StringBuilder) public static extern void glGetActiveUniformName(uint program, uint uniformIndex, int bufSize, int* length, StringBuilder uniformName) Parameters program uint uniformIndex uint bufSize int length int* uniformName StringBuilder glGetActiveUniformsiv(uint, int, uint*, uint, int*) public static extern void glGetActiveUniformsiv(uint program, int uniformCount, uint* uniformIndices, uint pname, int* @params) Parameters program uint uniformCount int uniformIndices uint* pname uint params int* glGetActiveVaryingNV(uint, uint, int, int*, int*, uint*, StringBuilder) public static extern void glGetActiveVaryingNV(uint program, uint index, int bufSize, int* length, int* size, uint* type, StringBuilder name) Parameters program uint index uint bufSize int length int* size int* type uint* name StringBuilder glGetArrayObjectfvATI(uint, uint, float*) public static extern void glGetArrayObjectfvATI(uint array, uint pname, float* @params) Parameters array uint pname uint params float* glGetArrayObjectivATI(uint, uint, int*) public static extern void glGetArrayObjectivATI(uint array, uint pname, int* @params) Parameters array uint pname uint params int* glGetAttachedObjectsARB(uint, int, int*, uint*) public static extern void glGetAttachedObjectsARB(uint containerObj, int maxCount, int* count, uint* obj) Parameters containerObj uint maxCount int count int* obj uint* glGetAttachedShaders(uint, int, int*, uint*) public static extern void glGetAttachedShaders(uint program, int maxCount, int* count, uint* obj) Parameters program uint maxCount int count int* obj uint* glGetAttribLocation(uint, string) public static extern int glGetAttribLocation(uint program, string name) Parameters program uint name string Returns int glGetAttribLocationARB(uint, string) public static extern int glGetAttribLocationARB(uint programObj, string name) Parameters programObj uint name string Returns int glGetBooleanIndexedvEXT(uint, uint, bool*) public static extern void glGetBooleanIndexedvEXT(uint target, uint index, bool* data) Parameters target uint index uint data bool* glGetBooleani_v(uint, uint, bool*) public static extern void glGetBooleani_v(uint target, uint index, bool* data) Parameters target uint index uint data bool* glGetBooleanv(uint, bool*) public static extern void glGetBooleanv(uint pname, bool* @params) Parameters pname uint params bool* glGetBufferParameteri64v(uint, uint, long*) public static extern void glGetBufferParameteri64v(uint target, uint pname, long* @params) Parameters target uint pname uint params long* glGetBufferParameteriv(uint, uint, int*) public static extern void glGetBufferParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetBufferParameterivARB(uint, uint, int*) public static extern void glGetBufferParameterivARB(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetBufferParameterui64vNV(uint, uint, ulong*) public static extern void glGetBufferParameterui64vNV(uint target, uint pname, ulong* @params) Parameters target uint pname uint params ulong* glGetBufferPointerv(uint, uint, nint) public static extern void glGetBufferPointerv(uint target, uint pname, nint @params) Parameters target uint pname uint params nint glGetBufferPointervARB(uint, uint, nint) public static extern void glGetBufferPointervARB(uint target, uint pname, nint @params) Parameters target uint pname uint params nint glGetBufferSubData(uint, nint, nint, nint) public static extern void glGetBufferSubData(uint target, nint offset, nint size, nint data) Parameters target uint offset nint size nint data nint glGetBufferSubDataARB(uint, nint, nint, nint) public static extern void glGetBufferSubDataARB(uint target, nint offset, nint size, nint data) Parameters target uint offset nint size nint data nint glGetClipPlane(uint, double*) public static extern void glGetClipPlane(uint plane, double* equation) Parameters plane uint equation double* glGetColorTable(uint, uint, uint, nint) public static extern void glGetColorTable(uint target, uint format, uint type, nint table) Parameters target uint format uint type uint table nint glGetColorTableEXT(uint, uint, uint, nint) public static extern void glGetColorTableEXT(uint target, uint format, uint type, nint data) Parameters target uint format uint type uint data nint glGetColorTableParameterfv(uint, uint, float*) public static extern void glGetColorTableParameterfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetColorTableParameterfvEXT(uint, uint, float*) public static extern void glGetColorTableParameterfvEXT(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetColorTableParameterfvSGI(uint, uint, float*) public static extern void glGetColorTableParameterfvSGI(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetColorTableParameteriv(uint, uint, int*) public static extern void glGetColorTableParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetColorTableParameterivEXT(uint, uint, int*) public static extern void glGetColorTableParameterivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetColorTableParameterivSGI(uint, uint, int*) public static extern void glGetColorTableParameterivSGI(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetColorTableSGI(uint, uint, uint, nint) public static extern void glGetColorTableSGI(uint target, uint format, uint type, nint table) Parameters target uint format uint type uint table nint glGetCombinerInputParameterfvNV(uint, uint, uint, uint, float*) public static extern void glGetCombinerInputParameterfvNV(uint stage, uint portion, uint variable, uint pname, float* @params) Parameters stage uint portion uint variable uint pname uint params float* glGetCombinerInputParameterivNV(uint, uint, uint, uint, int*) public static extern void glGetCombinerInputParameterivNV(uint stage, uint portion, uint variable, uint pname, int* @params) Parameters stage uint portion uint variable uint pname uint params int* glGetCombinerOutputParameterfvNV(uint, uint, uint, float*) public static extern void glGetCombinerOutputParameterfvNV(uint stage, uint portion, uint pname, float* @params) Parameters stage uint portion uint pname uint params float* glGetCombinerOutputParameterivNV(uint, uint, uint, int*) public static extern void glGetCombinerOutputParameterivNV(uint stage, uint portion, uint pname, int* @params) Parameters stage uint portion uint pname uint params int* glGetCombinerStageParameterfvNV(uint, uint, float*) public static extern void glGetCombinerStageParameterfvNV(uint stage, uint pname, float* @params) Parameters stage uint pname uint params float* glGetCompressedMultiTexImageEXT(uint, uint, int, nint) public static extern void glGetCompressedMultiTexImageEXT(uint texunit, uint target, int lod, nint img) Parameters texunit uint target uint lod int img nint glGetCompressedTexImage(uint, int, nint) public static extern void glGetCompressedTexImage(uint target, int level, nint img) Parameters target uint level int img nint glGetCompressedTexImageARB(uint, int, nint) public static extern void glGetCompressedTexImageARB(uint target, int level, nint img) Parameters target uint level int img nint glGetCompressedTextureImageEXT(uint, uint, int, nint) public static extern void glGetCompressedTextureImageEXT(uint texture, uint target, int lod, nint img) Parameters texture uint target uint lod int img nint glGetConvolutionFilter(uint, uint, uint, nint) public static extern void glGetConvolutionFilter(uint target, uint format, uint type, nint image) Parameters target uint format uint type uint image nint glGetConvolutionFilterEXT(uint, uint, uint, nint) public static extern void glGetConvolutionFilterEXT(uint target, uint format, uint type, nint image) Parameters target uint format uint type uint image nint glGetConvolutionParameterfv(uint, uint, float*) public static extern void glGetConvolutionParameterfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetConvolutionParameterfvEXT(uint, uint, float*) public static extern void glGetConvolutionParameterfvEXT(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetConvolutionParameteriv(uint, uint, int*) public static extern void glGetConvolutionParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetConvolutionParameterivEXT(uint, uint, int*) public static extern void glGetConvolutionParameterivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetDebugMessageLogAMD(uint, int, uint*, uint*, uint*, int*, StringBuilder) public static extern int glGetDebugMessageLogAMD(uint count, int bufsize, uint* categories, uint* severities, uint* ids, int* lengths, StringBuilder message) Parameters count uint bufsize int categories uint* severities uint* ids uint* lengths int* message StringBuilder Returns int glGetDebugMessageLogARB(uint, int, uint*, uint*, uint*, uint*, int*, StringBuilder) public static extern int glGetDebugMessageLogARB(uint count, int bufsize, uint* sources, uint* types, uint* ids, uint* severities, int* lengths, StringBuilder messageLog) Parameters count uint bufsize int sources uint* types uint* ids uint* severities uint* lengths int* messageLog StringBuilder Returns int glGetDetailTexFuncSGIS(uint, float*) public static extern void glGetDetailTexFuncSGIS(uint target, float* points) Parameters target uint points float* glGetDoubleIndexedvEXT(uint, uint, double*) public static extern void glGetDoubleIndexedvEXT(uint target, uint index, double* data) Parameters target uint index uint data double* glGetDoublei_v(uint, uint, double*) public static extern void glGetDoublei_v(uint target, uint index, double* data) Parameters target uint index uint data double* glGetDoublev(uint, double*) public static extern void glGetDoublev(uint pname, double* @params) Parameters pname uint params double* glGetError() public static extern uint glGetError() Returns uint glGetFenceivNV(uint, uint, int*) public static extern void glGetFenceivNV(uint fence, uint pname, int* @params) Parameters fence uint pname uint params int* glGetFinalCombinerInputParameterfvNV(uint, uint, float*) public static extern void glGetFinalCombinerInputParameterfvNV(uint variable, uint pname, float* @params) Parameters variable uint pname uint params float* glGetFinalCombinerInputParameterivNV(uint, uint, int*) public static extern void glGetFinalCombinerInputParameterivNV(uint variable, uint pname, int* @params) Parameters variable uint pname uint params int* glGetFloatIndexedvEXT(uint, uint, float*) public static extern void glGetFloatIndexedvEXT(uint target, uint index, float* data) Parameters target uint index uint data float* glGetFloati_v(uint, uint, float*) public static extern void glGetFloati_v(uint target, uint index, float* data) Parameters target uint index uint data float* glGetFloatv(uint, float*) public static extern void glGetFloatv(uint pname, float* @params) Parameters pname uint params float* glGetFogFuncSGIS(float*) public static extern void glGetFogFuncSGIS(float* points) Parameters points float* glGetFragDataIndex(uint, string) public static extern int glGetFragDataIndex(uint program, string name) Parameters program uint name string Returns int glGetFragDataLocation(uint, string) public static extern int glGetFragDataLocation(uint program, string name) Parameters program uint name string Returns int glGetFragDataLocationEXT(uint, string) public static extern int glGetFragDataLocationEXT(uint program, string name) Parameters program uint name string Returns int glGetFragmentLightfvSGIX(uint, uint, float*) public static extern void glGetFragmentLightfvSGIX(uint light, uint pname, float* @params) Parameters light uint pname uint params float* glGetFragmentLightivSGIX(uint, uint, int*) public static extern void glGetFragmentLightivSGIX(uint light, uint pname, int* @params) Parameters light uint pname uint params int* glGetFragmentMaterialfvSGIX(uint, uint, float*) public static extern void glGetFragmentMaterialfvSGIX(uint face, uint pname, float* @params) Parameters face uint pname uint params float* glGetFragmentMaterialivSGIX(uint, uint, int*) public static extern void glGetFragmentMaterialivSGIX(uint face, uint pname, int* @params) Parameters face uint pname uint params int* glGetFramebufferAttachmentParameteriv(uint, uint, uint, int*) public static extern void glGetFramebufferAttachmentParameteriv(uint target, uint attachment, uint pname, int* @params) Parameters target uint attachment uint pname uint params int* glGetFramebufferAttachmentParameterivEXT(uint, uint, uint, int*) public static extern void glGetFramebufferAttachmentParameterivEXT(uint target, uint attachment, uint pname, int* @params) Parameters target uint attachment uint pname uint params int* glGetFramebufferParameterivEXT(uint, uint, int*) public static extern void glGetFramebufferParameterivEXT(uint framebuffer, uint pname, int* @params) Parameters framebuffer uint pname uint params int* glGetGraphicsResetStatusARB() public static extern uint glGetGraphicsResetStatusARB() Returns uint glGetHandleARB(uint) public static extern int glGetHandleARB(uint pname) Parameters pname uint Returns int glGetHistogram(uint, bool, uint, uint, nint) public static extern void glGetHistogram(uint target, bool reset, uint format, uint type, nint values) Parameters target uint reset bool format uint type uint values nint glGetHistogramEXT(uint, bool, uint, uint, nint) public static extern void glGetHistogramEXT(uint target, bool reset, uint format, uint type, nint values) Parameters target uint reset bool format uint type uint values nint glGetHistogramParameterfv(uint, uint, float*) public static extern void glGetHistogramParameterfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetHistogramParameterfvEXT(uint, uint, float*) public static extern void glGetHistogramParameterfvEXT(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetHistogramParameteriv(uint, uint, int*) public static extern void glGetHistogramParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetHistogramParameterivEXT(uint, uint, int*) public static extern void glGetHistogramParameterivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetImageTransformParameterfvHP(uint, uint, float*) public static extern void glGetImageTransformParameterfvHP(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetImageTransformParameterivHP(uint, uint, int*) public static extern void glGetImageTransformParameterivHP(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetInfoLogARB(uint, int, int*, StringBuilder) public static extern void glGetInfoLogARB(uint obj, int maxLength, int* length, StringBuilder infoLog) Parameters obj uint maxLength int length int* infoLog StringBuilder glGetInstrumentsSGIX() public static extern int glGetInstrumentsSGIX() Returns int glGetInteger64i_v(uint, uint, long*) public static extern void glGetInteger64i_v(uint target, uint index, long* data) Parameters target uint index uint data long* glGetInteger64v(uint, long*) public static extern void glGetInteger64v(uint pname, long* @params) Parameters pname uint params long* glGetIntegerIndexedvEXT(uint, uint, int*) public static extern void glGetIntegerIndexedvEXT(uint target, uint index, int* data) Parameters target uint index uint data int* glGetIntegeri_v(uint, uint, int*) public static extern void glGetIntegeri_v(uint target, uint index, int* data) Parameters target uint index uint data int* glGetIntegerui64i_vNV(uint, uint, ulong*) public static extern void glGetIntegerui64i_vNV(uint value, uint index, ulong* result) Parameters value uint index uint result ulong* glGetIntegerui64vNV(uint, ulong*) public static extern void glGetIntegerui64vNV(uint value, ulong* result) Parameters value uint result ulong* glGetIntegerv(uint, int*) public static extern void glGetIntegerv(uint pname, int* @params) Parameters pname uint params int* glGetInvariantBooleanvEXT(uint, uint, bool*) public static extern void glGetInvariantBooleanvEXT(uint id, uint value, bool* data) Parameters id uint value uint data bool* glGetInvariantFloatvEXT(uint, uint, float*) public static extern void glGetInvariantFloatvEXT(uint id, uint value, float* data) Parameters id uint value uint data float* glGetInvariantIntegervEXT(uint, uint, int*) public static extern void glGetInvariantIntegervEXT(uint id, uint value, int* data) Parameters id uint value uint data int* glGetLightfv(uint, uint, float*) public static extern void glGetLightfv(uint light, uint pname, float* @params) Parameters light uint pname uint params float* glGetLightiv(uint, uint, int*) public static extern void glGetLightiv(uint light, uint pname, int* @params) Parameters light uint pname uint params int* glGetListParameterfvSGIX(uint, uint, float*) public static extern void glGetListParameterfvSGIX(uint list, uint pname, float* @params) Parameters list uint pname uint params float* glGetListParameterivSGIX(uint, uint, int*) public static extern void glGetListParameterivSGIX(uint list, uint pname, int* @params) Parameters list uint pname uint params int* glGetLocalConstantBooleanvEXT(uint, uint, bool*) public static extern void glGetLocalConstantBooleanvEXT(uint id, uint value, bool* data) Parameters id uint value uint data bool* glGetLocalConstantFloatvEXT(uint, uint, float*) public static extern void glGetLocalConstantFloatvEXT(uint id, uint value, float* data) Parameters id uint value uint data float* glGetLocalConstantIntegervEXT(uint, uint, int*) public static extern void glGetLocalConstantIntegervEXT(uint id, uint value, int* data) Parameters id uint value uint data int* glGetMapAttribParameterfvNV(uint, uint, uint, float*) public static extern void glGetMapAttribParameterfvNV(uint target, uint index, uint pname, float* @params) Parameters target uint index uint pname uint params float* glGetMapAttribParameterivNV(uint, uint, uint, int*) public static extern void glGetMapAttribParameterivNV(uint target, uint index, uint pname, int* @params) Parameters target uint index uint pname uint params int* glGetMapControlPointsNV(uint, uint, uint, int, int, bool, nint) public static extern void glGetMapControlPointsNV(uint target, uint index, uint type, int ustride, int vstride, bool packed, nint points) Parameters target uint index uint type uint ustride int vstride int packed bool points nint glGetMapParameterfvNV(uint, uint, float*) public static extern void glGetMapParameterfvNV(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetMapParameterivNV(uint, uint, int*) public static extern void glGetMapParameterivNV(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetMapdv(uint, uint, double*) public static extern void glGetMapdv(uint target, uint query, double* v) Parameters target uint query uint v double* glGetMapfv(uint, uint, float*) public static extern void glGetMapfv(uint target, uint query, float* v) Parameters target uint query uint v float* glGetMapiv(uint, uint, int*) public static extern void glGetMapiv(uint target, uint query, int* v) Parameters target uint query uint v int* glGetMaterialfv(uint, uint, float*) public static extern void glGetMaterialfv(uint face, uint pname, float* @params) Parameters face uint pname uint params float* glGetMaterialiv(uint, uint, int*) public static extern void glGetMaterialiv(uint face, uint pname, int* @params) Parameters face uint pname uint params int* glGetMinmax(uint, bool, uint, uint, nint) public static extern void glGetMinmax(uint target, bool reset, uint format, uint type, nint values) Parameters target uint reset bool format uint type uint values nint glGetMinmaxEXT(uint, bool, uint, uint, nint) public static extern void glGetMinmaxEXT(uint target, bool reset, uint format, uint type, nint values) Parameters target uint reset bool format uint type uint values nint glGetMinmaxParameterfv(uint, uint, float*) public static extern void glGetMinmaxParameterfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetMinmaxParameterfvEXT(uint, uint, float*) public static extern void glGetMinmaxParameterfvEXT(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetMinmaxParameteriv(uint, uint, int*) public static extern void glGetMinmaxParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetMinmaxParameterivEXT(uint, uint, int*) public static extern void glGetMinmaxParameterivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetMultiTexEnvfvEXT(uint, uint, uint, float*) public static extern void glGetMultiTexEnvfvEXT(uint texunit, uint target, uint pname, float* @params) Parameters texunit uint target uint pname uint params float* glGetMultiTexEnvivEXT(uint, uint, uint, int*) public static extern void glGetMultiTexEnvivEXT(uint texunit, uint target, uint pname, int* @params) Parameters texunit uint target uint pname uint params int* glGetMultiTexGendvEXT(uint, uint, uint, double*) public static extern void glGetMultiTexGendvEXT(uint texunit, uint coord, uint pname, double* @params) Parameters texunit uint coord uint pname uint params double* glGetMultiTexGenfvEXT(uint, uint, uint, float*) public static extern void glGetMultiTexGenfvEXT(uint texunit, uint coord, uint pname, float* @params) Parameters texunit uint coord uint pname uint params float* glGetMultiTexGenivEXT(uint, uint, uint, int*) public static extern void glGetMultiTexGenivEXT(uint texunit, uint coord, uint pname, int* @params) Parameters texunit uint coord uint pname uint params int* glGetMultiTexImageEXT(uint, uint, int, uint, uint, nint) public static extern void glGetMultiTexImageEXT(uint texunit, uint target, int level, uint format, uint type, nint pixels) Parameters texunit uint target uint level int format uint type uint pixels nint glGetMultiTexLevelParameterfvEXT(uint, uint, int, uint, float*) public static extern void glGetMultiTexLevelParameterfvEXT(uint texunit, uint target, int level, uint pname, float* @params) Parameters texunit uint target uint level int pname uint params float* glGetMultiTexLevelParameterivEXT(uint, uint, int, uint, int*) public static extern void glGetMultiTexLevelParameterivEXT(uint texunit, uint target, int level, uint pname, int* @params) Parameters texunit uint target uint level int pname uint params int* glGetMultiTexParameterIivEXT(uint, uint, uint, int*) public static extern void glGetMultiTexParameterIivEXT(uint texunit, uint target, uint pname, int* @params) Parameters texunit uint target uint pname uint params int* glGetMultiTexParameterIuivEXT(uint, uint, uint, uint*) public static extern void glGetMultiTexParameterIuivEXT(uint texunit, uint target, uint pname, uint* @params) Parameters texunit uint target uint pname uint params uint* glGetMultiTexParameterfvEXT(uint, uint, uint, float*) public static extern void glGetMultiTexParameterfvEXT(uint texunit, uint target, uint pname, float* @params) Parameters texunit uint target uint pname uint params float* glGetMultiTexParameterivEXT(uint, uint, uint, int*) public static extern void glGetMultiTexParameterivEXT(uint texunit, uint target, uint pname, int* @params) Parameters texunit uint target uint pname uint params int* glGetMultisamplefv(uint, uint, float*) public static extern void glGetMultisamplefv(uint pname, uint index, float* val) Parameters pname uint index uint val float* glGetMultisamplefvNV(uint, uint, float*) public static extern void glGetMultisamplefvNV(uint pname, uint index, float* val) Parameters pname uint index uint val float* glGetNamedBufferParameterivEXT(uint, uint, int*) public static extern void glGetNamedBufferParameterivEXT(uint buffer, uint pname, int* @params) Parameters buffer uint pname uint params int* glGetNamedBufferParameterui64vNV(uint, uint, ulong*) public static extern void glGetNamedBufferParameterui64vNV(uint buffer, uint pname, ulong* @params) Parameters buffer uint pname uint params ulong* glGetNamedBufferPointervEXT(uint, uint, nint) public static extern void glGetNamedBufferPointervEXT(uint buffer, uint pname, nint @params) Parameters buffer uint pname uint params nint glGetNamedBufferSubDataEXT(uint, nint, nint, nint) public static extern void glGetNamedBufferSubDataEXT(uint buffer, nint offset, nint size, nint data) Parameters buffer uint offset nint size nint data nint glGetNamedFramebufferAttachmentParameterivEXT(uint, uint, uint, int*) public static extern void glGetNamedFramebufferAttachmentParameterivEXT(uint framebuffer, uint attachment, uint pname, int* @params) Parameters framebuffer uint attachment uint pname uint params int* glGetNamedProgramLocalParameterIivEXT(uint, uint, uint, int*) public static extern void glGetNamedProgramLocalParameterIivEXT(uint program, uint target, uint index, int* @params) Parameters program uint target uint index uint params int* glGetNamedProgramLocalParameterIuivEXT(uint, uint, uint, uint*) public static extern void glGetNamedProgramLocalParameterIuivEXT(uint program, uint target, uint index, uint* @params) Parameters program uint target uint index uint params uint* glGetNamedProgramLocalParameterdvEXT(uint, uint, uint, double*) public static extern void glGetNamedProgramLocalParameterdvEXT(uint program, uint target, uint index, double* @params) Parameters program uint target uint index uint params double* glGetNamedProgramLocalParameterfvEXT(uint, uint, uint, float*) public static extern void glGetNamedProgramLocalParameterfvEXT(uint program, uint target, uint index, float* @params) Parameters program uint target uint index uint params float* glGetNamedProgramStringEXT(uint, uint, uint, nint) public static extern void glGetNamedProgramStringEXT(uint program, uint target, uint pname, nint @string) Parameters program uint target uint pname uint string nint glGetNamedProgramivEXT(uint, uint, uint, int*) public static extern void glGetNamedProgramivEXT(uint program, uint target, uint pname, int* @params) Parameters program uint target uint pname uint params int* glGetNamedRenderbufferParameterivEXT(uint, uint, int*) public static extern void glGetNamedRenderbufferParameterivEXT(uint renderbuffer, uint pname, int* @params) Parameters renderbuffer uint pname uint params int* glGetNamedStringARB(int, string, int, int*, StringBuilder) public static extern void glGetNamedStringARB(int namelen, string name, int bufSize, int* stringlen, StringBuilder @string) Parameters namelen int name string bufSize int stringlen int* string StringBuilder glGetNamedStringivARB(int, string, uint, int*) public static extern void glGetNamedStringivARB(int namelen, string name, uint pname, int* @params) Parameters namelen int name string pname uint params int* glGetObjectBufferfvATI(uint, uint, float*) public static extern void glGetObjectBufferfvATI(uint buffer, uint pname, float* @params) Parameters buffer uint pname uint params float* glGetObjectBufferivATI(uint, uint, int*) public static extern void glGetObjectBufferivATI(uint buffer, uint pname, int* @params) Parameters buffer uint pname uint params int* glGetObjectParameterfvARB(uint, uint, float*) public static extern void glGetObjectParameterfvARB(uint obj, uint pname, float* @params) Parameters obj uint pname uint params float* glGetObjectParameterivAPPLE(uint, uint, uint, int*) public static extern void glGetObjectParameterivAPPLE(uint objectType, uint name, uint pname, int* @params) Parameters objectType uint name uint pname uint params int* glGetObjectParameterivARB(uint, uint, int*) public static extern void glGetObjectParameterivARB(uint obj, uint pname, int* @params) Parameters obj uint pname uint params int* glGetOcclusionQueryivNV(uint, uint, int*) public static extern void glGetOcclusionQueryivNV(uint id, uint pname, int* @params) Parameters id uint pname uint params int* glGetOcclusionQueryuivNV(uint, uint, uint*) public static extern void glGetOcclusionQueryuivNV(uint id, uint pname, uint* @params) Parameters id uint pname uint params uint* glGetPerfMonitorCounterDataAMD(uint, uint, int, uint*, int*) public static extern void glGetPerfMonitorCounterDataAMD(uint monitor, uint pname, int dataSize, uint* data, int* bytesWritten) Parameters monitor uint pname uint dataSize int data uint* bytesWritten int* glGetPerfMonitorCounterInfoAMD(uint, uint, uint, nint) public static extern void glGetPerfMonitorCounterInfoAMD(uint group, uint counter, uint pname, nint data) Parameters group uint counter uint pname uint data nint glGetPerfMonitorCounterStringAMD(uint, uint, int, int*, StringBuilder) public static extern void glGetPerfMonitorCounterStringAMD(uint group, uint counter, int bufSize, int* length, StringBuilder counterString) Parameters group uint counter uint bufSize int length int* counterString StringBuilder glGetPerfMonitorCountersAMD(uint, int*, int*, int, uint*) public static extern void glGetPerfMonitorCountersAMD(uint group, int* numCounters, int* maxActiveCounters, int counterSize, uint* counters) Parameters group uint numCounters int* maxActiveCounters int* counterSize int counters uint* glGetPerfMonitorGroupStringAMD(uint, int, int*, StringBuilder) public static extern void glGetPerfMonitorGroupStringAMD(uint group, int bufSize, int* length, StringBuilder groupString) Parameters group uint bufSize int length int* groupString StringBuilder glGetPerfMonitorGroupsAMD(int*, int, uint*) public static extern void glGetPerfMonitorGroupsAMD(int* numGroups, int groupsSize, uint* groups) Parameters numGroups int* groupsSize int groups uint* glGetPixelMapfv(uint, float*) public static extern void glGetPixelMapfv(uint map, float* values) Parameters map uint values float* glGetPixelMapuiv(uint, uint*) public static extern void glGetPixelMapuiv(uint map, uint* values) Parameters map uint values uint* glGetPixelMapusv(uint, ushort*) public static extern void glGetPixelMapusv(uint map, ushort* values) Parameters map uint values ushort* glGetPixelTexGenParameterfvSGIS(uint, float*) public static extern void glGetPixelTexGenParameterfvSGIS(uint pname, float* @params) Parameters pname uint params float* glGetPixelTexGenParameterivSGIS(uint, int*) public static extern void glGetPixelTexGenParameterivSGIS(uint pname, int* @params) Parameters pname uint params int* glGetPointerIndexedvEXT(uint, uint, nint) public static extern void glGetPointerIndexedvEXT(uint target, uint index, nint data) Parameters target uint index uint data nint glGetPointerv(uint, nint) public static extern void glGetPointerv(uint pname, nint @params) Parameters pname uint params nint glGetPointervEXT(uint, nint) public static extern void glGetPointervEXT(uint pname, nint @params) Parameters pname uint params nint glGetPolygonStipple(byte*) public static extern void glGetPolygonStipple(byte* mask) Parameters mask byte* glGetProgramBinary(uint, int, int*, uint*, nint) public static extern void glGetProgramBinary(uint program, int bufSize, int* length, uint* binaryFormat, nint binary) Parameters program uint bufSize int length int* binaryFormat uint* binary nint glGetProgramEnvParameterIivNV(uint, uint, int*) public static extern void glGetProgramEnvParameterIivNV(uint target, uint index, int* @params) Parameters target uint index uint params int* glGetProgramEnvParameterIuivNV(uint, uint, uint*) public static extern void glGetProgramEnvParameterIuivNV(uint target, uint index, uint* @params) Parameters target uint index uint params uint* glGetProgramEnvParameterdvARB(uint, uint, double*) public static extern void glGetProgramEnvParameterdvARB(uint target, uint index, double* @params) Parameters target uint index uint params double* glGetProgramEnvParameterfvARB(uint, uint, float*) public static extern void glGetProgramEnvParameterfvARB(uint target, uint index, float* @params) Parameters target uint index uint params float* glGetProgramInfoLog(uint, int, int*, StringBuilder) public static extern void glGetProgramInfoLog(uint program, int bufSize, int* length, StringBuilder infoLog) Parameters program uint bufSize int length int* infoLog StringBuilder glGetProgramLocalParameterIivNV(uint, uint, int*) public static extern void glGetProgramLocalParameterIivNV(uint target, uint index, int* @params) Parameters target uint index uint params int* glGetProgramLocalParameterIuivNV(uint, uint, uint*) public static extern void glGetProgramLocalParameterIuivNV(uint target, uint index, uint* @params) Parameters target uint index uint params uint* glGetProgramLocalParameterdvARB(uint, uint, double*) public static extern void glGetProgramLocalParameterdvARB(uint target, uint index, double* @params) Parameters target uint index uint params double* glGetProgramLocalParameterfvARB(uint, uint, float*) public static extern void glGetProgramLocalParameterfvARB(uint target, uint index, float* @params) Parameters target uint index uint params float* glGetProgramNamedParameterdvNV(uint, int, byte*, double*) public static extern void glGetProgramNamedParameterdvNV(uint id, int len, byte* name, double* @params) Parameters id uint len int name byte* params double* glGetProgramNamedParameterfvNV(uint, int, byte*, float*) public static extern void glGetProgramNamedParameterfvNV(uint id, int len, byte* name, float* @params) Parameters id uint len int name byte* params float* glGetProgramParameterdvNV(uint, uint, uint, double*) public static extern void glGetProgramParameterdvNV(uint target, uint index, uint pname, double* @params) Parameters target uint index uint pname uint params double* glGetProgramParameterfvNV(uint, uint, uint, float*) public static extern void glGetProgramParameterfvNV(uint target, uint index, uint pname, float* @params) Parameters target uint index uint pname uint params float* glGetProgramPipelineInfoLog(uint, int, int*, StringBuilder) public static extern void glGetProgramPipelineInfoLog(uint pipeline, int bufSize, int* length, StringBuilder infoLog) Parameters pipeline uint bufSize int length int* infoLog StringBuilder glGetProgramPipelineiv(uint, uint, int*) public static extern void glGetProgramPipelineiv(uint pipeline, uint pname, int* @params) Parameters pipeline uint pname uint params int* glGetProgramStageiv(uint, uint, uint, int*) public static extern void glGetProgramStageiv(uint program, uint shadertype, uint pname, int* values) Parameters program uint shadertype uint pname uint values int* glGetProgramStringARB(uint, uint, nint) public static extern void glGetProgramStringARB(uint target, uint pname, nint @string) Parameters target uint pname uint string nint glGetProgramStringNV(uint, uint, byte*) public static extern void glGetProgramStringNV(uint id, uint pname, byte* program) Parameters id uint pname uint program byte* glGetProgramSubroutineParameteruivNV(uint, uint, uint*) public static extern void glGetProgramSubroutineParameteruivNV(uint target, uint index, uint* param) Parameters target uint index uint param uint* glGetProgramiv(uint, uint, int*) public static extern void glGetProgramiv(uint program, uint pname, int* @params) Parameters program uint pname uint params int* glGetProgramivARB(uint, uint, int*) public static extern void glGetProgramivARB(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetProgramivNV(uint, uint, int*) public static extern void glGetProgramivNV(uint id, uint pname, int* @params) Parameters id uint pname uint params int* glGetQueryIndexediv(uint, uint, uint, int*) public static extern void glGetQueryIndexediv(uint target, uint index, uint pname, int* @params) Parameters target uint index uint pname uint params int* glGetQueryObjecti64v(uint, uint, long*) public static extern void glGetQueryObjecti64v(uint id, uint pname, long* @params) Parameters id uint pname uint params long* glGetQueryObjecti64vEXT(uint, uint, long*) public static extern void glGetQueryObjecti64vEXT(uint id, uint pname, long* @params) Parameters id uint pname uint params long* glGetQueryObjectiv(uint, uint, int*) public static extern void glGetQueryObjectiv(uint id, uint pname, int* @params) Parameters id uint pname uint params int* glGetQueryObjectivARB(uint, uint, int*) public static extern void glGetQueryObjectivARB(uint id, uint pname, int* @params) Parameters id uint pname uint params int* glGetQueryObjectui64v(uint, uint, ulong*) public static extern void glGetQueryObjectui64v(uint id, uint pname, ulong* @params) Parameters id uint pname uint params ulong* glGetQueryObjectui64vEXT(uint, uint, ulong*) public static extern void glGetQueryObjectui64vEXT(uint id, uint pname, ulong* @params) Parameters id uint pname uint params ulong* glGetQueryObjectuiv(uint, uint, uint*) public static extern void glGetQueryObjectuiv(uint id, uint pname, uint* @params) Parameters id uint pname uint params uint* glGetQueryObjectuivARB(uint, uint, uint*) public static extern void glGetQueryObjectuivARB(uint id, uint pname, uint* @params) Parameters id uint pname uint params uint* glGetQueryiv(uint, uint, int*) public static extern void glGetQueryiv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetQueryivARB(uint, uint, int*) public static extern void glGetQueryivARB(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetRenderbufferParameteriv(uint, uint, int*) public static extern void glGetRenderbufferParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetRenderbufferParameterivEXT(uint, uint, int*) public static extern void glGetRenderbufferParameterivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetSamplerParameterIiv(uint, uint, int*) public static extern void glGetSamplerParameterIiv(uint sampler, uint pname, int* @params) Parameters sampler uint pname uint params int* glGetSamplerParameterIuiv(uint, uint, uint*) public static extern void glGetSamplerParameterIuiv(uint sampler, uint pname, uint* @params) Parameters sampler uint pname uint params uint* glGetSamplerParameterfv(uint, uint, float*) public static extern void glGetSamplerParameterfv(uint sampler, uint pname, float* @params) Parameters sampler uint pname uint params float* glGetSamplerParameteriv(uint, uint, int*) public static extern void glGetSamplerParameteriv(uint sampler, uint pname, int* @params) Parameters sampler uint pname uint params int* glGetSeparableFilter(uint, uint, uint, nint, nint, nint) public static extern void glGetSeparableFilter(uint target, uint format, uint type, nint row, nint column, nint span) Parameters target uint format uint type uint row nint column nint span nint glGetSeparableFilterEXT(uint, uint, uint, nint, nint, nint) public static extern void glGetSeparableFilterEXT(uint target, uint format, uint type, nint row, nint column, nint span) Parameters target uint format uint type uint row nint column nint span nint glGetShaderInfoLog(uint, int, int*, StringBuilder) public static extern void glGetShaderInfoLog(uint shader, int bufSize, int* length, StringBuilder infoLog) Parameters shader uint bufSize int length int* infoLog StringBuilder glGetShaderPrecisionFormat(uint, uint, int*, int*) public static extern void glGetShaderPrecisionFormat(uint shadertype, uint precisiontype, int* range, int* precision) Parameters shadertype uint precisiontype uint range int* precision int* glGetShaderSource(uint, int, int*, StringBuilder) public static extern void glGetShaderSource(uint shader, int bufSize, int* length, StringBuilder source) Parameters shader uint bufSize int length int* source StringBuilder glGetShaderSourceARB(uint, int, int*, StringBuilder) public static extern void glGetShaderSourceARB(uint obj, int maxLength, int* length, StringBuilder source) Parameters obj uint maxLength int length int* source StringBuilder glGetShaderiv(uint, uint, int*) public static extern void glGetShaderiv(uint shader, uint pname, int* @params) Parameters shader uint pname uint params int* glGetSharpenTexFuncSGIS(uint, float*) public static extern void glGetSharpenTexFuncSGIS(uint target, float* points) Parameters target uint points float* glGetString(uint) public static extern nint glGetString(uint name) Parameters name uint Returns nint glGetStringi(uint, uint) public static extern nint glGetStringi(uint name, uint index) Parameters name uint index uint Returns nint glGetSubroutineIndex(uint, uint, string) public static extern int glGetSubroutineIndex(uint program, uint shadertype, string name) Parameters program uint shadertype uint name string Returns int glGetSubroutineUniformLocation(uint, uint, string) public static extern int glGetSubroutineUniformLocation(uint program, uint shadertype, string name) Parameters program uint shadertype uint name string Returns int glGetSynciv(nint, uint, int, int*, int*) public static extern void glGetSynciv(nint sync, uint pname, int bufSize, int* length, int* values) Parameters sync nint pname uint bufSize int length int* values int* glGetTexBumpParameterfvATI(uint, float*) public static extern void glGetTexBumpParameterfvATI(uint pname, float* param) Parameters pname uint param float* glGetTexBumpParameterivATI(uint, int*) public static extern void glGetTexBumpParameterivATI(uint pname, int* param) Parameters pname uint param int* glGetTexEnvfv(uint, uint, float*) public static extern void glGetTexEnvfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetTexEnviv(uint, uint, int*) public static extern void glGetTexEnviv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetTexFilterFuncSGIS(uint, uint, float*) public static extern void glGetTexFilterFuncSGIS(uint target, uint filter, float* weights) Parameters target uint filter uint weights float* glGetTexGendv(uint, uint, double*) public static extern void glGetTexGendv(uint coord, uint pname, double* @params) Parameters coord uint pname uint params double* glGetTexGenfv(uint, uint, float*) public static extern void glGetTexGenfv(uint coord, uint pname, float* @params) Parameters coord uint pname uint params float* glGetTexGeniv(uint, uint, int*) public static extern void glGetTexGeniv(uint coord, uint pname, int* @params) Parameters coord uint pname uint params int* glGetTexImage(uint, int, uint, uint, nint) public static extern void glGetTexImage(uint target, int level, uint format, uint type, nint pixels) Parameters target uint level int format uint type uint pixels nint glGetTexLevelParameterfv(uint, int, uint, float*) public static extern void glGetTexLevelParameterfv(uint target, int level, uint pname, float* @params) Parameters target uint level int pname uint params float* glGetTexLevelParameteriv(uint, int, uint, int*) public static extern void glGetTexLevelParameteriv(uint target, int level, uint pname, int* @params) Parameters target uint level int pname uint params int* glGetTexParameterIiv(uint, uint, int*) public static extern void glGetTexParameterIiv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetTexParameterIivEXT(uint, uint, int*) public static extern void glGetTexParameterIivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetTexParameterIuiv(uint, uint, uint*) public static extern void glGetTexParameterIuiv(uint target, uint pname, uint* @params) Parameters target uint pname uint params uint* glGetTexParameterIuivEXT(uint, uint, uint*) public static extern void glGetTexParameterIuivEXT(uint target, uint pname, uint* @params) Parameters target uint pname uint params uint* glGetTexParameterPointervAPPLE(uint, uint, nint) public static extern void glGetTexParameterPointervAPPLE(uint target, uint pname, nint @params) Parameters target uint pname uint params nint glGetTexParameterfv(uint, uint, float*) public static extern void glGetTexParameterfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetTexParameteriv(uint, uint, int*) public static extern void glGetTexParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetTextureImageEXT(uint, uint, int, uint, uint, nint) public static extern void glGetTextureImageEXT(uint texture, uint target, int level, uint format, uint type, nint pixels) Parameters texture uint target uint level int format uint type uint pixels nint glGetTextureLevelParameterfvEXT(uint, uint, int, uint, float*) public static extern void glGetTextureLevelParameterfvEXT(uint texture, uint target, int level, uint pname, float* @params) Parameters texture uint target uint level int pname uint params float* glGetTextureLevelParameterivEXT(uint, uint, int, uint, int*) public static extern void glGetTextureLevelParameterivEXT(uint texture, uint target, int level, uint pname, int* @params) Parameters texture uint target uint level int pname uint params int* glGetTextureParameterIivEXT(uint, uint, uint, int*) public static extern void glGetTextureParameterIivEXT(uint texture, uint target, uint pname, int* @params) Parameters texture uint target uint pname uint params int* glGetTextureParameterIuivEXT(uint, uint, uint, uint*) public static extern void glGetTextureParameterIuivEXT(uint texture, uint target, uint pname, uint* @params) Parameters texture uint target uint pname uint params uint* glGetTextureParameterfvEXT(uint, uint, uint, float*) public static extern void glGetTextureParameterfvEXT(uint texture, uint target, uint pname, float* @params) Parameters texture uint target uint pname uint params float* glGetTextureParameterivEXT(uint, uint, uint, int*) public static extern void glGetTextureParameterivEXT(uint texture, uint target, uint pname, int* @params) Parameters texture uint target uint pname uint params int* glGetTrackMatrixivNV(uint, uint, uint, int*) public static extern void glGetTrackMatrixivNV(uint target, uint address, uint pname, int* @params) Parameters target uint address uint pname uint params int* glGetTransformFeedbackVarying(uint, uint, int, int*, int*, uint*, StringBuilder) public static extern void glGetTransformFeedbackVarying(uint program, uint index, int bufSize, int* length, int* size, uint* type, StringBuilder name) Parameters program uint index uint bufSize int length int* size int* type uint* name StringBuilder glGetTransformFeedbackVaryingEXT(uint, uint, int, int*, int*, uint*, StringBuilder) public static extern void glGetTransformFeedbackVaryingEXT(uint program, uint index, int bufSize, int* length, int* size, uint* type, StringBuilder name) Parameters program uint index uint bufSize int length int* size int* type uint* name StringBuilder glGetTransformFeedbackVaryingNV(uint, uint, int*) public static extern void glGetTransformFeedbackVaryingNV(uint program, uint index, int* location) Parameters program uint index uint location int* glGetUniformBlockIndex(uint, string) public static extern int glGetUniformBlockIndex(uint program, string uniformBlockName) Parameters program uint uniformBlockName string Returns int glGetUniformBufferSizeEXT(uint, int) public static extern int glGetUniformBufferSizeEXT(uint program, int location) Parameters program uint location int Returns int glGetUniformIndices(uint, int, string[], uint*) public static extern void glGetUniformIndices(uint program, int uniformCount, string[] uniformNames, uint* uniformIndices) Parameters program uint uniformCount int uniformNames string[] uniformIndices uint* glGetUniformLocation(uint, string) public static extern int glGetUniformLocation(uint program, string name) Parameters program uint name string Returns int glGetUniformLocationARB(uint, string) public static extern int glGetUniformLocationARB(uint programObj, string name) Parameters programObj uint name string Returns int glGetUniformOffsetEXT(uint, int) public static extern nint glGetUniformOffsetEXT(uint program, int location) Parameters program uint location int Returns nint glGetUniformSubroutineuiv(uint, int, uint*) public static extern void glGetUniformSubroutineuiv(uint shadertype, int location, uint* @params) Parameters shadertype uint location int params uint* glGetUniformdv(uint, int, double*) public static extern void glGetUniformdv(uint program, int location, double* @params) Parameters program uint location int params double* glGetUniformfv(uint, int, float*) public static extern void glGetUniformfv(uint program, int location, float* @params) Parameters program uint location int params float* glGetUniformfvARB(uint, int, float*) public static extern void glGetUniformfvARB(uint programObj, int location, float* @params) Parameters programObj uint location int params float* glGetUniformi64vNV(uint, int, long*) public static extern void glGetUniformi64vNV(uint program, int location, long* @params) Parameters program uint location int params long* glGetUniformiv(uint, int, int*) public static extern void glGetUniformiv(uint program, int location, int* @params) Parameters program uint location int params int* glGetUniformivARB(uint, int, int*) public static extern void glGetUniformivARB(uint programObj, int location, int* @params) Parameters programObj uint location int params int* glGetUniformui64vNV(uint, int, ulong*) public static extern void glGetUniformui64vNV(uint program, int location, ulong* @params) Parameters program uint location int params ulong* glGetUniformuiv(uint, int, uint*) public static extern void glGetUniformuiv(uint program, int location, uint* @params) Parameters program uint location int params uint* glGetUniformuivEXT(uint, int, uint*) public static extern void glGetUniformuivEXT(uint program, int location, uint* @params) Parameters program uint location int params uint* glGetVariantArrayObjectfvATI(uint, uint, float*) public static extern void glGetVariantArrayObjectfvATI(uint id, uint pname, float* @params) Parameters id uint pname uint params float* glGetVariantArrayObjectivATI(uint, uint, int*) public static extern void glGetVariantArrayObjectivATI(uint id, uint pname, int* @params) Parameters id uint pname uint params int* glGetVariantBooleanvEXT(uint, uint, bool*) public static extern void glGetVariantBooleanvEXT(uint id, uint value, bool* data) Parameters id uint value uint data bool* glGetVariantFloatvEXT(uint, uint, float*) public static extern void glGetVariantFloatvEXT(uint id, uint value, float* data) Parameters id uint value uint data float* glGetVariantIntegervEXT(uint, uint, int*) public static extern void glGetVariantIntegervEXT(uint id, uint value, int* data) Parameters id uint value uint data int* glGetVariantPointervEXT(uint, uint, nint) public static extern void glGetVariantPointervEXT(uint id, uint value, nint data) Parameters id uint value uint data nint glGetVaryingLocationNV(uint, string) public static extern int glGetVaryingLocationNV(uint program, string name) Parameters program uint name string Returns int glGetVertexAttribArrayObjectfvATI(uint, uint, float*) public static extern void glGetVertexAttribArrayObjectfvATI(uint index, uint pname, float* @params) Parameters index uint pname uint params float* glGetVertexAttribArrayObjectivATI(uint, uint, int*) public static extern void glGetVertexAttribArrayObjectivATI(uint index, uint pname, int* @params) Parameters index uint pname uint params int* glGetVertexAttribIiv(uint, uint, int*) public static extern void glGetVertexAttribIiv(uint index, uint pname, int* @params) Parameters index uint pname uint params int* glGetVertexAttribIivEXT(uint, uint, int*) public static extern void glGetVertexAttribIivEXT(uint index, uint pname, int* @params) Parameters index uint pname uint params int* glGetVertexAttribIuiv(uint, uint, uint*) public static extern void glGetVertexAttribIuiv(uint index, uint pname, uint* @params) Parameters index uint pname uint params uint* glGetVertexAttribIuivEXT(uint, uint, uint*) public static extern void glGetVertexAttribIuivEXT(uint index, uint pname, uint* @params) Parameters index uint pname uint params uint* glGetVertexAttribLdv(uint, uint, double*) public static extern void glGetVertexAttribLdv(uint index, uint pname, double* @params) Parameters index uint pname uint params double* glGetVertexAttribLdvEXT(uint, uint, double*) public static extern void glGetVertexAttribLdvEXT(uint index, uint pname, double* @params) Parameters index uint pname uint params double* glGetVertexAttribLi64vNV(uint, uint, long*) public static extern void glGetVertexAttribLi64vNV(uint index, uint pname, long* @params) Parameters index uint pname uint params long* glGetVertexAttribLui64vNV(uint, uint, ulong*) public static extern void glGetVertexAttribLui64vNV(uint index, uint pname, ulong* @params) Parameters index uint pname uint params ulong* glGetVertexAttribPointerv(uint, uint, nint) public static extern void glGetVertexAttribPointerv(uint index, uint pname, nint pointer) Parameters index uint pname uint pointer nint glGetVertexAttribPointervARB(uint, uint, nint) public static extern void glGetVertexAttribPointervARB(uint index, uint pname, nint pointer) Parameters index uint pname uint pointer nint glGetVertexAttribPointervNV(uint, uint, nint) public static extern void glGetVertexAttribPointervNV(uint index, uint pname, nint pointer) Parameters index uint pname uint pointer nint glGetVertexAttribdv(uint, uint, double*) public static extern void glGetVertexAttribdv(uint index, uint pname, double* @params) Parameters index uint pname uint params double* glGetVertexAttribdvARB(uint, uint, double*) public static extern void glGetVertexAttribdvARB(uint index, uint pname, double* @params) Parameters index uint pname uint params double* glGetVertexAttribdvNV(uint, uint, double*) public static extern void glGetVertexAttribdvNV(uint index, uint pname, double* @params) Parameters index uint pname uint params double* glGetVertexAttribfv(uint, uint, float*) public static extern void glGetVertexAttribfv(uint index, uint pname, float* @params) Parameters index uint pname uint params float* glGetVertexAttribfvARB(uint, uint, float*) public static extern void glGetVertexAttribfvARB(uint index, uint pname, float* @params) Parameters index uint pname uint params float* glGetVertexAttribfvNV(uint, uint, float*) public static extern void glGetVertexAttribfvNV(uint index, uint pname, float* @params) Parameters index uint pname uint params float* glGetVertexAttribiv(uint, uint, int*) public static extern void glGetVertexAttribiv(uint index, uint pname, int* @params) Parameters index uint pname uint params int* glGetVertexAttribivARB(uint, uint, int*) public static extern void glGetVertexAttribivARB(uint index, uint pname, int* @params) Parameters index uint pname uint params int* glGetVertexAttribivNV(uint, uint, int*) public static extern void glGetVertexAttribivNV(uint index, uint pname, int* @params) Parameters index uint pname uint params int* glGetVideoCaptureStreamdvNV(uint, uint, uint, double*) public static extern void glGetVideoCaptureStreamdvNV(uint video_capture_slot, uint stream, uint pname, double* @params) Parameters video_capture_slot uint stream uint pname uint params double* glGetVideoCaptureStreamfvNV(uint, uint, uint, float*) public static extern void glGetVideoCaptureStreamfvNV(uint video_capture_slot, uint stream, uint pname, float* @params) Parameters video_capture_slot uint stream uint pname uint params float* glGetVideoCaptureStreamivNV(uint, uint, uint, int*) public static extern void glGetVideoCaptureStreamivNV(uint video_capture_slot, uint stream, uint pname, int* @params) Parameters video_capture_slot uint stream uint pname uint params int* glGetVideoCaptureivNV(uint, uint, int*) public static extern void glGetVideoCaptureivNV(uint video_capture_slot, uint pname, int* @params) Parameters video_capture_slot uint pname uint params int* glGetVideoi64vNV(uint, uint, long*) public static extern void glGetVideoi64vNV(uint video_slot, uint pname, long* @params) Parameters video_slot uint pname uint params long* glGetVideoivNV(uint, uint, int*) public static extern void glGetVideoivNV(uint video_slot, uint pname, int* @params) Parameters video_slot uint pname uint params int* glGetVideoui64vNV(uint, uint, ulong*) public static extern void glGetVideoui64vNV(uint video_slot, uint pname, ulong* @params) Parameters video_slot uint pname uint params ulong* glGetVideouivNV(uint, uint, uint*) public static extern void glGetVideouivNV(uint video_slot, uint pname, uint* @params) Parameters video_slot uint pname uint params uint* glGetnColorTableARB(uint, uint, uint, int, nint) public static extern void glGetnColorTableARB(uint target, uint format, uint type, int bufSize, nint table) Parameters target uint format uint type uint bufSize int table nint glGetnCompressedTexImageARB(uint, int, int, nint) public static extern void glGetnCompressedTexImageARB(uint target, int lod, int bufSize, nint img) Parameters target uint lod int bufSize int img nint glGetnConvolutionFilterARB(uint, uint, uint, int, nint) public static extern void glGetnConvolutionFilterARB(uint target, uint format, uint type, int bufSize, nint image) Parameters target uint format uint type uint bufSize int image nint glGetnHistogramARB(uint, bool, uint, uint, int, nint) public static extern void glGetnHistogramARB(uint target, bool reset, uint format, uint type, int bufSize, nint values) Parameters target uint reset bool format uint type uint bufSize int values nint glGetnMapdvARB(uint, uint, int, double*) public static extern void glGetnMapdvARB(uint target, uint query, int bufSize, double* v) Parameters target uint query uint bufSize int v double* glGetnMapfvARB(uint, uint, int, float*) public static extern void glGetnMapfvARB(uint target, uint query, int bufSize, float* v) Parameters target uint query uint bufSize int v float* glGetnMapivARB(uint, uint, int, int*) public static extern void glGetnMapivARB(uint target, uint query, int bufSize, int* v) Parameters target uint query uint bufSize int v int* glGetnMinmaxARB(uint, bool, uint, uint, int, nint) public static extern void glGetnMinmaxARB(uint target, bool reset, uint format, uint type, int bufSize, nint values) Parameters target uint reset bool format uint type uint bufSize int values nint glGetnPixelMapfvARB(uint, int, float*) public static extern void glGetnPixelMapfvARB(uint map, int bufSize, float* values) Parameters map uint bufSize int values float* glGetnPixelMapuivARB(uint, int, uint*) public static extern void glGetnPixelMapuivARB(uint map, int bufSize, uint* values) Parameters map uint bufSize int values uint* glGetnPixelMapusvARB(uint, int, ushort*) public static extern void glGetnPixelMapusvARB(uint map, int bufSize, ushort* values) Parameters map uint bufSize int values ushort* glGetnPolygonStippleARB(int, byte*) public static extern void glGetnPolygonStippleARB(int bufSize, byte* pattern) Parameters bufSize int pattern byte* glGetnSeparableFilterARB(uint, uint, uint, int, nint, int, nint, nint) public static extern void glGetnSeparableFilterARB(uint target, uint format, uint type, int rowBufSize, nint row, int columnBufSize, nint column, nint span) Parameters target uint format uint type uint rowBufSize int row nint columnBufSize int column nint span nint glGetnTexImageARB(uint, int, uint, uint, int, nint) public static extern void glGetnTexImageARB(uint target, int level, uint format, uint type, int bufSize, nint img) Parameters target uint level int format uint type uint bufSize int img nint glGetnUniformdvARB(uint, int, int, double*) public static extern void glGetnUniformdvARB(uint program, int location, int bufSize, double* @params) Parameters program uint location int bufSize int params double* glGetnUniformfvARB(uint, int, int, float*) public static extern void glGetnUniformfvARB(uint program, int location, int bufSize, float* @params) Parameters program uint location int bufSize int params float* glGetnUniformivARB(uint, int, int, int*) public static extern void glGetnUniformivARB(uint program, int location, int bufSize, int* @params) Parameters program uint location int bufSize int params int* glGetnUniformuivARB(uint, int, int, uint*) public static extern void glGetnUniformuivARB(uint program, int location, int bufSize, uint* @params) Parameters program uint location int bufSize int params uint* glGlobalAlphaFactorbSUN(sbyte) public static extern void glGlobalAlphaFactorbSUN(sbyte factor) Parameters factor sbyte glGlobalAlphaFactordSUN(double) public static extern void glGlobalAlphaFactordSUN(double factor) Parameters factor double glGlobalAlphaFactorfSUN(float) public static extern void glGlobalAlphaFactorfSUN(float factor) Parameters factor float glGlobalAlphaFactoriSUN(int) public static extern void glGlobalAlphaFactoriSUN(int factor) Parameters factor int glGlobalAlphaFactorsSUN(short) public static extern void glGlobalAlphaFactorsSUN(short factor) Parameters factor short glGlobalAlphaFactorubSUN(byte) public static extern void glGlobalAlphaFactorubSUN(byte factor) Parameters factor byte glGlobalAlphaFactoruiSUN(uint) public static extern void glGlobalAlphaFactoruiSUN(uint factor) Parameters factor uint glGlobalAlphaFactorusSUN(ushort) public static extern void glGlobalAlphaFactorusSUN(ushort factor) Parameters factor ushort glHint(uint, uint) public static extern void glHint(uint target, uint mode) Parameters target uint mode uint glHintPGI(uint, int) public static extern void glHintPGI(uint target, int mode) Parameters target uint mode int glHistogram(uint, int, uint, bool) public static extern void glHistogram(uint target, int width, uint internalformat, bool sink) Parameters target uint width int internalformat uint sink bool glHistogramEXT(uint, int, uint, bool) public static extern void glHistogramEXT(uint target, int width, uint internalformat, bool sink) Parameters target uint width int internalformat uint sink bool glIglooInterfaceSGIX(uint, nint) public static extern void glIglooInterfaceSGIX(uint pname, nint @params) Parameters pname uint params nint glImageTransformParameterfHP(uint, uint, float) public static extern void glImageTransformParameterfHP(uint target, uint pname, float param) Parameters target uint pname uint param float glImageTransformParameterfvHP(uint, uint, float*) public static extern void glImageTransformParameterfvHP(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glImageTransformParameteriHP(uint, uint, int) public static extern void glImageTransformParameteriHP(uint target, uint pname, int param) Parameters target uint pname uint param int glImageTransformParameterivHP(uint, uint, int*) public static extern void glImageTransformParameterivHP(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glImportSyncEXT(uint, nint, uint) public static extern nint glImportSyncEXT(uint external_sync_type, nint external_sync, uint flags) Parameters external_sync_type uint external_sync nint flags uint Returns nint glIndexFormatNV(uint, int) public static extern void glIndexFormatNV(uint type, int stride) Parameters type uint stride int glIndexFuncEXT(uint, float) public static extern void glIndexFuncEXT(uint func, float @ref) Parameters func uint ref float glIndexMask(uint) public static extern void glIndexMask(uint mask) Parameters mask uint glIndexMaterialEXT(uint, uint) public static extern void glIndexMaterialEXT(uint face, uint mode) Parameters face uint mode uint glIndexPointer(uint, int, nint) public static extern void glIndexPointer(uint type, int stride, nint pointer) Parameters type uint stride int pointer nint glIndexPointerEXT(uint, int, int, nint) public static extern void glIndexPointerEXT(uint type, int stride, int count, nint pointer) Parameters type uint stride int count int pointer nint glIndexPointerListIBM(uint, int, nint, int) public static extern void glIndexPointerListIBM(uint type, int stride, nint pointer, int ptrstride) Parameters type uint stride int pointer nint ptrstride int glIndexd(double) public static extern void glIndexd(double c) Parameters c double glIndexdv(double*) public static extern void glIndexdv(double* c) Parameters c double* glIndexf(float) public static extern void glIndexf(float c) Parameters c float glIndexfv(float*) public static extern void glIndexfv(float* c) Parameters c float* glIndexi(int) public static extern void glIndexi(int c) Parameters c int glIndexiv(int*) public static extern void glIndexiv(int* c) Parameters c int* glIndexs(short) public static extern void glIndexs(short c) Parameters c short glIndexsv(short*) public static extern void glIndexsv(short* c) Parameters c short* glIndexub(byte) public static extern void glIndexub(byte c) Parameters c byte glIndexubv(byte*) public static extern void glIndexubv(byte* c) Parameters c byte* glInitNames() public static extern void glInitNames() glInsertComponentEXT(uint, uint, uint) public static extern void glInsertComponentEXT(uint res, uint src, uint num) Parameters res uint src uint num uint glInstrumentsBufferSGIX(int, int*) public static extern void glInstrumentsBufferSGIX(int size, int* buffer) Parameters size int buffer int* glInterleavedArrays(uint, int, nint) public static extern void glInterleavedArrays(uint format, int stride, nint pointer) Parameters format uint stride int pointer nint glIsAsyncMarkerSGIX(uint) public static extern int glIsAsyncMarkerSGIX(uint marker) Parameters marker uint Returns int glIsBuffer(uint) public static extern int glIsBuffer(uint buffer) Parameters buffer uint Returns int glIsBufferARB(uint) public static extern int glIsBufferARB(uint buffer) Parameters buffer uint Returns int glIsBufferResidentNV(uint) public static extern int glIsBufferResidentNV(uint target) Parameters target uint Returns int glIsEnabled(uint) public static extern int glIsEnabled(uint cap) Parameters cap uint Returns int glIsEnabledIndexedEXT(uint, uint) public static extern int glIsEnabledIndexedEXT(uint target, uint index) Parameters target uint index uint Returns int glIsEnabledi(uint, uint) public static extern int glIsEnabledi(uint target, uint index) Parameters target uint index uint Returns int glIsFenceAPPLE(uint) public static extern int glIsFenceAPPLE(uint fence) Parameters fence uint Returns int glIsFenceNV(uint) public static extern int glIsFenceNV(uint fence) Parameters fence uint Returns int glIsFramebuffer(uint) public static extern int glIsFramebuffer(uint framebuffer) Parameters framebuffer uint Returns int glIsFramebufferEXT(uint) public static extern int glIsFramebufferEXT(uint framebuffer) Parameters framebuffer uint Returns int glIsList(uint) public static extern int glIsList(uint list) Parameters list uint Returns int glIsNameAMD(uint, uint) public static extern int glIsNameAMD(uint identifier, uint name) Parameters identifier uint name uint Returns int glIsNamedBufferResidentNV(uint) public static extern int glIsNamedBufferResidentNV(uint buffer) Parameters buffer uint Returns int glIsNamedStringARB(int, string) public static extern int glIsNamedStringARB(int namelen, string name) Parameters namelen int name string Returns int glIsObjectBufferATI(uint) public static extern int glIsObjectBufferATI(uint buffer) Parameters buffer uint Returns int glIsOcclusionQueryNV(uint) public static extern int glIsOcclusionQueryNV(uint id) Parameters id uint Returns int glIsProgram(uint) public static extern int glIsProgram(uint program) Parameters program uint Returns int glIsProgramARB(uint) public static extern int glIsProgramARB(uint program) Parameters program uint Returns int glIsProgramNV(uint) public static extern int glIsProgramNV(uint id) Parameters id uint Returns int glIsProgramPipeline(uint) public static extern int glIsProgramPipeline(uint pipeline) Parameters pipeline uint Returns int glIsQuery(uint) public static extern int glIsQuery(uint id) Parameters id uint Returns int glIsQueryARB(uint) public static extern int glIsQueryARB(uint id) Parameters id uint Returns int glIsRenderbuffer(uint) public static extern int glIsRenderbuffer(uint renderbuffer) Parameters renderbuffer uint Returns int glIsRenderbufferEXT(uint) public static extern int glIsRenderbufferEXT(uint renderbuffer) Parameters renderbuffer uint Returns int glIsSampler(uint) public static extern int glIsSampler(uint sampler) Parameters sampler uint Returns int glIsShader(uint) public static extern int glIsShader(uint shader) Parameters shader uint Returns int glIsSync(nint) public static extern int glIsSync(nint sync) Parameters sync nint Returns int glIsTexture(uint) public static extern int glIsTexture(uint texture) Parameters texture uint Returns int glIsTextureEXT(uint) public static extern int glIsTextureEXT(uint texture) Parameters texture uint Returns int glIsTransformFeedback(uint) public static extern int glIsTransformFeedback(uint id) Parameters id uint Returns int glIsTransformFeedbackNV(uint) public static extern int glIsTransformFeedbackNV(uint id) Parameters id uint Returns int glIsVariantEnabledEXT(uint, uint) public static extern int glIsVariantEnabledEXT(uint id, uint cap) Parameters id uint cap uint Returns int glIsVertexArray(uint) public static extern int glIsVertexArray(uint array) Parameters array uint Returns int glIsVertexArrayAPPLE(uint) public static extern int glIsVertexArrayAPPLE(uint array) Parameters array uint Returns int glIsVertexAttribEnabledAPPLE(uint, uint) public static extern int glIsVertexAttribEnabledAPPLE(uint index, uint pname) Parameters index uint pname uint Returns int glLightEnviSGIX(uint, int) public static extern void glLightEnviSGIX(uint pname, int param) Parameters pname uint param int glLightModelf(uint, float) public static extern void glLightModelf(uint pname, float param) Parameters pname uint param float glLightModelfv(uint, float*) public static extern void glLightModelfv(uint pname, float* @params) Parameters pname uint params float* glLightModeli(uint, int) public static extern void glLightModeli(uint pname, int param) Parameters pname uint param int glLightModeliv(uint, int*) public static extern void glLightModeliv(uint pname, int* @params) Parameters pname uint params int* glLightf(uint, uint, float) public static extern void glLightf(uint light, uint pname, float param) Parameters light uint pname uint param float glLightfv(uint, uint, float*) public static extern void glLightfv(uint light, uint pname, float* @params) Parameters light uint pname uint params float* glLighti(uint, uint, int) public static extern void glLighti(uint light, uint pname, int param) Parameters light uint pname uint param int glLightiv(uint, uint, int*) public static extern void glLightiv(uint light, uint pname, int* @params) Parameters light uint pname uint params int* glLineStipple(int, ushort) public static extern void glLineStipple(int factor, ushort pattern) Parameters factor int pattern ushort glLineWidth(float) public static extern void glLineWidth(float width) Parameters width float glLinkProgram(uint) public static extern void glLinkProgram(uint program) Parameters program uint glLinkProgramARB(uint) public static extern void glLinkProgramARB(uint programObj) Parameters programObj uint glListBase(uint) public static extern void glListBase(uint @base) Parameters base uint glListParameterfSGIX(uint, uint, float) public static extern void glListParameterfSGIX(uint list, uint pname, float param) Parameters list uint pname uint param float glListParameterfvSGIX(uint, uint, float*) public static extern void glListParameterfvSGIX(uint list, uint pname, float* @params) Parameters list uint pname uint params float* glListParameteriSGIX(uint, uint, int) public static extern void glListParameteriSGIX(uint list, uint pname, int param) Parameters list uint pname uint param int glListParameterivSGIX(uint, uint, int*) public static extern void glListParameterivSGIX(uint list, uint pname, int* @params) Parameters list uint pname uint params int* glLoadIdentity() public static extern void glLoadIdentity() glLoadIdentityDeformationMapSGIX(uint) public static extern void glLoadIdentityDeformationMapSGIX(uint mask) Parameters mask uint glLoadMatrixd(double*) public static extern void glLoadMatrixd(double* m) Parameters m double* glLoadMatrixf(float*) public static extern void glLoadMatrixf(float* m) Parameters m float* glLoadName(uint) public static extern void glLoadName(uint name) Parameters name uint glLoadProgramNV(uint, uint, int, byte*) public static extern void glLoadProgramNV(uint target, uint id, int len, byte* program) Parameters target uint id uint len int program byte* glLoadTransposeMatrixd(double*) public static extern void glLoadTransposeMatrixd(double* m) Parameters m double* glLoadTransposeMatrixdARB(double*) public static extern void glLoadTransposeMatrixdARB(double* m) Parameters m double* glLoadTransposeMatrixf(float*) public static extern void glLoadTransposeMatrixf(float* m) Parameters m float* glLoadTransposeMatrixfARB(float*) public static extern void glLoadTransposeMatrixfARB(float* m) Parameters m float* glLockArraysEXT(int, int) public static extern void glLockArraysEXT(int first, int count) Parameters first int count int glLogicOp(uint) public static extern void glLogicOp(uint opcode) Parameters opcode uint glMakeBufferNonResidentNV(uint) public static extern void glMakeBufferNonResidentNV(uint target) Parameters target uint glMakeBufferResidentNV(uint, uint) public static extern void glMakeBufferResidentNV(uint target, uint access) Parameters target uint access uint glMakeNamedBufferNonResidentNV(uint) public static extern void glMakeNamedBufferNonResidentNV(uint buffer) Parameters buffer uint glMakeNamedBufferResidentNV(uint, uint) public static extern void glMakeNamedBufferResidentNV(uint buffer, uint access) Parameters buffer uint access uint glMap1d(uint, double, double, int, int, double*) public static extern void glMap1d(uint target, double u1, double u2, int stride, int order, double* points) Parameters target uint u1 double u2 double stride int order int points double* glMap1f(uint, float, float, int, int, float*) public static extern void glMap1f(uint target, float u1, float u2, int stride, int order, float* points) Parameters target uint u1 float u2 float stride int order int points float* glMap2d(uint, double, double, int, int, double, double, int, int, double*) public static extern void glMap2d(uint target, double u1, double u2, int ustride, int uorder, double v1, double v2, int vstride, int vorder, double* points) Parameters target uint u1 double u2 double ustride int uorder int v1 double v2 double vstride int vorder int points double* glMap2f(uint, float, float, int, int, float, float, int, int, float*) public static extern void glMap2f(uint target, float u1, float u2, int ustride, int uorder, float v1, float v2, int vstride, int vorder, float* points) Parameters target uint u1 float u2 float ustride int uorder int v1 float v2 float vstride int vorder int points float* glMapBuffer(uint, uint) public static extern nint glMapBuffer(uint target, uint access) Parameters target uint access uint Returns nint glMapBufferARB(uint, uint) public static extern nint glMapBufferARB(uint target, uint access) Parameters target uint access uint Returns nint glMapBufferRange(uint, nint, nint, uint) public static extern nint glMapBufferRange(uint target, nint offset, nint length, uint access) Parameters target uint offset nint length nint access uint Returns nint glMapControlPointsNV(uint, uint, uint, int, int, int, int, bool, nint) public static extern void glMapControlPointsNV(uint target, uint index, uint type, int ustride, int vstride, int uorder, int vorder, bool packed, nint points) Parameters target uint index uint type uint ustride int vstride int uorder int vorder int packed bool points nint glMapGrid1d(int, double, double) public static extern void glMapGrid1d(int un, double u1, double u2) Parameters un int u1 double u2 double glMapGrid1f(int, float, float) public static extern void glMapGrid1f(int un, float u1, float u2) Parameters un int u1 float u2 float glMapGrid2d(int, double, double, int, double, double) public static extern void glMapGrid2d(int un, double u1, double u2, int vn, double v1, double v2) Parameters un int u1 double u2 double vn int v1 double v2 double glMapGrid2f(int, float, float, int, float, float) public static extern void glMapGrid2f(int un, float u1, float u2, int vn, float v1, float v2) Parameters un int u1 float u2 float vn int v1 float v2 float glMapNamedBufferEXT(uint, uint) public static extern nint glMapNamedBufferEXT(uint buffer, uint access) Parameters buffer uint access uint Returns nint glMapNamedBufferRangeEXT(uint, nint, nint, uint) public static extern nint glMapNamedBufferRangeEXT(uint buffer, nint offset, nint length, uint access) Parameters buffer uint offset nint length nint access uint Returns nint glMapObjectBufferATI(uint) public static extern nint glMapObjectBufferATI(uint buffer) Parameters buffer uint Returns nint glMapParameterfvNV(uint, uint, float*) public static extern void glMapParameterfvNV(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glMapParameterivNV(uint, uint, int*) public static extern void glMapParameterivNV(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glMapVertexAttrib1dAPPLE(uint, uint, double, double, int, int, double*) public static extern void glMapVertexAttrib1dAPPLE(uint index, uint size, double u1, double u2, int stride, int order, double* points) Parameters index uint size uint u1 double u2 double stride int order int points double* glMapVertexAttrib1fAPPLE(uint, uint, float, float, int, int, float*) public static extern void glMapVertexAttrib1fAPPLE(uint index, uint size, float u1, float u2, int stride, int order, float* points) Parameters index uint size uint u1 float u2 float stride int order int points float* glMapVertexAttrib2dAPPLE(uint, uint, double, double, int, int, double, double, int, int, double*) public static extern void glMapVertexAttrib2dAPPLE(uint index, uint size, double u1, double u2, int ustride, int uorder, double v1, double v2, int vstride, int vorder, double* points) Parameters index uint size uint u1 double u2 double ustride int uorder int v1 double v2 double vstride int vorder int points double* glMapVertexAttrib2fAPPLE(uint, uint, float, float, int, int, float, float, int, int, float*) public static extern void glMapVertexAttrib2fAPPLE(uint index, uint size, float u1, float u2, int ustride, int uorder, float v1, float v2, int vstride, int vorder, float* points) Parameters index uint size uint u1 float u2 float ustride int uorder int v1 float v2 float vstride int vorder int points float* glMaterialf(uint, uint, float) public static extern void glMaterialf(uint face, uint pname, float param) Parameters face uint pname uint param float glMaterialfv(uint, uint, float*) public static extern void glMaterialfv(uint face, uint pname, float* @params) Parameters face uint pname uint params float* glMateriali(uint, uint, int) public static extern void glMateriali(uint face, uint pname, int param) Parameters face uint pname uint param int glMaterialiv(uint, uint, int*) public static extern void glMaterialiv(uint face, uint pname, int* @params) Parameters face uint pname uint params int* glMatrixFrustumEXT(uint, double, double, double, double, double, double) public static extern void glMatrixFrustumEXT(uint mode, double left, double right, double bottom, double top, double zNear, double zFar) Parameters mode uint left double right double bottom double top double zNear double zFar double glMatrixIndexPointerARB(int, uint, int, nint) public static extern void glMatrixIndexPointerARB(int size, uint type, int stride, nint pointer) Parameters size int type uint stride int pointer nint glMatrixIndexubvARB(int, byte*) public static extern void glMatrixIndexubvARB(int size, byte* indices) Parameters size int indices byte* glMatrixIndexuivARB(int, uint*) public static extern void glMatrixIndexuivARB(int size, uint* indices) Parameters size int indices uint* glMatrixIndexusvARB(int, ushort*) public static extern void glMatrixIndexusvARB(int size, ushort* indices) Parameters size int indices ushort* glMatrixLoadIdentityEXT(uint) public static extern void glMatrixLoadIdentityEXT(uint mode) Parameters mode uint glMatrixLoadTransposedEXT(uint, double*) public static extern void glMatrixLoadTransposedEXT(uint mode, double* m) Parameters mode uint m double* glMatrixLoadTransposefEXT(uint, float*) public static extern void glMatrixLoadTransposefEXT(uint mode, float* m) Parameters mode uint m float* glMatrixLoaddEXT(uint, double*) public static extern void glMatrixLoaddEXT(uint mode, double* m) Parameters mode uint m double* glMatrixLoadfEXT(uint, float*) public static extern void glMatrixLoadfEXT(uint mode, float* m) Parameters mode uint m float* glMatrixMode(uint) public static extern void glMatrixMode(uint mode) Parameters mode uint glMatrixMultTransposedEXT(uint, double*) public static extern void glMatrixMultTransposedEXT(uint mode, double* m) Parameters mode uint m double* glMatrixMultTransposefEXT(uint, float*) public static extern void glMatrixMultTransposefEXT(uint mode, float* m) Parameters mode uint m float* glMatrixMultdEXT(uint, double*) public static extern void glMatrixMultdEXT(uint mode, double* m) Parameters mode uint m double* glMatrixMultfEXT(uint, float*) public static extern void glMatrixMultfEXT(uint mode, float* m) Parameters mode uint m float* glMatrixOrthoEXT(uint, double, double, double, double, double, double) public static extern void glMatrixOrthoEXT(uint mode, double left, double right, double bottom, double top, double zNear, double zFar) Parameters mode uint left double right double bottom double top double zNear double zFar double glMatrixPopEXT(uint) public static extern void glMatrixPopEXT(uint mode) Parameters mode uint glMatrixPushEXT(uint) public static extern void glMatrixPushEXT(uint mode) Parameters mode uint glMatrixRotatedEXT(uint, double, double, double, double) public static extern void glMatrixRotatedEXT(uint mode, double angle, double x, double y, double z) Parameters mode uint angle double x double y double z double glMatrixRotatefEXT(uint, float, float, float, float) public static extern void glMatrixRotatefEXT(uint mode, float angle, float x, float y, float z) Parameters mode uint angle float x float y float z float glMatrixScaledEXT(uint, double, double, double) public static extern void glMatrixScaledEXT(uint mode, double x, double y, double z) Parameters mode uint x double y double z double glMatrixScalefEXT(uint, float, float, float) public static extern void glMatrixScalefEXT(uint mode, float x, float y, float z) Parameters mode uint x float y float z float glMatrixTranslatedEXT(uint, double, double, double) public static extern void glMatrixTranslatedEXT(uint mode, double x, double y, double z) Parameters mode uint x double y double z double glMatrixTranslatefEXT(uint, float, float, float) public static extern void glMatrixTranslatefEXT(uint mode, float x, float y, float z) Parameters mode uint x float y float z float glMemoryBarrierEXT(uint) public static extern void glMemoryBarrierEXT(uint barriers) Parameters barriers uint glMinSampleShading(float) public static extern void glMinSampleShading(float value) Parameters value float glMinSampleShadingARB(float) public static extern void glMinSampleShadingARB(float value) Parameters value float glMinmax(uint, uint, bool) public static extern void glMinmax(uint target, uint internalformat, bool sink) Parameters target uint internalformat uint sink bool glMinmaxEXT(uint, uint, bool) public static extern void glMinmaxEXT(uint target, uint internalformat, bool sink) Parameters target uint internalformat uint sink bool glMultMatrixd(double*) public static extern void glMultMatrixd(double* m) Parameters m double* glMultMatrixf(float*) public static extern void glMultMatrixf(float* m) Parameters m float* glMultTransposeMatrixd(double*) public static extern void glMultTransposeMatrixd(double* m) Parameters m double* glMultTransposeMatrixdARB(double*) public static extern void glMultTransposeMatrixdARB(double* m) Parameters m double* glMultTransposeMatrixf(float*) public static extern void glMultTransposeMatrixf(float* m) Parameters m float* glMultTransposeMatrixfARB(float*) public static extern void glMultTransposeMatrixfARB(float* m) Parameters m float* glMultiDrawArrays(uint, int*, int*, int) public static extern void glMultiDrawArrays(uint mode, int* first, int* count, int primcount) Parameters mode uint first int* count int* primcount int glMultiDrawArraysEXT(uint, int*, int*, int) public static extern void glMultiDrawArraysEXT(uint mode, int* first, int* count, int primcount) Parameters mode uint first int* count int* primcount int glMultiDrawArraysIndirectAMD(uint, nint, int, int) public static extern void glMultiDrawArraysIndirectAMD(uint mode, nint indirect, int primcount, int stride) Parameters mode uint indirect nint primcount int stride int glMultiDrawElementArrayAPPLE(uint, int*, int*, int) public static extern void glMultiDrawElementArrayAPPLE(uint mode, int* first, int* count, int primcount) Parameters mode uint first int* count int* primcount int glMultiDrawElements(uint, int*, uint, nint, int) public static extern void glMultiDrawElements(uint mode, int* count, uint type, nint indices, int primcount) Parameters mode uint count int* type uint indices nint primcount int glMultiDrawElementsBaseVertex(uint, int*, uint, nint, int, int*) public static extern void glMultiDrawElementsBaseVertex(uint mode, int* count, uint type, nint indices, int primcount, int* basevertex) Parameters mode uint count int* type uint indices nint primcount int basevertex int* glMultiDrawElementsEXT(uint, int*, uint, nint, int) public static extern void glMultiDrawElementsEXT(uint mode, int* count, uint type, nint indices, int primcount) Parameters mode uint count int* type uint indices nint primcount int glMultiDrawElementsIndirectAMD(uint, uint, nint, int, int) public static extern void glMultiDrawElementsIndirectAMD(uint mode, uint type, nint indirect, int primcount, int stride) Parameters mode uint type uint indirect nint primcount int stride int glMultiDrawRangeElementArrayAPPLE(uint, uint, uint, int*, int*, int) public static extern void glMultiDrawRangeElementArrayAPPLE(uint mode, uint start, uint end, int* first, int* count, int primcount) Parameters mode uint start uint end uint first int* count int* primcount int glMultiModeDrawArraysIBM(uint*, int*, int*, int, int) public static extern void glMultiModeDrawArraysIBM(uint* mode, int* first, int* count, int primcount, int modestride) Parameters mode uint* first int* count int* primcount int modestride int glMultiModeDrawElementsIBM(uint*, int*, uint, nint, int, int) public static extern void glMultiModeDrawElementsIBM(uint* mode, int* count, uint type, nint indices, int primcount, int modestride) Parameters mode uint* count int* type uint indices nint primcount int modestride int glMultiTexBufferEXT(uint, uint, uint, uint) public static extern void glMultiTexBufferEXT(uint texunit, uint target, uint internalformat, uint buffer) Parameters texunit uint target uint internalformat uint buffer uint glMultiTexCoord1d(uint, double) public static extern void glMultiTexCoord1d(uint target, double s) Parameters target uint s double glMultiTexCoord1dARB(uint, double) public static extern void glMultiTexCoord1dARB(uint target, double s) Parameters target uint s double glMultiTexCoord1dv(uint, double*) public static extern void glMultiTexCoord1dv(uint target, double* v) Parameters target uint v double* glMultiTexCoord1dvARB(uint, double*) public static extern void glMultiTexCoord1dvARB(uint target, double* v) Parameters target uint v double* glMultiTexCoord1f(uint, float) public static extern void glMultiTexCoord1f(uint target, float s) Parameters target uint s float glMultiTexCoord1fARB(uint, float) public static extern void glMultiTexCoord1fARB(uint target, float s) Parameters target uint s float glMultiTexCoord1fv(uint, float*) public static extern void glMultiTexCoord1fv(uint target, float* v) Parameters target uint v float* glMultiTexCoord1fvARB(uint, float*) public static extern void glMultiTexCoord1fvARB(uint target, float* v) Parameters target uint v float* glMultiTexCoord1hNV(uint, ushort) public static extern void glMultiTexCoord1hNV(uint target, ushort s) Parameters target uint s ushort glMultiTexCoord1hvNV(uint, ushort*) public static extern void glMultiTexCoord1hvNV(uint target, ushort* v) Parameters target uint v ushort* glMultiTexCoord1i(uint, int) public static extern void glMultiTexCoord1i(uint target, int s) Parameters target uint s int glMultiTexCoord1iARB(uint, int) public static extern void glMultiTexCoord1iARB(uint target, int s) Parameters target uint s int glMultiTexCoord1iv(uint, int*) public static extern void glMultiTexCoord1iv(uint target, int* v) Parameters target uint v int* glMultiTexCoord1ivARB(uint, int*) public static extern void glMultiTexCoord1ivARB(uint target, int* v) Parameters target uint v int* glMultiTexCoord1s(uint, short) public static extern void glMultiTexCoord1s(uint target, short s) Parameters target uint s short glMultiTexCoord1sARB(uint, short) public static extern void glMultiTexCoord1sARB(uint target, short s) Parameters target uint s short glMultiTexCoord1sv(uint, short*) public static extern void glMultiTexCoord1sv(uint target, short* v) Parameters target uint v short* glMultiTexCoord1svARB(uint, short*) public static extern void glMultiTexCoord1svARB(uint target, short* v) Parameters target uint v short* glMultiTexCoord2d(uint, double, double) public static extern void glMultiTexCoord2d(uint target, double s, double t) Parameters target uint s double t double glMultiTexCoord2dARB(uint, double, double) public static extern void glMultiTexCoord2dARB(uint target, double s, double t) Parameters target uint s double t double glMultiTexCoord2dv(uint, double*) public static extern void glMultiTexCoord2dv(uint target, double* v) Parameters target uint v double* glMultiTexCoord2dvARB(uint, double*) public static extern void glMultiTexCoord2dvARB(uint target, double* v) Parameters target uint v double* glMultiTexCoord2f(uint, float, float) public static extern void glMultiTexCoord2f(uint target, float s, float t) Parameters target uint s float t float glMultiTexCoord2fARB(uint, float, float) public static extern void glMultiTexCoord2fARB(uint target, float s, float t) Parameters target uint s float t float glMultiTexCoord2fv(uint, float*) public static extern void glMultiTexCoord2fv(uint target, float* v) Parameters target uint v float* glMultiTexCoord2fvARB(uint, float*) public static extern void glMultiTexCoord2fvARB(uint target, float* v) Parameters target uint v float* glMultiTexCoord2hNV(uint, ushort, ushort) public static extern void glMultiTexCoord2hNV(uint target, ushort s, ushort t) Parameters target uint s ushort t ushort glMultiTexCoord2hvNV(uint, ushort*) public static extern void glMultiTexCoord2hvNV(uint target, ushort* v) Parameters target uint v ushort* glMultiTexCoord2i(uint, int, int) public static extern void glMultiTexCoord2i(uint target, int s, int t) Parameters target uint s int t int glMultiTexCoord2iARB(uint, int, int) public static extern void glMultiTexCoord2iARB(uint target, int s, int t) Parameters target uint s int t int glMultiTexCoord2iv(uint, int*) public static extern void glMultiTexCoord2iv(uint target, int* v) Parameters target uint v int* glMultiTexCoord2ivARB(uint, int*) public static extern void glMultiTexCoord2ivARB(uint target, int* v) Parameters target uint v int* glMultiTexCoord2s(uint, short, short) public static extern void glMultiTexCoord2s(uint target, short s, short t) Parameters target uint s short t short glMultiTexCoord2sARB(uint, short, short) public static extern void glMultiTexCoord2sARB(uint target, short s, short t) Parameters target uint s short t short glMultiTexCoord2sv(uint, short*) public static extern void glMultiTexCoord2sv(uint target, short* v) Parameters target uint v short* glMultiTexCoord2svARB(uint, short*) public static extern void glMultiTexCoord2svARB(uint target, short* v) Parameters target uint v short* glMultiTexCoord3d(uint, double, double, double) public static extern void glMultiTexCoord3d(uint target, double s, double t, double r) Parameters target uint s double t double r double glMultiTexCoord3dARB(uint, double, double, double) public static extern void glMultiTexCoord3dARB(uint target, double s, double t, double r) Parameters target uint s double t double r double glMultiTexCoord3dv(uint, double*) public static extern void glMultiTexCoord3dv(uint target, double* v) Parameters target uint v double* glMultiTexCoord3dvARB(uint, double*) public static extern void glMultiTexCoord3dvARB(uint target, double* v) Parameters target uint v double* glMultiTexCoord3f(uint, float, float, float) public static extern void glMultiTexCoord3f(uint target, float s, float t, float r) Parameters target uint s float t float r float glMultiTexCoord3fARB(uint, float, float, float) public static extern void glMultiTexCoord3fARB(uint target, float s, float t, float r) Parameters target uint s float t float r float glMultiTexCoord3fv(uint, float*) public static extern void glMultiTexCoord3fv(uint target, float* v) Parameters target uint v float* glMultiTexCoord3fvARB(uint, float*) public static extern void glMultiTexCoord3fvARB(uint target, float* v) Parameters target uint v float* glMultiTexCoord3hNV(uint, ushort, ushort, ushort) public static extern void glMultiTexCoord3hNV(uint target, ushort s, ushort t, ushort r) Parameters target uint s ushort t ushort r ushort glMultiTexCoord3hvNV(uint, ushort*) public static extern void glMultiTexCoord3hvNV(uint target, ushort* v) Parameters target uint v ushort* glMultiTexCoord3i(uint, int, int, int) public static extern void glMultiTexCoord3i(uint target, int s, int t, int r) Parameters target uint s int t int r int glMultiTexCoord3iARB(uint, int, int, int) public static extern void glMultiTexCoord3iARB(uint target, int s, int t, int r) Parameters target uint s int t int r int glMultiTexCoord3iv(uint, int*) public static extern void glMultiTexCoord3iv(uint target, int* v) Parameters target uint v int* glMultiTexCoord3ivARB(uint, int*) public static extern void glMultiTexCoord3ivARB(uint target, int* v) Parameters target uint v int* glMultiTexCoord3s(uint, short, short, short) public static extern void glMultiTexCoord3s(uint target, short s, short t, short r) Parameters target uint s short t short r short glMultiTexCoord3sARB(uint, short, short, short) public static extern void glMultiTexCoord3sARB(uint target, short s, short t, short r) Parameters target uint s short t short r short glMultiTexCoord3sv(uint, short*) public static extern void glMultiTexCoord3sv(uint target, short* v) Parameters target uint v short* glMultiTexCoord3svARB(uint, short*) public static extern void glMultiTexCoord3svARB(uint target, short* v) Parameters target uint v short* glMultiTexCoord4d(uint, double, double, double, double) public static extern void glMultiTexCoord4d(uint target, double s, double t, double r, double q) Parameters target uint s double t double r double q double glMultiTexCoord4dARB(uint, double, double, double, double) public static extern void glMultiTexCoord4dARB(uint target, double s, double t, double r, double q) Parameters target uint s double t double r double q double glMultiTexCoord4dv(uint, double*) public static extern void glMultiTexCoord4dv(uint target, double* v) Parameters target uint v double* glMultiTexCoord4dvARB(uint, double*) public static extern void glMultiTexCoord4dvARB(uint target, double* v) Parameters target uint v double* glMultiTexCoord4f(uint, float, float, float, float) public static extern void glMultiTexCoord4f(uint target, float s, float t, float r, float q) Parameters target uint s float t float r float q float glMultiTexCoord4fARB(uint, float, float, float, float) public static extern void glMultiTexCoord4fARB(uint target, float s, float t, float r, float q) Parameters target uint s float t float r float q float glMultiTexCoord4fv(uint, float*) public static extern void glMultiTexCoord4fv(uint target, float* v) Parameters target uint v float* glMultiTexCoord4fvARB(uint, float*) public static extern void glMultiTexCoord4fvARB(uint target, float* v) Parameters target uint v float* glMultiTexCoord4hNV(uint, ushort, ushort, ushort, ushort) public static extern void glMultiTexCoord4hNV(uint target, ushort s, ushort t, ushort r, ushort q) Parameters target uint s ushort t ushort r ushort q ushort glMultiTexCoord4hvNV(uint, ushort*) public static extern void glMultiTexCoord4hvNV(uint target, ushort* v) Parameters target uint v ushort* glMultiTexCoord4i(uint, int, int, int, int) public static extern void glMultiTexCoord4i(uint target, int s, int t, int r, int q) Parameters target uint s int t int r int q int glMultiTexCoord4iARB(uint, int, int, int, int) public static extern void glMultiTexCoord4iARB(uint target, int s, int t, int r, int q) Parameters target uint s int t int r int q int glMultiTexCoord4iv(uint, int*) public static extern void glMultiTexCoord4iv(uint target, int* v) Parameters target uint v int* glMultiTexCoord4ivARB(uint, int*) public static extern void glMultiTexCoord4ivARB(uint target, int* v) Parameters target uint v int* glMultiTexCoord4s(uint, short, short, short, short) public static extern void glMultiTexCoord4s(uint target, short s, short t, short r, short q) Parameters target uint s short t short r short q short glMultiTexCoord4sARB(uint, short, short, short, short) public static extern void glMultiTexCoord4sARB(uint target, short s, short t, short r, short q) Parameters target uint s short t short r short q short glMultiTexCoord4sv(uint, short*) public static extern void glMultiTexCoord4sv(uint target, short* v) Parameters target uint v short* glMultiTexCoord4svARB(uint, short*) public static extern void glMultiTexCoord4svARB(uint target, short* v) Parameters target uint v short* glMultiTexCoordP1ui(uint, uint, uint) public static extern void glMultiTexCoordP1ui(uint texture, uint type, uint coords) Parameters texture uint type uint coords uint glMultiTexCoordP1uiv(uint, uint, uint*) public static extern void glMultiTexCoordP1uiv(uint texture, uint type, uint* coords) Parameters texture uint type uint coords uint* glMultiTexCoordP2ui(uint, uint, uint) public static extern void glMultiTexCoordP2ui(uint texture, uint type, uint coords) Parameters texture uint type uint coords uint glMultiTexCoordP2uiv(uint, uint, uint*) public static extern void glMultiTexCoordP2uiv(uint texture, uint type, uint* coords) Parameters texture uint type uint coords uint* glMultiTexCoordP3ui(uint, uint, uint) public static extern void glMultiTexCoordP3ui(uint texture, uint type, uint coords) Parameters texture uint type uint coords uint glMultiTexCoordP3uiv(uint, uint, uint*) public static extern void glMultiTexCoordP3uiv(uint texture, uint type, uint* coords) Parameters texture uint type uint coords uint* glMultiTexCoordP4ui(uint, uint, uint) public static extern void glMultiTexCoordP4ui(uint texture, uint type, uint coords) Parameters texture uint type uint coords uint glMultiTexCoordP4uiv(uint, uint, uint*) public static extern void glMultiTexCoordP4uiv(uint texture, uint type, uint* coords) Parameters texture uint type uint coords uint* glMultiTexCoordPointerEXT(uint, int, uint, int, nint) public static extern void glMultiTexCoordPointerEXT(uint texunit, int size, uint type, int stride, nint pointer) Parameters texunit uint size int type uint stride int pointer nint glMultiTexEnvfEXT(uint, uint, uint, float) public static extern void glMultiTexEnvfEXT(uint texunit, uint target, uint pname, float param) Parameters texunit uint target uint pname uint param float glMultiTexEnvfvEXT(uint, uint, uint, float*) public static extern void glMultiTexEnvfvEXT(uint texunit, uint target, uint pname, float* @params) Parameters texunit uint target uint pname uint params float* glMultiTexEnviEXT(uint, uint, uint, int) public static extern void glMultiTexEnviEXT(uint texunit, uint target, uint pname, int param) Parameters texunit uint target uint pname uint param int glMultiTexEnvivEXT(uint, uint, uint, int*) public static extern void glMultiTexEnvivEXT(uint texunit, uint target, uint pname, int* @params) Parameters texunit uint target uint pname uint params int* glMultiTexGendEXT(uint, uint, uint, double) public static extern void glMultiTexGendEXT(uint texunit, uint coord, uint pname, double param) Parameters texunit uint coord uint pname uint param double glMultiTexGendvEXT(uint, uint, uint, double*) public static extern void glMultiTexGendvEXT(uint texunit, uint coord, uint pname, double* @params) Parameters texunit uint coord uint pname uint params double* glMultiTexGenfEXT(uint, uint, uint, float) public static extern void glMultiTexGenfEXT(uint texunit, uint coord, uint pname, float param) Parameters texunit uint coord uint pname uint param float glMultiTexGenfvEXT(uint, uint, uint, float*) public static extern void glMultiTexGenfvEXT(uint texunit, uint coord, uint pname, float* @params) Parameters texunit uint coord uint pname uint params float* glMultiTexGeniEXT(uint, uint, uint, int) public static extern void glMultiTexGeniEXT(uint texunit, uint coord, uint pname, int param) Parameters texunit uint coord uint pname uint param int glMultiTexGenivEXT(uint, uint, uint, int*) public static extern void glMultiTexGenivEXT(uint texunit, uint coord, uint pname, int* @params) Parameters texunit uint coord uint pname uint params int* glMultiTexImage1DEXT(uint, uint, int, uint, int, int, uint, uint, nint) public static extern void glMultiTexImage1DEXT(uint texunit, uint target, int level, uint internalformat, int width, int border, uint format, uint type, nint pixels) Parameters texunit uint target uint level int internalformat uint width int border int format uint type uint pixels nint glMultiTexImage2DEXT(uint, uint, int, uint, int, int, int, uint, uint, nint) public static extern void glMultiTexImage2DEXT(uint texunit, uint target, int level, uint internalformat, int width, int height, int border, uint format, uint type, nint pixels) Parameters texunit uint target uint level int internalformat uint width int height int border int format uint type uint pixels nint glMultiTexImage3DEXT(uint, uint, int, uint, int, int, int, int, uint, uint, nint) public static extern void glMultiTexImage3DEXT(uint texunit, uint target, int level, uint internalformat, int width, int height, int depth, int border, uint format, uint type, nint pixels) Parameters texunit uint target uint level int internalformat uint width int height int depth int border int format uint type uint pixels nint glMultiTexParameterIivEXT(uint, uint, uint, int*) public static extern void glMultiTexParameterIivEXT(uint texunit, uint target, uint pname, int* @params) Parameters texunit uint target uint pname uint params int* glMultiTexParameterIuivEXT(uint, uint, uint, uint*) public static extern void glMultiTexParameterIuivEXT(uint texunit, uint target, uint pname, uint* @params) Parameters texunit uint target uint pname uint params uint* glMultiTexParameterfEXT(uint, uint, uint, float) public static extern void glMultiTexParameterfEXT(uint texunit, uint target, uint pname, float param) Parameters texunit uint target uint pname uint param float glMultiTexParameterfvEXT(uint, uint, uint, float*) public static extern void glMultiTexParameterfvEXT(uint texunit, uint target, uint pname, float* @params) Parameters texunit uint target uint pname uint params float* glMultiTexParameteriEXT(uint, uint, uint, int) public static extern void glMultiTexParameteriEXT(uint texunit, uint target, uint pname, int param) Parameters texunit uint target uint pname uint param int glMultiTexParameterivEXT(uint, uint, uint, int*) public static extern void glMultiTexParameterivEXT(uint texunit, uint target, uint pname, int* @params) Parameters texunit uint target uint pname uint params int* glMultiTexRenderbufferEXT(uint, uint, uint) public static extern void glMultiTexRenderbufferEXT(uint texunit, uint target, uint renderbuffer) Parameters texunit uint target uint renderbuffer uint glMultiTexSubImage1DEXT(uint, uint, int, int, int, uint, uint, nint) public static extern void glMultiTexSubImage1DEXT(uint texunit, uint target, int level, int xoffset, int width, uint format, uint type, nint pixels) Parameters texunit uint target uint level int xoffset int width int format uint type uint pixels nint glMultiTexSubImage2DEXT(uint, uint, int, int, int, int, int, uint, uint, nint) public static extern void glMultiTexSubImage2DEXT(uint texunit, uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, nint pixels) Parameters texunit uint target uint level int xoffset int yoffset int width int height int format uint type uint pixels nint glMultiTexSubImage3DEXT(uint, uint, int, int, int, int, int, int, int, uint, uint, nint) public static extern void glMultiTexSubImage3DEXT(uint texunit, uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, nint pixels) Parameters texunit uint target uint level int xoffset int yoffset int zoffset int width int height int depth int format uint type uint pixels nint glNamedBufferDataEXT(uint, nint, nint, uint) public static extern void glNamedBufferDataEXT(uint buffer, nint size, nint data, uint usage) Parameters buffer uint size nint data nint usage uint glNamedBufferSubDataEXT(uint, nint, nint, nint) public static extern void glNamedBufferSubDataEXT(uint buffer, nint offset, nint size, nint data) Parameters buffer uint offset nint size nint data nint glNamedCopyBufferSubDataEXT(uint, uint, nint, nint, nint) public static extern void glNamedCopyBufferSubDataEXT(uint readBuffer, uint writeBuffer, nint readOffset, nint writeOffset, nint size) Parameters readBuffer uint writeBuffer uint readOffset nint writeOffset nint size nint glNamedFramebufferRenderbufferEXT(uint, uint, uint, uint) public static extern void glNamedFramebufferRenderbufferEXT(uint framebuffer, uint attachment, uint renderbuffertarget, uint renderbuffer) Parameters framebuffer uint attachment uint renderbuffertarget uint renderbuffer uint glNamedFramebufferTexture1DEXT(uint, uint, uint, uint, int) public static extern void glNamedFramebufferTexture1DEXT(uint framebuffer, uint attachment, uint textarget, uint texture, int level) Parameters framebuffer uint attachment uint textarget uint texture uint level int glNamedFramebufferTexture2DEXT(uint, uint, uint, uint, int) public static extern void glNamedFramebufferTexture2DEXT(uint framebuffer, uint attachment, uint textarget, uint texture, int level) Parameters framebuffer uint attachment uint textarget uint texture uint level int glNamedFramebufferTexture3DEXT(uint, uint, uint, uint, int, int) public static extern void glNamedFramebufferTexture3DEXT(uint framebuffer, uint attachment, uint textarget, uint texture, int level, int zoffset) Parameters framebuffer uint attachment uint textarget uint texture uint level int zoffset int glNamedFramebufferTextureEXT(uint, uint, uint, int) public static extern void glNamedFramebufferTextureEXT(uint framebuffer, uint attachment, uint texture, int level) Parameters framebuffer uint attachment uint texture uint level int glNamedFramebufferTextureFaceEXT(uint, uint, uint, int, uint) public static extern void glNamedFramebufferTextureFaceEXT(uint framebuffer, uint attachment, uint texture, int level, uint face) Parameters framebuffer uint attachment uint texture uint level int face uint glNamedFramebufferTextureLayerEXT(uint, uint, uint, int, int) public static extern void glNamedFramebufferTextureLayerEXT(uint framebuffer, uint attachment, uint texture, int level, int layer) Parameters framebuffer uint attachment uint texture uint level int layer int glNamedProgramLocalParameter4dEXT(uint, uint, uint, double, double, double, double) public static extern void glNamedProgramLocalParameter4dEXT(uint program, uint target, uint index, double x, double y, double z, double w) Parameters program uint target uint index uint x double y double z double w double glNamedProgramLocalParameter4dvEXT(uint, uint, uint, double*) public static extern void glNamedProgramLocalParameter4dvEXT(uint program, uint target, uint index, double* @params) Parameters program uint target uint index uint params double* glNamedProgramLocalParameter4fEXT(uint, uint, uint, float, float, float, float) public static extern void glNamedProgramLocalParameter4fEXT(uint program, uint target, uint index, float x, float y, float z, float w) Parameters program uint target uint index uint x float y float z float w float glNamedProgramLocalParameter4fvEXT(uint, uint, uint, float*) public static extern void glNamedProgramLocalParameter4fvEXT(uint program, uint target, uint index, float* @params) Parameters program uint target uint index uint params float* glNamedProgramLocalParameterI4iEXT(uint, uint, uint, int, int, int, int) public static extern void glNamedProgramLocalParameterI4iEXT(uint program, uint target, uint index, int x, int y, int z, int w) Parameters program uint target uint index uint x int y int z int w int glNamedProgramLocalParameterI4ivEXT(uint, uint, uint, int*) public static extern void glNamedProgramLocalParameterI4ivEXT(uint program, uint target, uint index, int* @params) Parameters program uint target uint index uint params int* glNamedProgramLocalParameterI4uiEXT(uint, uint, uint, uint, uint, uint, uint) public static extern void glNamedProgramLocalParameterI4uiEXT(uint program, uint target, uint index, uint x, uint y, uint z, uint w) Parameters program uint target uint index uint x uint y uint z uint w uint glNamedProgramLocalParameterI4uivEXT(uint, uint, uint, uint*) public static extern void glNamedProgramLocalParameterI4uivEXT(uint program, uint target, uint index, uint* @params) Parameters program uint target uint index uint params uint* glNamedProgramLocalParameters4fvEXT(uint, uint, uint, int, float*) public static extern void glNamedProgramLocalParameters4fvEXT(uint program, uint target, uint index, int count, float* @params) Parameters program uint target uint index uint count int params float* glNamedProgramLocalParametersI4ivEXT(uint, uint, uint, int, int*) public static extern void glNamedProgramLocalParametersI4ivEXT(uint program, uint target, uint index, int count, int* @params) Parameters program uint target uint index uint count int params int* glNamedProgramLocalParametersI4uivEXT(uint, uint, uint, int, uint*) public static extern void glNamedProgramLocalParametersI4uivEXT(uint program, uint target, uint index, int count, uint* @params) Parameters program uint target uint index uint count int params uint* glNamedProgramStringEXT(uint, uint, uint, int, nint) public static extern void glNamedProgramStringEXT(uint program, uint target, uint format, int len, nint @string) Parameters program uint target uint format uint len int string nint glNamedRenderbufferStorageEXT(uint, uint, int, int) public static extern void glNamedRenderbufferStorageEXT(uint renderbuffer, uint internalformat, int width, int height) Parameters renderbuffer uint internalformat uint width int height int glNamedRenderbufferStorageMultisampleCoverageEXT(uint, int, int, uint, int, int) public static extern void glNamedRenderbufferStorageMultisampleCoverageEXT(uint renderbuffer, int coverageSamples, int colorSamples, uint internalformat, int width, int height) Parameters renderbuffer uint coverageSamples int colorSamples int internalformat uint width int height int glNamedRenderbufferStorageMultisampleEXT(uint, int, uint, int, int) public static extern void glNamedRenderbufferStorageMultisampleEXT(uint renderbuffer, int samples, uint internalformat, int width, int height) Parameters renderbuffer uint samples int internalformat uint width int height int glNamedStringARB(uint, int, string, int, string) public static extern void glNamedStringARB(uint type, int namelen, string name, int stringlen, string @string) Parameters type uint namelen int name string stringlen int string string glNewList(uint, uint) public static extern void glNewList(uint list, uint mode) Parameters list uint mode uint glNewObjectBufferATI(int, nint, uint) public static extern int glNewObjectBufferATI(int size, nint pointer, uint usage) Parameters size int pointer nint usage uint Returns int glNormal3b(sbyte, sbyte, sbyte) public static extern void glNormal3b(sbyte nx, sbyte ny, sbyte nz) Parameters nx sbyte ny sbyte nz sbyte glNormal3bv(sbyte*) public static extern void glNormal3bv(sbyte* v) Parameters v sbyte* glNormal3d(double, double, double) public static extern void glNormal3d(double nx, double ny, double nz) Parameters nx double ny double nz double glNormal3dv(double*) public static extern void glNormal3dv(double* v) Parameters v double* glNormal3f(float, float, float) public static extern void glNormal3f(float nx, float ny, float nz) Parameters nx float ny float nz float glNormal3fVertex3fSUN(float, float, float, float, float, float) public static extern void glNormal3fVertex3fSUN(float nx, float ny, float nz, float x, float y, float z) Parameters nx float ny float nz float x float y float z float glNormal3fVertex3fvSUN(float*, float*) public static extern void glNormal3fVertex3fvSUN(float* n, float* v) Parameters n float* v float* glNormal3fv(float*) public static extern void glNormal3fv(float* v) Parameters v float* glNormal3hNV(ushort, ushort, ushort) public static extern void glNormal3hNV(ushort nx, ushort ny, ushort nz) Parameters nx ushort ny ushort nz ushort glNormal3hvNV(ushort*) public static extern void glNormal3hvNV(ushort* v) Parameters v ushort* glNormal3i(int, int, int) public static extern void glNormal3i(int nx, int ny, int nz) Parameters nx int ny int nz int glNormal3iv(int*) public static extern void glNormal3iv(int* v) Parameters v int* glNormal3s(short, short, short) public static extern void glNormal3s(short nx, short ny, short nz) Parameters nx short ny short nz short glNormal3sv(short*) public static extern void glNormal3sv(short* v) Parameters v short* glNormalFormatNV(uint, int) public static extern void glNormalFormatNV(uint type, int stride) Parameters type uint stride int glNormalP3ui(uint, uint) public static extern void glNormalP3ui(uint type, uint coords) Parameters type uint coords uint glNormalP3uiv(uint, uint*) public static extern void glNormalP3uiv(uint type, uint* coords) Parameters type uint coords uint* glNormalPointer(uint, int, nint) public static extern void glNormalPointer(uint type, int stride, nint pointer) Parameters type uint stride int pointer nint glNormalPointerEXT(uint, int, int, nint) public static extern void glNormalPointerEXT(uint type, int stride, int count, nint pointer) Parameters type uint stride int count int pointer nint glNormalPointerListIBM(uint, int, nint, int) public static extern void glNormalPointerListIBM(uint type, int stride, nint pointer, int ptrstride) Parameters type uint stride int pointer nint ptrstride int glNormalPointervINTEL(uint, nint) public static extern void glNormalPointervINTEL(uint type, nint pointer) Parameters type uint pointer nint glNormalStream3bATI(uint, sbyte, sbyte, sbyte) public static extern void glNormalStream3bATI(uint stream, sbyte nx, sbyte ny, sbyte nz) Parameters stream uint nx sbyte ny sbyte nz sbyte glNormalStream3bvATI(uint, sbyte*) public static extern void glNormalStream3bvATI(uint stream, sbyte* coords) Parameters stream uint coords sbyte* glNormalStream3dATI(uint, double, double, double) public static extern void glNormalStream3dATI(uint stream, double nx, double ny, double nz) Parameters stream uint nx double ny double nz double glNormalStream3dvATI(uint, double*) public static extern void glNormalStream3dvATI(uint stream, double* coords) Parameters stream uint coords double* glNormalStream3fATI(uint, float, float, float) public static extern void glNormalStream3fATI(uint stream, float nx, float ny, float nz) Parameters stream uint nx float ny float nz float glNormalStream3fvATI(uint, float*) public static extern void glNormalStream3fvATI(uint stream, float* coords) Parameters stream uint coords float* glNormalStream3iATI(uint, int, int, int) public static extern void glNormalStream3iATI(uint stream, int nx, int ny, int nz) Parameters stream uint nx int ny int nz int glNormalStream3ivATI(uint, int*) public static extern void glNormalStream3ivATI(uint stream, int* coords) Parameters stream uint coords int* glNormalStream3sATI(uint, short, short, short) public static extern void glNormalStream3sATI(uint stream, short nx, short ny, short nz) Parameters stream uint nx short ny short nz short glNormalStream3svATI(uint, short*) public static extern void glNormalStream3svATI(uint stream, short* coords) Parameters stream uint coords short* glObjectPurgeableAPPLE(uint, uint, uint) public static extern uint glObjectPurgeableAPPLE(uint objectType, uint name, uint option) Parameters objectType uint name uint option uint Returns uint glObjectUnpurgeableAPPLE(uint, uint, uint) public static extern uint glObjectUnpurgeableAPPLE(uint objectType, uint name, uint option) Parameters objectType uint name uint option uint Returns uint glOrtho(double, double, double, double, double, double) public static extern void glOrtho(double left, double right, double bottom, double top, double zNear, double zFar) Parameters left double right double bottom double top double zNear double zFar double glPNTrianglesfATI(uint, float) public static extern void glPNTrianglesfATI(uint pname, float param) Parameters pname uint param float glPNTrianglesiATI(uint, int) public static extern void glPNTrianglesiATI(uint pname, int param) Parameters pname uint param int glPassTexCoordATI(uint, uint, uint) public static extern void glPassTexCoordATI(uint dst, uint coord, uint swizzle) Parameters dst uint coord uint swizzle uint glPassThrough(float) public static extern void glPassThrough(float token) Parameters token float glPatchParameterfv(uint, float*) public static extern void glPatchParameterfv(uint pname, float* values) Parameters pname uint values float* glPatchParameteri(uint, int) public static extern void glPatchParameteri(uint pname, int value) Parameters pname uint value int glPauseTransformFeedback() public static extern void glPauseTransformFeedback() glPauseTransformFeedbackNV() public static extern void glPauseTransformFeedbackNV() glPixelDataRangeNV(uint, int, nint) public static extern void glPixelDataRangeNV(uint target, int length, nint pointer) Parameters target uint length int pointer nint glPixelMapfv(uint, int, float*) public static extern void glPixelMapfv(uint map, int mapsize, float* values) Parameters map uint mapsize int values float* glPixelMapuiv(uint, int, uint*) public static extern void glPixelMapuiv(uint map, int mapsize, uint* values) Parameters map uint mapsize int values uint* glPixelMapusv(uint, int, ushort*) public static extern void glPixelMapusv(uint map, int mapsize, ushort* values) Parameters map uint mapsize int values ushort* glPixelStoref(uint, float) public static extern void glPixelStoref(uint pname, float param) Parameters pname uint param float glPixelStorei(uint, int) public static extern void glPixelStorei(uint pname, int param) Parameters pname uint param int glPixelTexGenParameterfSGIS(uint, float) public static extern void glPixelTexGenParameterfSGIS(uint pname, float param) Parameters pname uint param float glPixelTexGenParameterfvSGIS(uint, float*) public static extern void glPixelTexGenParameterfvSGIS(uint pname, float* @params) Parameters pname uint params float* glPixelTexGenParameteriSGIS(uint, int) public static extern void glPixelTexGenParameteriSGIS(uint pname, int param) Parameters pname uint param int glPixelTexGenParameterivSGIS(uint, int*) public static extern void glPixelTexGenParameterivSGIS(uint pname, int* @params) Parameters pname uint params int* glPixelTexGenSGIX(uint) public static extern void glPixelTexGenSGIX(uint mode) Parameters mode uint glPixelTransferf(uint, float) public static extern void glPixelTransferf(uint pname, float param) Parameters pname uint param float glPixelTransferi(uint, int) public static extern void glPixelTransferi(uint pname, int param) Parameters pname uint param int glPixelTransformParameterfEXT(uint, uint, float) public static extern void glPixelTransformParameterfEXT(uint target, uint pname, float param) Parameters target uint pname uint param float glPixelTransformParameterfvEXT(uint, uint, float*) public static extern void glPixelTransformParameterfvEXT(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glPixelTransformParameteriEXT(uint, uint, int) public static extern void glPixelTransformParameteriEXT(uint target, uint pname, int param) Parameters target uint pname uint param int glPixelTransformParameterivEXT(uint, uint, int*) public static extern void glPixelTransformParameterivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glPixelZoom(float, float) public static extern void glPixelZoom(float xfactor, float yfactor) Parameters xfactor float yfactor float glPointParameterf(uint, float) public static extern void glPointParameterf(uint pname, float param) Parameters pname uint param float glPointParameterfARB(uint, float) public static extern void glPointParameterfARB(uint pname, float param) Parameters pname uint param float glPointParameterfEXT(uint, float) public static extern void glPointParameterfEXT(uint pname, float param) Parameters pname uint param float glPointParameterfSGIS(uint, float) public static extern void glPointParameterfSGIS(uint pname, float param) Parameters pname uint param float glPointParameterfv(uint, float*) public static extern void glPointParameterfv(uint pname, float* @params) Parameters pname uint params float* glPointParameterfvARB(uint, float*) public static extern void glPointParameterfvARB(uint pname, float* @params) Parameters pname uint params float* glPointParameterfvEXT(uint, float*) public static extern void glPointParameterfvEXT(uint pname, float* @params) Parameters pname uint params float* glPointParameterfvSGIS(uint, float*) public static extern void glPointParameterfvSGIS(uint pname, float* @params) Parameters pname uint params float* glPointParameteri(uint, int) public static extern void glPointParameteri(uint pname, int param) Parameters pname uint param int glPointParameteriNV(uint, int) public static extern void glPointParameteriNV(uint pname, int param) Parameters pname uint param int glPointParameteriv(uint, int*) public static extern void glPointParameteriv(uint pname, int* @params) Parameters pname uint params int* glPointParameterivNV(uint, int*) public static extern void glPointParameterivNV(uint pname, int* @params) Parameters pname uint params int* glPointSize(float) public static extern void glPointSize(float size) Parameters size float glPollAsyncSGIX(uint*) public static extern int glPollAsyncSGIX(uint* markerp) Parameters markerp uint* Returns int glPollInstrumentsSGIX(int*) public static extern int glPollInstrumentsSGIX(int* marker_p) Parameters marker_p int* Returns int glPolygonMode(uint, uint) public static extern void glPolygonMode(uint face, uint mode) Parameters face uint mode uint glPolygonOffset(float, float) public static extern void glPolygonOffset(float factor, float units) Parameters factor float units float glPolygonOffsetEXT(float, float) public static extern void glPolygonOffsetEXT(float factor, float bias) Parameters factor float bias float glPolygonStipple(byte*) public static extern void glPolygonStipple(byte* mask) Parameters mask byte* glPopAttrib() public static extern void glPopAttrib() glPopClientAttrib() public static extern void glPopClientAttrib() glPopMatrix() public static extern void glPopMatrix() glPopName() public static extern void glPopName() glPresentFrameDualFillNV(uint, ulong, uint, uint, uint, uint, uint, uint, uint, uint, uint, uint, uint) public static extern void glPresentFrameDualFillNV(uint video_slot, ulong minPresentTime, uint beginPresentTimeId, uint presentDurationId, uint type, uint target0, uint fill0, uint target1, uint fill1, uint target2, uint fill2, uint target3, uint fill3) Parameters video_slot uint minPresentTime ulong beginPresentTimeId uint presentDurationId uint type uint target0 uint fill0 uint target1 uint fill1 uint target2 uint fill2 uint target3 uint fill3 uint glPresentFrameKeyedNV(uint, ulong, uint, uint, uint, uint, uint, uint, uint, uint, uint) public static extern void glPresentFrameKeyedNV(uint video_slot, ulong minPresentTime, uint beginPresentTimeId, uint presentDurationId, uint type, uint target0, uint fill0, uint key0, uint target1, uint fill1, uint key1) Parameters video_slot uint minPresentTime ulong beginPresentTimeId uint presentDurationId uint type uint target0 uint fill0 uint key0 uint target1 uint fill1 uint key1 uint glPrimitiveRestartIndex(uint) public static extern void glPrimitiveRestartIndex(uint index) Parameters index uint glPrimitiveRestartIndexNV(uint) public static extern void glPrimitiveRestartIndexNV(uint index) Parameters index uint glPrimitiveRestartNV() public static extern void glPrimitiveRestartNV() glPrioritizeTextures(int, uint*, float*) public static extern void glPrioritizeTextures(int n, uint* textures, float* priorities) Parameters n int textures uint* priorities float* glPrioritizeTexturesEXT(int, uint*, float*) public static extern void glPrioritizeTexturesEXT(int n, uint* textures, float* priorities) Parameters n int textures uint* priorities float* glProgramBinary(uint, uint, nint, int) public static extern void glProgramBinary(uint program, uint binaryFormat, nint binary, int length) Parameters program uint binaryFormat uint binary nint length int glProgramBufferParametersIivNV(uint, uint, uint, int, int*) public static extern void glProgramBufferParametersIivNV(uint target, uint buffer, uint index, int count, int* @params) Parameters target uint buffer uint index uint count int params int* glProgramBufferParametersIuivNV(uint, uint, uint, int, uint*) public static extern void glProgramBufferParametersIuivNV(uint target, uint buffer, uint index, int count, uint* @params) Parameters target uint buffer uint index uint count int params uint* glProgramBufferParametersfvNV(uint, uint, uint, int, float*) public static extern void glProgramBufferParametersfvNV(uint target, uint buffer, uint index, int count, float* @params) Parameters target uint buffer uint index uint count int params float* glProgramEnvParameter4dARB(uint, uint, double, double, double, double) public static extern void glProgramEnvParameter4dARB(uint target, uint index, double x, double y, double z, double w) Parameters target uint index uint x double y double z double w double glProgramEnvParameter4dvARB(uint, uint, double*) public static extern void glProgramEnvParameter4dvARB(uint target, uint index, double* @params) Parameters target uint index uint params double* glProgramEnvParameter4fARB(uint, uint, float, float, float, float) public static extern void glProgramEnvParameter4fARB(uint target, uint index, float x, float y, float z, float w) Parameters target uint index uint x float y float z float w float glProgramEnvParameter4fvARB(uint, uint, float*) public static extern void glProgramEnvParameter4fvARB(uint target, uint index, float* @params) Parameters target uint index uint params float* glProgramEnvParameterI4iNV(uint, uint, int, int, int, int) public static extern void glProgramEnvParameterI4iNV(uint target, uint index, int x, int y, int z, int w) Parameters target uint index uint x int y int z int w int glProgramEnvParameterI4ivNV(uint, uint, int*) public static extern void glProgramEnvParameterI4ivNV(uint target, uint index, int* @params) Parameters target uint index uint params int* glProgramEnvParameterI4uiNV(uint, uint, uint, uint, uint, uint) public static extern void glProgramEnvParameterI4uiNV(uint target, uint index, uint x, uint y, uint z, uint w) Parameters target uint index uint x uint y uint z uint w uint glProgramEnvParameterI4uivNV(uint, uint, uint*) public static extern void glProgramEnvParameterI4uivNV(uint target, uint index, uint* @params) Parameters target uint index uint params uint* glProgramEnvParameters4fvEXT(uint, uint, int, float*) public static extern void glProgramEnvParameters4fvEXT(uint target, uint index, int count, float* @params) Parameters target uint index uint count int params float* glProgramEnvParametersI4ivNV(uint, uint, int, int*) public static extern void glProgramEnvParametersI4ivNV(uint target, uint index, int count, int* @params) Parameters target uint index uint count int params int* glProgramEnvParametersI4uivNV(uint, uint, int, uint*) public static extern void glProgramEnvParametersI4uivNV(uint target, uint index, int count, uint* @params) Parameters target uint index uint count int params uint* glProgramLocalParameter4dARB(uint, uint, double, double, double, double) public static extern void glProgramLocalParameter4dARB(uint target, uint index, double x, double y, double z, double w) Parameters target uint index uint x double y double z double w double glProgramLocalParameter4dvARB(uint, uint, double*) public static extern void glProgramLocalParameter4dvARB(uint target, uint index, double* @params) Parameters target uint index uint params double* glProgramLocalParameter4fARB(uint, uint, float, float, float, float) public static extern void glProgramLocalParameter4fARB(uint target, uint index, float x, float y, float z, float w) Parameters target uint index uint x float y float z float w float glProgramLocalParameter4fvARB(uint, uint, float*) public static extern void glProgramLocalParameter4fvARB(uint target, uint index, float* @params) Parameters target uint index uint params float* glProgramLocalParameterI4iNV(uint, uint, int, int, int, int) public static extern void glProgramLocalParameterI4iNV(uint target, uint index, int x, int y, int z, int w) Parameters target uint index uint x int y int z int w int glProgramLocalParameterI4ivNV(uint, uint, int*) public static extern void glProgramLocalParameterI4ivNV(uint target, uint index, int* @params) Parameters target uint index uint params int* glProgramLocalParameterI4uiNV(uint, uint, uint, uint, uint, uint) public static extern void glProgramLocalParameterI4uiNV(uint target, uint index, uint x, uint y, uint z, uint w) Parameters target uint index uint x uint y uint z uint w uint glProgramLocalParameterI4uivNV(uint, uint, uint*) public static extern void glProgramLocalParameterI4uivNV(uint target, uint index, uint* @params) Parameters target uint index uint params uint* glProgramLocalParameters4fvEXT(uint, uint, int, float*) public static extern void glProgramLocalParameters4fvEXT(uint target, uint index, int count, float* @params) Parameters target uint index uint count int params float* glProgramLocalParametersI4ivNV(uint, uint, int, int*) public static extern void glProgramLocalParametersI4ivNV(uint target, uint index, int count, int* @params) Parameters target uint index uint count int params int* glProgramLocalParametersI4uivNV(uint, uint, int, uint*) public static extern void glProgramLocalParametersI4uivNV(uint target, uint index, int count, uint* @params) Parameters target uint index uint count int params uint* glProgramNamedParameter4dNV(uint, int, byte*, double, double, double, double) public static extern void glProgramNamedParameter4dNV(uint id, int len, byte* name, double x, double y, double z, double w) Parameters id uint len int name byte* x double y double z double w double glProgramNamedParameter4dvNV(uint, int, byte*, double*) public static extern void glProgramNamedParameter4dvNV(uint id, int len, byte* name, double* v) Parameters id uint len int name byte* v double* glProgramNamedParameter4fNV(uint, int, byte*, float, float, float, float) public static extern void glProgramNamedParameter4fNV(uint id, int len, byte* name, float x, float y, float z, float w) Parameters id uint len int name byte* x float y float z float w float glProgramNamedParameter4fvNV(uint, int, byte*, float*) public static extern void glProgramNamedParameter4fvNV(uint id, int len, byte* name, float* v) Parameters id uint len int name byte* v float* glProgramParameter4dNV(uint, uint, double, double, double, double) public static extern void glProgramParameter4dNV(uint target, uint index, double x, double y, double z, double w) Parameters target uint index uint x double y double z double w double glProgramParameter4dvNV(uint, uint, double*) public static extern void glProgramParameter4dvNV(uint target, uint index, double* v) Parameters target uint index uint v double* glProgramParameter4fNV(uint, uint, float, float, float, float) public static extern void glProgramParameter4fNV(uint target, uint index, float x, float y, float z, float w) Parameters target uint index uint x float y float z float w float glProgramParameter4fvNV(uint, uint, float*) public static extern void glProgramParameter4fvNV(uint target, uint index, float* v) Parameters target uint index uint v float* glProgramParameteri(uint, uint, int) public static extern void glProgramParameteri(uint program, uint pname, int value) Parameters program uint pname uint value int glProgramParameteriARB(uint, uint, int) public static extern void glProgramParameteriARB(uint program, uint pname, int value) Parameters program uint pname uint value int glProgramParameteriEXT(uint, uint, int) public static extern void glProgramParameteriEXT(uint program, uint pname, int value) Parameters program uint pname uint value int glProgramParameters4dvNV(uint, uint, int, double*) public static extern void glProgramParameters4dvNV(uint target, uint index, int count, double* v) Parameters target uint index uint count int v double* glProgramParameters4fvNV(uint, uint, int, float*) public static extern void glProgramParameters4fvNV(uint target, uint index, int count, float* v) Parameters target uint index uint count int v float* glProgramStringARB(uint, uint, int, nint) public static extern void glProgramStringARB(uint target, uint format, int len, nint @string) Parameters target uint format uint len int string nint glProgramSubroutineParametersuivNV(uint, int, uint*) public static extern void glProgramSubroutineParametersuivNV(uint target, int count, uint* @params) Parameters target uint count int params uint* glProgramUniform1d(uint, int, double) public static extern void glProgramUniform1d(uint program, int location, double v0) Parameters program uint location int v0 double glProgramUniform1dEXT(uint, int, double) public static extern void glProgramUniform1dEXT(uint program, int location, double x) Parameters program uint location int x double glProgramUniform1dv(uint, int, int, double*) public static extern void glProgramUniform1dv(uint program, int location, int count, double* value) Parameters program uint location int count int value double* glProgramUniform1dvEXT(uint, int, int, double*) public static extern void glProgramUniform1dvEXT(uint program, int location, int count, double* value) Parameters program uint location int count int value double* glProgramUniform1f(uint, int, float) public static extern void glProgramUniform1f(uint program, int location, float v0) Parameters program uint location int v0 float glProgramUniform1fEXT(uint, int, float) public static extern void glProgramUniform1fEXT(uint program, int location, float v0) Parameters program uint location int v0 float glProgramUniform1fv(uint, int, int, float*) public static extern void glProgramUniform1fv(uint program, int location, int count, float* value) Parameters program uint location int count int value float* glProgramUniform1fvEXT(uint, int, int, float*) public static extern void glProgramUniform1fvEXT(uint program, int location, int count, float* value) Parameters program uint location int count int value float* glProgramUniform1i(uint, int, int) public static extern void glProgramUniform1i(uint program, int location, int v0) Parameters program uint location int v0 int glProgramUniform1i64NV(uint, int, long) public static extern void glProgramUniform1i64NV(uint program, int location, long x) Parameters program uint location int x long glProgramUniform1i64vNV(uint, int, int, long*) public static extern void glProgramUniform1i64vNV(uint program, int location, int count, long* value) Parameters program uint location int count int value long* glProgramUniform1iEXT(uint, int, int) public static extern void glProgramUniform1iEXT(uint program, int location, int v0) Parameters program uint location int v0 int glProgramUniform1iv(uint, int, int, int*) public static extern void glProgramUniform1iv(uint program, int location, int count, int* value) Parameters program uint location int count int value int* glProgramUniform1ivEXT(uint, int, int, int*) public static extern void glProgramUniform1ivEXT(uint program, int location, int count, int* value) Parameters program uint location int count int value int* glProgramUniform1ui(uint, int, uint) public static extern void glProgramUniform1ui(uint program, int location, uint v0) Parameters program uint location int v0 uint glProgramUniform1ui64NV(uint, int, ulong) public static extern void glProgramUniform1ui64NV(uint program, int location, ulong x) Parameters program uint location int x ulong glProgramUniform1ui64vNV(uint, int, int, ulong*) public static extern void glProgramUniform1ui64vNV(uint program, int location, int count, ulong* value) Parameters program uint location int count int value ulong* glProgramUniform1uiEXT(uint, int, uint) public static extern void glProgramUniform1uiEXT(uint program, int location, uint v0) Parameters program uint location int v0 uint glProgramUniform1uiv(uint, int, int, uint*) public static extern void glProgramUniform1uiv(uint program, int location, int count, uint* value) Parameters program uint location int count int value uint* glProgramUniform1uivEXT(uint, int, int, uint*) public static extern void glProgramUniform1uivEXT(uint program, int location, int count, uint* value) Parameters program uint location int count int value uint* glProgramUniform2d(uint, int, double, double) public static extern void glProgramUniform2d(uint program, int location, double v0, double v1) Parameters program uint location int v0 double v1 double glProgramUniform2dEXT(uint, int, double, double) public static extern void glProgramUniform2dEXT(uint program, int location, double x, double y) Parameters program uint location int x double y double glProgramUniform2dv(uint, int, int, double*) public static extern void glProgramUniform2dv(uint program, int location, int count, double* value) Parameters program uint location int count int value double* glProgramUniform2dvEXT(uint, int, int, double*) public static extern void glProgramUniform2dvEXT(uint program, int location, int count, double* value) Parameters program uint location int count int value double* glProgramUniform2f(uint, int, float, float) public static extern void glProgramUniform2f(uint program, int location, float v0, float v1) Parameters program uint location int v0 float v1 float glProgramUniform2fEXT(uint, int, float, float) public static extern void glProgramUniform2fEXT(uint program, int location, float v0, float v1) Parameters program uint location int v0 float v1 float glProgramUniform2fv(uint, int, int, float*) public static extern void glProgramUniform2fv(uint program, int location, int count, float* value) Parameters program uint location int count int value float* glProgramUniform2fvEXT(uint, int, int, float*) public static extern void glProgramUniform2fvEXT(uint program, int location, int count, float* value) Parameters program uint location int count int value float* glProgramUniform2i(uint, int, int, int) public static extern void glProgramUniform2i(uint program, int location, int v0, int v1) Parameters program uint location int v0 int v1 int glProgramUniform2i64NV(uint, int, long, long) public static extern void glProgramUniform2i64NV(uint program, int location, long x, long y) Parameters program uint location int x long y long glProgramUniform2i64vNV(uint, int, int, long*) public static extern void glProgramUniform2i64vNV(uint program, int location, int count, long* value) Parameters program uint location int count int value long* glProgramUniform2iEXT(uint, int, int, int) public static extern void glProgramUniform2iEXT(uint program, int location, int v0, int v1) Parameters program uint location int v0 int v1 int glProgramUniform2iv(uint, int, int, int*) public static extern void glProgramUniform2iv(uint program, int location, int count, int* value) Parameters program uint location int count int value int* glProgramUniform2ivEXT(uint, int, int, int*) public static extern void glProgramUniform2ivEXT(uint program, int location, int count, int* value) Parameters program uint location int count int value int* glProgramUniform2ui(uint, int, uint, uint) public static extern void glProgramUniform2ui(uint program, int location, uint v0, uint v1) Parameters program uint location int v0 uint v1 uint glProgramUniform2ui64NV(uint, int, ulong, ulong) public static extern void glProgramUniform2ui64NV(uint program, int location, ulong x, ulong y) Parameters program uint location int x ulong y ulong glProgramUniform2ui64vNV(uint, int, int, ulong*) public static extern void glProgramUniform2ui64vNV(uint program, int location, int count, ulong* value) Parameters program uint location int count int value ulong* glProgramUniform2uiEXT(uint, int, uint, uint) public static extern void glProgramUniform2uiEXT(uint program, int location, uint v0, uint v1) Parameters program uint location int v0 uint v1 uint glProgramUniform2uiv(uint, int, int, uint*) public static extern void glProgramUniform2uiv(uint program, int location, int count, uint* value) Parameters program uint location int count int value uint* glProgramUniform2uivEXT(uint, int, int, uint*) public static extern void glProgramUniform2uivEXT(uint program, int location, int count, uint* value) Parameters program uint location int count int value uint* glProgramUniform3d(uint, int, double, double, double) public static extern void glProgramUniform3d(uint program, int location, double v0, double v1, double v2) Parameters program uint location int v0 double v1 double v2 double glProgramUniform3dEXT(uint, int, double, double, double) public static extern void glProgramUniform3dEXT(uint program, int location, double x, double y, double z) Parameters program uint location int x double y double z double glProgramUniform3dv(uint, int, int, double*) public static extern void glProgramUniform3dv(uint program, int location, int count, double* value) Parameters program uint location int count int value double* glProgramUniform3dvEXT(uint, int, int, double*) public static extern void glProgramUniform3dvEXT(uint program, int location, int count, double* value) Parameters program uint location int count int value double* glProgramUniform3f(uint, int, float, float, float) public static extern void glProgramUniform3f(uint program, int location, float v0, float v1, float v2) Parameters program uint location int v0 float v1 float v2 float glProgramUniform3fEXT(uint, int, float, float, float) public static extern void glProgramUniform3fEXT(uint program, int location, float v0, float v1, float v2) Parameters program uint location int v0 float v1 float v2 float glProgramUniform3fv(uint, int, int, float*) public static extern void glProgramUniform3fv(uint program, int location, int count, float* value) Parameters program uint location int count int value float* glProgramUniform3fvEXT(uint, int, int, float*) public static extern void glProgramUniform3fvEXT(uint program, int location, int count, float* value) Parameters program uint location int count int value float* glProgramUniform3i(uint, int, int, int, int) public static extern void glProgramUniform3i(uint program, int location, int v0, int v1, int v2) Parameters program uint location int v0 int v1 int v2 int glProgramUniform3i64NV(uint, int, long, long, long) public static extern void glProgramUniform3i64NV(uint program, int location, long x, long y, long z) Parameters program uint location int x long y long z long glProgramUniform3i64vNV(uint, int, int, long*) public static extern void glProgramUniform3i64vNV(uint program, int location, int count, long* value) Parameters program uint location int count int value long* glProgramUniform3iEXT(uint, int, int, int, int) public static extern void glProgramUniform3iEXT(uint program, int location, int v0, int v1, int v2) Parameters program uint location int v0 int v1 int v2 int glProgramUniform3iv(uint, int, int, int*) public static extern void glProgramUniform3iv(uint program, int location, int count, int* value) Parameters program uint location int count int value int* glProgramUniform3ivEXT(uint, int, int, int*) public static extern void glProgramUniform3ivEXT(uint program, int location, int count, int* value) Parameters program uint location int count int value int* glProgramUniform3ui(uint, int, uint, uint, uint) public static extern void glProgramUniform3ui(uint program, int location, uint v0, uint v1, uint v2) Parameters program uint location int v0 uint v1 uint v2 uint glProgramUniform3ui64NV(uint, int, ulong, ulong, ulong) public static extern void glProgramUniform3ui64NV(uint program, int location, ulong x, ulong y, ulong z) Parameters program uint location int x ulong y ulong z ulong glProgramUniform3ui64vNV(uint, int, int, ulong*) public static extern void glProgramUniform3ui64vNV(uint program, int location, int count, ulong* value) Parameters program uint location int count int value ulong* glProgramUniform3uiEXT(uint, int, uint, uint, uint) public static extern void glProgramUniform3uiEXT(uint program, int location, uint v0, uint v1, uint v2) Parameters program uint location int v0 uint v1 uint v2 uint glProgramUniform3uiv(uint, int, int, uint*) public static extern void glProgramUniform3uiv(uint program, int location, int count, uint* value) Parameters program uint location int count int value uint* glProgramUniform3uivEXT(uint, int, int, uint*) public static extern void glProgramUniform3uivEXT(uint program, int location, int count, uint* value) Parameters program uint location int count int value uint* glProgramUniform4d(uint, int, double, double, double, double) public static extern void glProgramUniform4d(uint program, int location, double v0, double v1, double v2, double v3) Parameters program uint location int v0 double v1 double v2 double v3 double glProgramUniform4dEXT(uint, int, double, double, double, double) public static extern void glProgramUniform4dEXT(uint program, int location, double x, double y, double z, double w) Parameters program uint location int x double y double z double w double glProgramUniform4dv(uint, int, int, double*) public static extern void glProgramUniform4dv(uint program, int location, int count, double* value) Parameters program uint location int count int value double* glProgramUniform4dvEXT(uint, int, int, double*) public static extern void glProgramUniform4dvEXT(uint program, int location, int count, double* value) Parameters program uint location int count int value double* glProgramUniform4f(uint, int, float, float, float, float) public static extern void glProgramUniform4f(uint program, int location, float v0, float v1, float v2, float v3) Parameters program uint location int v0 float v1 float v2 float v3 float glProgramUniform4fEXT(uint, int, float, float, float, float) public static extern void glProgramUniform4fEXT(uint program, int location, float v0, float v1, float v2, float v3) Parameters program uint location int v0 float v1 float v2 float v3 float glProgramUniform4fv(uint, int, int, float*) public static extern void glProgramUniform4fv(uint program, int location, int count, float* value) Parameters program uint location int count int value float* glProgramUniform4fvEXT(uint, int, int, float*) public static extern void glProgramUniform4fvEXT(uint program, int location, int count, float* value) Parameters program uint location int count int value float* glProgramUniform4i(uint, int, int, int, int, int) public static extern void glProgramUniform4i(uint program, int location, int v0, int v1, int v2, int v3) Parameters program uint location int v0 int v1 int v2 int v3 int glProgramUniform4i64NV(uint, int, long, long, long, long) public static extern void glProgramUniform4i64NV(uint program, int location, long x, long y, long z, long w) Parameters program uint location int x long y long z long w long glProgramUniform4i64vNV(uint, int, int, long*) public static extern void glProgramUniform4i64vNV(uint program, int location, int count, long* value) Parameters program uint location int count int value long* glProgramUniform4iEXT(uint, int, int, int, int, int) public static extern void glProgramUniform4iEXT(uint program, int location, int v0, int v1, int v2, int v3) Parameters program uint location int v0 int v1 int v2 int v3 int glProgramUniform4iv(uint, int, int, int*) public static extern void glProgramUniform4iv(uint program, int location, int count, int* value) Parameters program uint location int count int value int* glProgramUniform4ivEXT(uint, int, int, int*) public static extern void glProgramUniform4ivEXT(uint program, int location, int count, int* value) Parameters program uint location int count int value int* glProgramUniform4ui(uint, int, uint, uint, uint, uint) public static extern void glProgramUniform4ui(uint program, int location, uint v0, uint v1, uint v2, uint v3) Parameters program uint location int v0 uint v1 uint v2 uint v3 uint glProgramUniform4ui64NV(uint, int, ulong, ulong, ulong, ulong) public static extern void glProgramUniform4ui64NV(uint program, int location, ulong x, ulong y, ulong z, ulong w) Parameters program uint location int x ulong y ulong z ulong w ulong glProgramUniform4ui64vNV(uint, int, int, ulong*) public static extern void glProgramUniform4ui64vNV(uint program, int location, int count, ulong* value) Parameters program uint location int count int value ulong* glProgramUniform4uiEXT(uint, int, uint, uint, uint, uint) public static extern void glProgramUniform4uiEXT(uint program, int location, uint v0, uint v1, uint v2, uint v3) Parameters program uint location int v0 uint v1 uint v2 uint v3 uint glProgramUniform4uiv(uint, int, int, uint*) public static extern void glProgramUniform4uiv(uint program, int location, int count, uint* value) Parameters program uint location int count int value uint* glProgramUniform4uivEXT(uint, int, int, uint*) public static extern void glProgramUniform4uivEXT(uint program, int location, int count, uint* value) Parameters program uint location int count int value uint* glProgramUniformMatrix2dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix2dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix2dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix2dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix2fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix2fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix2fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix2fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix2x3dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix2x3dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix2x3dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix2x3dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix2x3fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix2x3fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix2x3fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix2x3fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix2x4dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix2x4dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix2x4dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix2x4dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix2x4fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix2x4fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix2x4fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix2x4fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix3dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix3dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix3dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix3dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix3fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix3fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix3fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix3fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix3x2dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix3x2dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix3x2dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix3x2dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix3x2fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix3x2fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix3x2fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix3x2fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix3x4dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix3x4dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix3x4dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix3x4dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix3x4fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix3x4fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix3x4fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix3x4fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix4dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix4dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix4dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix4dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix4fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix4fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix4fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix4fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix4x2dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix4x2dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix4x2dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix4x2dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix4x2fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix4x2fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix4x2fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix4x2fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix4x3dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix4x3dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix4x3dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix4x3dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix4x3fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix4x3fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix4x3fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix4x3fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformui64NV(uint, int, ulong) public static extern void glProgramUniformui64NV(uint program, int location, ulong value) Parameters program uint location int value ulong glProgramUniformui64vNV(uint, int, int, ulong*) public static extern void glProgramUniformui64vNV(uint program, int location, int count, ulong* value) Parameters program uint location int count int value ulong* glProgramVertexLimitNV(uint, int) public static extern void glProgramVertexLimitNV(uint target, int limit) Parameters target uint limit int glProvokingVertex(uint) public static extern void glProvokingVertex(uint mode) Parameters mode uint glProvokingVertexEXT(uint) public static extern void glProvokingVertexEXT(uint mode) Parameters mode uint glPushAttrib(uint) public static extern void glPushAttrib(uint mask) Parameters mask uint glPushClientAttrib(uint) public static extern void glPushClientAttrib(uint mask) Parameters mask uint glPushClientAttribDefaultEXT(uint) public static extern void glPushClientAttribDefaultEXT(uint mask) Parameters mask uint glPushMatrix() public static extern void glPushMatrix() glPushName(uint) public static extern void glPushName(uint name) Parameters name uint glQueryCounter(uint, uint) public static extern void glQueryCounter(uint id, uint target) Parameters id uint target uint glRasterPos2d(double, double) public static extern void glRasterPos2d(double x, double y) Parameters x double y double glRasterPos2dv(double*) public static extern void glRasterPos2dv(double* v) Parameters v double* glRasterPos2f(float, float) public static extern void glRasterPos2f(float x, float y) Parameters x float y float glRasterPos2fv(float*) public static extern void glRasterPos2fv(float* v) Parameters v float* glRasterPos2i(int, int) public static extern void glRasterPos2i(int x, int y) Parameters x int y int glRasterPos2iv(int*) public static extern void glRasterPos2iv(int* v) Parameters v int* glRasterPos2s(short, short) public static extern void glRasterPos2s(short x, short y) Parameters x short y short glRasterPos2sv(short*) public static extern void glRasterPos2sv(short* v) Parameters v short* glRasterPos3d(double, double, double) public static extern void glRasterPos3d(double x, double y, double z) Parameters x double y double z double glRasterPos3dv(double*) public static extern void glRasterPos3dv(double* v) Parameters v double* glRasterPos3f(float, float, float) public static extern void glRasterPos3f(float x, float y, float z) Parameters x float y float z float glRasterPos3fv(float*) public static extern void glRasterPos3fv(float* v) Parameters v float* glRasterPos3i(int, int, int) public static extern void glRasterPos3i(int x, int y, int z) Parameters x int y int z int glRasterPos3iv(int*) public static extern void glRasterPos3iv(int* v) Parameters v int* glRasterPos3s(short, short, short) public static extern void glRasterPos3s(short x, short y, short z) Parameters x short y short z short glRasterPos3sv(short*) public static extern void glRasterPos3sv(short* v) Parameters v short* glRasterPos4d(double, double, double, double) public static extern void glRasterPos4d(double x, double y, double z, double w) Parameters x double y double z double w double glRasterPos4dv(double*) public static extern void glRasterPos4dv(double* v) Parameters v double* glRasterPos4f(float, float, float, float) public static extern void glRasterPos4f(float x, float y, float z, float w) Parameters x float y float z float w float glRasterPos4fv(float*) public static extern void glRasterPos4fv(float* v) Parameters v float* glRasterPos4i(int, int, int, int) public static extern void glRasterPos4i(int x, int y, int z, int w) Parameters x int y int z int w int glRasterPos4iv(int*) public static extern void glRasterPos4iv(int* v) Parameters v int* glRasterPos4s(short, short, short, short) public static extern void glRasterPos4s(short x, short y, short z, short w) Parameters x short y short z short w short glRasterPos4sv(short*) public static extern void glRasterPos4sv(short* v) Parameters v short* glReadBuffer(uint) public static extern void glReadBuffer(uint mode) Parameters mode uint glReadInstrumentsSGIX(int) public static extern void glReadInstrumentsSGIX(int marker) Parameters marker int glReadPixels(int, int, int, int, uint, uint, nint) public static extern void glReadPixels(int x, int y, int width, int height, uint format, uint type, nint pixels) Parameters x int y int width int height int format uint type uint pixels nint glReadnPixelsARB(int, int, int, int, uint, uint, int, nint) public static extern void glReadnPixelsARB(int x, int y, int width, int height, uint format, uint type, int bufSize, nint data) Parameters x int y int width int height int format uint type uint bufSize int data nint glRectd(double, double, double, double) public static extern void glRectd(double x1, double y1, double x2, double y2) Parameters x1 double y1 double x2 double y2 double glRectdv(double*, double*) public static extern void glRectdv(double* v1, double* v2) Parameters v1 double* v2 double* glRectf(float, float, float, float) public static extern void glRectf(float x1, float y1, float x2, float y2) Parameters x1 float y1 float x2 float y2 float glRectfv(float*, float*) public static extern void glRectfv(float* v1, float* v2) Parameters v1 float* v2 float* glRecti(int, int, int, int) public static extern void glRecti(int x1, int y1, int x2, int y2) Parameters x1 int y1 int x2 int y2 int glRectiv(int*, int*) public static extern void glRectiv(int* v1, int* v2) Parameters v1 int* v2 int* glRects(short, short, short, short) public static extern void glRects(short x1, short y1, short x2, short y2) Parameters x1 short y1 short x2 short y2 short glRectsv(short*, short*) public static extern void glRectsv(short* v1, short* v2) Parameters v1 short* v2 short* glReferencePlaneSGIX(double*) public static extern void glReferencePlaneSGIX(double* equation) Parameters equation double* glReleaseShaderCompiler() public static extern void glReleaseShaderCompiler() glRenderMode(uint) public static extern int glRenderMode(uint mode) Parameters mode uint Returns int glRenderbufferStorage(uint, uint, int, int) public static extern void glRenderbufferStorage(uint target, uint internalformat, int width, int height) Parameters target uint internalformat uint width int height int glRenderbufferStorageEXT(uint, uint, int, int) public static extern void glRenderbufferStorageEXT(uint target, uint internalformat, int width, int height) Parameters target uint internalformat uint width int height int glRenderbufferStorageMultisample(uint, int, uint, int, int) public static extern void glRenderbufferStorageMultisample(uint target, int samples, uint internalformat, int width, int height) Parameters target uint samples int internalformat uint width int height int glRenderbufferStorageMultisampleCoverageNV(uint, int, int, uint, int, int) public static extern void glRenderbufferStorageMultisampleCoverageNV(uint target, int coverageSamples, int colorSamples, uint internalformat, int width, int height) Parameters target uint coverageSamples int colorSamples int internalformat uint width int height int glRenderbufferStorageMultisampleEXT(uint, int, uint, int, int) public static extern void glRenderbufferStorageMultisampleEXT(uint target, int samples, uint internalformat, int width, int height) Parameters target uint samples int internalformat uint width int height int glReplacementCodePointerSUN(uint, int, nint) public static extern void glReplacementCodePointerSUN(uint type, int stride, nint pointer) Parameters type uint stride int pointer nint glReplacementCodeubSUN(byte) public static extern void glReplacementCodeubSUN(byte code) Parameters code byte glReplacementCodeubvSUN(byte*) public static extern void glReplacementCodeubvSUN(byte* code) Parameters code byte* glReplacementCodeuiColor3fVertex3fSUN(uint, float, float, float, float, float, float) public static extern void glReplacementCodeuiColor3fVertex3fSUN(uint rc, float r, float g, float b, float x, float y, float z) Parameters rc uint r float g float b float x float y float z float glReplacementCodeuiColor3fVertex3fvSUN(uint*, float*, float*) public static extern void glReplacementCodeuiColor3fVertex3fvSUN(uint* rc, float* c, float* v) Parameters rc uint* c float* v float* glReplacementCodeuiColor4fNormal3fVertex3fSUN(uint, float, float, float, float, float, float, float, float, float, float) public static extern void glReplacementCodeuiColor4fNormal3fVertex3fSUN(uint rc, float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z) Parameters rc uint r float g float b float a float nx float ny float nz float x float y float z float glReplacementCodeuiColor4fNormal3fVertex3fvSUN(uint*, float*, float*, float*) public static extern void glReplacementCodeuiColor4fNormal3fVertex3fvSUN(uint* rc, float* c, float* n, float* v) Parameters rc uint* c float* n float* v float* glReplacementCodeuiColor4ubVertex3fSUN(uint, byte, byte, byte, byte, float, float, float) public static extern void glReplacementCodeuiColor4ubVertex3fSUN(uint rc, byte r, byte g, byte b, byte a, float x, float y, float z) Parameters rc uint r byte g byte b byte a byte x float y float z float glReplacementCodeuiColor4ubVertex3fvSUN(uint*, byte*, float*) public static extern void glReplacementCodeuiColor4ubVertex3fvSUN(uint* rc, byte* c, float* v) Parameters rc uint* c byte* v float* glReplacementCodeuiNormal3fVertex3fSUN(uint, float, float, float, float, float, float) public static extern void glReplacementCodeuiNormal3fVertex3fSUN(uint rc, float nx, float ny, float nz, float x, float y, float z) Parameters rc uint nx float ny float nz float x float y float z float glReplacementCodeuiNormal3fVertex3fvSUN(uint*, float*, float*) public static extern void glReplacementCodeuiNormal3fVertex3fvSUN(uint* rc, float* n, float* v) Parameters rc uint* n float* v float* glReplacementCodeuiSUN(uint) public static extern void glReplacementCodeuiSUN(uint code) Parameters code uint glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(uint, float, float, float, float, float, float, float, float, float, float, float, float) public static extern void glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(uint rc, float s, float t, float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z) Parameters rc uint s float t float r float g float b float a float nx float ny float nz float x float y float z float glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(uint*, float*, float*, float*, float*) public static extern void glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(uint* rc, float* tc, float* c, float* n, float* v) Parameters rc uint* tc float* c float* n float* v float* glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(uint, float, float, float, float, float, float, float, float) public static extern void glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(uint rc, float s, float t, float nx, float ny, float nz, float x, float y, float z) Parameters rc uint s float t float nx float ny float nz float x float y float z float glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(uint*, float*, float*, float*) public static extern void glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(uint* rc, float* tc, float* n, float* v) Parameters rc uint* tc float* n float* v float* glReplacementCodeuiTexCoord2fVertex3fSUN(uint, float, float, float, float, float) public static extern void glReplacementCodeuiTexCoord2fVertex3fSUN(uint rc, float s, float t, float x, float y, float z) Parameters rc uint s float t float x float y float z float glReplacementCodeuiTexCoord2fVertex3fvSUN(uint*, float*, float*) public static extern void glReplacementCodeuiTexCoord2fVertex3fvSUN(uint* rc, float* tc, float* v) Parameters rc uint* tc float* v float* glReplacementCodeuiVertex3fSUN(uint, float, float, float) public static extern void glReplacementCodeuiVertex3fSUN(uint rc, float x, float y, float z) Parameters rc uint x float y float z float glReplacementCodeuiVertex3fvSUN(uint*, float*) public static extern void glReplacementCodeuiVertex3fvSUN(uint* rc, float* v) Parameters rc uint* v float* glReplacementCodeuivSUN(uint*) public static extern void glReplacementCodeuivSUN(uint* code) Parameters code uint* glReplacementCodeusSUN(ushort) public static extern void glReplacementCodeusSUN(ushort code) Parameters code ushort glReplacementCodeusvSUN(ushort*) public static extern void glReplacementCodeusvSUN(ushort* code) Parameters code ushort* glRequestResidentProgramsNV(int, uint*) public static extern void glRequestResidentProgramsNV(int n, uint* programs) Parameters n int programs uint* glResetHistogram(uint) public static extern void glResetHistogram(uint target) Parameters target uint glResetHistogramEXT(uint) public static extern void glResetHistogramEXT(uint target) Parameters target uint glResetMinmax(uint) public static extern void glResetMinmax(uint target) Parameters target uint glResetMinmaxEXT(uint) public static extern void glResetMinmaxEXT(uint target) Parameters target uint glResizeBuffersMESA() public static extern void glResizeBuffersMESA() glResumeTransformFeedback() public static extern void glResumeTransformFeedback() glResumeTransformFeedbackNV() public static extern void glResumeTransformFeedbackNV() glRotated(double, double, double, double) public static extern void glRotated(double angle, double x, double y, double z) Parameters angle double x double y double z double glRotatef(float, float, float, float) public static extern void glRotatef(float angle, float x, float y, float z) Parameters angle float x float y float z float glSampleCoverage(float, bool) public static extern void glSampleCoverage(float value, bool invert) Parameters value float invert bool glSampleCoverageARB(float, bool) public static extern void glSampleCoverageARB(float value, bool invert) Parameters value float invert bool glSampleMapATI(uint, uint, uint) public static extern void glSampleMapATI(uint dst, uint interp, uint swizzle) Parameters dst uint interp uint swizzle uint glSampleMaskEXT(float, bool) public static extern void glSampleMaskEXT(float value, bool invert) Parameters value float invert bool glSampleMaskIndexedNV(uint, uint) public static extern void glSampleMaskIndexedNV(uint index, uint mask) Parameters index uint mask uint glSampleMaskSGIS(float, bool) public static extern void glSampleMaskSGIS(float value, bool invert) Parameters value float invert bool glSampleMaski(uint, uint) public static extern void glSampleMaski(uint index, uint mask) Parameters index uint mask uint glSamplePatternEXT(uint) public static extern void glSamplePatternEXT(uint pattern) Parameters pattern uint glSamplePatternSGIS(uint) public static extern void glSamplePatternSGIS(uint pattern) Parameters pattern uint glSamplerParameterIiv(uint, uint, int*) public static extern void glSamplerParameterIiv(uint sampler, uint pname, int* param) Parameters sampler uint pname uint param int* glSamplerParameterIuiv(uint, uint, uint*) public static extern void glSamplerParameterIuiv(uint sampler, uint pname, uint* param) Parameters sampler uint pname uint param uint* glSamplerParameterf(uint, uint, float) public static extern void glSamplerParameterf(uint sampler, uint pname, float param) Parameters sampler uint pname uint param float glSamplerParameterfv(uint, uint, float*) public static extern void glSamplerParameterfv(uint sampler, uint pname, float* param) Parameters sampler uint pname uint param float* glSamplerParameteri(uint, uint, int) public static extern void glSamplerParameteri(uint sampler, uint pname, int param) Parameters sampler uint pname uint param int glSamplerParameteriv(uint, uint, int*) public static extern void glSamplerParameteriv(uint sampler, uint pname, int* param) Parameters sampler uint pname uint param int* glScaled(double, double, double) public static extern void glScaled(double x, double y, double z) Parameters x double y double z double glScalef(float, float, float) public static extern void glScalef(float x, float y, float z) Parameters x float y float z float glScissor(int, int, int, int) public static extern void glScissor(int x, int y, int width, int height) Parameters x int y int width int height int glScissorArrayv(uint, int, int*) public static extern void glScissorArrayv(uint first, int count, int* v) Parameters first uint count int v int* glScissorIndexed(uint, int, int, int, int) public static extern void glScissorIndexed(uint index, int left, int bottom, int width, int height) Parameters index uint left int bottom int width int height int glScissorIndexedv(uint, int*) public static extern void glScissorIndexedv(uint index, int* v) Parameters index uint v int* glSecondaryColor3b(sbyte, sbyte, sbyte) public static extern void glSecondaryColor3b(sbyte red, sbyte green, sbyte blue) Parameters red sbyte green sbyte blue sbyte glSecondaryColor3bEXT(sbyte, sbyte, sbyte) public static extern void glSecondaryColor3bEXT(sbyte red, sbyte green, sbyte blue) Parameters red sbyte green sbyte blue sbyte glSecondaryColor3bv(sbyte*) public static extern void glSecondaryColor3bv(sbyte* v) Parameters v sbyte* glSecondaryColor3bvEXT(sbyte*) public static extern void glSecondaryColor3bvEXT(sbyte* v) Parameters v sbyte* glSecondaryColor3d(double, double, double) public static extern void glSecondaryColor3d(double red, double green, double blue) Parameters red double green double blue double glSecondaryColor3dEXT(double, double, double) public static extern void glSecondaryColor3dEXT(double red, double green, double blue) Parameters red double green double blue double glSecondaryColor3dv(double*) public static extern void glSecondaryColor3dv(double* v) Parameters v double* glSecondaryColor3dvEXT(double*) public static extern void glSecondaryColor3dvEXT(double* v) Parameters v double* glSecondaryColor3f(float, float, float) public static extern void glSecondaryColor3f(float red, float green, float blue) Parameters red float green float blue float glSecondaryColor3fEXT(float, float, float) public static extern void glSecondaryColor3fEXT(float red, float green, float blue) Parameters red float green float blue float glSecondaryColor3fv(float*) public static extern void glSecondaryColor3fv(float* v) Parameters v float* glSecondaryColor3fvEXT(float*) public static extern void glSecondaryColor3fvEXT(float* v) Parameters v float* glSecondaryColor3hNV(ushort, ushort, ushort) public static extern void glSecondaryColor3hNV(ushort red, ushort green, ushort blue) Parameters red ushort green ushort blue ushort glSecondaryColor3hvNV(ushort*) public static extern void glSecondaryColor3hvNV(ushort* v) Parameters v ushort* glSecondaryColor3i(int, int, int) public static extern void glSecondaryColor3i(int red, int green, int blue) Parameters red int green int blue int glSecondaryColor3iEXT(int, int, int) public static extern void glSecondaryColor3iEXT(int red, int green, int blue) Parameters red int green int blue int glSecondaryColor3iv(int*) public static extern void glSecondaryColor3iv(int* v) Parameters v int* glSecondaryColor3ivEXT(int*) public static extern void glSecondaryColor3ivEXT(int* v) Parameters v int* glSecondaryColor3s(short, short, short) public static extern void glSecondaryColor3s(short red, short green, short blue) Parameters red short green short blue short glSecondaryColor3sEXT(short, short, short) public static extern void glSecondaryColor3sEXT(short red, short green, short blue) Parameters red short green short blue short glSecondaryColor3sv(short*) public static extern void glSecondaryColor3sv(short* v) Parameters v short* glSecondaryColor3svEXT(short*) public static extern void glSecondaryColor3svEXT(short* v) Parameters v short* glSecondaryColor3ub(byte, byte, byte) public static extern void glSecondaryColor3ub(byte red, byte green, byte blue) Parameters red byte green byte blue byte glSecondaryColor3ubEXT(byte, byte, byte) public static extern void glSecondaryColor3ubEXT(byte red, byte green, byte blue) Parameters red byte green byte blue byte glSecondaryColor3ubv(byte*) public static extern void glSecondaryColor3ubv(byte* v) Parameters v byte* glSecondaryColor3ubvEXT(byte*) public static extern void glSecondaryColor3ubvEXT(byte* v) Parameters v byte* glSecondaryColor3ui(uint, uint, uint) public static extern void glSecondaryColor3ui(uint red, uint green, uint blue) Parameters red uint green uint blue uint glSecondaryColor3uiEXT(uint, uint, uint) public static extern void glSecondaryColor3uiEXT(uint red, uint green, uint blue) Parameters red uint green uint blue uint glSecondaryColor3uiv(uint*) public static extern void glSecondaryColor3uiv(uint* v) Parameters v uint* glSecondaryColor3uivEXT(uint*) public static extern void glSecondaryColor3uivEXT(uint* v) Parameters v uint* glSecondaryColor3us(ushort, ushort, ushort) public static extern void glSecondaryColor3us(ushort red, ushort green, ushort blue) Parameters red ushort green ushort blue ushort glSecondaryColor3usEXT(ushort, ushort, ushort) public static extern void glSecondaryColor3usEXT(ushort red, ushort green, ushort blue) Parameters red ushort green ushort blue ushort glSecondaryColor3usv(ushort*) public static extern void glSecondaryColor3usv(ushort* v) Parameters v ushort* glSecondaryColor3usvEXT(ushort*) public static extern void glSecondaryColor3usvEXT(ushort* v) Parameters v ushort* glSecondaryColorFormatNV(int, uint, int) public static extern void glSecondaryColorFormatNV(int size, uint type, int stride) Parameters size int type uint stride int glSecondaryColorP3ui(uint, uint) public static extern void glSecondaryColorP3ui(uint type, uint color) Parameters type uint color uint glSecondaryColorP3uiv(uint, uint*) public static extern void glSecondaryColorP3uiv(uint type, uint* color) Parameters type uint color uint* glSecondaryColorPointer(int, uint, int, nint) public static extern void glSecondaryColorPointer(int size, uint type, int stride, nint pointer) Parameters size int type uint stride int pointer nint glSecondaryColorPointerEXT(int, uint, int, nint) public static extern void glSecondaryColorPointerEXT(int size, uint type, int stride, nint pointer) Parameters size int type uint stride int pointer nint glSecondaryColorPointerListIBM(int, uint, int, nint, int) public static extern void glSecondaryColorPointerListIBM(int size, uint type, int stride, nint pointer, int ptrstride) Parameters size int type uint stride int pointer nint ptrstride int glSelectBuffer(int, uint*) public static extern void glSelectBuffer(int size, uint* buffer) Parameters size int buffer uint* glSelectPerfMonitorCountersAMD(uint, bool, uint, int, uint*) public static extern void glSelectPerfMonitorCountersAMD(uint monitor, bool enable, uint group, int numCounters, uint* counterList) Parameters monitor uint enable bool group uint numCounters int counterList uint* glSeparableFilter2D(uint, uint, int, int, uint, uint, nint, nint) public static extern void glSeparableFilter2D(uint target, uint internalformat, int width, int height, uint format, uint type, nint row, nint column) Parameters target uint internalformat uint width int height int format uint type uint row nint column nint glSeparableFilter2DEXT(uint, uint, int, int, uint, uint, nint, nint) public static extern void glSeparableFilter2DEXT(uint target, uint internalformat, int width, int height, uint format, uint type, nint row, nint column) Parameters target uint internalformat uint width int height int format uint type uint row nint column nint glSetFenceAPPLE(uint) public static extern void glSetFenceAPPLE(uint fence) Parameters fence uint glSetFenceNV(uint, uint) public static extern void glSetFenceNV(uint fence, uint condition) Parameters fence uint condition uint glSetFragmentShaderConstantATI(uint, float*) public static extern void glSetFragmentShaderConstantATI(uint dst, float* value) Parameters dst uint value float* glSetInvariantEXT(uint, uint, nint) public static extern void glSetInvariantEXT(uint id, uint type, nint addr) Parameters id uint type uint addr nint glSetLocalConstantEXT(uint, uint, nint) public static extern void glSetLocalConstantEXT(uint id, uint type, nint addr) Parameters id uint type uint addr nint glSetMultisamplefvAMD(uint, uint, float*) public static extern void glSetMultisamplefvAMD(uint pname, uint index, float* val) Parameters pname uint index uint val float* glShadeModel(uint) public static extern void glShadeModel(uint mode) Parameters mode uint glShaderBinary(int, uint*, uint, nint, int) public static extern void glShaderBinary(int count, uint* shaders, uint binaryformat, nint binary, int length) Parameters count int shaders uint* binaryformat uint binary nint length int glShaderOp1EXT(uint, uint, uint) public static extern void glShaderOp1EXT(uint op, uint res, uint arg1) Parameters op uint res uint arg1 uint glShaderOp2EXT(uint, uint, uint, uint) public static extern void glShaderOp2EXT(uint op, uint res, uint arg1, uint arg2) Parameters op uint res uint arg1 uint arg2 uint glShaderOp3EXT(uint, uint, uint, uint, uint) public static extern void glShaderOp3EXT(uint op, uint res, uint arg1, uint arg2, uint arg3) Parameters op uint res uint arg1 uint arg2 uint arg3 uint glShaderSource(uint, int, string[], int*) public static extern void glShaderSource(uint shader, int count, string[] @string, int* length) Parameters shader uint count int string string[] length int* glShaderSourceARB(uint, int, string[], int*) public static extern void glShaderSourceARB(uint shaderObj, int count, string[] @string, int* length) Parameters shaderObj uint count int string string[] length int* glSharpenTexFuncSGIS(uint, int, float*) public static extern void glSharpenTexFuncSGIS(uint target, int n, float* points) Parameters target uint n int points float* glSpriteParameterfSGIX(uint, float) public static extern void glSpriteParameterfSGIX(uint pname, float param) Parameters pname uint param float glSpriteParameterfvSGIX(uint, float*) public static extern void glSpriteParameterfvSGIX(uint pname, float* @params) Parameters pname uint params float* glSpriteParameteriSGIX(uint, int) public static extern void glSpriteParameteriSGIX(uint pname, int param) Parameters pname uint param int glSpriteParameterivSGIX(uint, int*) public static extern void glSpriteParameterivSGIX(uint pname, int* @params) Parameters pname uint params int* glStartInstrumentsSGIX() public static extern void glStartInstrumentsSGIX() glStencilClearTagEXT(int, uint) public static extern void glStencilClearTagEXT(int stencilTagBits, uint stencilClearTag) Parameters stencilTagBits int stencilClearTag uint glStencilFunc(uint, int, uint) public static extern void glStencilFunc(uint func, int @ref, uint mask) Parameters func uint ref int mask uint glStencilFuncSeparate(uint, uint, int, uint) public static extern void glStencilFuncSeparate(uint face, uint func, int @ref, uint mask) Parameters face uint func uint ref int mask uint glStencilFuncSeparateATI(uint, uint, int, uint) public static extern void glStencilFuncSeparateATI(uint frontfunc, uint backfunc, int @ref, uint mask) Parameters frontfunc uint backfunc uint ref int mask uint glStencilMask(uint) public static extern void glStencilMask(uint mask) Parameters mask uint glStencilMaskSeparate(uint, uint) public static extern void glStencilMaskSeparate(uint face, uint mask) Parameters face uint mask uint glStencilOp(uint, uint, uint) public static extern void glStencilOp(uint fail, uint zfail, uint zpass) Parameters fail uint zfail uint zpass uint glStencilOpSeparate(uint, uint, uint, uint) public static extern void glStencilOpSeparate(uint face, uint sfail, uint dpfail, uint dppass) Parameters face uint sfail uint dpfail uint dppass uint glStencilOpSeparateATI(uint, uint, uint, uint) public static extern void glStencilOpSeparateATI(uint face, uint sfail, uint dpfail, uint dppass) Parameters face uint sfail uint dpfail uint dppass uint glStopInstrumentsSGIX(int) public static extern void glStopInstrumentsSGIX(int marker) Parameters marker int glStringMarkerGREMEDY(int, nint) public static extern void glStringMarkerGREMEDY(int len, nint @string) Parameters len int string nint glSwizzleEXT(uint, uint, uint, uint, uint, uint) public static extern void glSwizzleEXT(uint res, uint @in, uint outX, uint outY, uint outZ, uint outW) Parameters res uint in uint outX uint outY uint outZ uint outW uint glTagSampleBufferSGIX() public static extern void glTagSampleBufferSGIX() glTangent3bEXT(sbyte, sbyte, sbyte) public static extern void glTangent3bEXT(sbyte tx, sbyte ty, sbyte tz) Parameters tx sbyte ty sbyte tz sbyte glTangent3bvEXT(sbyte*) public static extern void glTangent3bvEXT(sbyte* v) Parameters v sbyte* glTangent3dEXT(double, double, double) public static extern void glTangent3dEXT(double tx, double ty, double tz) Parameters tx double ty double tz double glTangent3dvEXT(double*) public static extern void glTangent3dvEXT(double* v) Parameters v double* glTangent3fEXT(float, float, float) public static extern void glTangent3fEXT(float tx, float ty, float tz) Parameters tx float ty float tz float glTangent3fvEXT(float*) public static extern void glTangent3fvEXT(float* v) Parameters v float* glTangent3iEXT(int, int, int) public static extern void glTangent3iEXT(int tx, int ty, int tz) Parameters tx int ty int tz int glTangent3ivEXT(int*) public static extern void glTangent3ivEXT(int* v) Parameters v int* glTangent3sEXT(short, short, short) public static extern void glTangent3sEXT(short tx, short ty, short tz) Parameters tx short ty short tz short glTangent3svEXT(short*) public static extern void glTangent3svEXT(short* v) Parameters v short* glTangentPointerEXT(uint, int, nint) public static extern void glTangentPointerEXT(uint type, int stride, nint pointer) Parameters type uint stride int pointer nint glTbufferMask3DFX(uint) public static extern void glTbufferMask3DFX(uint mask) Parameters mask uint glTessellationFactorAMD(float) public static extern void glTessellationFactorAMD(float factor) Parameters factor float glTessellationModeAMD(uint) public static extern void glTessellationModeAMD(uint mode) Parameters mode uint glTestFenceAPPLE(uint) public static extern int glTestFenceAPPLE(uint fence) Parameters fence uint Returns int glTestFenceNV(uint) public static extern int glTestFenceNV(uint fence) Parameters fence uint Returns int glTestObjectAPPLE(uint, uint) public static extern int glTestObjectAPPLE(uint @object, uint name) Parameters object uint name uint Returns int glTexBuffer(uint, uint, uint) public static extern void glTexBuffer(uint target, uint internalformat, uint buffer) Parameters target uint internalformat uint buffer uint glTexBufferARB(uint, uint, uint) public static extern void glTexBufferARB(uint target, uint internalformat, uint buffer) Parameters target uint internalformat uint buffer uint glTexBufferEXT(uint, uint, uint) public static extern void glTexBufferEXT(uint target, uint internalformat, uint buffer) Parameters target uint internalformat uint buffer uint glTexBumpParameterfvATI(uint, float*) public static extern void glTexBumpParameterfvATI(uint pname, float* param) Parameters pname uint param float* glTexBumpParameterivATI(uint, int*) public static extern void glTexBumpParameterivATI(uint pname, int* param) Parameters pname uint param int* glTexCoord1d(double) public static extern void glTexCoord1d(double s) Parameters s double glTexCoord1dv(double*) public static extern void glTexCoord1dv(double* v) Parameters v double* glTexCoord1f(float) public static extern void glTexCoord1f(float s) Parameters s float glTexCoord1fv(float*) public static extern void glTexCoord1fv(float* v) Parameters v float* glTexCoord1hNV(ushort) public static extern void glTexCoord1hNV(ushort s) Parameters s ushort glTexCoord1hvNV(ushort*) public static extern void glTexCoord1hvNV(ushort* v) Parameters v ushort* glTexCoord1i(int) public static extern void glTexCoord1i(int s) Parameters s int glTexCoord1iv(int*) public static extern void glTexCoord1iv(int* v) Parameters v int* glTexCoord1s(short) public static extern void glTexCoord1s(short s) Parameters s short glTexCoord1sv(short*) public static extern void glTexCoord1sv(short* v) Parameters v short* glTexCoord2d(double, double) public static extern void glTexCoord2d(double s, double t) Parameters s double t double glTexCoord2dv(double*) public static extern void glTexCoord2dv(double* v) Parameters v double* glTexCoord2f(float, float) public static extern void glTexCoord2f(float s, float t) Parameters s float t float glTexCoord2fColor3fVertex3fSUN(float, float, float, float, float, float, float, float) public static extern void glTexCoord2fColor3fVertex3fSUN(float s, float t, float r, float g, float b, float x, float y, float z) Parameters s float t float r float g float b float x float y float z float glTexCoord2fColor3fVertex3fvSUN(float*, float*, float*) public static extern void glTexCoord2fColor3fVertex3fvSUN(float* tc, float* c, float* v) Parameters tc float* c float* v float* glTexCoord2fColor4fNormal3fVertex3fSUN(float, float, float, float, float, float, float, float, float, float, float, float) public static extern void glTexCoord2fColor4fNormal3fVertex3fSUN(float s, float t, float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z) Parameters s float t float r float g float b float a float nx float ny float nz float x float y float z float glTexCoord2fColor4fNormal3fVertex3fvSUN(float*, float*, float*, float*) public static extern void glTexCoord2fColor4fNormal3fVertex3fvSUN(float* tc, float* c, float* n, float* v) Parameters tc float* c float* n float* v float* glTexCoord2fColor4ubVertex3fSUN(float, float, byte, byte, byte, byte, float, float, float) public static extern void glTexCoord2fColor4ubVertex3fSUN(float s, float t, byte r, byte g, byte b, byte a, float x, float y, float z) Parameters s float t float r byte g byte b byte a byte x float y float z float glTexCoord2fColor4ubVertex3fvSUN(float*, byte*, float*) public static extern void glTexCoord2fColor4ubVertex3fvSUN(float* tc, byte* c, float* v) Parameters tc float* c byte* v float* glTexCoord2fNormal3fVertex3fSUN(float, float, float, float, float, float, float, float) public static extern void glTexCoord2fNormal3fVertex3fSUN(float s, float t, float nx, float ny, float nz, float x, float y, float z) Parameters s float t float nx float ny float nz float x float y float z float glTexCoord2fNormal3fVertex3fvSUN(float*, float*, float*) public static extern void glTexCoord2fNormal3fVertex3fvSUN(float* tc, float* n, float* v) Parameters tc float* n float* v float* glTexCoord2fVertex3fSUN(float, float, float, float, float) public static extern void glTexCoord2fVertex3fSUN(float s, float t, float x, float y, float z) Parameters s float t float x float y float z float glTexCoord2fVertex3fvSUN(float*, float*) public static extern void glTexCoord2fVertex3fvSUN(float* tc, float* v) Parameters tc float* v float* glTexCoord2fv(float*) public static extern void glTexCoord2fv(float* v) Parameters v float* glTexCoord2hNV(ushort, ushort) public static extern void glTexCoord2hNV(ushort s, ushort t) Parameters s ushort t ushort glTexCoord2hvNV(ushort*) public static extern void glTexCoord2hvNV(ushort* v) Parameters v ushort* glTexCoord2i(int, int) public static extern void glTexCoord2i(int s, int t) Parameters s int t int glTexCoord2iv(int*) public static extern void glTexCoord2iv(int* v) Parameters v int* glTexCoord2s(short, short) public static extern void glTexCoord2s(short s, short t) Parameters s short t short glTexCoord2sv(short*) public static extern void glTexCoord2sv(short* v) Parameters v short* glTexCoord3d(double, double, double) public static extern void glTexCoord3d(double s, double t, double r) Parameters s double t double r double glTexCoord3dv(double*) public static extern void glTexCoord3dv(double* v) Parameters v double* glTexCoord3f(float, float, float) public static extern void glTexCoord3f(float s, float t, float r) Parameters s float t float r float glTexCoord3fv(float*) public static extern void glTexCoord3fv(float* v) Parameters v float* glTexCoord3hNV(ushort, ushort, ushort) public static extern void glTexCoord3hNV(ushort s, ushort t, ushort r) Parameters s ushort t ushort r ushort glTexCoord3hvNV(ushort*) public static extern void glTexCoord3hvNV(ushort* v) Parameters v ushort* glTexCoord3i(int, int, int) public static extern void glTexCoord3i(int s, int t, int r) Parameters s int t int r int glTexCoord3iv(int*) public static extern void glTexCoord3iv(int* v) Parameters v int* glTexCoord3s(short, short, short) public static extern void glTexCoord3s(short s, short t, short r) Parameters s short t short r short glTexCoord3sv(short*) public static extern void glTexCoord3sv(short* v) Parameters v short* glTexCoord4d(double, double, double, double) public static extern void glTexCoord4d(double s, double t, double r, double q) Parameters s double t double r double q double glTexCoord4dv(double*) public static extern void glTexCoord4dv(double* v) Parameters v double* glTexCoord4f(float, float, float, float) public static extern void glTexCoord4f(float s, float t, float r, float q) Parameters s float t float r float q float glTexCoord4fColor4fNormal3fVertex4fSUN(float, float, float, float, float, float, float, float, float, float, float, float, float, float, float) public static extern void glTexCoord4fColor4fNormal3fVertex4fSUN(float s, float t, float p, float q, float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z, float w) Parameters s float t float p float q float r float g float b float a float nx float ny float nz float x float y float z float w float glTexCoord4fColor4fNormal3fVertex4fvSUN(float*, float*, float*, float*) public static extern void glTexCoord4fColor4fNormal3fVertex4fvSUN(float* tc, float* c, float* n, float* v) Parameters tc float* c float* n float* v float* glTexCoord4fVertex4fSUN(float, float, float, float, float, float, float, float) public static extern void glTexCoord4fVertex4fSUN(float s, float t, float p, float q, float x, float y, float z, float w) Parameters s float t float p float q float x float y float z float w float glTexCoord4fVertex4fvSUN(float*, float*) public static extern void glTexCoord4fVertex4fvSUN(float* tc, float* v) Parameters tc float* v float* glTexCoord4fv(float*) public static extern void glTexCoord4fv(float* v) Parameters v float* glTexCoord4hNV(ushort, ushort, ushort, ushort) public static extern void glTexCoord4hNV(ushort s, ushort t, ushort r, ushort q) Parameters s ushort t ushort r ushort q ushort glTexCoord4hvNV(ushort*) public static extern void glTexCoord4hvNV(ushort* v) Parameters v ushort* glTexCoord4i(int, int, int, int) public static extern void glTexCoord4i(int s, int t, int r, int q) Parameters s int t int r int q int glTexCoord4iv(int*) public static extern void glTexCoord4iv(int* v) Parameters v int* glTexCoord4s(short, short, short, short) public static extern void glTexCoord4s(short s, short t, short r, short q) Parameters s short t short r short q short glTexCoord4sv(short*) public static extern void glTexCoord4sv(short* v) Parameters v short* glTexCoordFormatNV(int, uint, int) public static extern void glTexCoordFormatNV(int size, uint type, int stride) Parameters size int type uint stride int glTexCoordP1ui(uint, uint) public static extern void glTexCoordP1ui(uint type, uint coords) Parameters type uint coords uint glTexCoordP1uiv(uint, uint*) public static extern void glTexCoordP1uiv(uint type, uint* coords) Parameters type uint coords uint* glTexCoordP2ui(uint, uint) public static extern void glTexCoordP2ui(uint type, uint coords) Parameters type uint coords uint glTexCoordP2uiv(uint, uint*) public static extern void glTexCoordP2uiv(uint type, uint* coords) Parameters type uint coords uint* glTexCoordP3ui(uint, uint) public static extern void glTexCoordP3ui(uint type, uint coords) Parameters type uint coords uint glTexCoordP3uiv(uint, uint*) public static extern void glTexCoordP3uiv(uint type, uint* coords) Parameters type uint coords uint* glTexCoordP4ui(uint, uint) public static extern void glTexCoordP4ui(uint type, uint coords) Parameters type uint coords uint glTexCoordP4uiv(uint, uint*) public static extern void glTexCoordP4uiv(uint type, uint* coords) Parameters type uint coords uint* glTexCoordPointer(int, uint, int, nint) public static extern void glTexCoordPointer(int size, uint type, int stride, nint pointer) Parameters size int type uint stride int pointer nint glTexCoordPointerEXT(int, uint, int, int, nint) public static extern void glTexCoordPointerEXT(int size, uint type, int stride, int count, nint pointer) Parameters size int type uint stride int count int pointer nint glTexCoordPointerListIBM(int, uint, int, nint, int) public static extern void glTexCoordPointerListIBM(int size, uint type, int stride, nint pointer, int ptrstride) Parameters size int type uint stride int pointer nint ptrstride int glTexCoordPointervINTEL(int, uint, nint) public static extern void glTexCoordPointervINTEL(int size, uint type, nint pointer) Parameters size int type uint pointer nint glTexEnvf(uint, uint, float) public static extern void glTexEnvf(uint target, uint pname, float param) Parameters target uint pname uint param float glTexEnvfv(uint, uint, float*) public static extern void glTexEnvfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glTexEnvi(uint, uint, int) public static extern void glTexEnvi(uint target, uint pname, int param) Parameters target uint pname uint param int glTexEnviv(uint, uint, int*) public static extern void glTexEnviv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glTexFilterFuncSGIS(uint, uint, int, float*) public static extern void glTexFilterFuncSGIS(uint target, uint filter, int n, float* weights) Parameters target uint filter uint n int weights float* glTexGend(uint, uint, double) public static extern void glTexGend(uint coord, uint pname, double param) Parameters coord uint pname uint param double glTexGendv(uint, uint, double*) public static extern void glTexGendv(uint coord, uint pname, double* @params) Parameters coord uint pname uint params double* glTexGenf(uint, uint, float) public static extern void glTexGenf(uint coord, uint pname, float param) Parameters coord uint pname uint param float glTexGenfv(uint, uint, float*) public static extern void glTexGenfv(uint coord, uint pname, float* @params) Parameters coord uint pname uint params float* glTexGeni(uint, uint, int) public static extern void glTexGeni(uint coord, uint pname, int param) Parameters coord uint pname uint param int glTexGeniv(uint, uint, int*) public static extern void glTexGeniv(uint coord, uint pname, int* @params) Parameters coord uint pname uint params int* glTexImage1D(uint, int, uint, int, int, uint, uint, nint) public static extern void glTexImage1D(uint target, int level, uint internalformat, int width, int border, uint format, uint type, nint pixels) Parameters target uint level int internalformat uint width int border int format uint type uint pixels nint glTexImage2D(uint, int, uint, int, int, int, uint, uint, nint) public static extern void glTexImage2D(uint target, int level, uint internalformat, int width, int height, int border, uint format, uint type, nint pixels) Parameters target uint level int internalformat uint width int height int border int format uint type uint pixels nint glTexImage2DMultisample(uint, int, uint, int, int, bool) public static extern void glTexImage2DMultisample(uint target, int samples, uint internalformat, int width, int height, bool fixedsamplelocations) Parameters target uint samples int internalformat uint width int height int fixedsamplelocations bool glTexImage2DMultisampleCoverageNV(uint, int, int, int, int, int, bool) public static extern void glTexImage2DMultisampleCoverageNV(uint target, int coverageSamples, int colorSamples, int internalFormat, int width, int height, bool fixedSampleLocations) Parameters target uint coverageSamples int colorSamples int internalFormat int width int height int fixedSampleLocations bool glTexImage3D(uint, int, uint, int, int, int, int, uint, uint, nint) public static extern void glTexImage3D(uint target, int level, uint internalformat, int width, int height, int depth, int border, uint format, uint type, nint pixels) Parameters target uint level int internalformat uint width int height int depth int border int format uint type uint pixels nint glTexImage3DEXT(uint, int, uint, int, int, int, int, uint, uint, nint) public static extern void glTexImage3DEXT(uint target, int level, uint internalformat, int width, int height, int depth, int border, uint format, uint type, nint pixels) Parameters target uint level int internalformat uint width int height int depth int border int format uint type uint pixels nint glTexImage3DMultisample(uint, int, uint, int, int, int, bool) public static extern void glTexImage3DMultisample(uint target, int samples, uint internalformat, int width, int height, int depth, bool fixedsamplelocations) Parameters target uint samples int internalformat uint width int height int depth int fixedsamplelocations bool glTexImage3DMultisampleCoverageNV(uint, int, int, int, int, int, int, bool) public static extern void glTexImage3DMultisampleCoverageNV(uint target, int coverageSamples, int colorSamples, int internalFormat, int width, int height, int depth, bool fixedSampleLocations) Parameters target uint coverageSamples int colorSamples int internalFormat int width int height int depth int fixedSampleLocations bool glTexImage4DSGIS(uint, int, uint, int, int, int, int, int, uint, uint, nint) public static extern void glTexImage4DSGIS(uint target, int level, uint internalformat, int width, int height, int depth, int size4d, int border, uint format, uint type, nint pixels) Parameters target uint level int internalformat uint width int height int depth int size4d int border int format uint type uint pixels nint glTexParameterIiv(uint, uint, int*) public static extern void glTexParameterIiv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glTexParameterIivEXT(uint, uint, int*) public static extern void glTexParameterIivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glTexParameterIuiv(uint, uint, uint*) public static extern void glTexParameterIuiv(uint target, uint pname, uint* @params) Parameters target uint pname uint params uint* glTexParameterIuivEXT(uint, uint, uint*) public static extern void glTexParameterIuivEXT(uint target, uint pname, uint* @params) Parameters target uint pname uint params uint* glTexParameterf(uint, uint, float) public static extern void glTexParameterf(uint target, uint pname, float param) Parameters target uint pname uint param float glTexParameterfv(uint, uint, float*) public static extern void glTexParameterfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glTexParameteri(uint, uint, int) public static extern void glTexParameteri(uint target, uint pname, int param) Parameters target uint pname uint param int glTexParameteriv(uint, uint, int*) public static extern void glTexParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glTexRenderbufferNV(uint, uint) public static extern void glTexRenderbufferNV(uint target, uint renderbuffer) Parameters target uint renderbuffer uint glTexSubImage1D(uint, int, int, int, uint, uint, nint) public static extern void glTexSubImage1D(uint target, int level, int xoffset, int width, uint format, uint type, nint pixels) Parameters target uint level int xoffset int width int format uint type uint pixels nint glTexSubImage1DEXT(uint, int, int, int, uint, uint, nint) public static extern void glTexSubImage1DEXT(uint target, int level, int xoffset, int width, uint format, uint type, nint pixels) Parameters target uint level int xoffset int width int format uint type uint pixels nint glTexSubImage2D(uint, int, int, int, int, int, uint, uint, nint) public static extern void glTexSubImage2D(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, nint pixels) Parameters target uint level int xoffset int yoffset int width int height int format uint type uint pixels nint glTexSubImage2DEXT(uint, int, int, int, int, int, uint, uint, nint) public static extern void glTexSubImage2DEXT(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, nint pixels) Parameters target uint level int xoffset int yoffset int width int height int format uint type uint pixels nint glTexSubImage3D(uint, int, int, int, int, int, int, int, uint, uint, nint) public static extern void glTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, nint pixels) Parameters target uint level int xoffset int yoffset int zoffset int width int height int depth int format uint type uint pixels nint glTexSubImage3DEXT(uint, int, int, int, int, int, int, int, uint, uint, nint) public static extern void glTexSubImage3DEXT(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, nint pixels) Parameters target uint level int xoffset int yoffset int zoffset int width int height int depth int format uint type uint pixels nint glTexSubImage4DSGIS(uint, int, int, int, int, int, int, int, int, int, uint, uint, nint) public static extern void glTexSubImage4DSGIS(uint target, int level, int xoffset, int yoffset, int zoffset, int woffset, int width, int height, int depth, int size4d, uint format, uint type, nint pixels) Parameters target uint level int xoffset int yoffset int zoffset int woffset int width int height int depth int size4d int format uint type uint pixels nint glTextureBarrierNV() public static extern void glTextureBarrierNV() glTextureBufferEXT(uint, uint, uint, uint) public static extern void glTextureBufferEXT(uint texture, uint target, uint internalformat, uint buffer) Parameters texture uint target uint internalformat uint buffer uint glTextureColorMaskSGIS(bool, bool, bool, bool) public static extern void glTextureColorMaskSGIS(bool red, bool green, bool blue, bool alpha) Parameters red bool green bool blue bool alpha bool glTextureImage1DEXT(uint, uint, int, uint, int, int, uint, uint, nint) public static extern void glTextureImage1DEXT(uint texture, uint target, int level, uint internalformat, int width, int border, uint format, uint type, nint pixels) Parameters texture uint target uint level int internalformat uint width int border int format uint type uint pixels nint glTextureImage2DEXT(uint, uint, int, uint, int, int, int, uint, uint, nint) public static extern void glTextureImage2DEXT(uint texture, uint target, int level, uint internalformat, int width, int height, int border, uint format, uint type, nint pixels) Parameters texture uint target uint level int internalformat uint width int height int border int format uint type uint pixels nint glTextureImage2DMultisampleCoverageNV(uint, uint, int, int, int, int, int, bool) public static extern void glTextureImage2DMultisampleCoverageNV(uint texture, uint target, int coverageSamples, int colorSamples, int internalFormat, int width, int height, bool fixedSampleLocations) Parameters texture uint target uint coverageSamples int colorSamples int internalFormat int width int height int fixedSampleLocations bool glTextureImage2DMultisampleNV(uint, uint, int, int, int, int, bool) public static extern void glTextureImage2DMultisampleNV(uint texture, uint target, int samples, int internalFormat, int width, int height, bool fixedSampleLocations) Parameters texture uint target uint samples int internalFormat int width int height int fixedSampleLocations bool glTextureImage3DEXT(uint, uint, int, uint, int, int, int, int, uint, uint, nint) public static extern void glTextureImage3DEXT(uint texture, uint target, int level, uint internalformat, int width, int height, int depth, int border, uint format, uint type, nint pixels) Parameters texture uint target uint level int internalformat uint width int height int depth int border int format uint type uint pixels nint glTextureImage3DMultisampleCoverageNV(uint, uint, int, int, int, int, int, int, bool) public static extern void glTextureImage3DMultisampleCoverageNV(uint texture, uint target, int coverageSamples, int colorSamples, int internalFormat, int width, int height, int depth, bool fixedSampleLocations) Parameters texture uint target uint coverageSamples int colorSamples int internalFormat int width int height int depth int fixedSampleLocations bool glTextureImage3DMultisampleNV(uint, uint, int, int, int, int, int, bool) public static extern void glTextureImage3DMultisampleNV(uint texture, uint target, int samples, int internalFormat, int width, int height, int depth, bool fixedSampleLocations) Parameters texture uint target uint samples int internalFormat int width int height int depth int fixedSampleLocations bool glTextureLightEXT(uint) public static extern void glTextureLightEXT(uint pname) Parameters pname uint glTextureMaterialEXT(uint, uint) public static extern void glTextureMaterialEXT(uint face, uint mode) Parameters face uint mode uint glTextureNormalEXT(uint) public static extern void glTextureNormalEXT(uint mode) Parameters mode uint glTextureParameterIivEXT(uint, uint, uint, int*) public static extern void glTextureParameterIivEXT(uint texture, uint target, uint pname, int* @params) Parameters texture uint target uint pname uint params int* glTextureParameterIuivEXT(uint, uint, uint, uint*) public static extern void glTextureParameterIuivEXT(uint texture, uint target, uint pname, uint* @params) Parameters texture uint target uint pname uint params uint* glTextureParameterfEXT(uint, uint, uint, float) public static extern void glTextureParameterfEXT(uint texture, uint target, uint pname, float param) Parameters texture uint target uint pname uint param float glTextureParameterfvEXT(uint, uint, uint, float*) public static extern void glTextureParameterfvEXT(uint texture, uint target, uint pname, float* @params) Parameters texture uint target uint pname uint params float* glTextureParameteriEXT(uint, uint, uint, int) public static extern void glTextureParameteriEXT(uint texture, uint target, uint pname, int param) Parameters texture uint target uint pname uint param int glTextureParameterivEXT(uint, uint, uint, int*) public static extern void glTextureParameterivEXT(uint texture, uint target, uint pname, int* @params) Parameters texture uint target uint pname uint params int* glTextureRangeAPPLE(uint, int, nint) public static extern void glTextureRangeAPPLE(uint target, int length, nint pointer) Parameters target uint length int pointer nint glTextureRenderbufferEXT(uint, uint, uint) public static extern void glTextureRenderbufferEXT(uint texture, uint target, uint renderbuffer) Parameters texture uint target uint renderbuffer uint glTextureSubImage1DEXT(uint, uint, int, int, int, uint, uint, nint) public static extern void glTextureSubImage1DEXT(uint texture, uint target, int level, int xoffset, int width, uint format, uint type, nint pixels) Parameters texture uint target uint level int xoffset int width int format uint type uint pixels nint glTextureSubImage2DEXT(uint, uint, int, int, int, int, int, uint, uint, nint) public static extern void glTextureSubImage2DEXT(uint texture, uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, nint pixels) Parameters texture uint target uint level int xoffset int yoffset int width int height int format uint type uint pixels nint glTextureSubImage3DEXT(uint, uint, int, int, int, int, int, int, int, uint, uint, nint) public static extern void glTextureSubImage3DEXT(uint texture, uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, nint pixels) Parameters texture uint target uint level int xoffset int yoffset int zoffset int width int height int depth int format uint type uint pixels nint glTrackMatrixNV(uint, uint, uint, uint) public static extern void glTrackMatrixNV(uint target, uint address, uint matrix, uint transform) Parameters target uint address uint matrix uint transform uint glTransformFeedbackAttribsNV(uint, int*, uint) public static extern void glTransformFeedbackAttribsNV(uint count, int* attribs, uint bufferMode) Parameters count uint attribs int* bufferMode uint glTransformFeedbackStreamAttribsNV(int, int*, int, int*, uint) public static extern void glTransformFeedbackStreamAttribsNV(int count, int* attribs, int nbuffers, int* bufstreams, uint bufferMode) Parameters count int attribs int* nbuffers int bufstreams int* bufferMode uint glTransformFeedbackVaryings(uint, int, string[], uint) public static extern void glTransformFeedbackVaryings(uint program, int count, string[] varyings, uint bufferMode) Parameters program uint count int varyings string[] bufferMode uint glTransformFeedbackVaryingsEXT(uint, int, string[], uint) public static extern void glTransformFeedbackVaryingsEXT(uint program, int count, string[] varyings, uint bufferMode) Parameters program uint count int varyings string[] bufferMode uint glTransformFeedbackVaryingsNV(uint, int, int*, uint) public static extern void glTransformFeedbackVaryingsNV(uint program, int count, int* locations, uint bufferMode) Parameters program uint count int locations int* bufferMode uint glTranslated(double, double, double) public static extern void glTranslated(double x, double y, double z) Parameters x double y double z double glTranslatef(float, float, float) public static extern void glTranslatef(float x, float y, float z) Parameters x float y float z float glUniform1d(int, double) public static extern void glUniform1d(int location, double x) Parameters location int x double glUniform1dv(int, int, double*) public static extern void glUniform1dv(int location, int count, double* value) Parameters location int count int value double* glUniform1f(int, float) public static extern void glUniform1f(int location, float v0) Parameters location int v0 float glUniform1fARB(int, float) public static extern void glUniform1fARB(int location, float v0) Parameters location int v0 float glUniform1fv(int, int, float*) public static extern void glUniform1fv(int location, int count, float* value) Parameters location int count int value float* glUniform1fvARB(int, int, float*) public static extern void glUniform1fvARB(int location, int count, float* value) Parameters location int count int value float* glUniform1i(int, int) public static extern void glUniform1i(int location, int v0) Parameters location int v0 int glUniform1i64NV(int, long) public static extern void glUniform1i64NV(int location, long x) Parameters location int x long glUniform1i64vNV(int, int, long*) public static extern void glUniform1i64vNV(int location, int count, long* value) Parameters location int count int value long* glUniform1iARB(int, int) public static extern void glUniform1iARB(int location, int v0) Parameters location int v0 int glUniform1iv(int, int, int*) public static extern void glUniform1iv(int location, int count, int* value) Parameters location int count int value int* glUniform1ivARB(int, int, int*) public static extern void glUniform1ivARB(int location, int count, int* value) Parameters location int count int value int* glUniform1ui(int, uint) public static extern void glUniform1ui(int location, uint v0) Parameters location int v0 uint glUniform1ui64NV(int, ulong) public static extern void glUniform1ui64NV(int location, ulong x) Parameters location int x ulong glUniform1ui64vNV(int, int, ulong*) public static extern void glUniform1ui64vNV(int location, int count, ulong* value) Parameters location int count int value ulong* glUniform1uiEXT(int, uint) public static extern void glUniform1uiEXT(int location, uint v0) Parameters location int v0 uint glUniform1uiv(int, int, uint*) public static extern void glUniform1uiv(int location, int count, uint* value) Parameters location int count int value uint* glUniform1uivEXT(int, int, uint*) public static extern void glUniform1uivEXT(int location, int count, uint* value) Parameters location int count int value uint* glUniform2d(int, double, double) public static extern void glUniform2d(int location, double x, double y) Parameters location int x double y double glUniform2dv(int, int, double*) public static extern void glUniform2dv(int location, int count, double* value) Parameters location int count int value double* glUniform2f(int, float, float) public static extern void glUniform2f(int location, float v0, float v1) Parameters location int v0 float v1 float glUniform2fARB(int, float, float) public static extern void glUniform2fARB(int location, float v0, float v1) Parameters location int v0 float v1 float glUniform2fv(int, int, float*) public static extern void glUniform2fv(int location, int count, float* value) Parameters location int count int value float* glUniform2fvARB(int, int, float*) public static extern void glUniform2fvARB(int location, int count, float* value) Parameters location int count int value float* glUniform2i(int, int, int) public static extern void glUniform2i(int location, int v0, int v1) Parameters location int v0 int v1 int glUniform2i64NV(int, long, long) public static extern void glUniform2i64NV(int location, long x, long y) Parameters location int x long y long glUniform2i64vNV(int, int, long*) public static extern void glUniform2i64vNV(int location, int count, long* value) Parameters location int count int value long* glUniform2iARB(int, int, int) public static extern void glUniform2iARB(int location, int v0, int v1) Parameters location int v0 int v1 int glUniform2iv(int, int, int*) public static extern void glUniform2iv(int location, int count, int* value) Parameters location int count int value int* glUniform2ivARB(int, int, int*) public static extern void glUniform2ivARB(int location, int count, int* value) Parameters location int count int value int* glUniform2ui(int, uint, uint) public static extern void glUniform2ui(int location, uint v0, uint v1) Parameters location int v0 uint v1 uint glUniform2ui64NV(int, ulong, ulong) public static extern void glUniform2ui64NV(int location, ulong x, ulong y) Parameters location int x ulong y ulong glUniform2ui64vNV(int, int, ulong*) public static extern void glUniform2ui64vNV(int location, int count, ulong* value) Parameters location int count int value ulong* glUniform2uiEXT(int, uint, uint) public static extern void glUniform2uiEXT(int location, uint v0, uint v1) Parameters location int v0 uint v1 uint glUniform2uiv(int, int, uint*) public static extern void glUniform2uiv(int location, int count, uint* value) Parameters location int count int value uint* glUniform2uivEXT(int, int, uint*) public static extern void glUniform2uivEXT(int location, int count, uint* value) Parameters location int count int value uint* glUniform3d(int, double, double, double) public static extern void glUniform3d(int location, double x, double y, double z) Parameters location int x double y double z double glUniform3dv(int, int, double*) public static extern void glUniform3dv(int location, int count, double* value) Parameters location int count int value double* glUniform3f(int, float, float, float) public static extern void glUniform3f(int location, float v0, float v1, float v2) Parameters location int v0 float v1 float v2 float glUniform3fARB(int, float, float, float) public static extern void glUniform3fARB(int location, float v0, float v1, float v2) Parameters location int v0 float v1 float v2 float glUniform3fv(int, int, float*) public static extern void glUniform3fv(int location, int count, float* value) Parameters location int count int value float* glUniform3fvARB(int, int, float*) public static extern void glUniform3fvARB(int location, int count, float* value) Parameters location int count int value float* glUniform3i(int, int, int, int) public static extern void glUniform3i(int location, int v0, int v1, int v2) Parameters location int v0 int v1 int v2 int glUniform3i64NV(int, long, long, long) public static extern void glUniform3i64NV(int location, long x, long y, long z) Parameters location int x long y long z long glUniform3i64vNV(int, int, long*) public static extern void glUniform3i64vNV(int location, int count, long* value) Parameters location int count int value long* glUniform3iARB(int, int, int, int) public static extern void glUniform3iARB(int location, int v0, int v1, int v2) Parameters location int v0 int v1 int v2 int glUniform3iv(int, int, int*) public static extern void glUniform3iv(int location, int count, int* value) Parameters location int count int value int* glUniform3ivARB(int, int, int*) public static extern void glUniform3ivARB(int location, int count, int* value) Parameters location int count int value int* glUniform3ui(int, uint, uint, uint) public static extern void glUniform3ui(int location, uint v0, uint v1, uint v2) Parameters location int v0 uint v1 uint v2 uint glUniform3ui64NV(int, ulong, ulong, ulong) public static extern void glUniform3ui64NV(int location, ulong x, ulong y, ulong z) Parameters location int x ulong y ulong z ulong glUniform3ui64vNV(int, int, ulong*) public static extern void glUniform3ui64vNV(int location, int count, ulong* value) Parameters location int count int value ulong* glUniform3uiEXT(int, uint, uint, uint) public static extern void glUniform3uiEXT(int location, uint v0, uint v1, uint v2) Parameters location int v0 uint v1 uint v2 uint glUniform3uiv(int, int, uint*) public static extern void glUniform3uiv(int location, int count, uint* value) Parameters location int count int value uint* glUniform3uivEXT(int, int, uint*) public static extern void glUniform3uivEXT(int location, int count, uint* value) Parameters location int count int value uint* glUniform4d(int, double, double, double, double) public static extern void glUniform4d(int location, double x, double y, double z, double w) Parameters location int x double y double z double w double glUniform4dv(int, int, double*) public static extern void glUniform4dv(int location, int count, double* value) Parameters location int count int value double* glUniform4f(int, float, float, float, float) public static extern void glUniform4f(int location, float v0, float v1, float v2, float v3) Parameters location int v0 float v1 float v2 float v3 float glUniform4fARB(int, float, float, float, float) public static extern void glUniform4fARB(int location, float v0, float v1, float v2, float v3) Parameters location int v0 float v1 float v2 float v3 float glUniform4fv(int, int, float*) public static extern void glUniform4fv(int location, int count, float* value) Parameters location int count int value float* glUniform4fvARB(int, int, float*) public static extern void glUniform4fvARB(int location, int count, float* value) Parameters location int count int value float* glUniform4i(int, int, int, int, int) public static extern void glUniform4i(int location, int v0, int v1, int v2, int v3) Parameters location int v0 int v1 int v2 int v3 int glUniform4i64NV(int, long, long, long, long) public static extern void glUniform4i64NV(int location, long x, long y, long z, long w) Parameters location int x long y long z long w long glUniform4i64vNV(int, int, long*) public static extern void glUniform4i64vNV(int location, int count, long* value) Parameters location int count int value long* glUniform4iARB(int, int, int, int, int) public static extern void glUniform4iARB(int location, int v0, int v1, int v2, int v3) Parameters location int v0 int v1 int v2 int v3 int glUniform4iv(int, int, int*) public static extern void glUniform4iv(int location, int count, int* value) Parameters location int count int value int* glUniform4ivARB(int, int, int*) public static extern void glUniform4ivARB(int location, int count, int* value) Parameters location int count int value int* glUniform4ui(int, uint, uint, uint, uint) public static extern void glUniform4ui(int location, uint v0, uint v1, uint v2, uint v3) Parameters location int v0 uint v1 uint v2 uint v3 uint glUniform4ui64NV(int, ulong, ulong, ulong, ulong) public static extern void glUniform4ui64NV(int location, ulong x, ulong y, ulong z, ulong w) Parameters location int x ulong y ulong z ulong w ulong glUniform4ui64vNV(int, int, ulong*) public static extern void glUniform4ui64vNV(int location, int count, ulong* value) Parameters location int count int value ulong* glUniform4uiEXT(int, uint, uint, uint, uint) public static extern void glUniform4uiEXT(int location, uint v0, uint v1, uint v2, uint v3) Parameters location int v0 uint v1 uint v2 uint v3 uint glUniform4uiv(int, int, uint*) public static extern void glUniform4uiv(int location, int count, uint* value) Parameters location int count int value uint* glUniform4uivEXT(int, int, uint*) public static extern void glUniform4uivEXT(int location, int count, uint* value) Parameters location int count int value uint* glUniformBlockBinding(uint, uint, uint) public static extern void glUniformBlockBinding(uint program, uint uniformBlockIndex, uint uniformBlockBinding) Parameters program uint uniformBlockIndex uint uniformBlockBinding uint glUniformBufferEXT(uint, int, uint) public static extern void glUniformBufferEXT(uint program, int location, uint buffer) Parameters program uint location int buffer uint glUniformMatrix2dv(int, int, bool, double*) public static extern void glUniformMatrix2dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix2fv(int, int, bool, float*) public static extern void glUniformMatrix2fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix2fvARB(int, int, bool, float*) public static extern void glUniformMatrix2fvARB(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix2x3dv(int, int, bool, double*) public static extern void glUniformMatrix2x3dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix2x3fv(int, int, bool, float*) public static extern void glUniformMatrix2x3fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix2x4dv(int, int, bool, double*) public static extern void glUniformMatrix2x4dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix2x4fv(int, int, bool, float*) public static extern void glUniformMatrix2x4fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix3dv(int, int, bool, double*) public static extern void glUniformMatrix3dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix3fv(int, int, bool, float*) public static extern void glUniformMatrix3fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix3fvARB(int, int, bool, float*) public static extern void glUniformMatrix3fvARB(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix3x2dv(int, int, bool, double*) public static extern void glUniformMatrix3x2dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix3x2fv(int, int, bool, float*) public static extern void glUniformMatrix3x2fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix3x4dv(int, int, bool, double*) public static extern void glUniformMatrix3x4dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix3x4fv(int, int, bool, float*) public static extern void glUniformMatrix3x4fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix4dv(int, int, bool, double*) public static extern void glUniformMatrix4dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix4fv(int, int, bool, float*) public static extern void glUniformMatrix4fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix4fvARB(int, int, bool, float*) public static extern void glUniformMatrix4fvARB(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix4x2dv(int, int, bool, double*) public static extern void glUniformMatrix4x2dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix4x2fv(int, int, bool, float*) public static extern void glUniformMatrix4x2fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix4x3dv(int, int, bool, double*) public static extern void glUniformMatrix4x3dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix4x3fv(int, int, bool, float*) public static extern void glUniformMatrix4x3fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformSubroutinesuiv(uint, int, uint*) public static extern void glUniformSubroutinesuiv(uint shadertype, int count, uint* indices) Parameters shadertype uint count int indices uint* glUniformui64NV(int, ulong) public static extern void glUniformui64NV(int location, ulong value) Parameters location int value ulong glUniformui64vNV(int, int, ulong*) public static extern void glUniformui64vNV(int location, int count, ulong* value) Parameters location int count int value ulong* glUnlockArraysEXT() public static extern void glUnlockArraysEXT() glUnmapBuffer(uint) public static extern int glUnmapBuffer(uint target) Parameters target uint Returns int glUnmapBufferARB(uint) public static extern int glUnmapBufferARB(uint target) Parameters target uint Returns int glUnmapNamedBufferEXT(uint) public static extern int glUnmapNamedBufferEXT(uint buffer) Parameters buffer uint Returns int glUnmapObjectBufferATI(uint) public static extern void glUnmapObjectBufferATI(uint buffer) Parameters buffer uint glUpdateObjectBufferATI(uint, uint, int, nint, uint) public static extern void glUpdateObjectBufferATI(uint buffer, uint offset, int size, nint pointer, uint preserve) Parameters buffer uint offset uint size int pointer nint preserve uint glUseProgram(uint) public static extern void glUseProgram(uint program) Parameters program uint glUseProgramObjectARB(uint) public static extern void glUseProgramObjectARB(uint programObj) Parameters programObj uint glUseProgramStages(uint, uint, uint) public static extern void glUseProgramStages(uint pipeline, uint stages, uint program) Parameters pipeline uint stages uint program uint glUseShaderProgramEXT(uint, uint) public static extern void glUseShaderProgramEXT(uint type, uint program) Parameters type uint program uint glVDPAUFiniNV() public static extern void glVDPAUFiniNV() glVDPAUGetSurfaceivNV(nint, uint, int, int*, int*) public static extern void glVDPAUGetSurfaceivNV(nint surface, uint pname, int bufSize, int* length, int* values) Parameters surface nint pname uint bufSize int length int* values int* glVDPAUInitNV(nint, nint) public static extern void glVDPAUInitNV(nint vdpDevice, nint getProcAddress) Parameters vdpDevice nint getProcAddress nint glVDPAUIsSurfaceNV(nint) public static extern void glVDPAUIsSurfaceNV(nint surface) Parameters surface nint glVDPAUMapSurfacesNV(int, nint*) public static extern void glVDPAUMapSurfacesNV(int numSurfaces, nint* surfaces) Parameters numSurfaces int surfaces nint* glVDPAURegisterOutputSurfaceNV(nint, uint, int, uint*) public static extern nint glVDPAURegisterOutputSurfaceNV(nint vdpSurface, uint target, int numTextureNames, uint* textureNames) Parameters vdpSurface nint target uint numTextureNames int textureNames uint* Returns nint glVDPAURegisterVideoSurfaceNV(nint, uint, int, uint*) public static extern nint glVDPAURegisterVideoSurfaceNV(nint vdpSurface, uint target, int numTextureNames, uint* textureNames) Parameters vdpSurface nint target uint numTextureNames int textureNames uint* Returns nint glVDPAUSurfaceAccessNV(nint, uint) public static extern void glVDPAUSurfaceAccessNV(nint surface, uint access) Parameters surface nint access uint glVDPAUUnmapSurfacesNV(int, nint*) public static extern void glVDPAUUnmapSurfacesNV(int numSurface, nint* surfaces) Parameters numSurface int surfaces nint* glVDPAUUnregisterSurfaceNV(nint) public static extern void glVDPAUUnregisterSurfaceNV(nint surface) Parameters surface nint glValidateProgram(uint) public static extern void glValidateProgram(uint program) Parameters program uint glValidateProgramARB(uint) public static extern void glValidateProgramARB(uint programObj) Parameters programObj uint glValidateProgramPipeline(uint) public static extern void glValidateProgramPipeline(uint pipeline) Parameters pipeline uint glVariantArrayObjectATI(uint, uint, int, uint, uint) public static extern void glVariantArrayObjectATI(uint id, uint type, int stride, uint buffer, uint offset) Parameters id uint type uint stride int buffer uint offset uint glVariantPointerEXT(uint, uint, uint, nint) public static extern void glVariantPointerEXT(uint id, uint type, uint stride, nint addr) Parameters id uint type uint stride uint addr nint glVariantbvEXT(uint, sbyte*) public static extern void glVariantbvEXT(uint id, sbyte* addr) Parameters id uint addr sbyte* glVariantdvEXT(uint, double*) public static extern void glVariantdvEXT(uint id, double* addr) Parameters id uint addr double* glVariantfvEXT(uint, float*) public static extern void glVariantfvEXT(uint id, float* addr) Parameters id uint addr float* glVariantivEXT(uint, int*) public static extern void glVariantivEXT(uint id, int* addr) Parameters id uint addr int* glVariantsvEXT(uint, short*) public static extern void glVariantsvEXT(uint id, short* addr) Parameters id uint addr short* glVariantubvEXT(uint, byte*) public static extern void glVariantubvEXT(uint id, byte* addr) Parameters id uint addr byte* glVariantuivEXT(uint, uint*) public static extern void glVariantuivEXT(uint id, uint* addr) Parameters id uint addr uint* glVariantusvEXT(uint, ushort*) public static extern void glVariantusvEXT(uint id, ushort* addr) Parameters id uint addr ushort* glVertex2d(double, double) public static extern void glVertex2d(double x, double y) Parameters x double y double glVertex2dv(double*) public static extern void glVertex2dv(double* v) Parameters v double* glVertex2f(float, float) public static extern void glVertex2f(float x, float y) Parameters x float y float glVertex2fv(float*) public static extern void glVertex2fv(float* v) Parameters v float* glVertex2hNV(ushort, ushort) public static extern void glVertex2hNV(ushort x, ushort y) Parameters x ushort y ushort glVertex2hvNV(ushort*) public static extern void glVertex2hvNV(ushort* v) Parameters v ushort* glVertex2i(int, int) public static extern void glVertex2i(int x, int y) Parameters x int y int glVertex2iv(int*) public static extern void glVertex2iv(int* v) Parameters v int* glVertex2s(short, short) public static extern void glVertex2s(short x, short y) Parameters x short y short glVertex2sv(short*) public static extern void glVertex2sv(short* v) Parameters v short* glVertex3d(double, double, double) public static extern void glVertex3d(double x, double y, double z) Parameters x double y double z double glVertex3dv(double*) public static extern void glVertex3dv(double* v) Parameters v double* glVertex3f(float, float, float) public static extern void glVertex3f(float x, float y, float z) Parameters x float y float z float glVertex3fv(float*) public static extern void glVertex3fv(float* v) Parameters v float* glVertex3hNV(ushort, ushort, ushort) public static extern void glVertex3hNV(ushort x, ushort y, ushort z) Parameters x ushort y ushort z ushort glVertex3hvNV(ushort*) public static extern void glVertex3hvNV(ushort* v) Parameters v ushort* glVertex3i(int, int, int) public static extern void glVertex3i(int x, int y, int z) Parameters x int y int z int glVertex3iv(int*) public static extern void glVertex3iv(int* v) Parameters v int* glVertex3s(short, short, short) public static extern void glVertex3s(short x, short y, short z) Parameters x short y short z short glVertex3sv(short*) public static extern void glVertex3sv(short* v) Parameters v short* glVertex4d(double, double, double, double) public static extern void glVertex4d(double x, double y, double z, double w) Parameters x double y double z double w double glVertex4dv(double*) public static extern void glVertex4dv(double* v) Parameters v double* glVertex4f(float, float, float, float) public static extern void glVertex4f(float x, float y, float z, float w) Parameters x float y float z float w float glVertex4fv(float*) public static extern void glVertex4fv(float* v) Parameters v float* glVertex4hNV(ushort, ushort, ushort, ushort) public static extern void glVertex4hNV(ushort x, ushort y, ushort z, ushort w) Parameters x ushort y ushort z ushort w ushort glVertex4hvNV(ushort*) public static extern void glVertex4hvNV(ushort* v) Parameters v ushort* glVertex4i(int, int, int, int) public static extern void glVertex4i(int x, int y, int z, int w) Parameters x int y int z int w int glVertex4iv(int*) public static extern void glVertex4iv(int* v) Parameters v int* glVertex4s(short, short, short, short) public static extern void glVertex4s(short x, short y, short z, short w) Parameters x short y short z short w short glVertex4sv(short*) public static extern void glVertex4sv(short* v) Parameters v short* glVertexArrayParameteriAPPLE(uint, int) public static extern void glVertexArrayParameteriAPPLE(uint pname, int param) Parameters pname uint param int glVertexArrayRangeAPPLE(int, nint) public static extern void glVertexArrayRangeAPPLE(int length, nint pointer) Parameters length int pointer nint glVertexArrayRangeNV(int, nint) public static extern void glVertexArrayRangeNV(int length, nint pointer) Parameters length int pointer nint glVertexArrayVertexAttribLOffsetEXT(uint, uint, uint, int, uint, int, nint) public static extern void glVertexArrayVertexAttribLOffsetEXT(uint vaobj, uint buffer, uint index, int size, uint type, int stride, nint offset) Parameters vaobj uint buffer uint index uint size int type uint stride int offset nint glVertexAttrib1d(uint, double) public static extern void glVertexAttrib1d(uint index, double x) Parameters index uint x double glVertexAttrib1dARB(uint, double) public static extern void glVertexAttrib1dARB(uint index, double x) Parameters index uint x double glVertexAttrib1dNV(uint, double) public static extern void glVertexAttrib1dNV(uint index, double x) Parameters index uint x double glVertexAttrib1dv(uint, double*) public static extern void glVertexAttrib1dv(uint index, double* v) Parameters index uint v double* glVertexAttrib1dvARB(uint, double*) public static extern void glVertexAttrib1dvARB(uint index, double* v) Parameters index uint v double* glVertexAttrib1dvNV(uint, double*) public static extern void glVertexAttrib1dvNV(uint index, double* v) Parameters index uint v double* glVertexAttrib1f(uint, float) public static extern void glVertexAttrib1f(uint index, float x) Parameters index uint x float glVertexAttrib1fARB(uint, float) public static extern void glVertexAttrib1fARB(uint index, float x) Parameters index uint x float glVertexAttrib1fNV(uint, float) public static extern void glVertexAttrib1fNV(uint index, float x) Parameters index uint x float glVertexAttrib1fv(uint, float*) public static extern void glVertexAttrib1fv(uint index, float* v) Parameters index uint v float* glVertexAttrib1fvARB(uint, float*) public static extern void glVertexAttrib1fvARB(uint index, float* v) Parameters index uint v float* glVertexAttrib1fvNV(uint, float*) public static extern void glVertexAttrib1fvNV(uint index, float* v) Parameters index uint v float* glVertexAttrib1hNV(uint, ushort) public static extern void glVertexAttrib1hNV(uint index, ushort x) Parameters index uint x ushort glVertexAttrib1hvNV(uint, ushort*) public static extern void glVertexAttrib1hvNV(uint index, ushort* v) Parameters index uint v ushort* glVertexAttrib1s(uint, short) public static extern void glVertexAttrib1s(uint index, short x) Parameters index uint x short glVertexAttrib1sARB(uint, short) public static extern void glVertexAttrib1sARB(uint index, short x) Parameters index uint x short glVertexAttrib1sNV(uint, short) public static extern void glVertexAttrib1sNV(uint index, short x) Parameters index uint x short glVertexAttrib1sv(uint, short*) public static extern void glVertexAttrib1sv(uint index, short* v) Parameters index uint v short* glVertexAttrib1svARB(uint, short*) public static extern void glVertexAttrib1svARB(uint index, short* v) Parameters index uint v short* glVertexAttrib1svNV(uint, short*) public static extern void glVertexAttrib1svNV(uint index, short* v) Parameters index uint v short* glVertexAttrib2d(uint, double, double) public static extern void glVertexAttrib2d(uint index, double x, double y) Parameters index uint x double y double glVertexAttrib2dARB(uint, double, double) public static extern void glVertexAttrib2dARB(uint index, double x, double y) Parameters index uint x double y double glVertexAttrib2dNV(uint, double, double) public static extern void glVertexAttrib2dNV(uint index, double x, double y) Parameters index uint x double y double glVertexAttrib2dv(uint, double*) public static extern void glVertexAttrib2dv(uint index, double* v) Parameters index uint v double* glVertexAttrib2dvARB(uint, double*) public static extern void glVertexAttrib2dvARB(uint index, double* v) Parameters index uint v double* glVertexAttrib2dvNV(uint, double*) public static extern void glVertexAttrib2dvNV(uint index, double* v) Parameters index uint v double* glVertexAttrib2f(uint, float, float) public static extern void glVertexAttrib2f(uint index, float x, float y) Parameters index uint x float y float glVertexAttrib2fARB(uint, float, float) public static extern void glVertexAttrib2fARB(uint index, float x, float y) Parameters index uint x float y float glVertexAttrib2fNV(uint, float, float) public static extern void glVertexAttrib2fNV(uint index, float x, float y) Parameters index uint x float y float glVertexAttrib2fv(uint, float*) public static extern void glVertexAttrib2fv(uint index, float* v) Parameters index uint v float* glVertexAttrib2fvARB(uint, float*) public static extern void glVertexAttrib2fvARB(uint index, float* v) Parameters index uint v float* glVertexAttrib2fvNV(uint, float*) public static extern void glVertexAttrib2fvNV(uint index, float* v) Parameters index uint v float* glVertexAttrib2hNV(uint, ushort, ushort) public static extern void glVertexAttrib2hNV(uint index, ushort x, ushort y) Parameters index uint x ushort y ushort glVertexAttrib2hvNV(uint, ushort*) public static extern void glVertexAttrib2hvNV(uint index, ushort* v) Parameters index uint v ushort* glVertexAttrib2s(uint, short, short) public static extern void glVertexAttrib2s(uint index, short x, short y) Parameters index uint x short y short glVertexAttrib2sARB(uint, short, short) public static extern void glVertexAttrib2sARB(uint index, short x, short y) Parameters index uint x short y short glVertexAttrib2sNV(uint, short, short) public static extern void glVertexAttrib2sNV(uint index, short x, short y) Parameters index uint x short y short glVertexAttrib2sv(uint, short*) public static extern void glVertexAttrib2sv(uint index, short* v) Parameters index uint v short* glVertexAttrib2svARB(uint, short*) public static extern void glVertexAttrib2svARB(uint index, short* v) Parameters index uint v short* glVertexAttrib2svNV(uint, short*) public static extern void glVertexAttrib2svNV(uint index, short* v) Parameters index uint v short* glVertexAttrib3d(uint, double, double, double) public static extern void glVertexAttrib3d(uint index, double x, double y, double z) Parameters index uint x double y double z double glVertexAttrib3dARB(uint, double, double, double) public static extern void glVertexAttrib3dARB(uint index, double x, double y, double z) Parameters index uint x double y double z double glVertexAttrib3dNV(uint, double, double, double) public static extern void glVertexAttrib3dNV(uint index, double x, double y, double z) Parameters index uint x double y double z double glVertexAttrib3dv(uint, double*) public static extern void glVertexAttrib3dv(uint index, double* v) Parameters index uint v double* glVertexAttrib3dvARB(uint, double*) public static extern void glVertexAttrib3dvARB(uint index, double* v) Parameters index uint v double* glVertexAttrib3dvNV(uint, double*) public static extern void glVertexAttrib3dvNV(uint index, double* v) Parameters index uint v double* glVertexAttrib3f(uint, float, float, float) public static extern void glVertexAttrib3f(uint index, float x, float y, float z) Parameters index uint x float y float z float glVertexAttrib3fARB(uint, float, float, float) public static extern void glVertexAttrib3fARB(uint index, float x, float y, float z) Parameters index uint x float y float z float glVertexAttrib3fNV(uint, float, float, float) public static extern void glVertexAttrib3fNV(uint index, float x, float y, float z) Parameters index uint x float y float z float glVertexAttrib3fv(uint, float*) public static extern void glVertexAttrib3fv(uint index, float* v) Parameters index uint v float* glVertexAttrib3fvARB(uint, float*) public static extern void glVertexAttrib3fvARB(uint index, float* v) Parameters index uint v float* glVertexAttrib3fvNV(uint, float*) public static extern void glVertexAttrib3fvNV(uint index, float* v) Parameters index uint v float* glVertexAttrib3hNV(uint, ushort, ushort, ushort) public static extern void glVertexAttrib3hNV(uint index, ushort x, ushort y, ushort z) Parameters index uint x ushort y ushort z ushort glVertexAttrib3hvNV(uint, ushort*) public static extern void glVertexAttrib3hvNV(uint index, ushort* v) Parameters index uint v ushort* glVertexAttrib3s(uint, short, short, short) public static extern void glVertexAttrib3s(uint index, short x, short y, short z) Parameters index uint x short y short z short glVertexAttrib3sARB(uint, short, short, short) public static extern void glVertexAttrib3sARB(uint index, short x, short y, short z) Parameters index uint x short y short z short glVertexAttrib3sNV(uint, short, short, short) public static extern void glVertexAttrib3sNV(uint index, short x, short y, short z) Parameters index uint x short y short z short glVertexAttrib3sv(uint, short*) public static extern void glVertexAttrib3sv(uint index, short* v) Parameters index uint v short* glVertexAttrib3svARB(uint, short*) public static extern void glVertexAttrib3svARB(uint index, short* v) Parameters index uint v short* glVertexAttrib3svNV(uint, short*) public static extern void glVertexAttrib3svNV(uint index, short* v) Parameters index uint v short* glVertexAttrib4Nbv(uint, sbyte*) public static extern void glVertexAttrib4Nbv(uint index, sbyte* v) Parameters index uint v sbyte* glVertexAttrib4NbvARB(uint, sbyte*) public static extern void glVertexAttrib4NbvARB(uint index, sbyte* v) Parameters index uint v sbyte* glVertexAttrib4Niv(uint, int*) public static extern void glVertexAttrib4Niv(uint index, int* v) Parameters index uint v int* glVertexAttrib4NivARB(uint, int*) public static extern void glVertexAttrib4NivARB(uint index, int* v) Parameters index uint v int* glVertexAttrib4Nsv(uint, short*) public static extern void glVertexAttrib4Nsv(uint index, short* v) Parameters index uint v short* glVertexAttrib4NsvARB(uint, short*) public static extern void glVertexAttrib4NsvARB(uint index, short* v) Parameters index uint v short* glVertexAttrib4Nub(uint, byte, byte, byte, byte) public static extern void glVertexAttrib4Nub(uint index, byte x, byte y, byte z, byte w) Parameters index uint x byte y byte z byte w byte glVertexAttrib4NubARB(uint, byte, byte, byte, byte) public static extern void glVertexAttrib4NubARB(uint index, byte x, byte y, byte z, byte w) Parameters index uint x byte y byte z byte w byte glVertexAttrib4Nubv(uint, byte*) public static extern void glVertexAttrib4Nubv(uint index, byte* v) Parameters index uint v byte* glVertexAttrib4NubvARB(uint, byte*) public static extern void glVertexAttrib4NubvARB(uint index, byte* v) Parameters index uint v byte* glVertexAttrib4Nuiv(uint, uint*) public static extern void glVertexAttrib4Nuiv(uint index, uint* v) Parameters index uint v uint* glVertexAttrib4NuivARB(uint, uint*) public static extern void glVertexAttrib4NuivARB(uint index, uint* v) Parameters index uint v uint* glVertexAttrib4Nusv(uint, ushort*) public static extern void glVertexAttrib4Nusv(uint index, ushort* v) Parameters index uint v ushort* glVertexAttrib4NusvARB(uint, ushort*) public static extern void glVertexAttrib4NusvARB(uint index, ushort* v) Parameters index uint v ushort* glVertexAttrib4bv(uint, sbyte*) public static extern void glVertexAttrib4bv(uint index, sbyte* v) Parameters index uint v sbyte* glVertexAttrib4bvARB(uint, sbyte*) public static extern void glVertexAttrib4bvARB(uint index, sbyte* v) Parameters index uint v sbyte* glVertexAttrib4d(uint, double, double, double, double) public static extern void glVertexAttrib4d(uint index, double x, double y, double z, double w) Parameters index uint x double y double z double w double glVertexAttrib4dARB(uint, double, double, double, double) public static extern void glVertexAttrib4dARB(uint index, double x, double y, double z, double w) Parameters index uint x double y double z double w double glVertexAttrib4dNV(uint, double, double, double, double) public static extern void glVertexAttrib4dNV(uint index, double x, double y, double z, double w) Parameters index uint x double y double z double w double glVertexAttrib4dv(uint, double*) public static extern void glVertexAttrib4dv(uint index, double* v) Parameters index uint v double* glVertexAttrib4dvARB(uint, double*) public static extern void glVertexAttrib4dvARB(uint index, double* v) Parameters index uint v double* glVertexAttrib4dvNV(uint, double*) public static extern void glVertexAttrib4dvNV(uint index, double* v) Parameters index uint v double* glVertexAttrib4f(uint, float, float, float, float) public static extern void glVertexAttrib4f(uint index, float x, float y, float z, float w) Parameters index uint x float y float z float w float glVertexAttrib4fARB(uint, float, float, float, float) public static extern void glVertexAttrib4fARB(uint index, float x, float y, float z, float w) Parameters index uint x float y float z float w float glVertexAttrib4fNV(uint, float, float, float, float) public static extern void glVertexAttrib4fNV(uint index, float x, float y, float z, float w) Parameters index uint x float y float z float w float glVertexAttrib4fv(uint, float*) public static extern void glVertexAttrib4fv(uint index, float* v) Parameters index uint v float* glVertexAttrib4fvARB(uint, float*) public static extern void glVertexAttrib4fvARB(uint index, float* v) Parameters index uint v float* glVertexAttrib4fvNV(uint, float*) public static extern void glVertexAttrib4fvNV(uint index, float* v) Parameters index uint v float* glVertexAttrib4hNV(uint, ushort, ushort, ushort, ushort) public static extern void glVertexAttrib4hNV(uint index, ushort x, ushort y, ushort z, ushort w) Parameters index uint x ushort y ushort z ushort w ushort glVertexAttrib4hvNV(uint, ushort*) public static extern void glVertexAttrib4hvNV(uint index, ushort* v) Parameters index uint v ushort* glVertexAttrib4iv(uint, int*) public static extern void glVertexAttrib4iv(uint index, int* v) Parameters index uint v int* glVertexAttrib4ivARB(uint, int*) public static extern void glVertexAttrib4ivARB(uint index, int* v) Parameters index uint v int* glVertexAttrib4s(uint, short, short, short, short) public static extern void glVertexAttrib4s(uint index, short x, short y, short z, short w) Parameters index uint x short y short z short w short glVertexAttrib4sARB(uint, short, short, short, short) public static extern void glVertexAttrib4sARB(uint index, short x, short y, short z, short w) Parameters index uint x short y short z short w short glVertexAttrib4sNV(uint, short, short, short, short) public static extern void glVertexAttrib4sNV(uint index, short x, short y, short z, short w) Parameters index uint x short y short z short w short glVertexAttrib4sv(uint, short*) public static extern void glVertexAttrib4sv(uint index, short* v) Parameters index uint v short* glVertexAttrib4svARB(uint, short*) public static extern void glVertexAttrib4svARB(uint index, short* v) Parameters index uint v short* glVertexAttrib4svNV(uint, short*) public static extern void glVertexAttrib4svNV(uint index, short* v) Parameters index uint v short* glVertexAttrib4ubNV(uint, byte, byte, byte, byte) public static extern void glVertexAttrib4ubNV(uint index, byte x, byte y, byte z, byte w) Parameters index uint x byte y byte z byte w byte glVertexAttrib4ubv(uint, byte*) public static extern void glVertexAttrib4ubv(uint index, byte* v) Parameters index uint v byte* glVertexAttrib4ubvARB(uint, byte*) public static extern void glVertexAttrib4ubvARB(uint index, byte* v) Parameters index uint v byte* glVertexAttrib4ubvNV(uint, byte*) public static extern void glVertexAttrib4ubvNV(uint index, byte* v) Parameters index uint v byte* glVertexAttrib4uiv(uint, uint*) public static extern void glVertexAttrib4uiv(uint index, uint* v) Parameters index uint v uint* glVertexAttrib4uivARB(uint, uint*) public static extern void glVertexAttrib4uivARB(uint index, uint* v) Parameters index uint v uint* glVertexAttrib4usv(uint, ushort*) public static extern void glVertexAttrib4usv(uint index, ushort* v) Parameters index uint v ushort* glVertexAttrib4usvARB(uint, ushort*) public static extern void glVertexAttrib4usvARB(uint index, ushort* v) Parameters index uint v ushort* glVertexAttribArrayObjectATI(uint, int, uint, bool, int, uint, uint) public static extern void glVertexAttribArrayObjectATI(uint index, int size, uint type, bool normalized, int stride, uint buffer, uint offset) Parameters index uint size int type uint normalized bool stride int buffer uint offset uint glVertexAttribDivisor(uint, uint) public static extern void glVertexAttribDivisor(uint index, uint divisor) Parameters index uint divisor uint glVertexAttribDivisorARB(uint, uint) public static extern void glVertexAttribDivisorARB(uint index, uint divisor) Parameters index uint divisor uint glVertexAttribFormatNV(uint, int, uint, bool, int) public static extern void glVertexAttribFormatNV(uint index, int size, uint type, bool normalized, int stride) Parameters index uint size int type uint normalized bool stride int glVertexAttribI1i(uint, int) public static extern void glVertexAttribI1i(uint index, int x) Parameters index uint x int glVertexAttribI1iEXT(uint, int) public static extern void glVertexAttribI1iEXT(uint index, int x) Parameters index uint x int glVertexAttribI1iv(uint, int*) public static extern void glVertexAttribI1iv(uint index, int* v) Parameters index uint v int* glVertexAttribI1ivEXT(uint, int*) public static extern void glVertexAttribI1ivEXT(uint index, int* v) Parameters index uint v int* glVertexAttribI1ui(uint, uint) public static extern void glVertexAttribI1ui(uint index, uint x) Parameters index uint x uint glVertexAttribI1uiEXT(uint, uint) public static extern void glVertexAttribI1uiEXT(uint index, uint x) Parameters index uint x uint glVertexAttribI1uiv(uint, uint*) public static extern void glVertexAttribI1uiv(uint index, uint* v) Parameters index uint v uint* glVertexAttribI1uivEXT(uint, uint*) public static extern void glVertexAttribI1uivEXT(uint index, uint* v) Parameters index uint v uint* glVertexAttribI2i(uint, int, int) public static extern void glVertexAttribI2i(uint index, int x, int y) Parameters index uint x int y int glVertexAttribI2iEXT(uint, int, int) public static extern void glVertexAttribI2iEXT(uint index, int x, int y) Parameters index uint x int y int glVertexAttribI2iv(uint, int*) public static extern void glVertexAttribI2iv(uint index, int* v) Parameters index uint v int* glVertexAttribI2ivEXT(uint, int*) public static extern void glVertexAttribI2ivEXT(uint index, int* v) Parameters index uint v int* glVertexAttribI2ui(uint, uint, uint) public static extern void glVertexAttribI2ui(uint index, uint x, uint y) Parameters index uint x uint y uint glVertexAttribI2uiEXT(uint, uint, uint) public static extern void glVertexAttribI2uiEXT(uint index, uint x, uint y) Parameters index uint x uint y uint glVertexAttribI2uiv(uint, uint*) public static extern void glVertexAttribI2uiv(uint index, uint* v) Parameters index uint v uint* glVertexAttribI2uivEXT(uint, uint*) public static extern void glVertexAttribI2uivEXT(uint index, uint* v) Parameters index uint v uint* glVertexAttribI3i(uint, int, int, int) public static extern void glVertexAttribI3i(uint index, int x, int y, int z) Parameters index uint x int y int z int glVertexAttribI3iEXT(uint, int, int, int) public static extern void glVertexAttribI3iEXT(uint index, int x, int y, int z) Parameters index uint x int y int z int glVertexAttribI3iv(uint, int*) public static extern void glVertexAttribI3iv(uint index, int* v) Parameters index uint v int* glVertexAttribI3ivEXT(uint, int*) public static extern void glVertexAttribI3ivEXT(uint index, int* v) Parameters index uint v int* glVertexAttribI3ui(uint, uint, uint, uint) public static extern void glVertexAttribI3ui(uint index, uint x, uint y, uint z) Parameters index uint x uint y uint z uint glVertexAttribI3uiEXT(uint, uint, uint, uint) public static extern void glVertexAttribI3uiEXT(uint index, uint x, uint y, uint z) Parameters index uint x uint y uint z uint glVertexAttribI3uiv(uint, uint*) public static extern void glVertexAttribI3uiv(uint index, uint* v) Parameters index uint v uint* glVertexAttribI3uivEXT(uint, uint*) public static extern void glVertexAttribI3uivEXT(uint index, uint* v) Parameters index uint v uint* glVertexAttribI4bv(uint, sbyte*) public static extern void glVertexAttribI4bv(uint index, sbyte* v) Parameters index uint v sbyte* glVertexAttribI4bvEXT(uint, sbyte*) public static extern void glVertexAttribI4bvEXT(uint index, sbyte* v) Parameters index uint v sbyte* glVertexAttribI4i(uint, int, int, int, int) public static extern void glVertexAttribI4i(uint index, int x, int y, int z, int w) Parameters index uint x int y int z int w int glVertexAttribI4iEXT(uint, int, int, int, int) public static extern void glVertexAttribI4iEXT(uint index, int x, int y, int z, int w) Parameters index uint x int y int z int w int glVertexAttribI4iv(uint, int*) public static extern void glVertexAttribI4iv(uint index, int* v) Parameters index uint v int* glVertexAttribI4ivEXT(uint, int*) public static extern void glVertexAttribI4ivEXT(uint index, int* v) Parameters index uint v int* glVertexAttribI4sv(uint, short*) public static extern void glVertexAttribI4sv(uint index, short* v) Parameters index uint v short* glVertexAttribI4svEXT(uint, short*) public static extern void glVertexAttribI4svEXT(uint index, short* v) Parameters index uint v short* glVertexAttribI4ubv(uint, byte*) public static extern void glVertexAttribI4ubv(uint index, byte* v) Parameters index uint v byte* glVertexAttribI4ubvEXT(uint, byte*) public static extern void glVertexAttribI4ubvEXT(uint index, byte* v) Parameters index uint v byte* glVertexAttribI4ui(uint, uint, uint, uint, uint) public static extern void glVertexAttribI4ui(uint index, uint x, uint y, uint z, uint w) Parameters index uint x uint y uint z uint w uint glVertexAttribI4uiEXT(uint, uint, uint, uint, uint) public static extern void glVertexAttribI4uiEXT(uint index, uint x, uint y, uint z, uint w) Parameters index uint x uint y uint z uint w uint glVertexAttribI4uiv(uint, uint*) public static extern void glVertexAttribI4uiv(uint index, uint* v) Parameters index uint v uint* glVertexAttribI4uivEXT(uint, uint*) public static extern void glVertexAttribI4uivEXT(uint index, uint* v) Parameters index uint v uint* glVertexAttribI4usv(uint, ushort*) public static extern void glVertexAttribI4usv(uint index, ushort* v) Parameters index uint v ushort* glVertexAttribI4usvEXT(uint, ushort*) public static extern void glVertexAttribI4usvEXT(uint index, ushort* v) Parameters index uint v ushort* glVertexAttribIFormatNV(uint, int, uint, int) public static extern void glVertexAttribIFormatNV(uint index, int size, uint type, int stride) Parameters index uint size int type uint stride int glVertexAttribIPointer(uint, int, uint, int, nint) public static extern void glVertexAttribIPointer(uint index, int size, uint type, int stride, nint pointer) Parameters index uint size int type uint stride int pointer nint glVertexAttribIPointerEXT(uint, int, uint, int, nint) public static extern void glVertexAttribIPointerEXT(uint index, int size, uint type, int stride, nint pointer) Parameters index uint size int type uint stride int pointer nint glVertexAttribL1d(uint, double) public static extern void glVertexAttribL1d(uint index, double x) Parameters index uint x double glVertexAttribL1dEXT(uint, double) public static extern void glVertexAttribL1dEXT(uint index, double x) Parameters index uint x double glVertexAttribL1dv(uint, double*) public static extern void glVertexAttribL1dv(uint index, double* v) Parameters index uint v double* glVertexAttribL1dvEXT(uint, double*) public static extern void glVertexAttribL1dvEXT(uint index, double* v) Parameters index uint v double* glVertexAttribL1i64NV(uint, long) public static extern void glVertexAttribL1i64NV(uint index, long x) Parameters index uint x long glVertexAttribL1i64vNV(uint, long*) public static extern void glVertexAttribL1i64vNV(uint index, long* v) Parameters index uint v long* glVertexAttribL1ui64NV(uint, ulong) public static extern void glVertexAttribL1ui64NV(uint index, ulong x) Parameters index uint x ulong glVertexAttribL1ui64vNV(uint, ulong*) public static extern void glVertexAttribL1ui64vNV(uint index, ulong* v) Parameters index uint v ulong* glVertexAttribL2d(uint, double, double) public static extern void glVertexAttribL2d(uint index, double x, double y) Parameters index uint x double y double glVertexAttribL2dEXT(uint, double, double) public static extern void glVertexAttribL2dEXT(uint index, double x, double y) Parameters index uint x double y double glVertexAttribL2dv(uint, double*) public static extern void glVertexAttribL2dv(uint index, double* v) Parameters index uint v double* glVertexAttribL2dvEXT(uint, double*) public static extern void glVertexAttribL2dvEXT(uint index, double* v) Parameters index uint v double* glVertexAttribL2i64NV(uint, long, long) public static extern void glVertexAttribL2i64NV(uint index, long x, long y) Parameters index uint x long y long glVertexAttribL2i64vNV(uint, long*) public static extern void glVertexAttribL2i64vNV(uint index, long* v) Parameters index uint v long* glVertexAttribL2ui64NV(uint, ulong, ulong) public static extern void glVertexAttribL2ui64NV(uint index, ulong x, ulong y) Parameters index uint x ulong y ulong glVertexAttribL2ui64vNV(uint, ulong*) public static extern void glVertexAttribL2ui64vNV(uint index, ulong* v) Parameters index uint v ulong* glVertexAttribL3d(uint, double, double, double) public static extern void glVertexAttribL3d(uint index, double x, double y, double z) Parameters index uint x double y double z double glVertexAttribL3dEXT(uint, double, double, double) public static extern void glVertexAttribL3dEXT(uint index, double x, double y, double z) Parameters index uint x double y double z double glVertexAttribL3dv(uint, double*) public static extern void glVertexAttribL3dv(uint index, double* v) Parameters index uint v double* glVertexAttribL3dvEXT(uint, double*) public static extern void glVertexAttribL3dvEXT(uint index, double* v) Parameters index uint v double* glVertexAttribL3i64NV(uint, long, long, long) public static extern void glVertexAttribL3i64NV(uint index, long x, long y, long z) Parameters index uint x long y long z long glVertexAttribL3i64vNV(uint, long*) public static extern void glVertexAttribL3i64vNV(uint index, long* v) Parameters index uint v long* glVertexAttribL3ui64NV(uint, ulong, ulong, ulong) public static extern void glVertexAttribL3ui64NV(uint index, ulong x, ulong y, ulong z) Parameters index uint x ulong y ulong z ulong glVertexAttribL3ui64vNV(uint, ulong*) public static extern void glVertexAttribL3ui64vNV(uint index, ulong* v) Parameters index uint v ulong* glVertexAttribL4d(uint, double, double, double, double) public static extern void glVertexAttribL4d(uint index, double x, double y, double z, double w) Parameters index uint x double y double z double w double glVertexAttribL4dEXT(uint, double, double, double, double) public static extern void glVertexAttribL4dEXT(uint index, double x, double y, double z, double w) Parameters index uint x double y double z double w double glVertexAttribL4dv(uint, double*) public static extern void glVertexAttribL4dv(uint index, double* v) Parameters index uint v double* glVertexAttribL4dvEXT(uint, double*) public static extern void glVertexAttribL4dvEXT(uint index, double* v) Parameters index uint v double* glVertexAttribL4i64NV(uint, long, long, long, long) public static extern void glVertexAttribL4i64NV(uint index, long x, long y, long z, long w) Parameters index uint x long y long z long w long glVertexAttribL4i64vNV(uint, long*) public static extern void glVertexAttribL4i64vNV(uint index, long* v) Parameters index uint v long* glVertexAttribL4ui64NV(uint, ulong, ulong, ulong, ulong) public static extern void glVertexAttribL4ui64NV(uint index, ulong x, ulong y, ulong z, ulong w) Parameters index uint x ulong y ulong z ulong w ulong glVertexAttribL4ui64vNV(uint, ulong*) public static extern void glVertexAttribL4ui64vNV(uint index, ulong* v) Parameters index uint v ulong* glVertexAttribLFormatNV(uint, int, uint, int) public static extern void glVertexAttribLFormatNV(uint index, int size, uint type, int stride) Parameters index uint size int type uint stride int glVertexAttribLPointer(uint, int, uint, int, nint) public static extern void glVertexAttribLPointer(uint index, int size, uint type, int stride, nint pointer) Parameters index uint size int type uint stride int pointer nint glVertexAttribLPointerEXT(uint, int, uint, int, nint) public static extern void glVertexAttribLPointerEXT(uint index, int size, uint type, int stride, nint pointer) Parameters index uint size int type uint stride int pointer nint glVertexAttribP1ui(uint, uint, bool, uint) public static extern void glVertexAttribP1ui(uint index, uint type, bool normalized, uint value) Parameters index uint type uint normalized bool value uint glVertexAttribP1uiv(uint, uint, bool, uint*) public static extern void glVertexAttribP1uiv(uint index, uint type, bool normalized, uint* value) Parameters index uint type uint normalized bool value uint* glVertexAttribP2ui(uint, uint, bool, uint) public static extern void glVertexAttribP2ui(uint index, uint type, bool normalized, uint value) Parameters index uint type uint normalized bool value uint glVertexAttribP2uiv(uint, uint, bool, uint*) public static extern void glVertexAttribP2uiv(uint index, uint type, bool normalized, uint* value) Parameters index uint type uint normalized bool value uint* glVertexAttribP3ui(uint, uint, bool, uint) public static extern void glVertexAttribP3ui(uint index, uint type, bool normalized, uint value) Parameters index uint type uint normalized bool value uint glVertexAttribP3uiv(uint, uint, bool, uint*) public static extern void glVertexAttribP3uiv(uint index, uint type, bool normalized, uint* value) Parameters index uint type uint normalized bool value uint* glVertexAttribP4ui(uint, uint, bool, uint) public static extern void glVertexAttribP4ui(uint index, uint type, bool normalized, uint value) Parameters index uint type uint normalized bool value uint glVertexAttribP4uiv(uint, uint, bool, uint*) public static extern void glVertexAttribP4uiv(uint index, uint type, bool normalized, uint* value) Parameters index uint type uint normalized bool value uint* glVertexAttribPointer(uint, int, uint, bool, int, nint) public static extern void glVertexAttribPointer(uint index, int size, uint type, bool normalized, int stride, nint pointer) Parameters index uint size int type uint normalized bool stride int pointer nint glVertexAttribPointerARB(uint, int, uint, bool, int, nint) public static extern void glVertexAttribPointerARB(uint index, int size, uint type, bool normalized, int stride, nint pointer) Parameters index uint size int type uint normalized bool stride int pointer nint glVertexAttribPointerNV(uint, int, uint, int, nint) public static extern void glVertexAttribPointerNV(uint index, int fsize, uint type, int stride, nint pointer) Parameters index uint fsize int type uint stride int pointer nint glVertexAttribs1dvNV(uint, int, double*) public static extern void glVertexAttribs1dvNV(uint index, int count, double* v) Parameters index uint count int v double* glVertexAttribs1fvNV(uint, int, float*) public static extern void glVertexAttribs1fvNV(uint index, int count, float* v) Parameters index uint count int v float* glVertexAttribs1hvNV(uint, int, ushort*) public static extern void glVertexAttribs1hvNV(uint index, int n, ushort* v) Parameters index uint n int v ushort* glVertexAttribs1svNV(uint, int, short*) public static extern void glVertexAttribs1svNV(uint index, int count, short* v) Parameters index uint count int v short* glVertexAttribs2dvNV(uint, int, double*) public static extern void glVertexAttribs2dvNV(uint index, int count, double* v) Parameters index uint count int v double* glVertexAttribs2fvNV(uint, int, float*) public static extern void glVertexAttribs2fvNV(uint index, int count, float* v) Parameters index uint count int v float* glVertexAttribs2hvNV(uint, int, ushort*) public static extern void glVertexAttribs2hvNV(uint index, int n, ushort* v) Parameters index uint n int v ushort* glVertexAttribs2svNV(uint, int, short*) public static extern void glVertexAttribs2svNV(uint index, int count, short* v) Parameters index uint count int v short* glVertexAttribs3dvNV(uint, int, double*) public static extern void glVertexAttribs3dvNV(uint index, int count, double* v) Parameters index uint count int v double* glVertexAttribs3fvNV(uint, int, float*) public static extern void glVertexAttribs3fvNV(uint index, int count, float* v) Parameters index uint count int v float* glVertexAttribs3hvNV(uint, int, ushort*) public static extern void glVertexAttribs3hvNV(uint index, int n, ushort* v) Parameters index uint n int v ushort* glVertexAttribs3svNV(uint, int, short*) public static extern void glVertexAttribs3svNV(uint index, int count, short* v) Parameters index uint count int v short* glVertexAttribs4dvNV(uint, int, double*) public static extern void glVertexAttribs4dvNV(uint index, int count, double* v) Parameters index uint count int v double* glVertexAttribs4fvNV(uint, int, float*) public static extern void glVertexAttribs4fvNV(uint index, int count, float* v) Parameters index uint count int v float* glVertexAttribs4hvNV(uint, int, ushort*) public static extern void glVertexAttribs4hvNV(uint index, int n, ushort* v) Parameters index uint n int v ushort* glVertexAttribs4svNV(uint, int, short*) public static extern void glVertexAttribs4svNV(uint index, int count, short* v) Parameters index uint count int v short* glVertexAttribs4ubvNV(uint, int, byte*) public static extern void glVertexAttribs4ubvNV(uint index, int count, byte* v) Parameters index uint count int v byte* glVertexBlendARB(int) public static extern void glVertexBlendARB(int count) Parameters count int glVertexBlendEnvfATI(uint, float) public static extern void glVertexBlendEnvfATI(uint pname, float param) Parameters pname uint param float glVertexBlendEnviATI(uint, int) public static extern void glVertexBlendEnviATI(uint pname, int param) Parameters pname uint param int glVertexFormatNV(int, uint, int) public static extern void glVertexFormatNV(int size, uint type, int stride) Parameters size int type uint stride int glVertexP2ui(uint, uint) public static extern void glVertexP2ui(uint type, uint value) Parameters type uint value uint glVertexP2uiv(uint, uint*) public static extern void glVertexP2uiv(uint type, uint* value) Parameters type uint value uint* glVertexP3ui(uint, uint) public static extern void glVertexP3ui(uint type, uint value) Parameters type uint value uint glVertexP3uiv(uint, uint*) public static extern void glVertexP3uiv(uint type, uint* value) Parameters type uint value uint* glVertexP4ui(uint, uint) public static extern void glVertexP4ui(uint type, uint value) Parameters type uint value uint glVertexP4uiv(uint, uint*) public static extern void glVertexP4uiv(uint type, uint* value) Parameters type uint value uint* glVertexPointer(int, uint, int, nint) public static extern void glVertexPointer(int size, uint type, int stride, nint pointer) Parameters size int type uint stride int pointer nint glVertexPointerEXT(int, uint, int, int, nint) public static extern void glVertexPointerEXT(int size, uint type, int stride, int count, nint pointer) Parameters size int type uint stride int count int pointer nint glVertexPointerListIBM(int, uint, int, nint, int) public static extern void glVertexPointerListIBM(int size, uint type, int stride, nint pointer, int ptrstride) Parameters size int type uint stride int pointer nint ptrstride int glVertexPointervINTEL(int, uint, nint) public static extern void glVertexPointervINTEL(int size, uint type, nint pointer) Parameters size int type uint pointer nint glVertexStream1dATI(uint, double) public static extern void glVertexStream1dATI(uint stream, double x) Parameters stream uint x double glVertexStream1dvATI(uint, double*) public static extern void glVertexStream1dvATI(uint stream, double* coords) Parameters stream uint coords double* glVertexStream1fATI(uint, float) public static extern void glVertexStream1fATI(uint stream, float x) Parameters stream uint x float glVertexStream1fvATI(uint, float*) public static extern void glVertexStream1fvATI(uint stream, float* coords) Parameters stream uint coords float* glVertexStream1iATI(uint, int) public static extern void glVertexStream1iATI(uint stream, int x) Parameters stream uint x int glVertexStream1ivATI(uint, int*) public static extern void glVertexStream1ivATI(uint stream, int* coords) Parameters stream uint coords int* glVertexStream1sATI(uint, short) public static extern void glVertexStream1sATI(uint stream, short x) Parameters stream uint x short glVertexStream1svATI(uint, short*) public static extern void glVertexStream1svATI(uint stream, short* coords) Parameters stream uint coords short* glVertexStream2dATI(uint, double, double) public static extern void glVertexStream2dATI(uint stream, double x, double y) Parameters stream uint x double y double glVertexStream2dvATI(uint, double*) public static extern void glVertexStream2dvATI(uint stream, double* coords) Parameters stream uint coords double* glVertexStream2fATI(uint, float, float) public static extern void glVertexStream2fATI(uint stream, float x, float y) Parameters stream uint x float y float glVertexStream2fvATI(uint, float*) public static extern void glVertexStream2fvATI(uint stream, float* coords) Parameters stream uint coords float* glVertexStream2iATI(uint, int, int) public static extern void glVertexStream2iATI(uint stream, int x, int y) Parameters stream uint x int y int glVertexStream2ivATI(uint, int*) public static extern void glVertexStream2ivATI(uint stream, int* coords) Parameters stream uint coords int* glVertexStream2sATI(uint, short, short) public static extern void glVertexStream2sATI(uint stream, short x, short y) Parameters stream uint x short y short glVertexStream2svATI(uint, short*) public static extern void glVertexStream2svATI(uint stream, short* coords) Parameters stream uint coords short* glVertexStream3dATI(uint, double, double, double) public static extern void glVertexStream3dATI(uint stream, double x, double y, double z) Parameters stream uint x double y double z double glVertexStream3dvATI(uint, double*) public static extern void glVertexStream3dvATI(uint stream, double* coords) Parameters stream uint coords double* glVertexStream3fATI(uint, float, float, float) public static extern void glVertexStream3fATI(uint stream, float x, float y, float z) Parameters stream uint x float y float z float glVertexStream3fvATI(uint, float*) public static extern void glVertexStream3fvATI(uint stream, float* coords) Parameters stream uint coords float* glVertexStream3iATI(uint, int, int, int) public static extern void glVertexStream3iATI(uint stream, int x, int y, int z) Parameters stream uint x int y int z int glVertexStream3ivATI(uint, int*) public static extern void glVertexStream3ivATI(uint stream, int* coords) Parameters stream uint coords int* glVertexStream3sATI(uint, short, short, short) public static extern void glVertexStream3sATI(uint stream, short x, short y, short z) Parameters stream uint x short y short z short glVertexStream3svATI(uint, short*) public static extern void glVertexStream3svATI(uint stream, short* coords) Parameters stream uint coords short* glVertexStream4dATI(uint, double, double, double, double) public static extern void glVertexStream4dATI(uint stream, double x, double y, double z, double w) Parameters stream uint x double y double z double w double glVertexStream4dvATI(uint, double*) public static extern void glVertexStream4dvATI(uint stream, double* coords) Parameters stream uint coords double* glVertexStream4fATI(uint, float, float, float, float) public static extern void glVertexStream4fATI(uint stream, float x, float y, float z, float w) Parameters stream uint x float y float z float w float glVertexStream4fvATI(uint, float*) public static extern void glVertexStream4fvATI(uint stream, float* coords) Parameters stream uint coords float* glVertexStream4iATI(uint, int, int, int, int) public static extern void glVertexStream4iATI(uint stream, int x, int y, int z, int w) Parameters stream uint x int y int z int w int glVertexStream4ivATI(uint, int*) public static extern void glVertexStream4ivATI(uint stream, int* coords) Parameters stream uint coords int* glVertexStream4sATI(uint, short, short, short, short) public static extern void glVertexStream4sATI(uint stream, short x, short y, short z, short w) Parameters stream uint x short y short z short w short glVertexStream4svATI(uint, short*) public static extern void glVertexStream4svATI(uint stream, short* coords) Parameters stream uint coords short* glVertexWeightPointerEXT(int, uint, int, nint) public static extern void glVertexWeightPointerEXT(int size, uint type, int stride, nint pointer) Parameters size int type uint stride int pointer nint glVertexWeightfEXT(float) public static extern void glVertexWeightfEXT(float weight) Parameters weight float glVertexWeightfvEXT(float*) public static extern void glVertexWeightfvEXT(float* weight) Parameters weight float* glVertexWeighthNV(ushort) public static extern void glVertexWeighthNV(ushort weight) Parameters weight ushort glVertexWeighthvNV(ushort*) public static extern void glVertexWeighthvNV(ushort* weight) Parameters weight ushort* glVideoCaptureNV(uint, uint*, ulong*) public static extern uint glVideoCaptureNV(uint video_capture_slot, uint* sequence_num, ulong* capture_time) Parameters video_capture_slot uint sequence_num uint* capture_time ulong* Returns uint glVideoCaptureStreamParameterdvNV(uint, uint, uint, double*) public static extern void glVideoCaptureStreamParameterdvNV(uint video_capture_slot, uint stream, uint pname, double* @params) Parameters video_capture_slot uint stream uint pname uint params double* glVideoCaptureStreamParameterfvNV(uint, uint, uint, float*) public static extern void glVideoCaptureStreamParameterfvNV(uint video_capture_slot, uint stream, uint pname, float* @params) Parameters video_capture_slot uint stream uint pname uint params float* glVideoCaptureStreamParameterivNV(uint, uint, uint, int*) public static extern void glVideoCaptureStreamParameterivNV(uint video_capture_slot, uint stream, uint pname, int* @params) Parameters video_capture_slot uint stream uint pname uint params int* glViewport(int, int, int, int) public static extern void glViewport(int x, int y, int width, int height) Parameters x int y int width int height int glViewportArrayv(uint, int, float*) public static extern void glViewportArrayv(uint first, int count, float* v) Parameters first uint count int v float* glViewportIndexedf(uint, float, float, float, float) public static extern void glViewportIndexedf(uint index, float x, float y, float w, float h) Parameters index uint x float y float w float h float glViewportIndexedfv(uint, float*) public static extern void glViewportIndexedfv(uint index, float* v) Parameters index uint v float* glWaitSync(nint, uint, ulong) public static extern void glWaitSync(nint sync, uint flags, ulong timeout) Parameters sync nint flags uint timeout ulong glWeightPointerARB(int, uint, int, nint) public static extern void glWeightPointerARB(int size, uint type, int stride, nint pointer) Parameters size int type uint stride int pointer nint glWeightbvARB(int, sbyte*) public static extern void glWeightbvARB(int size, sbyte* weights) Parameters size int weights sbyte* glWeightdvARB(int, double*) public static extern void glWeightdvARB(int size, double* weights) Parameters size int weights double* glWeightfvARB(int, float*) public static extern void glWeightfvARB(int size, float* weights) Parameters size int weights float* glWeightivARB(int, int*) public static extern void glWeightivARB(int size, int* weights) Parameters size int weights int* glWeightsvARB(int, short*) public static extern void glWeightsvARB(int size, short* weights) Parameters size int weights short* glWeightubvARB(int, byte*) public static extern void glWeightubvARB(int size, byte* weights) Parameters size int weights byte* glWeightuivARB(int, uint*) public static extern void glWeightuivARB(int size, uint* weights) Parameters size int weights uint* glWeightusvARB(int, ushort*) public static extern void glWeightusvARB(int size, ushort* weights) Parameters size int weights ushort* glWindowPos2d(double, double) public static extern void glWindowPos2d(double x, double y) Parameters x double y double glWindowPos2dARB(double, double) public static extern void glWindowPos2dARB(double x, double y) Parameters x double y double glWindowPos2dMESA(double, double) public static extern void glWindowPos2dMESA(double x, double y) Parameters x double y double glWindowPos2dv(double*) public static extern void glWindowPos2dv(double* v) Parameters v double* glWindowPos2dvARB(double*) public static extern void glWindowPos2dvARB(double* v) Parameters v double* glWindowPos2dvMESA(double*) public static extern void glWindowPos2dvMESA(double* v) Parameters v double* glWindowPos2f(float, float) public static extern void glWindowPos2f(float x, float y) Parameters x float y float glWindowPos2fARB(float, float) public static extern void glWindowPos2fARB(float x, float y) Parameters x float y float glWindowPos2fMESA(float, float) public static extern void glWindowPos2fMESA(float x, float y) Parameters x float y float glWindowPos2fv(float*) public static extern void glWindowPos2fv(float* v) Parameters v float* glWindowPos2fvARB(float*) public static extern void glWindowPos2fvARB(float* v) Parameters v float* glWindowPos2fvMESA(float*) public static extern void glWindowPos2fvMESA(float* v) Parameters v float* glWindowPos2i(int, int) public static extern void glWindowPos2i(int x, int y) Parameters x int y int glWindowPos2iARB(int, int) public static extern void glWindowPos2iARB(int x, int y) Parameters x int y int glWindowPos2iMESA(int, int) public static extern void glWindowPos2iMESA(int x, int y) Parameters x int y int glWindowPos2iv(int*) public static extern void glWindowPos2iv(int* v) Parameters v int* glWindowPos2ivARB(int*) public static extern void glWindowPos2ivARB(int* v) Parameters v int* glWindowPos2ivMESA(int*) public static extern void glWindowPos2ivMESA(int* v) Parameters v int* glWindowPos2s(short, short) public static extern void glWindowPos2s(short x, short y) Parameters x short y short glWindowPos2sARB(short, short) public static extern void glWindowPos2sARB(short x, short y) Parameters x short y short glWindowPos2sMESA(short, short) public static extern void glWindowPos2sMESA(short x, short y) Parameters x short y short glWindowPos2sv(short*) public static extern void glWindowPos2sv(short* v) Parameters v short* glWindowPos2svARB(short*) public static extern void glWindowPos2svARB(short* v) Parameters v short* glWindowPos2svMESA(short*) public static extern void glWindowPos2svMESA(short* v) Parameters v short* glWindowPos3d(double, double, double) public static extern void glWindowPos3d(double x, double y, double z) Parameters x double y double z double glWindowPos3dARB(double, double, double) public static extern void glWindowPos3dARB(double x, double y, double z) Parameters x double y double z double glWindowPos3dMESA(double, double, double) public static extern void glWindowPos3dMESA(double x, double y, double z) Parameters x double y double z double glWindowPos3dv(double*) public static extern void glWindowPos3dv(double* v) Parameters v double* glWindowPos3dvARB(double*) public static extern void glWindowPos3dvARB(double* v) Parameters v double* glWindowPos3dvMESA(double*) public static extern void glWindowPos3dvMESA(double* v) Parameters v double* glWindowPos3f(float, float, float) public static extern void glWindowPos3f(float x, float y, float z) Parameters x float y float z float glWindowPos3fARB(float, float, float) public static extern void glWindowPos3fARB(float x, float y, float z) Parameters x float y float z float glWindowPos3fMESA(float, float, float) public static extern void glWindowPos3fMESA(float x, float y, float z) Parameters x float y float z float glWindowPos3fv(float*) public static extern void glWindowPos3fv(float* v) Parameters v float* glWindowPos3fvARB(float*) public static extern void glWindowPos3fvARB(float* v) Parameters v float* glWindowPos3fvMESA(float*) public static extern void glWindowPos3fvMESA(float* v) Parameters v float* glWindowPos3i(int, int, int) public static extern void glWindowPos3i(int x, int y, int z) Parameters x int y int z int glWindowPos3iARB(int, int, int) public static extern void glWindowPos3iARB(int x, int y, int z) Parameters x int y int z int glWindowPos3iMESA(int, int, int) public static extern void glWindowPos3iMESA(int x, int y, int z) Parameters x int y int z int glWindowPos3iv(int*) public static extern void glWindowPos3iv(int* v) Parameters v int* glWindowPos3ivARB(int*) public static extern void glWindowPos3ivARB(int* v) Parameters v int* glWindowPos3ivMESA(int*) public static extern void glWindowPos3ivMESA(int* v) Parameters v int* glWindowPos3s(short, short, short) public static extern void glWindowPos3s(short x, short y, short z) Parameters x short y short z short glWindowPos3sARB(short, short, short) public static extern void glWindowPos3sARB(short x, short y, short z) Parameters x short y short z short glWindowPos3sMESA(short, short, short) public static extern void glWindowPos3sMESA(short x, short y, short z) Parameters x short y short z short glWindowPos3sv(short*) public static extern void glWindowPos3sv(short* v) Parameters v short* glWindowPos3svARB(short*) public static extern void glWindowPos3svARB(short* v) Parameters v short* glWindowPos3svMESA(short*) public static extern void glWindowPos3svMESA(short* v) Parameters v short* glWindowPos4dMESA(double, double, double, double) public static extern void glWindowPos4dMESA(double x, double y, double z, double w) Parameters x double y double z double w double glWindowPos4dvMESA(double*) public static extern void glWindowPos4dvMESA(double* v) Parameters v double* glWindowPos4fMESA(float, float, float, float) public static extern void glWindowPos4fMESA(float x, float y, float z, float w) Parameters x float y float z float w float glWindowPos4fvMESA(float*) public static extern void glWindowPos4fvMESA(float* v) Parameters v float* glWindowPos4iMESA(int, int, int, int) public static extern void glWindowPos4iMESA(int x, int y, int z, int w) Parameters x int y int z int w int glWindowPos4ivMESA(int*) public static extern void glWindowPos4ivMESA(int* v) Parameters v int* glWindowPos4sMESA(short, short, short, short) public static extern void glWindowPos4sMESA(short x, short y, short z, short w) Parameters x short y short z short w short glWindowPos4svMESA(short*) public static extern void glWindowPos4svMESA(short* v) Parameters v short* glWriteMaskEXT(uint, uint, uint, uint, uint, uint) public static extern void glWriteMaskEXT(uint res, uint @in, uint outX, uint outY, uint outZ, uint outW) Parameters res uint in uint outX uint outY uint outZ uint outW uint" + "summary": "Class GL Namespace Hi.Disp Assembly HiDisp.dll Native opengl functions wrapper. public static class GL Inheritance object GL Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields GL_ACTIVE_ATTRIBUTES public const int GL_ACTIVE_ATTRIBUTES = 35721 Field Value int GL_ACTIVE_ATTRIBUTE_MAX_LENGTH public const int GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 35722 Field Value int GL_ACTIVE_TEXTURE public const int GL_ACTIVE_TEXTURE = 34016 Field Value int GL_ACTIVE_UNIFORMS public const int GL_ACTIVE_UNIFORMS = 35718 Field Value int GL_ACTIVE_UNIFORM_BLOCKS public const int GL_ACTIVE_UNIFORM_BLOCKS = 35382 Field Value int GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH public const int GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 35381 Field Value int GL_ACTIVE_UNIFORM_MAX_LENGTH public const int GL_ACTIVE_UNIFORM_MAX_LENGTH = 35719 Field Value int GL_ALIASED_LINE_WIDTH_RANGE public const int GL_ALIASED_LINE_WIDTH_RANGE = 33902 Field Value int GL_ALPHA public const int GL_ALPHA = 6406 Field Value int GL_ALREADY_SIGNALED public const int GL_ALREADY_SIGNALED = 37146 Field Value int GL_ALWAYS public const int GL_ALWAYS = 519 Field Value int GL_AND public const int GL_AND = 5377 Field Value int GL_AND_INVERTED public const int GL_AND_INVERTED = 5380 Field Value int GL_AND_REVERSE public const int GL_AND_REVERSE = 5378 Field Value int GL_ANY_SAMPLES_PASSED public const int GL_ANY_SAMPLES_PASSED = 35887 Field Value int GL_ARRAY_BUFFER public const int GL_ARRAY_BUFFER = 34962 Field Value int GL_ARRAY_BUFFER_BINDING public const int GL_ARRAY_BUFFER_BINDING = 34964 Field Value int GL_ATTACHED_SHADERS public const int GL_ATTACHED_SHADERS = 35717 Field Value int GL_BACK public const int GL_BACK = 1029 Field Value int GL_BACK_LEFT public const int GL_BACK_LEFT = 1026 Field Value int GL_BACK_RIGHT public const int GL_BACK_RIGHT = 1027 Field Value int GL_BGR public const int GL_BGR = 32992 Field Value int GL_BGRA public const int GL_BGRA = 32993 Field Value int GL_BGRA_INTEGER public const int GL_BGRA_INTEGER = 36251 Field Value int GL_BGR_INTEGER public const int GL_BGR_INTEGER = 36250 Field Value int GL_BLEND public const int GL_BLEND = 3042 Field Value int GL_BLEND_COLOR public const int GL_BLEND_COLOR = 32773 Field Value int GL_BLEND_DST public const int GL_BLEND_DST = 3040 Field Value int GL_BLEND_DST_ALPHA public const int GL_BLEND_DST_ALPHA = 32970 Field Value int GL_BLEND_DST_RGB public const int GL_BLEND_DST_RGB = 32968 Field Value int GL_BLEND_EQUATION public const int GL_BLEND_EQUATION = 32777 Field Value int GL_BLEND_EQUATION_ALPHA public const int GL_BLEND_EQUATION_ALPHA = 34877 Field Value int GL_BLEND_EQUATION_RGB public const int GL_BLEND_EQUATION_RGB = 32777 Field Value int GL_BLEND_SRC public const int GL_BLEND_SRC = 3041 Field Value int GL_BLEND_SRC_ALPHA public const int GL_BLEND_SRC_ALPHA = 32971 Field Value int GL_BLEND_SRC_RGB public const int GL_BLEND_SRC_RGB = 32969 Field Value int GL_BLUE public const int GL_BLUE = 6405 Field Value int GL_BLUE_INTEGER public const int GL_BLUE_INTEGER = 36246 Field Value int GL_BOOL public const int GL_BOOL = 35670 Field Value int GL_BOOL_VEC2 public const int GL_BOOL_VEC2 = 35671 Field Value int GL_BOOL_VEC3 public const int GL_BOOL_VEC3 = 35672 Field Value int GL_BOOL_VEC4 public const int GL_BOOL_VEC4 = 35673 Field Value int GL_BUFFER_ACCESS public const int GL_BUFFER_ACCESS = 35003 Field Value int GL_BUFFER_ACCESS_FLAGS public const int GL_BUFFER_ACCESS_FLAGS = 37151 Field Value int GL_BUFFER_MAPPED public const int GL_BUFFER_MAPPED = 35004 Field Value int GL_BUFFER_MAP_LENGTH public const int GL_BUFFER_MAP_LENGTH = 37152 Field Value int GL_BUFFER_MAP_OFFSET public const int GL_BUFFER_MAP_OFFSET = 37153 Field Value int GL_BUFFER_MAP_POINTER public const int GL_BUFFER_MAP_POINTER = 35005 Field Value int GL_BUFFER_SIZE public const int GL_BUFFER_SIZE = 34660 Field Value int GL_BUFFER_USAGE public const int GL_BUFFER_USAGE = 34661 Field Value int GL_BYTE public const int GL_BYTE = 5120 Field Value int GL_CCW public const int GL_CCW = 2305 Field Value int GL_CLAMP_READ_COLOR public const int GL_CLAMP_READ_COLOR = 35100 Field Value int GL_CLAMP_TO_BORDER public const int GL_CLAMP_TO_BORDER = 33069 Field Value int GL_CLAMP_TO_EDGE public const int GL_CLAMP_TO_EDGE = 33071 Field Value int GL_CLEAR public const int GL_CLEAR = 5376 Field Value int GL_CLIP_DISTANCE0 public const int GL_CLIP_DISTANCE0 = 12288 Field Value int GL_CLIP_DISTANCE1 public const int GL_CLIP_DISTANCE1 = 12289 Field Value int GL_CLIP_DISTANCE2 public const int GL_CLIP_DISTANCE2 = 12290 Field Value int GL_CLIP_DISTANCE3 public const int GL_CLIP_DISTANCE3 = 12291 Field Value int GL_CLIP_DISTANCE4 public const int GL_CLIP_DISTANCE4 = 12292 Field Value int GL_CLIP_DISTANCE5 public const int GL_CLIP_DISTANCE5 = 12293 Field Value int GL_CLIP_DISTANCE6 public const int GL_CLIP_DISTANCE6 = 12294 Field Value int GL_CLIP_DISTANCE7 public const int GL_CLIP_DISTANCE7 = 12295 Field Value int GL_COLOR public const int GL_COLOR = 6144 Field Value int GL_COLOR_ATTACHMENT0 public const int GL_COLOR_ATTACHMENT0 = 36064 Field Value int GL_COLOR_ATTACHMENT1 public const int GL_COLOR_ATTACHMENT1 = 36065 Field Value int GL_COLOR_ATTACHMENT10 public const int GL_COLOR_ATTACHMENT10 = 36074 Field Value int GL_COLOR_ATTACHMENT11 public const int GL_COLOR_ATTACHMENT11 = 36075 Field Value int GL_COLOR_ATTACHMENT12 public const int GL_COLOR_ATTACHMENT12 = 36076 Field Value int GL_COLOR_ATTACHMENT13 public const int GL_COLOR_ATTACHMENT13 = 36077 Field Value int GL_COLOR_ATTACHMENT14 public const int GL_COLOR_ATTACHMENT14 = 36078 Field Value int GL_COLOR_ATTACHMENT15 public const int GL_COLOR_ATTACHMENT15 = 36079 Field Value int GL_COLOR_ATTACHMENT16 public const int GL_COLOR_ATTACHMENT16 = 36080 Field Value int GL_COLOR_ATTACHMENT17 public const int GL_COLOR_ATTACHMENT17 = 36081 Field Value int GL_COLOR_ATTACHMENT18 public const int GL_COLOR_ATTACHMENT18 = 36082 Field Value int GL_COLOR_ATTACHMENT19 public const int GL_COLOR_ATTACHMENT19 = 36083 Field Value int GL_COLOR_ATTACHMENT2 public const int GL_COLOR_ATTACHMENT2 = 36066 Field Value int GL_COLOR_ATTACHMENT20 public const int GL_COLOR_ATTACHMENT20 = 36084 Field Value int GL_COLOR_ATTACHMENT21 public const int GL_COLOR_ATTACHMENT21 = 36085 Field Value int GL_COLOR_ATTACHMENT22 public const int GL_COLOR_ATTACHMENT22 = 36086 Field Value int GL_COLOR_ATTACHMENT23 public const int GL_COLOR_ATTACHMENT23 = 36087 Field Value int GL_COLOR_ATTACHMENT24 public const int GL_COLOR_ATTACHMENT24 = 36088 Field Value int GL_COLOR_ATTACHMENT25 public const int GL_COLOR_ATTACHMENT25 = 36089 Field Value int GL_COLOR_ATTACHMENT26 public const int GL_COLOR_ATTACHMENT26 = 36090 Field Value int GL_COLOR_ATTACHMENT27 public const int GL_COLOR_ATTACHMENT27 = 36091 Field Value int GL_COLOR_ATTACHMENT28 public const int GL_COLOR_ATTACHMENT28 = 36092 Field Value int GL_COLOR_ATTACHMENT29 public const int GL_COLOR_ATTACHMENT29 = 36093 Field Value int GL_COLOR_ATTACHMENT3 public const int GL_COLOR_ATTACHMENT3 = 36067 Field Value int GL_COLOR_ATTACHMENT30 public const int GL_COLOR_ATTACHMENT30 = 36094 Field Value int GL_COLOR_ATTACHMENT31 public const int GL_COLOR_ATTACHMENT31 = 36095 Field Value int GL_COLOR_ATTACHMENT4 public const int GL_COLOR_ATTACHMENT4 = 36068 Field Value int GL_COLOR_ATTACHMENT5 public const int GL_COLOR_ATTACHMENT5 = 36069 Field Value int GL_COLOR_ATTACHMENT6 public const int GL_COLOR_ATTACHMENT6 = 36070 Field Value int GL_COLOR_ATTACHMENT7 public const int GL_COLOR_ATTACHMENT7 = 36071 Field Value int GL_COLOR_ATTACHMENT8 public const int GL_COLOR_ATTACHMENT8 = 36072 Field Value int GL_COLOR_ATTACHMENT9 public const int GL_COLOR_ATTACHMENT9 = 36073 Field Value int GL_COLOR_BUFFER_BIT public const int GL_COLOR_BUFFER_BIT = 16384 Field Value int GL_COLOR_CLEAR_VALUE public const int GL_COLOR_CLEAR_VALUE = 3106 Field Value int GL_COLOR_LOGIC_OP public const int GL_COLOR_LOGIC_OP = 3058 Field Value int GL_COLOR_WRITEMASK public const int GL_COLOR_WRITEMASK = 3107 Field Value int GL_COMPARE_REF_TO_TEXTURE public const int GL_COMPARE_REF_TO_TEXTURE = 34894 Field Value int GL_COMPILE_STATUS public const int GL_COMPILE_STATUS = 35713 Field Value int GL_COMPRESSED_RED public const int GL_COMPRESSED_RED = 33317 Field Value int GL_COMPRESSED_RED_RGTC1 public const int GL_COMPRESSED_RED_RGTC1 = 36283 Field Value int GL_COMPRESSED_RG public const int GL_COMPRESSED_RG = 33318 Field Value int GL_COMPRESSED_RGB public const int GL_COMPRESSED_RGB = 34029 Field Value int GL_COMPRESSED_RGBA public const int GL_COMPRESSED_RGBA = 34030 Field Value int GL_COMPRESSED_RG_RGTC2 public const int GL_COMPRESSED_RG_RGTC2 = 36285 Field Value int GL_COMPRESSED_SIGNED_RED_RGTC1 public const int GL_COMPRESSED_SIGNED_RED_RGTC1 = 36284 Field Value int GL_COMPRESSED_SIGNED_RG_RGTC2 public const int GL_COMPRESSED_SIGNED_RG_RGTC2 = 36286 Field Value int GL_COMPRESSED_SRGB public const int GL_COMPRESSED_SRGB = 35912 Field Value int GL_COMPRESSED_SRGB_ALPHA public const int GL_COMPRESSED_SRGB_ALPHA = 35913 Field Value int GL_COMPRESSED_TEXTURE_FORMATS public const int GL_COMPRESSED_TEXTURE_FORMATS = 34467 Field Value int GL_CONDITION_SATISFIED public const int GL_CONDITION_SATISFIED = 37148 Field Value int GL_CONSTANT_ALPHA public const int GL_CONSTANT_ALPHA = 32771 Field Value int GL_CONSTANT_COLOR public const int GL_CONSTANT_COLOR = 32769 Field Value int GL_CONTEXT_COMPATIBILITY_PROFILE_BIT public const int GL_CONTEXT_COMPATIBILITY_PROFILE_BIT = 2 Field Value int GL_CONTEXT_CORE_PROFILE_BIT public const int GL_CONTEXT_CORE_PROFILE_BIT = 1 Field Value int GL_CONTEXT_FLAGS public const int GL_CONTEXT_FLAGS = 33310 Field Value int GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT public const int GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = 1 Field Value int GL_CONTEXT_PROFILE_MASK public const int GL_CONTEXT_PROFILE_MASK = 37158 Field Value int GL_COPY public const int GL_COPY = 5379 Field Value int GL_COPY_INVERTED public const int GL_COPY_INVERTED = 5388 Field Value int GL_COPY_READ_BUFFER public const int GL_COPY_READ_BUFFER = 36662 Field Value int GL_COPY_WRITE_BUFFER public const int GL_COPY_WRITE_BUFFER = 36663 Field Value int GL_CULL_FACE public const int GL_CULL_FACE = 2884 Field Value int GL_CULL_FACE_MODE public const int GL_CULL_FACE_MODE = 2885 Field Value int GL_CURRENT_PROGRAM public const int GL_CURRENT_PROGRAM = 35725 Field Value int GL_CURRENT_QUERY public const int GL_CURRENT_QUERY = 34917 Field Value int GL_CURRENT_VERTEX_ATTRIB public const int GL_CURRENT_VERTEX_ATTRIB = 34342 Field Value int GL_CW public const int GL_CW = 2304 Field Value int GL_DECR public const int GL_DECR = 7683 Field Value int GL_DECR_WRAP public const int GL_DECR_WRAP = 34056 Field Value int GL_DELETE_STATUS public const int GL_DELETE_STATUS = 35712 Field Value int GL_DEPTH public const int GL_DEPTH = 6145 Field Value int GL_DEPTH24_STENCIL8 public const int GL_DEPTH24_STENCIL8 = 35056 Field Value int GL_DEPTH32F_STENCIL8 public const int GL_DEPTH32F_STENCIL8 = 36013 Field Value int GL_DEPTH_ATTACHMENT public const int GL_DEPTH_ATTACHMENT = 36096 Field Value int GL_DEPTH_BUFFER_BIT public const int GL_DEPTH_BUFFER_BIT = 256 Field Value int GL_DEPTH_CLAMP public const int GL_DEPTH_CLAMP = 34383 Field Value int GL_DEPTH_CLEAR_VALUE public const int GL_DEPTH_CLEAR_VALUE = 2931 Field Value int GL_DEPTH_COMPONENT public const int GL_DEPTH_COMPONENT = 6402 Field Value int GL_DEPTH_COMPONENT16 public const int GL_DEPTH_COMPONENT16 = 33189 Field Value int GL_DEPTH_COMPONENT24 public const int GL_DEPTH_COMPONENT24 = 33190 Field Value int GL_DEPTH_COMPONENT32 public const int GL_DEPTH_COMPONENT32 = 33191 Field Value int GL_DEPTH_COMPONENT32F public const int GL_DEPTH_COMPONENT32F = 36012 Field Value int GL_DEPTH_FUNC public const int GL_DEPTH_FUNC = 2932 Field Value int GL_DEPTH_RANGE public const int GL_DEPTH_RANGE = 2928 Field Value int GL_DEPTH_STENCIL public const int GL_DEPTH_STENCIL = 34041 Field Value int GL_DEPTH_STENCIL_ATTACHMENT public const int GL_DEPTH_STENCIL_ATTACHMENT = 33306 Field Value int GL_DEPTH_TEST public const int GL_DEPTH_TEST = 2929 Field Value int GL_DEPTH_WRITEMASK public const int GL_DEPTH_WRITEMASK = 2930 Field Value int GL_DITHER public const int GL_DITHER = 3024 Field Value int GL_DONT_CARE public const int GL_DONT_CARE = 4352 Field Value int GL_DOUBLE public const int GL_DOUBLE = 5130 Field Value int GL_DOUBLEBUFFER public const int GL_DOUBLEBUFFER = 3122 Field Value int GL_DRAW_BUFFER public const int GL_DRAW_BUFFER = 3073 Field Value int GL_DRAW_BUFFER0 public const int GL_DRAW_BUFFER0 = 34853 Field Value int GL_DRAW_BUFFER1 public const int GL_DRAW_BUFFER1 = 34854 Field Value int GL_DRAW_BUFFER10 public const int GL_DRAW_BUFFER10 = 34863 Field Value int GL_DRAW_BUFFER11 public const int GL_DRAW_BUFFER11 = 34864 Field Value int GL_DRAW_BUFFER12 public const int GL_DRAW_BUFFER12 = 34865 Field Value int GL_DRAW_BUFFER13 public const int GL_DRAW_BUFFER13 = 34866 Field Value int GL_DRAW_BUFFER14 public const int GL_DRAW_BUFFER14 = 34867 Field Value int GL_DRAW_BUFFER15 public const int GL_DRAW_BUFFER15 = 34868 Field Value int GL_DRAW_BUFFER2 public const int GL_DRAW_BUFFER2 = 34855 Field Value int GL_DRAW_BUFFER3 public const int GL_DRAW_BUFFER3 = 34856 Field Value int GL_DRAW_BUFFER4 public const int GL_DRAW_BUFFER4 = 34857 Field Value int GL_DRAW_BUFFER5 public const int GL_DRAW_BUFFER5 = 34858 Field Value int GL_DRAW_BUFFER6 public const int GL_DRAW_BUFFER6 = 34859 Field Value int GL_DRAW_BUFFER7 public const int GL_DRAW_BUFFER7 = 34860 Field Value int GL_DRAW_BUFFER8 public const int GL_DRAW_BUFFER8 = 34861 Field Value int GL_DRAW_BUFFER9 public const int GL_DRAW_BUFFER9 = 34862 Field Value int GL_DRAW_FRAMEBUFFER public const int GL_DRAW_FRAMEBUFFER = 36009 Field Value int GL_DRAW_FRAMEBUFFER_BINDING public const int GL_DRAW_FRAMEBUFFER_BINDING = 36006 Field Value int GL_DST_ALPHA public const int GL_DST_ALPHA = 772 Field Value int GL_DST_COLOR public const int GL_DST_COLOR = 774 Field Value int GL_DYNAMIC_COPY public const int GL_DYNAMIC_COPY = 35050 Field Value int GL_DYNAMIC_DRAW public const int GL_DYNAMIC_DRAW = 35048 Field Value int GL_DYNAMIC_READ public const int GL_DYNAMIC_READ = 35049 Field Value int GL_ELEMENT_ARRAY_BUFFER public const int GL_ELEMENT_ARRAY_BUFFER = 34963 Field Value int GL_ELEMENT_ARRAY_BUFFER_BINDING public const int GL_ELEMENT_ARRAY_BUFFER_BINDING = 34965 Field Value int GL_EQUAL public const int GL_EQUAL = 514 Field Value int GL_EQUIV public const int GL_EQUIV = 5385 Field Value int GL_EXTENSIONS public const int GL_EXTENSIONS = 7939 Field Value int GL_FALSE public const int GL_FALSE = 0 Field Value int GL_FASTEST public const int GL_FASTEST = 4353 Field Value int GL_FILL public const int GL_FILL = 6914 Field Value int GL_FIRST_VERTEX_CONVENTION public const int GL_FIRST_VERTEX_CONVENTION = 36429 Field Value int GL_FIXED_ONLY public const int GL_FIXED_ONLY = 35101 Field Value int GL_FLOAT public const int GL_FLOAT = 5126 Field Value int GL_FLOAT_32_UNSIGNED_INT_24_8_REV public const int GL_FLOAT_32_UNSIGNED_INT_24_8_REV = 36269 Field Value int GL_FLOAT_MAT2 public const int GL_FLOAT_MAT2 = 35674 Field Value int GL_FLOAT_MAT2x3 public const int GL_FLOAT_MAT2x3 = 35685 Field Value int GL_FLOAT_MAT2x4 public const int GL_FLOAT_MAT2x4 = 35686 Field Value int GL_FLOAT_MAT3 public const int GL_FLOAT_MAT3 = 35675 Field Value int GL_FLOAT_MAT3x2 public const int GL_FLOAT_MAT3x2 = 35687 Field Value int GL_FLOAT_MAT3x4 public const int GL_FLOAT_MAT3x4 = 35688 Field Value int GL_FLOAT_MAT4 public const int GL_FLOAT_MAT4 = 35676 Field Value int GL_FLOAT_MAT4x2 public const int GL_FLOAT_MAT4x2 = 35689 Field Value int GL_FLOAT_MAT4x3 public const int GL_FLOAT_MAT4x3 = 35690 Field Value int GL_FLOAT_VEC2 public const int GL_FLOAT_VEC2 = 35664 Field Value int GL_FLOAT_VEC3 public const int GL_FLOAT_VEC3 = 35665 Field Value int GL_FLOAT_VEC4 public const int GL_FLOAT_VEC4 = 35666 Field Value int GL_FRAGMENT_SHADER public const int GL_FRAGMENT_SHADER = 35632 Field Value int GL_FRAGMENT_SHADER_DERIVATIVE_HINT public const int GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 35723 Field Value int GL_FRAMEBUFFER public const int GL_FRAMEBUFFER = 36160 Field Value int GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE public const int GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 33301 Field Value int GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE public const int GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 33300 Field Value int GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING public const int GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 33296 Field Value int GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE public const int GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 33297 Field Value int GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE public const int GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 33302 Field Value int GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE public const int GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 33299 Field Value int GL_FRAMEBUFFER_ATTACHMENT_LAYERED public const int GL_FRAMEBUFFER_ATTACHMENT_LAYERED = 36263 Field Value int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME public const int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 36049 Field Value int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE public const int GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 36048 Field Value int GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE public const int GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE = 33298 Field Value int GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE public const int GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 33303 Field Value int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE public const int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 36051 Field Value int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER public const int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 36052 Field Value int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL public const int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 36050 Field Value int GL_FRAMEBUFFER_BINDING public const int GL_FRAMEBUFFER_BINDING = 36006 Field Value int GL_FRAMEBUFFER_COMPLETE public const int GL_FRAMEBUFFER_COMPLETE = 36053 Field Value int GL_FRAMEBUFFER_DEFAULT public const int GL_FRAMEBUFFER_DEFAULT = 33304 Field Value int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT public const int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 36054 Field Value int GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER public const int GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 36059 Field Value int GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS public const int GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 36264 Field Value int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT public const int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 36055 Field Value int GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE public const int GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 36182 Field Value int GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER public const int GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 36060 Field Value int GL_FRAMEBUFFER_SRGB public const int GL_FRAMEBUFFER_SRGB = 36281 Field Value int GL_FRAMEBUFFER_UNDEFINED public const int GL_FRAMEBUFFER_UNDEFINED = 33305 Field Value int GL_FRAMEBUFFER_UNSUPPORTED public const int GL_FRAMEBUFFER_UNSUPPORTED = 36061 Field Value int GL_FRONT public const int GL_FRONT = 1028 Field Value int GL_FRONT_AND_BACK public const int GL_FRONT_AND_BACK = 1032 Field Value int GL_FRONT_FACE public const int GL_FRONT_FACE = 2886 Field Value int GL_FRONT_LEFT public const int GL_FRONT_LEFT = 1024 Field Value int GL_FRONT_RIGHT public const int GL_FRONT_RIGHT = 1025 Field Value int GL_FUNC_ADD public const int GL_FUNC_ADD = 32774 Field Value int GL_FUNC_REVERSE_SUBTRACT public const int GL_FUNC_REVERSE_SUBTRACT = 32779 Field Value int GL_FUNC_SUBTRACT public const int GL_FUNC_SUBTRACT = 32778 Field Value int GL_GEOMETRY_INPUT_TYPE public const int GL_GEOMETRY_INPUT_TYPE = 35095 Field Value int GL_GEOMETRY_OUTPUT_TYPE public const int GL_GEOMETRY_OUTPUT_TYPE = 35096 Field Value int GL_GEOMETRY_SHADER public const int GL_GEOMETRY_SHADER = 36313 Field Value int GL_GEOMETRY_VERTICES_OUT public const int GL_GEOMETRY_VERTICES_OUT = 35094 Field Value int GL_GEQUAL public const int GL_GEQUAL = 518 Field Value int GL_GREATER public const int GL_GREATER = 516 Field Value int GL_GREEN public const int GL_GREEN = 6404 Field Value int GL_GREEN_INTEGER public const int GL_GREEN_INTEGER = 36245 Field Value int GL_INCR public const int GL_INCR = 7682 Field Value int GL_INCR_WRAP public const int GL_INCR_WRAP = 34055 Field Value int GL_INFO_LOG_LENGTH public const int GL_INFO_LOG_LENGTH = 35716 Field Value int GL_INT public const int GL_INT = 5124 Field Value int GL_INTERLEAVED_ATTRIBS public const int GL_INTERLEAVED_ATTRIBS = 35980 Field Value int GL_INT_2_10_10_10_REV public const int GL_INT_2_10_10_10_REV = 36255 Field Value int GL_INT_SAMPLER_1D public const int GL_INT_SAMPLER_1D = 36297 Field Value int GL_INT_SAMPLER_1D_ARRAY public const int GL_INT_SAMPLER_1D_ARRAY = 36302 Field Value int GL_INT_SAMPLER_2D public const int GL_INT_SAMPLER_2D = 36298 Field Value int GL_INT_SAMPLER_2D_ARRAY public const int GL_INT_SAMPLER_2D_ARRAY = 36303 Field Value int GL_INT_SAMPLER_2D_MULTISAMPLE public const int GL_INT_SAMPLER_2D_MULTISAMPLE = 37129 Field Value int GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY public const int GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 37132 Field Value int GL_INT_SAMPLER_2D_RECT public const int GL_INT_SAMPLER_2D_RECT = 36301 Field Value int GL_INT_SAMPLER_3D public const int GL_INT_SAMPLER_3D = 36299 Field Value int GL_INT_SAMPLER_BUFFER public const int GL_INT_SAMPLER_BUFFER = 36304 Field Value int GL_INT_SAMPLER_CUBE public const int GL_INT_SAMPLER_CUBE = 36300 Field Value int GL_INT_VEC2 public const int GL_INT_VEC2 = 35667 Field Value int GL_INT_VEC3 public const int GL_INT_VEC3 = 35668 Field Value int GL_INT_VEC4 public const int GL_INT_VEC4 = 35669 Field Value int GL_INVALID_ENUM public const int GL_INVALID_ENUM = 1280 Field Value int GL_INVALID_FRAMEBUFFER_OPERATION public const int GL_INVALID_FRAMEBUFFER_OPERATION = 1286 Field Value int GL_INVALID_INDEX public const uint GL_INVALID_INDEX = 4294967295 Field Value uint GL_INVALID_OPERATION public const int GL_INVALID_OPERATION = 1282 Field Value int GL_INVALID_VALUE public const int GL_INVALID_VALUE = 1281 Field Value int GL_INVERT public const int GL_INVERT = 5386 Field Value int GL_KEEP public const int GL_KEEP = 7680 Field Value int GL_LAST_VERTEX_CONVENTION public const int GL_LAST_VERTEX_CONVENTION = 36430 Field Value int GL_LEFT public const int GL_LEFT = 1030 Field Value int GL_LEQUAL public const int GL_LEQUAL = 515 Field Value int GL_LESS public const int GL_LESS = 513 Field Value int GL_LINE public const int GL_LINE = 6913 Field Value int GL_LINEAR public const int GL_LINEAR = 9729 Field Value int GL_LINEAR_MIPMAP_LINEAR public const int GL_LINEAR_MIPMAP_LINEAR = 9987 Field Value int GL_LINEAR_MIPMAP_NEAREST public const int GL_LINEAR_MIPMAP_NEAREST = 9985 Field Value int GL_LINES public const int GL_LINES = 1 Field Value int GL_LINES_ADJACENCY public const int GL_LINES_ADJACENCY = 10 Field Value int GL_LINE_LOOP public const int GL_LINE_LOOP = 2 Field Value int GL_LINE_SMOOTH public const int GL_LINE_SMOOTH = 2848 Field Value int GL_LINE_SMOOTH_HINT public const int GL_LINE_SMOOTH_HINT = 3154 Field Value int GL_LINE_STRIP public const int GL_LINE_STRIP = 3 Field Value int GL_LINE_STRIP_ADJACENCY public const int GL_LINE_STRIP_ADJACENCY = 11 Field Value int GL_LINE_WIDTH public const int GL_LINE_WIDTH = 2849 Field Value int GL_LINE_WIDTH_GRANULARITY public const int GL_LINE_WIDTH_GRANULARITY = 2851 Field Value int GL_LINE_WIDTH_RANGE public const int GL_LINE_WIDTH_RANGE = 2850 Field Value int GL_LINK_STATUS public const int GL_LINK_STATUS = 35714 Field Value int GL_LOGIC_OP_MODE public const int GL_LOGIC_OP_MODE = 3056 Field Value int GL_LOWER_LEFT public const int GL_LOWER_LEFT = 36001 Field Value int GL_MAJOR_VERSION public const int GL_MAJOR_VERSION = 33307 Field Value int GL_MAP_FLUSH_EXPLICIT_BIT public const int GL_MAP_FLUSH_EXPLICIT_BIT = 16 Field Value int GL_MAP_INVALIDATE_BUFFER_BIT public const int GL_MAP_INVALIDATE_BUFFER_BIT = 8 Field Value int GL_MAP_INVALIDATE_RANGE_BIT public const int GL_MAP_INVALIDATE_RANGE_BIT = 4 Field Value int GL_MAP_READ_BIT public const int GL_MAP_READ_BIT = 1 Field Value int GL_MAP_UNSYNCHRONIZED_BIT public const int GL_MAP_UNSYNCHRONIZED_BIT = 32 Field Value int GL_MAP_WRITE_BIT public const int GL_MAP_WRITE_BIT = 2 Field Value int GL_MAX public const int GL_MAX = 32776 Field Value int GL_MAX_3D_TEXTURE_SIZE public const int GL_MAX_3D_TEXTURE_SIZE = 32883 Field Value int GL_MAX_ARRAY_TEXTURE_LAYERS public const int GL_MAX_ARRAY_TEXTURE_LAYERS = 35071 Field Value int GL_MAX_CLIP_DISTANCES public const int GL_MAX_CLIP_DISTANCES = 3378 Field Value int GL_MAX_COLOR_ATTACHMENTS public const int GL_MAX_COLOR_ATTACHMENTS = 36063 Field Value int GL_MAX_COLOR_TEXTURE_SAMPLES public const int GL_MAX_COLOR_TEXTURE_SAMPLES = 37134 Field Value int GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS public const int GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 35379 Field Value int GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS public const int GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 35378 Field Value int GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS public const int GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661 Field Value int GL_MAX_COMBINED_UNIFORM_BLOCKS public const int GL_MAX_COMBINED_UNIFORM_BLOCKS = 35374 Field Value int GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS public const int GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 35377 Field Value int GL_MAX_CUBE_MAP_TEXTURE_SIZE public const int GL_MAX_CUBE_MAP_TEXTURE_SIZE = 34076 Field Value int GL_MAX_DEPTH_TEXTURE_SAMPLES public const int GL_MAX_DEPTH_TEXTURE_SAMPLES = 37135 Field Value int GL_MAX_DRAW_BUFFERS public const int GL_MAX_DRAW_BUFFERS = 34852 Field Value int GL_MAX_DUAL_SOURCE_DRAW_BUFFERS public const int GL_MAX_DUAL_SOURCE_DRAW_BUFFERS = 35068 Field Value int GL_MAX_ELEMENTS_INDICES public const int GL_MAX_ELEMENTS_INDICES = 33001 Field Value int GL_MAX_ELEMENTS_VERTICES public const int GL_MAX_ELEMENTS_VERTICES = 33000 Field Value int GL_MAX_FRAGMENT_INPUT_COMPONENTS public const int GL_MAX_FRAGMENT_INPUT_COMPONENTS = 37157 Field Value int GL_MAX_FRAGMENT_UNIFORM_BLOCKS public const int GL_MAX_FRAGMENT_UNIFORM_BLOCKS = 35373 Field Value int GL_MAX_FRAGMENT_UNIFORM_COMPONENTS public const int GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = 35657 Field Value int GL_MAX_GEOMETRY_INPUT_COMPONENTS public const int GL_MAX_GEOMETRY_INPUT_COMPONENTS = 37155 Field Value int GL_MAX_GEOMETRY_OUTPUT_COMPONENTS public const int GL_MAX_GEOMETRY_OUTPUT_COMPONENTS = 37156 Field Value int GL_MAX_GEOMETRY_OUTPUT_VERTICES public const int GL_MAX_GEOMETRY_OUTPUT_VERTICES = 36320 Field Value int GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS public const int GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 35881 Field Value int GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS public const int GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 36321 Field Value int GL_MAX_GEOMETRY_UNIFORM_BLOCKS public const int GL_MAX_GEOMETRY_UNIFORM_BLOCKS = 35372 Field Value int GL_MAX_GEOMETRY_UNIFORM_COMPONENTS public const int GL_MAX_GEOMETRY_UNIFORM_COMPONENTS = 36319 Field Value int GL_MAX_INTEGER_SAMPLES public const int GL_MAX_INTEGER_SAMPLES = 37136 Field Value int GL_MAX_PROGRAM_TEXEL_OFFSET public const int GL_MAX_PROGRAM_TEXEL_OFFSET = 35077 Field Value int GL_MAX_RECTANGLE_TEXTURE_SIZE public const int GL_MAX_RECTANGLE_TEXTURE_SIZE = 34040 Field Value int GL_MAX_RENDERBUFFER_SIZE public const int GL_MAX_RENDERBUFFER_SIZE = 34024 Field Value int GL_MAX_SAMPLES public const int GL_MAX_SAMPLES = 36183 Field Value int GL_MAX_SAMPLE_MASK_WORDS public const int GL_MAX_SAMPLE_MASK_WORDS = 36441 Field Value int GL_MAX_SERVER_WAIT_TIMEOUT public const int GL_MAX_SERVER_WAIT_TIMEOUT = 37137 Field Value int GL_MAX_TEXTURE_BUFFER_SIZE public const int GL_MAX_TEXTURE_BUFFER_SIZE = 35883 Field Value int GL_MAX_TEXTURE_IMAGE_UNITS public const int GL_MAX_TEXTURE_IMAGE_UNITS = 34930 Field Value int GL_MAX_TEXTURE_LOD_BIAS public const int GL_MAX_TEXTURE_LOD_BIAS = 34045 Field Value int GL_MAX_TEXTURE_SIZE public const int GL_MAX_TEXTURE_SIZE = 3379 Field Value int GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS public const int GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 35978 Field Value int GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS public const int GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 35979 Field Value int GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS public const int GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 35968 Field Value int GL_MAX_UNIFORM_BLOCK_SIZE public const int GL_MAX_UNIFORM_BLOCK_SIZE = 35376 Field Value int GL_MAX_UNIFORM_BUFFER_BINDINGS public const int GL_MAX_UNIFORM_BUFFER_BINDINGS = 35375 Field Value int GL_MAX_VARYING_COMPONENTS public const int GL_MAX_VARYING_COMPONENTS = 35659 Field Value int GL_MAX_VARYING_FLOATS public const int GL_MAX_VARYING_FLOATS = 35659 Field Value int GL_MAX_VERTEX_ATTRIBS public const int GL_MAX_VERTEX_ATTRIBS = 34921 Field Value int GL_MAX_VERTEX_OUTPUT_COMPONENTS public const int GL_MAX_VERTEX_OUTPUT_COMPONENTS = 37154 Field Value int GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS public const int GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660 Field Value int GL_MAX_VERTEX_UNIFORM_BLOCKS public const int GL_MAX_VERTEX_UNIFORM_BLOCKS = 35371 Field Value int GL_MAX_VERTEX_UNIFORM_COMPONENTS public const int GL_MAX_VERTEX_UNIFORM_COMPONENTS = 35658 Field Value int GL_MAX_VIEWPORT_DIMS public const int GL_MAX_VIEWPORT_DIMS = 3386 Field Value int GL_MIN public const int GL_MIN = 32775 Field Value int GL_MINOR_VERSION public const int GL_MINOR_VERSION = 33308 Field Value int GL_MIN_PROGRAM_TEXEL_OFFSET public const int GL_MIN_PROGRAM_TEXEL_OFFSET = 35076 Field Value int GL_MIRRORED_REPEAT public const int GL_MIRRORED_REPEAT = 33648 Field Value int GL_MULTISAMPLE public const int GL_MULTISAMPLE = 32925 Field Value int GL_NAND public const int GL_NAND = 5390 Field Value int GL_NEAREST public const int GL_NEAREST = 9728 Field Value int GL_NEAREST_MIPMAP_LINEAR public const int GL_NEAREST_MIPMAP_LINEAR = 9986 Field Value int GL_NEAREST_MIPMAP_NEAREST public const int GL_NEAREST_MIPMAP_NEAREST = 9984 Field Value int GL_NEVER public const int GL_NEVER = 512 Field Value int GL_NICEST public const int GL_NICEST = 4354 Field Value int GL_NONE public const int GL_NONE = 0 Field Value int GL_NOOP public const int GL_NOOP = 5381 Field Value int GL_NOR public const int GL_NOR = 5384 Field Value int GL_NOTEQUAL public const int GL_NOTEQUAL = 517 Field Value int GL_NO_ERROR public const int GL_NO_ERROR = 0 Field Value int GL_NUM_COMPRESSED_TEXTURE_FORMATS public const int GL_NUM_COMPRESSED_TEXTURE_FORMATS = 34466 Field Value int GL_NUM_EXTENSIONS public const int GL_NUM_EXTENSIONS = 33309 Field Value int GL_OBJECT_TYPE public const int GL_OBJECT_TYPE = 37138 Field Value int GL_ONE public const int GL_ONE = 1 Field Value int GL_ONE_MINUS_CONSTANT_ALPHA public const int GL_ONE_MINUS_CONSTANT_ALPHA = 32772 Field Value int GL_ONE_MINUS_CONSTANT_COLOR public const int GL_ONE_MINUS_CONSTANT_COLOR = 32770 Field Value int GL_ONE_MINUS_DST_ALPHA public const int GL_ONE_MINUS_DST_ALPHA = 773 Field Value int GL_ONE_MINUS_DST_COLOR public const int GL_ONE_MINUS_DST_COLOR = 775 Field Value int GL_ONE_MINUS_SRC1_ALPHA public const int GL_ONE_MINUS_SRC1_ALPHA = 35067 Field Value int GL_ONE_MINUS_SRC1_COLOR public const int GL_ONE_MINUS_SRC1_COLOR = 35066 Field Value int GL_ONE_MINUS_SRC_ALPHA public const int GL_ONE_MINUS_SRC_ALPHA = 771 Field Value int GL_ONE_MINUS_SRC_COLOR public const int GL_ONE_MINUS_SRC_COLOR = 769 Field Value int GL_OR public const int GL_OR = 5383 Field Value int GL_OR_INVERTED public const int GL_OR_INVERTED = 5389 Field Value int GL_OR_REVERSE public const int GL_OR_REVERSE = 5387 Field Value int GL_OUT_OF_MEMORY public const int GL_OUT_OF_MEMORY = 1285 Field Value int GL_PACK_ALIGNMENT public const int GL_PACK_ALIGNMENT = 3333 Field Value int GL_PACK_IMAGE_HEIGHT public const int GL_PACK_IMAGE_HEIGHT = 32876 Field Value int GL_PACK_LSB_FIRST public const int GL_PACK_LSB_FIRST = 3329 Field Value int GL_PACK_ROW_LENGTH public const int GL_PACK_ROW_LENGTH = 3330 Field Value int GL_PACK_SKIP_IMAGES public const int GL_PACK_SKIP_IMAGES = 32875 Field Value int GL_PACK_SKIP_PIXELS public const int GL_PACK_SKIP_PIXELS = 3332 Field Value int GL_PACK_SKIP_ROWS public const int GL_PACK_SKIP_ROWS = 3331 Field Value int GL_PACK_SWAP_BYTES public const int GL_PACK_SWAP_BYTES = 3328 Field Value int GL_PIXEL_PACK_BUFFER public const int GL_PIXEL_PACK_BUFFER = 35051 Field Value int GL_PIXEL_PACK_BUFFER_BINDING public const int GL_PIXEL_PACK_BUFFER_BINDING = 35053 Field Value int GL_PIXEL_UNPACK_BUFFER public const int GL_PIXEL_UNPACK_BUFFER = 35052 Field Value int GL_PIXEL_UNPACK_BUFFER_BINDING public const int GL_PIXEL_UNPACK_BUFFER_BINDING = 35055 Field Value int GL_POINT public const int GL_POINT = 6912 Field Value int GL_POINTS public const int GL_POINTS = 0 Field Value int GL_POINT_FADE_THRESHOLD_SIZE public const int GL_POINT_FADE_THRESHOLD_SIZE = 33064 Field Value int GL_POINT_SIZE public const int GL_POINT_SIZE = 2833 Field Value int GL_POINT_SIZE_GRANULARITY public const int GL_POINT_SIZE_GRANULARITY = 2835 Field Value int GL_POINT_SIZE_RANGE public const int GL_POINT_SIZE_RANGE = 2834 Field Value int GL_POINT_SPRITE_COORD_ORIGIN public const int GL_POINT_SPRITE_COORD_ORIGIN = 36000 Field Value int GL_POLYGON_MODE public const int GL_POLYGON_MODE = 2880 Field Value int GL_POLYGON_OFFSET_FACTOR public const int GL_POLYGON_OFFSET_FACTOR = 32824 Field Value int GL_POLYGON_OFFSET_FILL public const int GL_POLYGON_OFFSET_FILL = 32823 Field Value int GL_POLYGON_OFFSET_LINE public const int GL_POLYGON_OFFSET_LINE = 10754 Field Value int GL_POLYGON_OFFSET_POINT public const int GL_POLYGON_OFFSET_POINT = 10753 Field Value int GL_POLYGON_OFFSET_UNITS public const int GL_POLYGON_OFFSET_UNITS = 10752 Field Value int GL_POLYGON_SMOOTH public const int GL_POLYGON_SMOOTH = 2881 Field Value int GL_POLYGON_SMOOTH_HINT public const int GL_POLYGON_SMOOTH_HINT = 3155 Field Value int GL_PRIMITIVES_GENERATED public const int GL_PRIMITIVES_GENERATED = 35975 Field Value int GL_PRIMITIVE_RESTART public const int GL_PRIMITIVE_RESTART = 36765 Field Value int GL_PRIMITIVE_RESTART_INDEX public const int GL_PRIMITIVE_RESTART_INDEX = 36766 Field Value int GL_PROGRAM_POINT_SIZE public const int GL_PROGRAM_POINT_SIZE = 34370 Field Value int GL_PROVOKING_VERTEX public const int GL_PROVOKING_VERTEX = 36431 Field Value int GL_PROXY_TEXTURE_1D public const int GL_PROXY_TEXTURE_1D = 32867 Field Value int GL_PROXY_TEXTURE_1D_ARRAY public const int GL_PROXY_TEXTURE_1D_ARRAY = 35865 Field Value int GL_PROXY_TEXTURE_2D public const int GL_PROXY_TEXTURE_2D = 32868 Field Value int GL_PROXY_TEXTURE_2D_ARRAY public const int GL_PROXY_TEXTURE_2D_ARRAY = 35867 Field Value int GL_PROXY_TEXTURE_2D_MULTISAMPLE public const int GL_PROXY_TEXTURE_2D_MULTISAMPLE = 37121 Field Value int GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY public const int GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 37123 Field Value int GL_PROXY_TEXTURE_3D public const int GL_PROXY_TEXTURE_3D = 32880 Field Value int GL_PROXY_TEXTURE_CUBE_MAP public const int GL_PROXY_TEXTURE_CUBE_MAP = 34075 Field Value int GL_PROXY_TEXTURE_RECTANGLE public const int GL_PROXY_TEXTURE_RECTANGLE = 34039 Field Value int GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION public const int GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 36428 Field Value int GL_QUERY_BY_REGION_NO_WAIT public const int GL_QUERY_BY_REGION_NO_WAIT = 36374 Field Value int GL_QUERY_BY_REGION_WAIT public const int GL_QUERY_BY_REGION_WAIT = 36373 Field Value int GL_QUERY_COUNTER_BITS public const int GL_QUERY_COUNTER_BITS = 34916 Field Value int GL_QUERY_NO_WAIT public const int GL_QUERY_NO_WAIT = 36372 Field Value int GL_QUERY_RESULT public const int GL_QUERY_RESULT = 34918 Field Value int GL_QUERY_RESULT_AVAILABLE public const int GL_QUERY_RESULT_AVAILABLE = 34919 Field Value int GL_QUERY_WAIT public const int GL_QUERY_WAIT = 36371 Field Value int GL_R11F_G11F_B10F public const int GL_R11F_G11F_B10F = 35898 Field Value int GL_R16 public const int GL_R16 = 33322 Field Value int GL_R16F public const int GL_R16F = 33325 Field Value int GL_R16I public const int GL_R16I = 33331 Field Value int GL_R16UI public const int GL_R16UI = 33332 Field Value int GL_R16_SNORM public const int GL_R16_SNORM = 36760 Field Value int GL_R32F public const int GL_R32F = 33326 Field Value int GL_R32I public const int GL_R32I = 33333 Field Value int GL_R32UI public const int GL_R32UI = 33334 Field Value int GL_R3_G3_B2 public const int GL_R3_G3_B2 = 10768 Field Value int GL_R8 public const int GL_R8 = 33321 Field Value int GL_R8I public const int GL_R8I = 33329 Field Value int GL_R8UI public const int GL_R8UI = 33330 Field Value int GL_R8_SNORM public const int GL_R8_SNORM = 36756 Field Value int GL_RASTERIZER_DISCARD public const int GL_RASTERIZER_DISCARD = 35977 Field Value int GL_READ_BUFFER public const int GL_READ_BUFFER = 3074 Field Value int GL_READ_FRAMEBUFFER public const int GL_READ_FRAMEBUFFER = 36008 Field Value int GL_READ_FRAMEBUFFER_BINDING public const int GL_READ_FRAMEBUFFER_BINDING = 36010 Field Value int GL_READ_ONLY public const int GL_READ_ONLY = 35000 Field Value int GL_READ_WRITE public const int GL_READ_WRITE = 35002 Field Value int GL_RED public const int GL_RED = 6403 Field Value int GL_RED_INTEGER public const int GL_RED_INTEGER = 36244 Field Value int GL_RENDERBUFFER public const int GL_RENDERBUFFER = 36161 Field Value int GL_RENDERBUFFER_ALPHA_SIZE public const int GL_RENDERBUFFER_ALPHA_SIZE = 36179 Field Value int GL_RENDERBUFFER_BINDING public const int GL_RENDERBUFFER_BINDING = 36007 Field Value int GL_RENDERBUFFER_BLUE_SIZE public const int GL_RENDERBUFFER_BLUE_SIZE = 36178 Field Value int GL_RENDERBUFFER_DEPTH_SIZE public const int GL_RENDERBUFFER_DEPTH_SIZE = 36180 Field Value int GL_RENDERBUFFER_GREEN_SIZE public const int GL_RENDERBUFFER_GREEN_SIZE = 36177 Field Value int GL_RENDERBUFFER_HEIGHT public const int GL_RENDERBUFFER_HEIGHT = 36163 Field Value int GL_RENDERBUFFER_INTERNAL_FORMAT public const int GL_RENDERBUFFER_INTERNAL_FORMAT = 36164 Field Value int GL_RENDERBUFFER_RED_SIZE public const int GL_RENDERBUFFER_RED_SIZE = 36176 Field Value int GL_RENDERBUFFER_SAMPLES public const int GL_RENDERBUFFER_SAMPLES = 36011 Field Value int GL_RENDERBUFFER_STENCIL_SIZE public const int GL_RENDERBUFFER_STENCIL_SIZE = 36181 Field Value int GL_RENDERBUFFER_WIDTH public const int GL_RENDERBUFFER_WIDTH = 36162 Field Value int GL_RENDERER public const int GL_RENDERER = 7937 Field Value int GL_REPEAT public const int GL_REPEAT = 10497 Field Value int GL_REPLACE public const int GL_REPLACE = 7681 Field Value int GL_RG public const int GL_RG = 33319 Field Value int GL_RG16 public const int GL_RG16 = 33324 Field Value int GL_RG16F public const int GL_RG16F = 33327 Field Value int GL_RG16I public const int GL_RG16I = 33337 Field Value int GL_RG16UI public const int GL_RG16UI = 33338 Field Value int GL_RG16_SNORM public const int GL_RG16_SNORM = 36761 Field Value int GL_RG32F public const int GL_RG32F = 33328 Field Value int GL_RG32I public const int GL_RG32I = 33339 Field Value int GL_RG32UI public const int GL_RG32UI = 33340 Field Value int GL_RG8 public const int GL_RG8 = 33323 Field Value int GL_RG8I public const int GL_RG8I = 33335 Field Value int GL_RG8UI public const int GL_RG8UI = 33336 Field Value int GL_RG8_SNORM public const int GL_RG8_SNORM = 36757 Field Value int GL_RGB public const int GL_RGB = 6407 Field Value int GL_RGB10 public const int GL_RGB10 = 32850 Field Value int GL_RGB10_A2 public const int GL_RGB10_A2 = 32857 Field Value int GL_RGB10_A2UI public const int GL_RGB10_A2UI = 36975 Field Value int GL_RGB12 public const int GL_RGB12 = 32851 Field Value int GL_RGB16 public const int GL_RGB16 = 32852 Field Value int GL_RGB16F public const int GL_RGB16F = 34843 Field Value int GL_RGB16I public const int GL_RGB16I = 36233 Field Value int GL_RGB16UI public const int GL_RGB16UI = 36215 Field Value int GL_RGB16_SNORM public const int GL_RGB16_SNORM = 36762 Field Value int GL_RGB32F public const int GL_RGB32F = 34837 Field Value int GL_RGB32I public const int GL_RGB32I = 36227 Field Value int GL_RGB32UI public const int GL_RGB32UI = 36209 Field Value int GL_RGB4 public const int GL_RGB4 = 32847 Field Value int GL_RGB5 public const int GL_RGB5 = 32848 Field Value int GL_RGB5_A1 public const int GL_RGB5_A1 = 32855 Field Value int GL_RGB8 public const int GL_RGB8 = 32849 Field Value int GL_RGB8I public const int GL_RGB8I = 36239 Field Value int GL_RGB8UI public const int GL_RGB8UI = 36221 Field Value int GL_RGB8_SNORM public const int GL_RGB8_SNORM = 36758 Field Value int GL_RGB9_E5 public const int GL_RGB9_E5 = 35901 Field Value int GL_RGBA public const int GL_RGBA = 6408 Field Value int GL_RGBA12 public const int GL_RGBA12 = 32858 Field Value int GL_RGBA16 public const int GL_RGBA16 = 32859 Field Value int GL_RGBA16F public const int GL_RGBA16F = 34842 Field Value int GL_RGBA16I public const int GL_RGBA16I = 36232 Field Value int GL_RGBA16UI public const int GL_RGBA16UI = 36214 Field Value int GL_RGBA16_SNORM public const int GL_RGBA16_SNORM = 36763 Field Value int GL_RGBA2 public const int GL_RGBA2 = 32853 Field Value int GL_RGBA32F public const int GL_RGBA32F = 34836 Field Value int GL_RGBA32I public const int GL_RGBA32I = 36226 Field Value int GL_RGBA32UI public const int GL_RGBA32UI = 36208 Field Value int GL_RGBA4 public const int GL_RGBA4 = 32854 Field Value int GL_RGBA8 public const int GL_RGBA8 = 32856 Field Value int GL_RGBA8I public const int GL_RGBA8I = 36238 Field Value int GL_RGBA8UI public const int GL_RGBA8UI = 36220 Field Value int GL_RGBA8_SNORM public const int GL_RGBA8_SNORM = 36759 Field Value int GL_RGBA_INTEGER public const int GL_RGBA_INTEGER = 36249 Field Value int GL_RGB_INTEGER public const int GL_RGB_INTEGER = 36248 Field Value int GL_RG_INTEGER public const int GL_RG_INTEGER = 33320 Field Value int GL_RIGHT public const int GL_RIGHT = 1031 Field Value int GL_SAMPLER_1D public const int GL_SAMPLER_1D = 35677 Field Value int GL_SAMPLER_1D_ARRAY public const int GL_SAMPLER_1D_ARRAY = 36288 Field Value int GL_SAMPLER_1D_ARRAY_SHADOW public const int GL_SAMPLER_1D_ARRAY_SHADOW = 36291 Field Value int GL_SAMPLER_1D_SHADOW public const int GL_SAMPLER_1D_SHADOW = 35681 Field Value int GL_SAMPLER_2D public const int GL_SAMPLER_2D = 35678 Field Value int GL_SAMPLER_2D_ARRAY public const int GL_SAMPLER_2D_ARRAY = 36289 Field Value int GL_SAMPLER_2D_ARRAY_SHADOW public const int GL_SAMPLER_2D_ARRAY_SHADOW = 36292 Field Value int GL_SAMPLER_2D_MULTISAMPLE public const int GL_SAMPLER_2D_MULTISAMPLE = 37128 Field Value int GL_SAMPLER_2D_MULTISAMPLE_ARRAY public const int GL_SAMPLER_2D_MULTISAMPLE_ARRAY = 37131 Field Value int GL_SAMPLER_2D_RECT public const int GL_SAMPLER_2D_RECT = 35683 Field Value int GL_SAMPLER_2D_RECT_SHADOW public const int GL_SAMPLER_2D_RECT_SHADOW = 35684 Field Value int GL_SAMPLER_2D_SHADOW public const int GL_SAMPLER_2D_SHADOW = 35682 Field Value int GL_SAMPLER_3D public const int GL_SAMPLER_3D = 35679 Field Value int GL_SAMPLER_BINDING public const int GL_SAMPLER_BINDING = 35097 Field Value int GL_SAMPLER_BUFFER public const int GL_SAMPLER_BUFFER = 36290 Field Value int GL_SAMPLER_CUBE public const int GL_SAMPLER_CUBE = 35680 Field Value int GL_SAMPLER_CUBE_SHADOW public const int GL_SAMPLER_CUBE_SHADOW = 36293 Field Value int GL_SAMPLES public const int GL_SAMPLES = 32937 Field Value int GL_SAMPLES_PASSED public const int GL_SAMPLES_PASSED = 35092 Field Value int GL_SAMPLE_ALPHA_TO_COVERAGE public const int GL_SAMPLE_ALPHA_TO_COVERAGE = 32926 Field Value int GL_SAMPLE_ALPHA_TO_ONE public const int GL_SAMPLE_ALPHA_TO_ONE = 32927 Field Value int GL_SAMPLE_BUFFERS public const int GL_SAMPLE_BUFFERS = 32936 Field Value int GL_SAMPLE_COVERAGE public const int GL_SAMPLE_COVERAGE = 32928 Field Value int GL_SAMPLE_COVERAGE_INVERT public const int GL_SAMPLE_COVERAGE_INVERT = 32939 Field Value int GL_SAMPLE_COVERAGE_VALUE public const int GL_SAMPLE_COVERAGE_VALUE = 32938 Field Value int GL_SAMPLE_MASK public const int GL_SAMPLE_MASK = 36433 Field Value int GL_SAMPLE_MASK_VALUE public const int GL_SAMPLE_MASK_VALUE = 36434 Field Value int GL_SAMPLE_POSITION public const int GL_SAMPLE_POSITION = 36432 Field Value int GL_SCISSOR_BOX public const int GL_SCISSOR_BOX = 3088 Field Value int GL_SCISSOR_TEST public const int GL_SCISSOR_TEST = 3089 Field Value int GL_SEPARATE_ATTRIBS public const int GL_SEPARATE_ATTRIBS = 35981 Field Value int GL_SET public const int GL_SET = 5391 Field Value int GL_SHADER_SOURCE_LENGTH public const int GL_SHADER_SOURCE_LENGTH = 35720 Field Value int GL_SHADER_TYPE public const int GL_SHADER_TYPE = 35663 Field Value int GL_SHADING_LANGUAGE_VERSION public const int GL_SHADING_LANGUAGE_VERSION = 35724 Field Value int GL_SHORT public const int GL_SHORT = 5122 Field Value int GL_SIGNALED public const int GL_SIGNALED = 37145 Field Value int GL_SIGNED_NORMALIZED public const int GL_SIGNED_NORMALIZED = 36764 Field Value int GL_SMOOTH_LINE_WIDTH_GRANULARITY public const int GL_SMOOTH_LINE_WIDTH_GRANULARITY = 2851 Field Value int GL_SMOOTH_LINE_WIDTH_RANGE public const int GL_SMOOTH_LINE_WIDTH_RANGE = 2850 Field Value int GL_SMOOTH_POINT_SIZE_GRANULARITY public const int GL_SMOOTH_POINT_SIZE_GRANULARITY = 2835 Field Value int GL_SMOOTH_POINT_SIZE_RANGE public const int GL_SMOOTH_POINT_SIZE_RANGE = 2834 Field Value int GL_SRC1_ALPHA public const int GL_SRC1_ALPHA = 34185 Field Value int GL_SRC1_COLOR public const int GL_SRC1_COLOR = 35065 Field Value int GL_SRC_ALPHA public const int GL_SRC_ALPHA = 770 Field Value int GL_SRC_ALPHA_SATURATE public const int GL_SRC_ALPHA_SATURATE = 776 Field Value int GL_SRC_COLOR public const int GL_SRC_COLOR = 768 Field Value int GL_SRGB public const int GL_SRGB = 35904 Field Value int GL_SRGB8 public const int GL_SRGB8 = 35905 Field Value int GL_SRGB8_ALPHA8 public const int GL_SRGB8_ALPHA8 = 35907 Field Value int GL_SRGB_ALPHA public const int GL_SRGB_ALPHA = 35906 Field Value int GL_STATIC_COPY public const int GL_STATIC_COPY = 35046 Field Value int GL_STATIC_DRAW public const int GL_STATIC_DRAW = 35044 Field Value int GL_STATIC_READ public const int GL_STATIC_READ = 35045 Field Value int GL_STENCIL public const int GL_STENCIL = 6146 Field Value int GL_STENCIL_ATTACHMENT public const int GL_STENCIL_ATTACHMENT = 36128 Field Value int GL_STENCIL_BACK_FAIL public const int GL_STENCIL_BACK_FAIL = 34817 Field Value int GL_STENCIL_BACK_FUNC public const int GL_STENCIL_BACK_FUNC = 34816 Field Value int GL_STENCIL_BACK_PASS_DEPTH_FAIL public const int GL_STENCIL_BACK_PASS_DEPTH_FAIL = 34818 Field Value int GL_STENCIL_BACK_PASS_DEPTH_PASS public const int GL_STENCIL_BACK_PASS_DEPTH_PASS = 34819 Field Value int GL_STENCIL_BACK_REF public const int GL_STENCIL_BACK_REF = 36003 Field Value int GL_STENCIL_BACK_VALUE_MASK public const int GL_STENCIL_BACK_VALUE_MASK = 36004 Field Value int GL_STENCIL_BACK_WRITEMASK public const int GL_STENCIL_BACK_WRITEMASK = 36005 Field Value int GL_STENCIL_BUFFER_BIT public const int GL_STENCIL_BUFFER_BIT = 1024 Field Value int GL_STENCIL_CLEAR_VALUE public const int GL_STENCIL_CLEAR_VALUE = 2961 Field Value int GL_STENCIL_FAIL public const int GL_STENCIL_FAIL = 2964 Field Value int GL_STENCIL_FUNC public const int GL_STENCIL_FUNC = 2962 Field Value int GL_STENCIL_INDEX public const int GL_STENCIL_INDEX = 6401 Field Value int GL_STENCIL_INDEX1 public const int GL_STENCIL_INDEX1 = 36166 Field Value int GL_STENCIL_INDEX16 public const int GL_STENCIL_INDEX16 = 36169 Field Value int GL_STENCIL_INDEX4 public const int GL_STENCIL_INDEX4 = 36167 Field Value int GL_STENCIL_INDEX8 public const int GL_STENCIL_INDEX8 = 36168 Field Value int GL_STENCIL_PASS_DEPTH_FAIL public const int GL_STENCIL_PASS_DEPTH_FAIL = 2965 Field Value int GL_STENCIL_PASS_DEPTH_PASS public const int GL_STENCIL_PASS_DEPTH_PASS = 2966 Field Value int GL_STENCIL_REF public const int GL_STENCIL_REF = 2967 Field Value int GL_STENCIL_TEST public const int GL_STENCIL_TEST = 2960 Field Value int GL_STENCIL_VALUE_MASK public const int GL_STENCIL_VALUE_MASK = 2963 Field Value int GL_STENCIL_WRITEMASK public const int GL_STENCIL_WRITEMASK = 2968 Field Value int GL_STEREO public const int GL_STEREO = 3123 Field Value int GL_STREAM_COPY public const int GL_STREAM_COPY = 35042 Field Value int GL_STREAM_DRAW public const int GL_STREAM_DRAW = 35040 Field Value int GL_STREAM_READ public const int GL_STREAM_READ = 35041 Field Value int GL_SUBPIXEL_BITS public const int GL_SUBPIXEL_BITS = 3408 Field Value int GL_SYNC_CONDITION public const int GL_SYNC_CONDITION = 37139 Field Value int GL_SYNC_FENCE public const int GL_SYNC_FENCE = 37142 Field Value int GL_SYNC_FLAGS public const int GL_SYNC_FLAGS = 37141 Field Value int GL_SYNC_FLUSH_COMMANDS_BIT public const int GL_SYNC_FLUSH_COMMANDS_BIT = 1 Field Value int GL_SYNC_GPU_COMMANDS_COMPLETE public const int GL_SYNC_GPU_COMMANDS_COMPLETE = 37143 Field Value int GL_SYNC_STATUS public const int GL_SYNC_STATUS = 37140 Field Value int GL_TEXTURE public const int GL_TEXTURE = 5890 Field Value int GL_TEXTURE0 public const int GL_TEXTURE0 = 33984 Field Value int GL_TEXTURE1 public const int GL_TEXTURE1 = 33985 Field Value int GL_TEXTURE10 public const int GL_TEXTURE10 = 33994 Field Value int GL_TEXTURE11 public const int GL_TEXTURE11 = 33995 Field Value int GL_TEXTURE12 public const int GL_TEXTURE12 = 33996 Field Value int GL_TEXTURE13 public const int GL_TEXTURE13 = 33997 Field Value int GL_TEXTURE14 public const int GL_TEXTURE14 = 33998 Field Value int GL_TEXTURE15 public const int GL_TEXTURE15 = 33999 Field Value int GL_TEXTURE16 public const int GL_TEXTURE16 = 34000 Field Value int GL_TEXTURE17 public const int GL_TEXTURE17 = 34001 Field Value int GL_TEXTURE18 public const int GL_TEXTURE18 = 34002 Field Value int GL_TEXTURE19 public const int GL_TEXTURE19 = 34003 Field Value int GL_TEXTURE2 public const int GL_TEXTURE2 = 33986 Field Value int GL_TEXTURE20 public const int GL_TEXTURE20 = 34004 Field Value int GL_TEXTURE21 public const int GL_TEXTURE21 = 34005 Field Value int GL_TEXTURE22 public const int GL_TEXTURE22 = 34006 Field Value int GL_TEXTURE23 public const int GL_TEXTURE23 = 34007 Field Value int GL_TEXTURE24 public const int GL_TEXTURE24 = 34008 Field Value int GL_TEXTURE25 public const int GL_TEXTURE25 = 34009 Field Value int GL_TEXTURE26 public const int GL_TEXTURE26 = 34010 Field Value int GL_TEXTURE27 public const int GL_TEXTURE27 = 34011 Field Value int GL_TEXTURE28 public const int GL_TEXTURE28 = 34012 Field Value int GL_TEXTURE29 public const int GL_TEXTURE29 = 34013 Field Value int GL_TEXTURE3 public const int GL_TEXTURE3 = 33987 Field Value int GL_TEXTURE30 public const int GL_TEXTURE30 = 34014 Field Value int GL_TEXTURE31 public const int GL_TEXTURE31 = 34015 Field Value int GL_TEXTURE4 public const int GL_TEXTURE4 = 33988 Field Value int GL_TEXTURE5 public const int GL_TEXTURE5 = 33989 Field Value int GL_TEXTURE6 public const int GL_TEXTURE6 = 33990 Field Value int GL_TEXTURE7 public const int GL_TEXTURE7 = 33991 Field Value int GL_TEXTURE8 public const int GL_TEXTURE8 = 33992 Field Value int GL_TEXTURE9 public const int GL_TEXTURE9 = 33993 Field Value int GL_TEXTURE_1D public const int GL_TEXTURE_1D = 3552 Field Value int GL_TEXTURE_1D_ARRAY public const int GL_TEXTURE_1D_ARRAY = 35864 Field Value int GL_TEXTURE_2D public const int GL_TEXTURE_2D = 3553 Field Value int GL_TEXTURE_2D_ARRAY public const int GL_TEXTURE_2D_ARRAY = 35866 Field Value int GL_TEXTURE_2D_MULTISAMPLE public const int GL_TEXTURE_2D_MULTISAMPLE = 37120 Field Value int GL_TEXTURE_2D_MULTISAMPLE_ARRAY public const int GL_TEXTURE_2D_MULTISAMPLE_ARRAY = 37122 Field Value int GL_TEXTURE_3D public const int GL_TEXTURE_3D = 32879 Field Value int GL_TEXTURE_ALPHA_SIZE public const int GL_TEXTURE_ALPHA_SIZE = 32863 Field Value int GL_TEXTURE_ALPHA_TYPE public const int GL_TEXTURE_ALPHA_TYPE = 35859 Field Value int GL_TEXTURE_BASE_LEVEL public const int GL_TEXTURE_BASE_LEVEL = 33084 Field Value int GL_TEXTURE_BINDING_1D public const int GL_TEXTURE_BINDING_1D = 32872 Field Value int GL_TEXTURE_BINDING_1D_ARRAY public const int GL_TEXTURE_BINDING_1D_ARRAY = 35868 Field Value int GL_TEXTURE_BINDING_2D public const int GL_TEXTURE_BINDING_2D = 32873 Field Value int GL_TEXTURE_BINDING_2D_ARRAY public const int GL_TEXTURE_BINDING_2D_ARRAY = 35869 Field Value int GL_TEXTURE_BINDING_2D_MULTISAMPLE public const int GL_TEXTURE_BINDING_2D_MULTISAMPLE = 37124 Field Value int GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY public const int GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 37125 Field Value int GL_TEXTURE_BINDING_3D public const int GL_TEXTURE_BINDING_3D = 32874 Field Value int GL_TEXTURE_BINDING_BUFFER public const int GL_TEXTURE_BINDING_BUFFER = 35884 Field Value int GL_TEXTURE_BINDING_CUBE_MAP public const int GL_TEXTURE_BINDING_CUBE_MAP = 34068 Field Value int GL_TEXTURE_BINDING_RECTANGLE public const int GL_TEXTURE_BINDING_RECTANGLE = 34038 Field Value int GL_TEXTURE_BLUE_SIZE public const int GL_TEXTURE_BLUE_SIZE = 32862 Field Value int GL_TEXTURE_BLUE_TYPE public const int GL_TEXTURE_BLUE_TYPE = 35858 Field Value int GL_TEXTURE_BORDER_COLOR public const int GL_TEXTURE_BORDER_COLOR = 4100 Field Value int GL_TEXTURE_BUFFER public const int GL_TEXTURE_BUFFER = 35882 Field Value int GL_TEXTURE_BUFFER_DATA_STORE_BINDING public const int GL_TEXTURE_BUFFER_DATA_STORE_BINDING = 35885 Field Value int GL_TEXTURE_COMPARE_FUNC public const int GL_TEXTURE_COMPARE_FUNC = 34893 Field Value int GL_TEXTURE_COMPARE_MODE public const int GL_TEXTURE_COMPARE_MODE = 34892 Field Value int GL_TEXTURE_COMPRESSED public const int GL_TEXTURE_COMPRESSED = 34465 Field Value int GL_TEXTURE_COMPRESSED_IMAGE_SIZE public const int GL_TEXTURE_COMPRESSED_IMAGE_SIZE = 34464 Field Value int GL_TEXTURE_COMPRESSION_HINT public const int GL_TEXTURE_COMPRESSION_HINT = 34031 Field Value int GL_TEXTURE_CUBE_MAP public const int GL_TEXTURE_CUBE_MAP = 34067 Field Value int GL_TEXTURE_CUBE_MAP_NEGATIVE_X public const int GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 34070 Field Value int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y public const int GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072 Field Value int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z public const int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074 Field Value int GL_TEXTURE_CUBE_MAP_POSITIVE_X public const int GL_TEXTURE_CUBE_MAP_POSITIVE_X = 34069 Field Value int GL_TEXTURE_CUBE_MAP_POSITIVE_Y public const int GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 34071 Field Value int GL_TEXTURE_CUBE_MAP_POSITIVE_Z public const int GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 34073 Field Value int GL_TEXTURE_CUBE_MAP_SEAMLESS public const int GL_TEXTURE_CUBE_MAP_SEAMLESS = 34895 Field Value int GL_TEXTURE_DEPTH public const int GL_TEXTURE_DEPTH = 32881 Field Value int GL_TEXTURE_DEPTH_SIZE public const int GL_TEXTURE_DEPTH_SIZE = 34890 Field Value int GL_TEXTURE_DEPTH_TYPE public const int GL_TEXTURE_DEPTH_TYPE = 35862 Field Value int GL_TEXTURE_FIXED_SAMPLE_LOCATIONS public const int GL_TEXTURE_FIXED_SAMPLE_LOCATIONS = 37127 Field Value int GL_TEXTURE_GREEN_SIZE public const int GL_TEXTURE_GREEN_SIZE = 32861 Field Value int GL_TEXTURE_GREEN_TYPE public const int GL_TEXTURE_GREEN_TYPE = 35857 Field Value int GL_TEXTURE_HEIGHT public const int GL_TEXTURE_HEIGHT = 4097 Field Value int GL_TEXTURE_INTERNAL_FORMAT public const int GL_TEXTURE_INTERNAL_FORMAT = 4099 Field Value int GL_TEXTURE_LOD_BIAS public const int GL_TEXTURE_LOD_BIAS = 34049 Field Value int GL_TEXTURE_MAG_FILTER public const int GL_TEXTURE_MAG_FILTER = 10240 Field Value int GL_TEXTURE_MAX_LEVEL public const int GL_TEXTURE_MAX_LEVEL = 33085 Field Value int GL_TEXTURE_MAX_LOD public const int GL_TEXTURE_MAX_LOD = 33083 Field Value int GL_TEXTURE_MIN_FILTER public const int GL_TEXTURE_MIN_FILTER = 10241 Field Value int GL_TEXTURE_MIN_LOD public const int GL_TEXTURE_MIN_LOD = 33082 Field Value int GL_TEXTURE_RECTANGLE public const int GL_TEXTURE_RECTANGLE = 34037 Field Value int GL_TEXTURE_RED_SIZE public const int GL_TEXTURE_RED_SIZE = 32860 Field Value int GL_TEXTURE_RED_TYPE public const int GL_TEXTURE_RED_TYPE = 35856 Field Value int GL_TEXTURE_SAMPLES public const int GL_TEXTURE_SAMPLES = 37126 Field Value int GL_TEXTURE_SHARED_SIZE public const int GL_TEXTURE_SHARED_SIZE = 35903 Field Value int GL_TEXTURE_STENCIL_SIZE public const int GL_TEXTURE_STENCIL_SIZE = 35057 Field Value int GL_TEXTURE_SWIZZLE_A public const int GL_TEXTURE_SWIZZLE_A = 36421 Field Value int GL_TEXTURE_SWIZZLE_B public const int GL_TEXTURE_SWIZZLE_B = 36420 Field Value int GL_TEXTURE_SWIZZLE_G public const int GL_TEXTURE_SWIZZLE_G = 36419 Field Value int GL_TEXTURE_SWIZZLE_R public const int GL_TEXTURE_SWIZZLE_R = 36418 Field Value int GL_TEXTURE_SWIZZLE_RGBA public const int GL_TEXTURE_SWIZZLE_RGBA = 36422 Field Value int GL_TEXTURE_WIDTH public const int GL_TEXTURE_WIDTH = 4096 Field Value int GL_TEXTURE_WRAP_R public const int GL_TEXTURE_WRAP_R = 32882 Field Value int GL_TEXTURE_WRAP_S public const int GL_TEXTURE_WRAP_S = 10242 Field Value int GL_TEXTURE_WRAP_T public const int GL_TEXTURE_WRAP_T = 10243 Field Value int GL_TIMEOUT_EXPIRED public const int GL_TIMEOUT_EXPIRED = 37147 Field Value int GL_TIMEOUT_IGNORED public const ulong GL_TIMEOUT_IGNORED = 18446744073709551615 Field Value ulong GL_TIMESTAMP public const int GL_TIMESTAMP = 36392 Field Value int GL_TIME_ELAPSED public const int GL_TIME_ELAPSED = 35007 Field Value int GL_TRANSFORM_FEEDBACK_BUFFER public const int GL_TRANSFORM_FEEDBACK_BUFFER = 35982 Field Value int GL_TRANSFORM_FEEDBACK_BUFFER_BINDING public const int GL_TRANSFORM_FEEDBACK_BUFFER_BINDING = 35983 Field Value int GL_TRANSFORM_FEEDBACK_BUFFER_MODE public const int GL_TRANSFORM_FEEDBACK_BUFFER_MODE = 35967 Field Value int GL_TRANSFORM_FEEDBACK_BUFFER_SIZE public const int GL_TRANSFORM_FEEDBACK_BUFFER_SIZE = 35973 Field Value int GL_TRANSFORM_FEEDBACK_BUFFER_START public const int GL_TRANSFORM_FEEDBACK_BUFFER_START = 35972 Field Value int GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN public const int GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 35976 Field Value int GL_TRANSFORM_FEEDBACK_VARYINGS public const int GL_TRANSFORM_FEEDBACK_VARYINGS = 35971 Field Value int GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH public const int GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 35958 Field Value int GL_TRIANGLES public const int GL_TRIANGLES = 4 Field Value int GL_TRIANGLES_ADJACENCY public const int GL_TRIANGLES_ADJACENCY = 12 Field Value int GL_TRIANGLE_FAN public const int GL_TRIANGLE_FAN = 6 Field Value int GL_TRIANGLE_STRIP public const int GL_TRIANGLE_STRIP = 5 Field Value int GL_TRIANGLE_STRIP_ADJACENCY public const int GL_TRIANGLE_STRIP_ADJACENCY = 13 Field Value int GL_TRUE public const int GL_TRUE = 1 Field Value int GL_UInt16_FLOAT public const int GL_UInt16_FLOAT = 5131 Field Value int GL_UNIFORM_ARRAY_STRIDE public const int GL_UNIFORM_ARRAY_STRIDE = 35388 Field Value int GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS public const int GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS = 35394 Field Value int GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES public const int GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 35395 Field Value int GL_UNIFORM_BLOCK_BINDING public const int GL_UNIFORM_BLOCK_BINDING = 35391 Field Value int GL_UNIFORM_BLOCK_DATA_SIZE public const int GL_UNIFORM_BLOCK_DATA_SIZE = 35392 Field Value int GL_UNIFORM_BLOCK_INDEX public const int GL_UNIFORM_BLOCK_INDEX = 35386 Field Value int GL_UNIFORM_BLOCK_NAME_LENGTH public const int GL_UNIFORM_BLOCK_NAME_LENGTH = 35393 Field Value int GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER public const int GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 35398 Field Value int GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER public const int GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = 35397 Field Value int GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER public const int GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 35396 Field Value int GL_UNIFORM_BUFFER public const int GL_UNIFORM_BUFFER = 35345 Field Value int GL_UNIFORM_BUFFER_BINDING public const int GL_UNIFORM_BUFFER_BINDING = 35368 Field Value int GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT public const int GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 35380 Field Value int GL_UNIFORM_BUFFER_SIZE public const int GL_UNIFORM_BUFFER_SIZE = 35370 Field Value int GL_UNIFORM_BUFFER_START public const int GL_UNIFORM_BUFFER_START = 35369 Field Value int GL_UNIFORM_IS_ROW_MAJOR public const int GL_UNIFORM_IS_ROW_MAJOR = 35390 Field Value int GL_UNIFORM_MATRIX_STRIDE public const int GL_UNIFORM_MATRIX_STRIDE = 35389 Field Value int GL_UNIFORM_NAME_LENGTH public const int GL_UNIFORM_NAME_LENGTH = 35385 Field Value int GL_UNIFORM_OFFSET public const int GL_UNIFORM_OFFSET = 35387 Field Value int GL_UNIFORM_SIZE public const int GL_UNIFORM_SIZE = 35384 Field Value int GL_UNIFORM_TYPE public const int GL_UNIFORM_TYPE = 35383 Field Value int GL_UNPACK_ALIGNMENT public const int GL_UNPACK_ALIGNMENT = 3317 Field Value int GL_UNPACK_IMAGE_HEIGHT public const int GL_UNPACK_IMAGE_HEIGHT = 32878 Field Value int GL_UNPACK_LSB_FIRST public const int GL_UNPACK_LSB_FIRST = 3313 Field Value int GL_UNPACK_ROW_LENGTH public const int GL_UNPACK_ROW_LENGTH = 3314 Field Value int GL_UNPACK_SKIP_IMAGES public const int GL_UNPACK_SKIP_IMAGES = 32877 Field Value int GL_UNPACK_SKIP_PIXELS public const int GL_UNPACK_SKIP_PIXELS = 3316 Field Value int GL_UNPACK_SKIP_ROWS public const int GL_UNPACK_SKIP_ROWS = 3315 Field Value int GL_UNPACK_SWAP_BYTES public const int GL_UNPACK_SWAP_BYTES = 3312 Field Value int GL_UNSIGNALED public const int GL_UNSIGNALED = 37144 Field Value int GL_UNSIGNED_BYTE public const int GL_UNSIGNED_BYTE = 5121 Field Value int GL_UNSIGNED_BYTE_2_3_3_REV public const int GL_UNSIGNED_BYTE_2_3_3_REV = 33634 Field Value int GL_UNSIGNED_BYTE_3_3_2 public const int GL_UNSIGNED_BYTE_3_3_2 = 32818 Field Value int GL_UNSIGNED_INT public const int GL_UNSIGNED_INT = 5125 Field Value int GL_UNSIGNED_INT_10F_11F_11F_REV public const int GL_UNSIGNED_INT_10F_11F_11F_REV = 35899 Field Value int GL_UNSIGNED_INT_10_10_10_2 public const int GL_UNSIGNED_INT_10_10_10_2 = 32822 Field Value int GL_UNSIGNED_INT_24_8 public const int GL_UNSIGNED_INT_24_8 = 34042 Field Value int GL_UNSIGNED_INT_2_10_10_10_REV public const int GL_UNSIGNED_INT_2_10_10_10_REV = 33640 Field Value int GL_UNSIGNED_INT_5_9_9_9_REV public const int GL_UNSIGNED_INT_5_9_9_9_REV = 35902 Field Value int GL_UNSIGNED_INT_8_8_8_8 public const int GL_UNSIGNED_INT_8_8_8_8 = 32821 Field Value int GL_UNSIGNED_INT_8_8_8_8_REV public const int GL_UNSIGNED_INT_8_8_8_8_REV = 33639 Field Value int GL_UNSIGNED_INT_SAMPLER_1D public const int GL_UNSIGNED_INT_SAMPLER_1D = 36305 Field Value int GL_UNSIGNED_INT_SAMPLER_1D_ARRAY public const int GL_UNSIGNED_INT_SAMPLER_1D_ARRAY = 36310 Field Value int GL_UNSIGNED_INT_SAMPLER_2D public const int GL_UNSIGNED_INT_SAMPLER_2D = 36306 Field Value int GL_UNSIGNED_INT_SAMPLER_2D_ARRAY public const int GL_UNSIGNED_INT_SAMPLER_2D_ARRAY = 36311 Field Value int GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE public const int GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 37130 Field Value int GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY public const int GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 37133 Field Value int GL_UNSIGNED_INT_SAMPLER_2D_RECT public const int GL_UNSIGNED_INT_SAMPLER_2D_RECT = 36309 Field Value int GL_UNSIGNED_INT_SAMPLER_3D public const int GL_UNSIGNED_INT_SAMPLER_3D = 36307 Field Value int GL_UNSIGNED_INT_SAMPLER_BUFFER public const int GL_UNSIGNED_INT_SAMPLER_BUFFER = 36312 Field Value int GL_UNSIGNED_INT_SAMPLER_CUBE public const int GL_UNSIGNED_INT_SAMPLER_CUBE = 36308 Field Value int GL_UNSIGNED_INT_VEC2 public const int GL_UNSIGNED_INT_VEC2 = 36294 Field Value int GL_UNSIGNED_INT_VEC3 public const int GL_UNSIGNED_INT_VEC3 = 36295 Field Value int GL_UNSIGNED_INT_VEC4 public const int GL_UNSIGNED_INT_VEC4 = 36296 Field Value int GL_UNSIGNED_NORMALIZED public const int GL_UNSIGNED_NORMALIZED = 35863 Field Value int GL_UNSIGNED_SHORT public const int GL_UNSIGNED_SHORT = 5123 Field Value int GL_UNSIGNED_SHORT_1_5_5_5_REV public const int GL_UNSIGNED_SHORT_1_5_5_5_REV = 33638 Field Value int GL_UNSIGNED_SHORT_4_4_4_4 public const int GL_UNSIGNED_SHORT_4_4_4_4 = 32819 Field Value int GL_UNSIGNED_SHORT_4_4_4_4_REV public const int GL_UNSIGNED_SHORT_4_4_4_4_REV = 33637 Field Value int GL_UNSIGNED_SHORT_5_5_5_1 public const int GL_UNSIGNED_SHORT_5_5_5_1 = 32820 Field Value int GL_UNSIGNED_SHORT_5_6_5 public const int GL_UNSIGNED_SHORT_5_6_5 = 33635 Field Value int GL_UNSIGNED_SHORT_5_6_5_REV public const int GL_UNSIGNED_SHORT_5_6_5_REV = 33636 Field Value int GL_UPPER_LEFT public const int GL_UPPER_LEFT = 36002 Field Value int GL_VALIDATE_STATUS public const int GL_VALIDATE_STATUS = 35715 Field Value int GL_VENDOR public const int GL_VENDOR = 7936 Field Value int GL_VERSION public const int GL_VERSION = 7938 Field Value int GL_VERTEX_ARRAY_BINDING public const int GL_VERTEX_ARRAY_BINDING = 34229 Field Value int GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING public const int GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 34975 Field Value int GL_VERTEX_ATTRIB_ARRAY_DIVISOR public const int GL_VERTEX_ATTRIB_ARRAY_DIVISOR = 35070 Field Value int GL_VERTEX_ATTRIB_ARRAY_ENABLED public const int GL_VERTEX_ATTRIB_ARRAY_ENABLED = 34338 Field Value int GL_VERTEX_ATTRIB_ARRAY_INTEGER public const int GL_VERTEX_ATTRIB_ARRAY_INTEGER = 35069 Field Value int GL_VERTEX_ATTRIB_ARRAY_NORMALIZED public const int GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 34922 Field Value int GL_VERTEX_ATTRIB_ARRAY_POINTER public const int GL_VERTEX_ATTRIB_ARRAY_POINTER = 34373 Field Value int GL_VERTEX_ATTRIB_ARRAY_SIZE public const int GL_VERTEX_ATTRIB_ARRAY_SIZE = 34339 Field Value int GL_VERTEX_ATTRIB_ARRAY_STRIDE public const int GL_VERTEX_ATTRIB_ARRAY_STRIDE = 34340 Field Value int GL_VERTEX_ATTRIB_ARRAY_TYPE public const int GL_VERTEX_ATTRIB_ARRAY_TYPE = 34341 Field Value int GL_VERTEX_PROGRAM_POINT_SIZE public const int GL_VERTEX_PROGRAM_POINT_SIZE = 34370 Field Value int GL_VERTEX_SHADER public const int GL_VERTEX_SHADER = 35633 Field Value int GL_VIEWPORT public const int GL_VIEWPORT = 2978 Field Value int GL_WAIT_FAILED public const int GL_WAIT_FAILED = 37149 Field Value int GL_WRITE_ONLY public const int GL_WRITE_ONLY = 35001 Field Value int GL_XOR public const int GL_XOR = 5382 Field Value int GL_ZERO public const int GL_ZERO = 0 Field Value int Methods glAccum(uint, float) public static extern void glAccum(uint op, float value) Parameters op uint value float glActiveProgramEXT(uint) public static extern void glActiveProgramEXT(uint program) Parameters program uint glActiveShaderProgram(uint, uint) public static extern void glActiveShaderProgram(uint pipeline, uint program) Parameters pipeline uint program uint glActiveStencilFaceEXT(uint) public static extern void glActiveStencilFaceEXT(uint face) Parameters face uint glActiveTexture(uint) public static extern void glActiveTexture(uint texture) Parameters texture uint glActiveTextureARB(uint) public static extern void glActiveTextureARB(uint texture) Parameters texture uint glActiveVaryingNV(uint, string) public static extern void glActiveVaryingNV(uint program, string name) Parameters program uint name string glAlphaFragmentOp1ATI(uint, uint, uint, uint, uint, uint) public static extern void glAlphaFragmentOp1ATI(uint op, uint dst, uint dstMod, uint arg1, uint arg1Rep, uint arg1Mod) Parameters op uint dst uint dstMod uint arg1 uint arg1Rep uint arg1Mod uint glAlphaFragmentOp2ATI(uint, uint, uint, uint, uint, uint, uint, uint, uint) public static extern void glAlphaFragmentOp2ATI(uint op, uint dst, uint dstMod, uint arg1, uint arg1Rep, uint arg1Mod, uint arg2, uint arg2Rep, uint arg2Mod) Parameters op uint dst uint dstMod uint arg1 uint arg1Rep uint arg1Mod uint arg2 uint arg2Rep uint arg2Mod uint glAlphaFragmentOp3ATI(uint, uint, uint, uint, uint, uint, uint, uint, uint, uint, uint, uint) public static extern void glAlphaFragmentOp3ATI(uint op, uint dst, uint dstMod, uint arg1, uint arg1Rep, uint arg1Mod, uint arg2, uint arg2Rep, uint arg2Mod, uint arg3, uint arg3Rep, uint arg3Mod) Parameters op uint dst uint dstMod uint arg1 uint arg1Rep uint arg1Mod uint arg2 uint arg2Rep uint arg2Mod uint arg3 uint arg3Rep uint arg3Mod uint glAlphaFunc(uint, float) public static extern void glAlphaFunc(uint func, float @ref) Parameters func uint ref float glApplyTextureEXT(uint) public static extern void glApplyTextureEXT(uint mode) Parameters mode uint glAreProgramsResidentNV(int, uint*, bool*) public static extern bool glAreProgramsResidentNV(int n, uint* programs, bool* residences) Parameters n int programs uint* residences bool* Returns bool glAreTexturesResident(int, uint*, bool*) public static extern bool glAreTexturesResident(int n, uint* textures, bool* residences) Parameters n int textures uint* residences bool* Returns bool glAreTexturesResidentEXT(int, uint*, bool*) public static extern bool glAreTexturesResidentEXT(int n, uint* textures, bool* residences) Parameters n int textures uint* residences bool* Returns bool glArrayElement(int) public static extern void glArrayElement(int i) Parameters i int glArrayElementEXT(int) public static extern void glArrayElementEXT(int i) Parameters i int glArrayObjectATI(uint, int, uint, int, uint, uint) public static extern void glArrayObjectATI(uint array, int size, uint type, int stride, uint buffer, uint offset) Parameters array uint size int type uint stride int buffer uint offset uint glAsyncMarkerSGIX(uint) public static extern void glAsyncMarkerSGIX(uint marker) Parameters marker uint glAttachObjectARB(uint, uint) public static extern void glAttachObjectARB(uint containerObj, uint obj) Parameters containerObj uint obj uint glAttachShader(uint, uint) public static extern void glAttachShader(uint program, uint shader) Parameters program uint shader uint glBegin(uint) public static extern void glBegin(uint mode) Parameters mode uint glBeginConditionalRender(uint, uint) public static extern void glBeginConditionalRender(uint id, uint mode) Parameters id uint mode uint glBeginConditionalRenderNV(uint, uint) public static extern void glBeginConditionalRenderNV(uint id, uint mode) Parameters id uint mode uint glBeginFragmentShaderATI() public static extern void glBeginFragmentShaderATI() glBeginOcclusionQueryNV(uint) public static extern void glBeginOcclusionQueryNV(uint id) Parameters id uint glBeginPerfMonitorAMD(uint) public static extern void glBeginPerfMonitorAMD(uint monitor) Parameters monitor uint glBeginQuery(uint, uint) public static extern void glBeginQuery(uint target, uint id) Parameters target uint id uint glBeginQueryARB(uint, uint) public static extern void glBeginQueryARB(uint target, uint id) Parameters target uint id uint glBeginQueryIndexed(uint, uint, uint) public static extern void glBeginQueryIndexed(uint target, uint index, uint id) Parameters target uint index uint id uint glBeginTransformFeedback(uint) public static extern void glBeginTransformFeedback(uint primitiveMode) Parameters primitiveMode uint glBeginTransformFeedbackEXT(uint) public static extern void glBeginTransformFeedbackEXT(uint primitiveMode) Parameters primitiveMode uint glBeginTransformFeedbackNV(uint) public static extern void glBeginTransformFeedbackNV(uint primitiveMode) Parameters primitiveMode uint glBeginVertexShaderEXT() public static extern void glBeginVertexShaderEXT() glBeginVideoCaptureNV(uint) public static extern void glBeginVideoCaptureNV(uint video_capture_slot) Parameters video_capture_slot uint glBindAttribLocation(uint, uint, string) public static extern void glBindAttribLocation(uint program, uint index, string name) Parameters program uint index uint name string glBindAttribLocationARB(uint, uint, string) public static extern void glBindAttribLocationARB(uint programObj, uint index, string name) Parameters programObj uint index uint name string glBindBuffer(uint, uint) public static extern void glBindBuffer(uint target, uint buffer) Parameters target uint buffer uint glBindBufferARB(uint, uint) public static extern void glBindBufferARB(uint target, uint buffer) Parameters target uint buffer uint glBindBufferBase(uint, uint, uint) public static extern void glBindBufferBase(uint target, uint index, uint buffer) Parameters target uint index uint buffer uint glBindBufferBaseEXT(uint, uint, uint) public static extern void glBindBufferBaseEXT(uint target, uint index, uint buffer) Parameters target uint index uint buffer uint glBindBufferBaseNV(uint, uint, uint) public static extern void glBindBufferBaseNV(uint target, uint index, uint buffer) Parameters target uint index uint buffer uint glBindBufferOffsetEXT(uint, uint, uint, nint) public static extern void glBindBufferOffsetEXT(uint target, uint index, uint buffer, nint offset) Parameters target uint index uint buffer uint offset nint glBindBufferOffsetNV(uint, uint, uint, nint) public static extern void glBindBufferOffsetNV(uint target, uint index, uint buffer, nint offset) Parameters target uint index uint buffer uint offset nint glBindBufferRange(uint, uint, uint, nint, nint) public static extern void glBindBufferRange(uint target, uint index, uint buffer, nint offset, nint size) Parameters target uint index uint buffer uint offset nint size nint glBindBufferRangeEXT(uint, uint, uint, nint, nint) public static extern void glBindBufferRangeEXT(uint target, uint index, uint buffer, nint offset, nint size) Parameters target uint index uint buffer uint offset nint size nint glBindBufferRangeNV(uint, uint, uint, nint, nint) public static extern void glBindBufferRangeNV(uint target, uint index, uint buffer, nint offset, nint size) Parameters target uint index uint buffer uint offset nint size nint glBindFragDataLocation(uint, uint, string) public static extern void glBindFragDataLocation(uint program, uint color, string name) Parameters program uint color uint name string glBindFragDataLocationEXT(uint, uint, string) public static extern void glBindFragDataLocationEXT(uint program, uint color, string name) Parameters program uint color uint name string glBindFragDataLocationIndexed(uint, uint, uint, string) public static extern void glBindFragDataLocationIndexed(uint program, uint colorNumber, uint index, string name) Parameters program uint colorNumber uint index uint name string glBindFragmentShaderATI(uint) public static extern void glBindFragmentShaderATI(uint id) Parameters id uint glBindFramebuffer(uint, uint) public static extern void glBindFramebuffer(uint target, uint framebuffer) Parameters target uint framebuffer uint glBindFramebufferEXT(uint, uint) public static extern void glBindFramebufferEXT(uint target, uint framebuffer) Parameters target uint framebuffer uint glBindImageTextureEXT(uint, uint, int, bool, int, uint, int) public static extern void glBindImageTextureEXT(uint index, uint texture, int level, bool layered, int layer, uint access, int format) Parameters index uint texture uint level int layered bool layer int access uint format int glBindLightParameterEXT(uint, uint) public static extern int glBindLightParameterEXT(uint light, uint value) Parameters light uint value uint Returns int glBindMaterialParameterEXT(uint, uint) public static extern int glBindMaterialParameterEXT(uint face, uint value) Parameters face uint value uint Returns int glBindMultiTextureEXT(uint, uint, uint) public static extern void glBindMultiTextureEXT(uint texunit, uint target, uint texture) Parameters texunit uint target uint texture uint glBindParameterEXT(uint) public static extern int glBindParameterEXT(uint value) Parameters value uint Returns int glBindProgramARB(uint, uint) public static extern void glBindProgramARB(uint target, uint program) Parameters target uint program uint glBindProgramNV(uint, uint) public static extern void glBindProgramNV(uint target, uint id) Parameters target uint id uint glBindProgramPipeline(uint) public static extern void glBindProgramPipeline(uint pipeline) Parameters pipeline uint glBindRenderbuffer(uint, uint) public static extern void glBindRenderbuffer(uint target, uint renderbuffer) Parameters target uint renderbuffer uint glBindRenderbufferEXT(uint, uint) public static extern void glBindRenderbufferEXT(uint target, uint renderbuffer) Parameters target uint renderbuffer uint glBindSampler(uint, uint) public static extern void glBindSampler(uint unit, uint sampler) Parameters unit uint sampler uint glBindTexGenParameterEXT(uint, uint, uint) public static extern int glBindTexGenParameterEXT(uint unit, uint coord, uint value) Parameters unit uint coord uint value uint Returns int glBindTexture(uint, uint) public static extern void glBindTexture(uint target, uint texture) Parameters target uint texture uint glBindTextureEXT(uint, uint) public static extern void glBindTextureEXT(uint target, uint texture) Parameters target uint texture uint glBindTextureUnitParameterEXT(uint, uint) public static extern int glBindTextureUnitParameterEXT(uint unit, uint value) Parameters unit uint value uint Returns int glBindTransformFeedback(uint, uint) public static extern void glBindTransformFeedback(uint target, uint id) Parameters target uint id uint glBindTransformFeedbackNV(uint, uint) public static extern void glBindTransformFeedbackNV(uint target, uint id) Parameters target uint id uint glBindVertexArray(uint) public static extern void glBindVertexArray(uint array) Parameters array uint glBindVertexArrayAPPLE(uint) public static extern void glBindVertexArrayAPPLE(uint array) Parameters array uint glBindVertexShaderEXT(uint) public static extern void glBindVertexShaderEXT(uint id) Parameters id uint glBindVideoCaptureStreamBufferNV(uint, uint, uint, nint) public static extern void glBindVideoCaptureStreamBufferNV(uint video_capture_slot, uint stream, uint frame_region, nint offset) Parameters video_capture_slot uint stream uint frame_region uint offset nint glBindVideoCaptureStreamTextureNV(uint, uint, uint, uint, uint) public static extern void glBindVideoCaptureStreamTextureNV(uint video_capture_slot, uint stream, uint frame_region, uint target, uint texture) Parameters video_capture_slot uint stream uint frame_region uint target uint texture uint glBinormal3bEXT(sbyte, sbyte, sbyte) public static extern void glBinormal3bEXT(sbyte bx, sbyte by, sbyte bz) Parameters bx sbyte by sbyte bz sbyte glBinormal3bvEXT(sbyte*) public static extern void glBinormal3bvEXT(sbyte* v) Parameters v sbyte* glBinormal3dEXT(double, double, double) public static extern void glBinormal3dEXT(double bx, double by, double bz) Parameters bx double by double bz double glBinormal3dvEXT(double*) public static extern void glBinormal3dvEXT(double* v) Parameters v double* glBinormal3fEXT(float, float, float) public static extern void glBinormal3fEXT(float bx, float by, float bz) Parameters bx float by float bz float glBinormal3fvEXT(float*) public static extern void glBinormal3fvEXT(float* v) Parameters v float* glBinormal3iEXT(int, int, int) public static extern void glBinormal3iEXT(int bx, int by, int bz) Parameters bx int by int bz int glBinormal3ivEXT(int*) public static extern void glBinormal3ivEXT(int* v) Parameters v int* glBinormal3sEXT(short, short, short) public static extern void glBinormal3sEXT(short bx, short by, short bz) Parameters bx short by short bz short glBinormal3svEXT(short*) public static extern void glBinormal3svEXT(short* v) Parameters v short* glBinormalPointerEXT(uint, int, nint) public static extern void glBinormalPointerEXT(uint type, int stride, nint pointer) Parameters type uint stride int pointer nint glBitmap(int, int, float, float, float, float, byte*) public static extern void glBitmap(int width, int height, float xorig, float yorig, float xmove, float ymove, byte* bitmap) Parameters width int height int xorig float yorig float xmove float ymove float bitmap byte* glBlendColor(float, float, float, float) public static extern void glBlendColor(float red, float green, float blue, float alpha) Parameters red float green float blue float alpha float glBlendColorEXT(float, float, float, float) public static extern void glBlendColorEXT(float red, float green, float blue, float alpha) Parameters red float green float blue float alpha float glBlendEquation(uint) public static extern void glBlendEquation(uint mode) Parameters mode uint glBlendEquationEXT(uint) public static extern void glBlendEquationEXT(uint mode) Parameters mode uint glBlendEquationIndexedAMD(uint, uint) public static extern void glBlendEquationIndexedAMD(uint buf, uint mode) Parameters buf uint mode uint glBlendEquationSeparate(uint, uint) public static extern void glBlendEquationSeparate(uint modeRGB, uint modeAlpha) Parameters modeRGB uint modeAlpha uint glBlendEquationSeparateEXT(uint, uint) public static extern void glBlendEquationSeparateEXT(uint modeRGB, uint modeAlpha) Parameters modeRGB uint modeAlpha uint glBlendEquationSeparateIndexedAMD(uint, uint, uint) public static extern void glBlendEquationSeparateIndexedAMD(uint buf, uint modeRGB, uint modeAlpha) Parameters buf uint modeRGB uint modeAlpha uint glBlendEquationSeparatei(uint, uint, uint) public static extern void glBlendEquationSeparatei(uint buf, uint modeRGB, uint modeAlpha) Parameters buf uint modeRGB uint modeAlpha uint glBlendEquationSeparateiARB(uint, uint, uint) public static extern void glBlendEquationSeparateiARB(uint buf, uint modeRGB, uint modeAlpha) Parameters buf uint modeRGB uint modeAlpha uint glBlendEquationi(uint, uint) public static extern void glBlendEquationi(uint buf, uint mode) Parameters buf uint mode uint glBlendEquationiARB(uint, uint) public static extern void glBlendEquationiARB(uint buf, uint mode) Parameters buf uint mode uint glBlendFunc(uint, uint) public static extern void glBlendFunc(uint sfactor, uint dfactor) Parameters sfactor uint dfactor uint glBlendFuncIndexedAMD(uint, uint, uint) public static extern void glBlendFuncIndexedAMD(uint buf, uint src, uint dst) Parameters buf uint src uint dst uint glBlendFuncSeparate(uint, uint, uint, uint) public static extern void glBlendFuncSeparate(uint sfactorRGB, uint dfactorRGB, uint sfactorAlpha, uint dfactorAlpha) Parameters sfactorRGB uint dfactorRGB uint sfactorAlpha uint dfactorAlpha uint glBlendFuncSeparateEXT(uint, uint, uint, uint) public static extern void glBlendFuncSeparateEXT(uint sfactorRGB, uint dfactorRGB, uint sfactorAlpha, uint dfactorAlpha) Parameters sfactorRGB uint dfactorRGB uint sfactorAlpha uint dfactorAlpha uint glBlendFuncSeparateINGR(uint, uint, uint, uint) public static extern void glBlendFuncSeparateINGR(uint sfactorRGB, uint dfactorRGB, uint sfactorAlpha, uint dfactorAlpha) Parameters sfactorRGB uint dfactorRGB uint sfactorAlpha uint dfactorAlpha uint glBlendFuncSeparateIndexedAMD(uint, uint, uint, uint, uint) public static extern void glBlendFuncSeparateIndexedAMD(uint buf, uint srcRGB, uint dstRGB, uint srcAlpha, uint dstAlpha) Parameters buf uint srcRGB uint dstRGB uint srcAlpha uint dstAlpha uint glBlendFuncSeparatei(uint, uint, uint, uint, uint) public static extern void glBlendFuncSeparatei(uint buf, uint srcRGB, uint dstRGB, uint srcAlpha, uint dstAlpha) Parameters buf uint srcRGB uint dstRGB uint srcAlpha uint dstAlpha uint glBlendFuncSeparateiARB(uint, uint, uint, uint, uint) public static extern void glBlendFuncSeparateiARB(uint buf, uint srcRGB, uint dstRGB, uint srcAlpha, uint dstAlpha) Parameters buf uint srcRGB uint dstRGB uint srcAlpha uint dstAlpha uint glBlendFunci(uint, uint, uint) public static extern void glBlendFunci(uint buf, uint src, uint dst) Parameters buf uint src uint dst uint glBlendFunciARB(uint, uint, uint) public static extern void glBlendFunciARB(uint buf, uint src, uint dst) Parameters buf uint src uint dst uint glBlitFramebuffer(int, int, int, int, int, int, int, int, uint, uint) public static extern void glBlitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, uint filter) Parameters srcX0 int srcY0 int srcX1 int srcY1 int dstX0 int dstY0 int dstX1 int dstY1 int mask uint filter uint glBlitFramebufferEXT(int, int, int, int, int, int, int, int, uint, uint) public static extern void glBlitFramebufferEXT(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, uint filter) Parameters srcX0 int srcY0 int srcX1 int srcY1 int dstX0 int dstY0 int dstX1 int dstY1 int mask uint filter uint glBufferAddressRangeNV(uint, uint, ulong, nint) public static extern void glBufferAddressRangeNV(uint pname, uint index, ulong address, nint length) Parameters pname uint index uint address ulong length nint glBufferData(uint, nint, nint, uint) public static extern void glBufferData(uint target, nint size, nint data, uint usage) Parameters target uint size nint data nint usage uint glBufferDataARB(uint, nint, nint, uint) public static extern void glBufferDataARB(uint target, nint size, nint data, uint usage) Parameters target uint size nint data nint usage uint glBufferParameteriAPPLE(uint, uint, int) public static extern void glBufferParameteriAPPLE(uint target, uint pname, int param) Parameters target uint pname uint param int glBufferSubData(uint, nint, nint, nint) public static extern void glBufferSubData(uint target, nint offset, nint size, nint data) Parameters target uint offset nint size nint data nint glBufferSubDataARB(uint, nint, nint, nint) public static extern void glBufferSubDataARB(uint target, nint offset, nint size, nint data) Parameters target uint offset nint size nint data nint glCallList(uint) public static extern void glCallList(uint list) Parameters list uint glCallLists(int, uint, nint) public static extern void glCallLists(int n, uint type, nint lists) Parameters n int type uint lists nint glCheckFramebufferStatus(uint) public static extern uint glCheckFramebufferStatus(uint target) Parameters target uint Returns uint glCheckFramebufferStatusEXT(uint) public static extern uint glCheckFramebufferStatusEXT(uint target) Parameters target uint Returns uint glCheckNamedFramebufferStatusEXT(uint, uint) public static extern uint glCheckNamedFramebufferStatusEXT(uint framebuffer, uint target) Parameters framebuffer uint target uint Returns uint glClampColor(uint, uint) public static extern void glClampColor(uint target, uint clamp) Parameters target uint clamp uint glClampColorARB(uint, uint) public static extern void glClampColorARB(uint target, uint clamp) Parameters target uint clamp uint glClear(uint) public static extern void glClear(uint mask) Parameters mask uint glClearAccum(float, float, float, float) public static extern void glClearAccum(float red, float green, float blue, float alpha) Parameters red float green float blue float alpha float glClearBufferfi(uint, int, float, int) public static extern void glClearBufferfi(uint buffer, int drawbuffer, float depth, int stencil) Parameters buffer uint drawbuffer int depth float stencil int glClearBufferfv(uint, int, float*) public static extern void glClearBufferfv(uint buffer, int drawbuffer, float* value) Parameters buffer uint drawbuffer int value float* glClearBufferiv(uint, int, int*) public static extern void glClearBufferiv(uint buffer, int drawbuffer, int* value) Parameters buffer uint drawbuffer int value int* glClearBufferuiv(uint, int, uint*) public static extern void glClearBufferuiv(uint buffer, int drawbuffer, uint* value) Parameters buffer uint drawbuffer int value uint* glClearColor(float, float, float, float) public static extern void glClearColor(float red, float green, float blue, float alpha) Parameters red float green float blue float alpha float glClearColorIiEXT(int, int, int, int) public static extern void glClearColorIiEXT(int red, int green, int blue, int alpha) Parameters red int green int blue int alpha int glClearColorIuiEXT(uint, uint, uint, uint) public static extern void glClearColorIuiEXT(uint red, uint green, uint blue, uint alpha) Parameters red uint green uint blue uint alpha uint glClearDepth(double) public static extern void glClearDepth(double depth) Parameters depth double glClearDepthdNV(double) public static extern void glClearDepthdNV(double depth) Parameters depth double glClearDepthf(float) public static extern void glClearDepthf(float d) Parameters d float glClearIndex(float) public static extern void glClearIndex(float c) Parameters c float glClearStencil(int) public static extern void glClearStencil(int s) Parameters s int glClientActiveTexture(uint) public static extern void glClientActiveTexture(uint texture) Parameters texture uint glClientActiveTextureARB(uint) public static extern void glClientActiveTextureARB(uint texture) Parameters texture uint glClientActiveVertexStreamATI(uint) public static extern void glClientActiveVertexStreamATI(uint stream) Parameters stream uint glClientAttribDefaultEXT(uint) public static extern void glClientAttribDefaultEXT(uint mask) Parameters mask uint glClientWaitSync(nint, uint, ulong) public static extern uint glClientWaitSync(nint sync, uint flags, ulong timeout) Parameters sync nint flags uint timeout ulong Returns uint glClipPlane(uint, double*) public static extern void glClipPlane(uint plane, double* equation) Parameters plane uint equation double* glColor3b(sbyte, sbyte, sbyte) public static extern void glColor3b(sbyte red, sbyte green, sbyte blue) Parameters red sbyte green sbyte blue sbyte glColor3bv(sbyte*) public static extern void glColor3bv(sbyte* v) Parameters v sbyte* glColor3d(double, double, double) public static extern void glColor3d(double red, double green, double blue) Parameters red double green double blue double glColor3dv(double*) public static extern void glColor3dv(double* v) Parameters v double* glColor3f(float, float, float) public static extern void glColor3f(float red, float green, float blue) Parameters red float green float blue float glColor3fVertex3fSUN(float, float, float, float, float, float) public static extern void glColor3fVertex3fSUN(float r, float g, float b, float x, float y, float z) Parameters r float g float b float x float y float z float glColor3fVertex3fvSUN(float*, float*) public static extern void glColor3fVertex3fvSUN(float* c, float* v) Parameters c float* v float* glColor3fv(float*) public static extern void glColor3fv(float* v) Parameters v float* glColor3hNV(ushort, ushort, ushort) public static extern void glColor3hNV(ushort red, ushort green, ushort blue) Parameters red ushort green ushort blue ushort glColor3hvNV(ushort*) public static extern void glColor3hvNV(ushort* v) Parameters v ushort* glColor3i(int, int, int) public static extern void glColor3i(int red, int green, int blue) Parameters red int green int blue int glColor3iv(int*) public static extern void glColor3iv(int* v) Parameters v int* glColor3s(short, short, short) public static extern void glColor3s(short red, short green, short blue) Parameters red short green short blue short glColor3sv(short*) public static extern void glColor3sv(short* v) Parameters v short* glColor3ub(byte, byte, byte) public static extern void glColor3ub(byte red, byte green, byte blue) Parameters red byte green byte blue byte glColor3ubv(byte*) public static extern void glColor3ubv(byte* v) Parameters v byte* glColor3ui(uint, uint, uint) public static extern void glColor3ui(uint red, uint green, uint blue) Parameters red uint green uint blue uint glColor3uiv(uint*) public static extern void glColor3uiv(uint* v) Parameters v uint* glColor3us(ushort, ushort, ushort) public static extern void glColor3us(ushort red, ushort green, ushort blue) Parameters red ushort green ushort blue ushort glColor3usv(ushort*) public static extern void glColor3usv(ushort* v) Parameters v ushort* glColor4b(sbyte, sbyte, sbyte, sbyte) public static extern void glColor4b(sbyte red, sbyte green, sbyte blue, sbyte alpha) Parameters red sbyte green sbyte blue sbyte alpha sbyte glColor4bv(sbyte*) public static extern void glColor4bv(sbyte* v) Parameters v sbyte* glColor4d(double, double, double, double) public static extern void glColor4d(double red, double green, double blue, double alpha) Parameters red double green double blue double alpha double glColor4dv(double*) public static extern void glColor4dv(double* v) Parameters v double* glColor4f(float, float, float, float) public static extern void glColor4f(float red, float green, float blue, float alpha) Parameters red float green float blue float alpha float glColor4fNormal3fVertex3fSUN(float, float, float, float, float, float, float, float, float, float) public static extern void glColor4fNormal3fVertex3fSUN(float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z) Parameters r float g float b float a float nx float ny float nz float x float y float z float glColor4fNormal3fVertex3fvSUN(float*, float*, float*) public static extern void glColor4fNormal3fVertex3fvSUN(float* c, float* n, float* v) Parameters c float* n float* v float* glColor4fv(float*) public static extern void glColor4fv(float* v) Parameters v float* glColor4hNV(ushort, ushort, ushort, ushort) public static extern void glColor4hNV(ushort red, ushort green, ushort blue, ushort alpha) Parameters red ushort green ushort blue ushort alpha ushort glColor4hvNV(ushort*) public static extern void glColor4hvNV(ushort* v) Parameters v ushort* glColor4i(int, int, int, int) public static extern void glColor4i(int red, int green, int blue, int alpha) Parameters red int green int blue int alpha int glColor4iv(int*) public static extern void glColor4iv(int* v) Parameters v int* glColor4s(short, short, short, short) public static extern void glColor4s(short red, short green, short blue, short alpha) Parameters red short green short blue short alpha short glColor4sv(short*) public static extern void glColor4sv(short* v) Parameters v short* glColor4ub(byte, byte, byte, byte) public static extern void glColor4ub(byte red, byte green, byte blue, byte alpha) Parameters red byte green byte blue byte alpha byte glColor4ubVertex2fSUN(byte, byte, byte, byte, float, float) public static extern void glColor4ubVertex2fSUN(byte r, byte g, byte b, byte a, float x, float y) Parameters r byte g byte b byte a byte x float y float glColor4ubVertex2fvSUN(byte*, float*) public static extern void glColor4ubVertex2fvSUN(byte* c, float* v) Parameters c byte* v float* glColor4ubVertex3fSUN(byte, byte, byte, byte, float, float, float) public static extern void glColor4ubVertex3fSUN(byte r, byte g, byte b, byte a, float x, float y, float z) Parameters r byte g byte b byte a byte x float y float z float glColor4ubVertex3fvSUN(byte*, float*) public static extern void glColor4ubVertex3fvSUN(byte* c, float* v) Parameters c byte* v float* glColor4ubv(byte*) public static extern void glColor4ubv(byte* v) Parameters v byte* glColor4ui(uint, uint, uint, uint) public static extern void glColor4ui(uint red, uint green, uint blue, uint alpha) Parameters red uint green uint blue uint alpha uint glColor4uiv(uint*) public static extern void glColor4uiv(uint* v) Parameters v uint* glColor4us(ushort, ushort, ushort, ushort) public static extern void glColor4us(ushort red, ushort green, ushort blue, ushort alpha) Parameters red ushort green ushort blue ushort alpha ushort glColor4usv(ushort*) public static extern void glColor4usv(ushort* v) Parameters v ushort* glColorFormatNV(int, uint, int) public static extern void glColorFormatNV(int size, uint type, int stride) Parameters size int type uint stride int glColorFragmentOp1ATI(uint, uint, uint, uint, uint, uint, uint) public static extern void glColorFragmentOp1ATI(uint op, uint dst, uint dstMask, uint dstMod, uint arg1, uint arg1Rep, uint arg1Mod) Parameters op uint dst uint dstMask uint dstMod uint arg1 uint arg1Rep uint arg1Mod uint glColorFragmentOp2ATI(uint, uint, uint, uint, uint, uint, uint, uint, uint, uint) public static extern void glColorFragmentOp2ATI(uint op, uint dst, uint dstMask, uint dstMod, uint arg1, uint arg1Rep, uint arg1Mod, uint arg2, uint arg2Rep, uint arg2Mod) Parameters op uint dst uint dstMask uint dstMod uint arg1 uint arg1Rep uint arg1Mod uint arg2 uint arg2Rep uint arg2Mod uint glColorFragmentOp3ATI(uint, uint, uint, uint, uint, uint, uint, uint, uint, uint, uint, uint, uint) public static extern void glColorFragmentOp3ATI(uint op, uint dst, uint dstMask, uint dstMod, uint arg1, uint arg1Rep, uint arg1Mod, uint arg2, uint arg2Rep, uint arg2Mod, uint arg3, uint arg3Rep, uint arg3Mod) Parameters op uint dst uint dstMask uint dstMod uint arg1 uint arg1Rep uint arg1Mod uint arg2 uint arg2Rep uint arg2Mod uint arg3 uint arg3Rep uint arg3Mod uint glColorMask(bool, bool, bool, bool) public static extern void glColorMask(bool red, bool green, bool blue, bool alpha) Parameters red bool green bool blue bool alpha bool glColorMaskIndexedEXT(uint, bool, bool, bool, bool) public static extern void glColorMaskIndexedEXT(uint index, bool r, bool g, bool b, bool a) Parameters index uint r bool g bool b bool a bool glColorMaski(uint, bool, bool, bool, bool) public static extern void glColorMaski(uint index, bool r, bool g, bool b, bool a) Parameters index uint r bool g bool b bool a bool glColorMaterial(uint, uint) public static extern void glColorMaterial(uint face, uint mode) Parameters face uint mode uint glColorP3ui(uint, uint) public static extern void glColorP3ui(uint type, uint color) Parameters type uint color uint glColorP3uiv(uint, uint*) public static extern void glColorP3uiv(uint type, uint* color) Parameters type uint color uint* glColorP4ui(uint, uint) public static extern void glColorP4ui(uint type, uint color) Parameters type uint color uint glColorP4uiv(uint, uint*) public static extern void glColorP4uiv(uint type, uint* color) Parameters type uint color uint* glColorPointer(int, uint, int, nint) public static extern void glColorPointer(int size, uint type, int stride, nint pointer) Parameters size int type uint stride int pointer nint glColorPointerEXT(int, uint, int, int, nint) public static extern void glColorPointerEXT(int size, uint type, int stride, int count, nint pointer) Parameters size int type uint stride int count int pointer nint glColorPointerListIBM(int, uint, int, nint, int) public static extern void glColorPointerListIBM(int size, uint type, int stride, nint pointer, int ptrstride) Parameters size int type uint stride int pointer nint ptrstride int glColorPointervINTEL(int, uint, nint) public static extern void glColorPointervINTEL(int size, uint type, nint pointer) Parameters size int type uint pointer nint glColorSubTable(uint, int, int, uint, uint, nint) public static extern void glColorSubTable(uint target, int start, int count, uint format, uint type, nint data) Parameters target uint start int count int format uint type uint data nint glColorSubTableEXT(uint, int, int, uint, uint, nint) public static extern void glColorSubTableEXT(uint target, int start, int count, uint format, uint type, nint data) Parameters target uint start int count int format uint type uint data nint glColorTable(uint, uint, int, uint, uint, nint) public static extern void glColorTable(uint target, uint internalformat, int width, uint format, uint type, nint table) Parameters target uint internalformat uint width int format uint type uint table nint glColorTableEXT(uint, uint, int, uint, uint, nint) public static extern void glColorTableEXT(uint target, uint internalFormat, int width, uint format, uint type, nint table) Parameters target uint internalFormat uint width int format uint type uint table nint glColorTableParameterfv(uint, uint, float*) public static extern void glColorTableParameterfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glColorTableParameterfvSGI(uint, uint, float*) public static extern void glColorTableParameterfvSGI(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glColorTableParameteriv(uint, uint, int*) public static extern void glColorTableParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glColorTableParameterivSGI(uint, uint, int*) public static extern void glColorTableParameterivSGI(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glColorTableSGI(uint, uint, int, uint, uint, nint) public static extern void glColorTableSGI(uint target, uint internalformat, int width, uint format, uint type, nint table) Parameters target uint internalformat uint width int format uint type uint table nint glCombinerInputNV(uint, uint, uint, uint, uint, uint) public static extern void glCombinerInputNV(uint stage, uint portion, uint variable, uint input, uint mapping, uint componentUsage) Parameters stage uint portion uint variable uint input uint mapping uint componentUsage uint glCombinerOutputNV(uint, uint, uint, uint, uint, uint, uint, bool, bool, bool) public static extern void glCombinerOutputNV(uint stage, uint portion, uint abOutput, uint cdOutput, uint sumOutput, uint scale, uint bias, bool abDotProduct, bool cdDotProduct, bool muxSum) Parameters stage uint portion uint abOutput uint cdOutput uint sumOutput uint scale uint bias uint abDotProduct bool cdDotProduct bool muxSum bool glCombinerParameterfNV(uint, float) public static extern void glCombinerParameterfNV(uint pname, float param) Parameters pname uint param float glCombinerParameterfvNV(uint, float*) public static extern void glCombinerParameterfvNV(uint pname, float* @params) Parameters pname uint params float* glCombinerParameteriNV(uint, int) public static extern void glCombinerParameteriNV(uint pname, int param) Parameters pname uint param int glCombinerParameterivNV(uint, int*) public static extern void glCombinerParameterivNV(uint pname, int* @params) Parameters pname uint params int* glCombinerStageParameterfvNV(uint, uint, float*) public static extern void glCombinerStageParameterfvNV(uint stage, uint pname, float* @params) Parameters stage uint pname uint params float* glCompileShader(uint) public static extern void glCompileShader(uint shader) Parameters shader uint glCompileShaderARB(uint) public static extern void glCompileShaderARB(uint shaderObj) Parameters shaderObj uint glCompileShaderIncludeARB(uint, int, string[], int*) public static extern void glCompileShaderIncludeARB(uint shader, int count, string[] path, int* length) Parameters shader uint count int path string[] length int* glCompressedMultiTexImage1DEXT(uint, uint, int, uint, int, int, int, nint) public static extern void glCompressedMultiTexImage1DEXT(uint texunit, uint target, int level, uint internalformat, int width, int border, int imageSize, nint bits) Parameters texunit uint target uint level int internalformat uint width int border int imageSize int bits nint glCompressedMultiTexImage2DEXT(uint, uint, int, uint, int, int, int, int, nint) public static extern void glCompressedMultiTexImage2DEXT(uint texunit, uint target, int level, uint internalformat, int width, int height, int border, int imageSize, nint bits) Parameters texunit uint target uint level int internalformat uint width int height int border int imageSize int bits nint glCompressedMultiTexImage3DEXT(uint, uint, int, uint, int, int, int, int, int, nint) public static extern void glCompressedMultiTexImage3DEXT(uint texunit, uint target, int level, uint internalformat, int width, int height, int depth, int border, int imageSize, nint bits) Parameters texunit uint target uint level int internalformat uint width int height int depth int border int imageSize int bits nint glCompressedMultiTexSubImage1DEXT(uint, uint, int, int, int, uint, int, nint) public static extern void glCompressedMultiTexSubImage1DEXT(uint texunit, uint target, int level, int xoffset, int width, uint format, int imageSize, nint bits) Parameters texunit uint target uint level int xoffset int width int format uint imageSize int bits nint glCompressedMultiTexSubImage2DEXT(uint, uint, int, int, int, int, int, uint, int, nint) public static extern void glCompressedMultiTexSubImage2DEXT(uint texunit, uint target, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, nint bits) Parameters texunit uint target uint level int xoffset int yoffset int width int height int format uint imageSize int bits nint glCompressedMultiTexSubImage3DEXT(uint, uint, int, int, int, int, int, int, int, uint, int, nint) public static extern void glCompressedMultiTexSubImage3DEXT(uint texunit, uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, nint bits) Parameters texunit uint target uint level int xoffset int yoffset int zoffset int width int height int depth int format uint imageSize int bits nint glCompressedTexImage1D(uint, int, uint, int, int, int, nint) public static extern void glCompressedTexImage1D(uint target, int level, uint internalformat, int width, int border, int imageSize, nint data) Parameters target uint level int internalformat uint width int border int imageSize int data nint glCompressedTexImage1DARB(uint, int, uint, int, int, int, nint) public static extern void glCompressedTexImage1DARB(uint target, int level, uint internalformat, int width, int border, int imageSize, nint data) Parameters target uint level int internalformat uint width int border int imageSize int data nint glCompressedTexImage2D(uint, int, uint, int, int, int, int, nint) public static extern void glCompressedTexImage2D(uint target, int level, uint internalformat, int width, int height, int border, int imageSize, nint data) Parameters target uint level int internalformat uint width int height int border int imageSize int data nint glCompressedTexImage2DARB(uint, int, uint, int, int, int, int, nint) public static extern void glCompressedTexImage2DARB(uint target, int level, uint internalformat, int width, int height, int border, int imageSize, nint data) Parameters target uint level int internalformat uint width int height int border int imageSize int data nint glCompressedTexImage3D(uint, int, uint, int, int, int, int, int, nint) public static extern void glCompressedTexImage3D(uint target, int level, uint internalformat, int width, int height, int depth, int border, int imageSize, nint data) Parameters target uint level int internalformat uint width int height int depth int border int imageSize int data nint glCompressedTexImage3DARB(uint, int, uint, int, int, int, int, int, nint) public static extern void glCompressedTexImage3DARB(uint target, int level, uint internalformat, int width, int height, int depth, int border, int imageSize, nint data) Parameters target uint level int internalformat uint width int height int depth int border int imageSize int data nint glCompressedTexSubImage1D(uint, int, int, int, uint, int, nint) public static extern void glCompressedTexSubImage1D(uint target, int level, int xoffset, int width, uint format, int imageSize, nint data) Parameters target uint level int xoffset int width int format uint imageSize int data nint glCompressedTexSubImage1DARB(uint, int, int, int, uint, int, nint) public static extern void glCompressedTexSubImage1DARB(uint target, int level, int xoffset, int width, uint format, int imageSize, nint data) Parameters target uint level int xoffset int width int format uint imageSize int data nint glCompressedTexSubImage2D(uint, int, int, int, int, int, uint, int, nint) public static extern void glCompressedTexSubImage2D(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, nint data) Parameters target uint level int xoffset int yoffset int width int height int format uint imageSize int data nint glCompressedTexSubImage2DARB(uint, int, int, int, int, int, uint, int, nint) public static extern void glCompressedTexSubImage2DARB(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, nint data) Parameters target uint level int xoffset int yoffset int width int height int format uint imageSize int data nint glCompressedTexSubImage3D(uint, int, int, int, int, int, int, int, uint, int, nint) public static extern void glCompressedTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, nint data) Parameters target uint level int xoffset int yoffset int zoffset int width int height int depth int format uint imageSize int data nint glCompressedTexSubImage3DARB(uint, int, int, int, int, int, int, int, uint, int, nint) public static extern void glCompressedTexSubImage3DARB(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, nint data) Parameters target uint level int xoffset int yoffset int zoffset int width int height int depth int format uint imageSize int data nint glCompressedTextureImage1DEXT(uint, uint, int, uint, int, int, int, nint) public static extern void glCompressedTextureImage1DEXT(uint texture, uint target, int level, uint internalformat, int width, int border, int imageSize, nint bits) Parameters texture uint target uint level int internalformat uint width int border int imageSize int bits nint glCompressedTextureImage2DEXT(uint, uint, int, uint, int, int, int, int, nint) public static extern void glCompressedTextureImage2DEXT(uint texture, uint target, int level, uint internalformat, int width, int height, int border, int imageSize, nint bits) Parameters texture uint target uint level int internalformat uint width int height int border int imageSize int bits nint glCompressedTextureImage3DEXT(uint, uint, int, uint, int, int, int, int, int, nint) public static extern void glCompressedTextureImage3DEXT(uint texture, uint target, int level, uint internalformat, int width, int height, int depth, int border, int imageSize, nint bits) Parameters texture uint target uint level int internalformat uint width int height int depth int border int imageSize int bits nint glCompressedTextureSubImage1DEXT(uint, uint, int, int, int, uint, int, nint) public static extern void glCompressedTextureSubImage1DEXT(uint texture, uint target, int level, int xoffset, int width, uint format, int imageSize, nint bits) Parameters texture uint target uint level int xoffset int width int format uint imageSize int bits nint glCompressedTextureSubImage2DEXT(uint, uint, int, int, int, int, int, uint, int, nint) public static extern void glCompressedTextureSubImage2DEXT(uint texture, uint target, int level, int xoffset, int yoffset, int width, int height, uint format, int imageSize, nint bits) Parameters texture uint target uint level int xoffset int yoffset int width int height int format uint imageSize int bits nint glCompressedTextureSubImage3DEXT(uint, uint, int, int, int, int, int, int, int, uint, int, nint) public static extern void glCompressedTextureSubImage3DEXT(uint texture, uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, int imageSize, nint bits) Parameters texture uint target uint level int xoffset int yoffset int zoffset int width int height int depth int format uint imageSize int bits nint glConvolutionFilter1D(uint, uint, int, uint, uint, nint) public static extern void glConvolutionFilter1D(uint target, uint internalformat, int width, uint format, uint type, nint image) Parameters target uint internalformat uint width int format uint type uint image nint glConvolutionFilter1DEXT(uint, uint, int, uint, uint, nint) public static extern void glConvolutionFilter1DEXT(uint target, uint internalformat, int width, uint format, uint type, nint image) Parameters target uint internalformat uint width int format uint type uint image nint glConvolutionFilter2D(uint, uint, int, int, uint, uint, nint) public static extern void glConvolutionFilter2D(uint target, uint internalformat, int width, int height, uint format, uint type, nint image) Parameters target uint internalformat uint width int height int format uint type uint image nint glConvolutionFilter2DEXT(uint, uint, int, int, uint, uint, nint) public static extern void glConvolutionFilter2DEXT(uint target, uint internalformat, int width, int height, uint format, uint type, nint image) Parameters target uint internalformat uint width int height int format uint type uint image nint glConvolutionParameterf(uint, uint, float) public static extern void glConvolutionParameterf(uint target, uint pname, float @params) Parameters target uint pname uint params float glConvolutionParameterfEXT(uint, uint, float) public static extern void glConvolutionParameterfEXT(uint target, uint pname, float @params) Parameters target uint pname uint params float glConvolutionParameterfv(uint, uint, float*) public static extern void glConvolutionParameterfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glConvolutionParameterfvEXT(uint, uint, float*) public static extern void glConvolutionParameterfvEXT(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glConvolutionParameteri(uint, uint, int) public static extern void glConvolutionParameteri(uint target, uint pname, int @params) Parameters target uint pname uint params int glConvolutionParameteriEXT(uint, uint, int) public static extern void glConvolutionParameteriEXT(uint target, uint pname, int @params) Parameters target uint pname uint params int glConvolutionParameteriv(uint, uint, int*) public static extern void glConvolutionParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glConvolutionParameterivEXT(uint, uint, int*) public static extern void glConvolutionParameterivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glCopyBufferSubData(uint, uint, nint, nint, nint) public static extern void glCopyBufferSubData(uint readTarget, uint writeTarget, nint readOffset, nint writeOffset, nint size) Parameters readTarget uint writeTarget uint readOffset nint writeOffset nint size nint glCopyColorSubTable(uint, int, int, int, int) public static extern void glCopyColorSubTable(uint target, int start, int x, int y, int width) Parameters target uint start int x int y int width int glCopyColorSubTableEXT(uint, int, int, int, int) public static extern void glCopyColorSubTableEXT(uint target, int start, int x, int y, int width) Parameters target uint start int x int y int width int glCopyColorTable(uint, uint, int, int, int) public static extern void glCopyColorTable(uint target, uint internalformat, int x, int y, int width) Parameters target uint internalformat uint x int y int width int glCopyColorTableSGI(uint, uint, int, int, int) public static extern void glCopyColorTableSGI(uint target, uint internalformat, int x, int y, int width) Parameters target uint internalformat uint x int y int width int glCopyConvolutionFilter1D(uint, uint, int, int, int) public static extern void glCopyConvolutionFilter1D(uint target, uint internalformat, int x, int y, int width) Parameters target uint internalformat uint x int y int width int glCopyConvolutionFilter1DEXT(uint, uint, int, int, int) public static extern void glCopyConvolutionFilter1DEXT(uint target, uint internalformat, int x, int y, int width) Parameters target uint internalformat uint x int y int width int glCopyConvolutionFilter2D(uint, uint, int, int, int, int) public static extern void glCopyConvolutionFilter2D(uint target, uint internalformat, int x, int y, int width, int height) Parameters target uint internalformat uint x int y int width int height int glCopyConvolutionFilter2DEXT(uint, uint, int, int, int, int) public static extern void glCopyConvolutionFilter2DEXT(uint target, uint internalformat, int x, int y, int width, int height) Parameters target uint internalformat uint x int y int width int height int glCopyImageSubDataNV(uint, uint, int, int, int, int, uint, uint, int, int, int, int, int, int, int) public static extern void glCopyImageSubDataNV(uint srcName, uint srcTarget, int srcLevel, int srcX, int srcY, int srcZ, uint dstName, uint dstTarget, int dstLevel, int dstX, int dstY, int dstZ, int width, int height, int depth) Parameters srcName uint srcTarget uint srcLevel int srcX int srcY int srcZ int dstName uint dstTarget uint dstLevel int dstX int dstY int dstZ int width int height int depth int glCopyMultiTexImage1DEXT(uint, uint, int, uint, int, int, int, int) public static extern void glCopyMultiTexImage1DEXT(uint texunit, uint target, int level, uint internalformat, int x, int y, int width, int border) Parameters texunit uint target uint level int internalformat uint x int y int width int border int glCopyMultiTexImage2DEXT(uint, uint, int, uint, int, int, int, int, int) public static extern void glCopyMultiTexImage2DEXT(uint texunit, uint target, int level, uint internalformat, int x, int y, int width, int height, int border) Parameters texunit uint target uint level int internalformat uint x int y int width int height int border int glCopyMultiTexSubImage1DEXT(uint, uint, int, int, int, int, int) public static extern void glCopyMultiTexSubImage1DEXT(uint texunit, uint target, int level, int xoffset, int x, int y, int width) Parameters texunit uint target uint level int xoffset int x int y int width int glCopyMultiTexSubImage2DEXT(uint, uint, int, int, int, int, int, int, int) public static extern void glCopyMultiTexSubImage2DEXT(uint texunit, uint target, int level, int xoffset, int yoffset, int x, int y, int width, int height) Parameters texunit uint target uint level int xoffset int yoffset int x int y int width int height int glCopyMultiTexSubImage3DEXT(uint, uint, int, int, int, int, int, int, int, int) public static extern void glCopyMultiTexSubImage3DEXT(uint texunit, uint target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) Parameters texunit uint target uint level int xoffset int yoffset int zoffset int x int y int width int height int glCopyPixels(int, int, int, int, uint) public static extern void glCopyPixels(int x, int y, int width, int height, uint type) Parameters x int y int width int height int type uint glCopyTexImage1D(uint, int, uint, int, int, int, int) public static extern void glCopyTexImage1D(uint target, int level, uint internalformat, int x, int y, int width, int border) Parameters target uint level int internalformat uint x int y int width int border int glCopyTexImage1DEXT(uint, int, uint, int, int, int, int) public static extern void glCopyTexImage1DEXT(uint target, int level, uint internalformat, int x, int y, int width, int border) Parameters target uint level int internalformat uint x int y int width int border int glCopyTexImage2D(uint, int, uint, int, int, int, int, int) public static extern void glCopyTexImage2D(uint target, int level, uint internalformat, int x, int y, int width, int height, int border) Parameters target uint level int internalformat uint x int y int width int height int border int glCopyTexImage2DEXT(uint, int, uint, int, int, int, int, int) public static extern void glCopyTexImage2DEXT(uint target, int level, uint internalformat, int x, int y, int width, int height, int border) Parameters target uint level int internalformat uint x int y int width int height int border int glCopyTexSubImage1D(uint, int, int, int, int, int) public static extern void glCopyTexSubImage1D(uint target, int level, int xoffset, int x, int y, int width) Parameters target uint level int xoffset int x int y int width int glCopyTexSubImage1DEXT(uint, int, int, int, int, int) public static extern void glCopyTexSubImage1DEXT(uint target, int level, int xoffset, int x, int y, int width) Parameters target uint level int xoffset int x int y int width int glCopyTexSubImage2D(uint, int, int, int, int, int, int, int) public static extern void glCopyTexSubImage2D(uint target, int level, int xoffset, int yoffset, int x, int y, int width, int height) Parameters target uint level int xoffset int yoffset int x int y int width int height int glCopyTexSubImage2DEXT(uint, int, int, int, int, int, int, int) public static extern void glCopyTexSubImage2DEXT(uint target, int level, int xoffset, int yoffset, int x, int y, int width, int height) Parameters target uint level int xoffset int yoffset int x int y int width int height int glCopyTexSubImage3D(uint, int, int, int, int, int, int, int, int) public static extern void glCopyTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) Parameters target uint level int xoffset int yoffset int zoffset int x int y int width int height int glCopyTexSubImage3DEXT(uint, int, int, int, int, int, int, int, int) public static extern void glCopyTexSubImage3DEXT(uint target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) Parameters target uint level int xoffset int yoffset int zoffset int x int y int width int height int glCopyTextureImage1DEXT(uint, uint, int, uint, int, int, int, int) public static extern void glCopyTextureImage1DEXT(uint texture, uint target, int level, uint internalformat, int x, int y, int width, int border) Parameters texture uint target uint level int internalformat uint x int y int width int border int glCopyTextureImage2DEXT(uint, uint, int, uint, int, int, int, int, int) public static extern void glCopyTextureImage2DEXT(uint texture, uint target, int level, uint internalformat, int x, int y, int width, int height, int border) Parameters texture uint target uint level int internalformat uint x int y int width int height int border int glCopyTextureSubImage1DEXT(uint, uint, int, int, int, int, int) public static extern void glCopyTextureSubImage1DEXT(uint texture, uint target, int level, int xoffset, int x, int y, int width) Parameters texture uint target uint level int xoffset int x int y int width int glCopyTextureSubImage2DEXT(uint, uint, int, int, int, int, int, int, int) public static extern void glCopyTextureSubImage2DEXT(uint texture, uint target, int level, int xoffset, int yoffset, int x, int y, int width, int height) Parameters texture uint target uint level int xoffset int yoffset int x int y int width int height int glCopyTextureSubImage3DEXT(uint, uint, int, int, int, int, int, int, int, int) public static extern void glCopyTextureSubImage3DEXT(uint texture, uint target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height) Parameters texture uint target uint level int xoffset int yoffset int zoffset int x int y int width int height int glCreateProgram() public static extern int glCreateProgram() Returns int glCreateProgramObjectARB() public static extern int glCreateProgramObjectARB() Returns int glCreateShader(uint) public static extern int glCreateShader(uint type) Parameters type uint Returns int glCreateShaderObjectARB(uint) public static extern int glCreateShaderObjectARB(uint shaderType) Parameters shaderType uint Returns int glCreateShaderProgramEXT(uint, string) public static extern int glCreateShaderProgramEXT(uint type, string @string) Parameters type uint string string Returns int glCreateShaderProgramv(uint, int, string[]) public static extern int glCreateShaderProgramv(uint type, int count, string[] strings) Parameters type uint count int strings string[] Returns int glCreateSyncFromCLeventARB(nint, nint, uint) public static extern nint glCreateSyncFromCLeventARB(nint context, nint @event, uint flags) Parameters context nint event nint flags uint Returns nint glCullFace(uint) public static extern void glCullFace(uint mode) Parameters mode uint glCullParameterdvEXT(uint, double*) public static extern void glCullParameterdvEXT(uint pname, double* @params) Parameters pname uint params double* glCullParameterfvEXT(uint, float*) public static extern void glCullParameterfvEXT(uint pname, float* @params) Parameters pname uint params float* glCurrentPaletteMatrixARB(int) public static extern void glCurrentPaletteMatrixARB(int index) Parameters index int glDebugMessageControlARB(uint, uint, uint, int, uint*, bool) public static extern void glDebugMessageControlARB(uint source, uint type, uint severity, int count, uint* ids, bool enabled) Parameters source uint type uint severity uint count int ids uint* enabled bool glDebugMessageEnableAMD(uint, uint, int, uint*, bool) public static extern void glDebugMessageEnableAMD(uint category, uint severity, int count, uint* ids, bool enabled) Parameters category uint severity uint count int ids uint* enabled bool glDebugMessageInsertAMD(uint, uint, uint, int, string) public static extern void glDebugMessageInsertAMD(uint category, uint severity, uint id, int length, string buf) Parameters category uint severity uint id uint length int buf string glDebugMessageInsertARB(uint, uint, uint, uint, int, string) public static extern void glDebugMessageInsertARB(uint source, uint type, uint id, uint severity, int length, string buf) Parameters source uint type uint id uint severity uint length int buf string glDeformSGIX(uint) public static extern void glDeformSGIX(uint mask) Parameters mask uint glDeformationMap3dSGIX(uint, double, double, int, int, double, double, int, int, double, double, int, int, double*) public static extern void glDeformationMap3dSGIX(uint target, double u1, double u2, int ustride, int uorder, double v1, double v2, int vstride, int vorder, double w1, double w2, int wstride, int worder, double* points) Parameters target uint u1 double u2 double ustride int uorder int v1 double v2 double vstride int vorder int w1 double w2 double wstride int worder int points double* glDeformationMap3fSGIX(uint, float, float, int, int, float, float, int, int, float, float, int, int, float*) public static extern void glDeformationMap3fSGIX(uint target, float u1, float u2, int ustride, int uorder, float v1, float v2, int vstride, int vorder, float w1, float w2, int wstride, int worder, float* points) Parameters target uint u1 float u2 float ustride int uorder int v1 float v2 float vstride int vorder int w1 float w2 float wstride int worder int points float* glDeleteAsyncMarkersSGIX(uint, int) public static extern void glDeleteAsyncMarkersSGIX(uint marker, int range) Parameters marker uint range int glDeleteBuffers(int, uint*) public static extern void glDeleteBuffers(int n, uint* buffers) Parameters n int buffers uint* glDeleteBuffersARB(int, uint*) public static extern void glDeleteBuffersARB(int n, uint* buffers) Parameters n int buffers uint* glDeleteFencesAPPLE(int, uint*) public static extern void glDeleteFencesAPPLE(int n, uint* fences) Parameters n int fences uint* glDeleteFencesNV(int, uint*) public static extern void glDeleteFencesNV(int n, uint* fences) Parameters n int fences uint* glDeleteFragmentShaderATI(uint) public static extern void glDeleteFragmentShaderATI(uint id) Parameters id uint glDeleteFramebuffers(int, uint*) public static extern void glDeleteFramebuffers(int n, uint* framebuffers) Parameters n int framebuffers uint* glDeleteFramebuffersEXT(int, uint*) public static extern void glDeleteFramebuffersEXT(int n, uint* framebuffers) Parameters n int framebuffers uint* glDeleteLists(uint, int) public static extern void glDeleteLists(uint list, int range) Parameters list uint range int glDeleteNamedStringARB(int, string) public static extern void glDeleteNamedStringARB(int namelen, string name) Parameters namelen int name string glDeleteNamesAMD(uint, uint, uint*) public static extern void glDeleteNamesAMD(uint identifier, uint num, uint* names) Parameters identifier uint num uint names uint* glDeleteObjectARB(uint) public static extern void glDeleteObjectARB(uint obj) Parameters obj uint glDeleteOcclusionQueriesNV(int, uint*) public static extern void glDeleteOcclusionQueriesNV(int n, uint* ids) Parameters n int ids uint* glDeletePerfMonitorsAMD(int, uint*) public static extern void glDeletePerfMonitorsAMD(int n, uint* monitors) Parameters n int monitors uint* glDeleteProgram(uint) public static extern void glDeleteProgram(uint program) Parameters program uint glDeleteProgramPipelines(int, uint*) public static extern void glDeleteProgramPipelines(int n, uint* pipelines) Parameters n int pipelines uint* glDeleteProgramsARB(int, uint*) public static extern void glDeleteProgramsARB(int n, uint* programs) Parameters n int programs uint* glDeleteProgramsNV(int, uint*) public static extern void glDeleteProgramsNV(int n, uint* programs) Parameters n int programs uint* glDeleteQueries(int, uint*) public static extern void glDeleteQueries(int n, uint* ids) Parameters n int ids uint* glDeleteQueriesARB(int, uint*) public static extern void glDeleteQueriesARB(int n, uint* ids) Parameters n int ids uint* glDeleteRenderbuffers(int, uint*) public static extern void glDeleteRenderbuffers(int n, uint* renderbuffers) Parameters n int renderbuffers uint* glDeleteRenderbuffersEXT(int, uint*) public static extern void glDeleteRenderbuffersEXT(int n, uint* renderbuffers) Parameters n int renderbuffers uint* glDeleteSamplers(int, uint*) public static extern void glDeleteSamplers(int count, uint* samplers) Parameters count int samplers uint* glDeleteShader(uint) public static extern void glDeleteShader(uint shader) Parameters shader uint glDeleteSync(nint) public static extern void glDeleteSync(nint sync) Parameters sync nint glDeleteTextures(int, uint*) public static extern void glDeleteTextures(int n, uint* textures) Parameters n int textures uint* glDeleteTexturesEXT(int, uint*) public static extern void glDeleteTexturesEXT(int n, uint* textures) Parameters n int textures uint* glDeleteTransformFeedbacks(int, uint*) public static extern void glDeleteTransformFeedbacks(int n, uint* ids) Parameters n int ids uint* glDeleteTransformFeedbacksNV(int, uint*) public static extern void glDeleteTransformFeedbacksNV(int n, uint* ids) Parameters n int ids uint* glDeleteVertexArrays(int, uint*) public static extern void glDeleteVertexArrays(int n, uint* arrays) Parameters n int arrays uint* glDeleteVertexArraysAPPLE(int, uint*) public static extern void glDeleteVertexArraysAPPLE(int n, uint* arrays) Parameters n int arrays uint* glDeleteVertexShaderEXT(uint) public static extern void glDeleteVertexShaderEXT(uint id) Parameters id uint glDepthBoundsEXT(double, double) public static extern void glDepthBoundsEXT(double zmin, double zmax) Parameters zmin double zmax double glDepthBoundsdNV(double, double) public static extern void glDepthBoundsdNV(double zmin, double zmax) Parameters zmin double zmax double glDepthFunc(uint) public static extern void glDepthFunc(uint func) Parameters func uint glDepthMask(bool) public static extern void glDepthMask(bool flag) Parameters flag bool glDepthRange(double, double) public static extern void glDepthRange(double near, double far) Parameters near double far double glDepthRangeArrayv(uint, int, double*) public static extern void glDepthRangeArrayv(uint first, int count, double* v) Parameters first uint count int v double* glDepthRangeIndexed(uint, double, double) public static extern void glDepthRangeIndexed(uint index, double n, double f) Parameters index uint n double f double glDepthRangedNV(double, double) public static extern void glDepthRangedNV(double zNear, double zFar) Parameters zNear double zFar double glDepthRangef(float, float) public static extern void glDepthRangef(float n, float f) Parameters n float f float glDetachObjectARB(uint, uint) public static extern void glDetachObjectARB(uint containerObj, uint attachedObj) Parameters containerObj uint attachedObj uint glDetachShader(uint, uint) public static extern void glDetachShader(uint program, uint shader) Parameters program uint shader uint glDetailTexFuncSGIS(uint, int, float*) public static extern void glDetailTexFuncSGIS(uint target, int n, float* points) Parameters target uint n int points float* glDisable(uint) public static extern void glDisable(uint cap) Parameters cap uint glDisableClientState(uint) public static extern void glDisableClientState(uint array) Parameters array uint glDisableClientStateIndexedEXT(uint, uint) public static extern void glDisableClientStateIndexedEXT(uint array, uint index) Parameters array uint index uint glDisableIndexedEXT(uint, uint) public static extern void glDisableIndexedEXT(uint target, uint index) Parameters target uint index uint glDisableVariantClientStateEXT(uint) public static extern void glDisableVariantClientStateEXT(uint id) Parameters id uint glDisableVertexAttribAPPLE(uint, uint) public static extern void glDisableVertexAttribAPPLE(uint index, uint pname) Parameters index uint pname uint glDisableVertexAttribArray(uint) public static extern void glDisableVertexAttribArray(uint index) Parameters index uint glDisableVertexAttribArrayARB(uint) public static extern void glDisableVertexAttribArrayARB(uint index) Parameters index uint glDisablei(uint, uint) public static extern void glDisablei(uint target, uint index) Parameters target uint index uint glDrawArrays(uint, int, int) public static extern void glDrawArrays(uint mode, int first, int count) Parameters mode uint first int count int glDrawArraysEXT(uint, int, int) public static extern void glDrawArraysEXT(uint mode, int first, int count) Parameters mode uint first int count int glDrawArraysIndirect(uint, nint) public static extern void glDrawArraysIndirect(uint mode, nint indirect) Parameters mode uint indirect nint glDrawArraysInstanced(uint, int, int, int) public static extern void glDrawArraysInstanced(uint mode, int first, int count, int primcount) Parameters mode uint first int count int primcount int glDrawArraysInstancedARB(uint, int, int, int) public static extern void glDrawArraysInstancedARB(uint mode, int first, int count, int primcount) Parameters mode uint first int count int primcount int glDrawArraysInstancedEXT(uint, int, int, int) public static extern void glDrawArraysInstancedEXT(uint mode, int start, int count, int primcount) Parameters mode uint start int count int primcount int glDrawBuffer(uint) public static extern void glDrawBuffer(uint mode) Parameters mode uint glDrawBuffers(int, uint*) public static extern void glDrawBuffers(int n, uint* bufs) Parameters n int bufs uint* glDrawBuffersARB(int, uint*) public static extern void glDrawBuffersARB(int n, uint* bufs) Parameters n int bufs uint* glDrawBuffersATI(int, uint*) public static extern void glDrawBuffersATI(int n, uint* bufs) Parameters n int bufs uint* glDrawElementArrayAPPLE(uint, int, int) public static extern void glDrawElementArrayAPPLE(uint mode, int first, int count) Parameters mode uint first int count int glDrawElementArrayATI(uint, int) public static extern void glDrawElementArrayATI(uint mode, int count) Parameters mode uint count int glDrawElements(uint, int, uint, nint) public static extern void glDrawElements(uint mode, int count, uint type, nint indices) Parameters mode uint count int type uint indices nint glDrawElementsBaseVertex(uint, int, uint, nint, int) public static extern void glDrawElementsBaseVertex(uint mode, int count, uint type, nint indices, int basevertex) Parameters mode uint count int type uint indices nint basevertex int glDrawElementsIndirect(uint, uint, nint) public static extern void glDrawElementsIndirect(uint mode, uint type, nint indirect) Parameters mode uint type uint indirect nint glDrawElementsInstanced(uint, int, uint, nint, int) public static extern void glDrawElementsInstanced(uint mode, int count, uint type, nint indices, int primcount) Parameters mode uint count int type uint indices nint primcount int glDrawElementsInstancedARB(uint, int, uint, nint, int) public static extern void glDrawElementsInstancedARB(uint mode, int count, uint type, nint indices, int primcount) Parameters mode uint count int type uint indices nint primcount int glDrawElementsInstancedBaseVertex(uint, int, uint, nint, int, int) public static extern void glDrawElementsInstancedBaseVertex(uint mode, int count, uint type, nint indices, int primcount, int basevertex) Parameters mode uint count int type uint indices nint primcount int basevertex int glDrawElementsInstancedEXT(uint, int, uint, nint, int) public static extern void glDrawElementsInstancedEXT(uint mode, int count, uint type, nint indices, int primcount) Parameters mode uint count int type uint indices nint primcount int glDrawMeshArraysSUN(uint, int, int, int) public static extern void glDrawMeshArraysSUN(uint mode, int first, int count, int width) Parameters mode uint first int count int width int glDrawPixels(int, int, uint, uint, nint) public static extern void glDrawPixels(int width, int height, uint format, uint type, nint pixels) Parameters width int height int format uint type uint pixels nint glDrawRangeElementArrayAPPLE(uint, uint, uint, int, int) public static extern void glDrawRangeElementArrayAPPLE(uint mode, uint start, uint end, int first, int count) Parameters mode uint start uint end uint first int count int glDrawRangeElementArrayATI(uint, uint, uint, int) public static extern void glDrawRangeElementArrayATI(uint mode, uint start, uint end, int count) Parameters mode uint start uint end uint count int glDrawRangeElements(uint, uint, uint, int, uint, nint) public static extern void glDrawRangeElements(uint mode, uint start, uint end, int count, uint type, nint indices) Parameters mode uint start uint end uint count int type uint indices nint glDrawRangeElementsBaseVertex(uint, uint, uint, int, uint, nint, int) public static extern void glDrawRangeElementsBaseVertex(uint mode, uint start, uint end, int count, uint type, nint indices, int basevertex) Parameters mode uint start uint end uint count int type uint indices nint basevertex int glDrawRangeElementsEXT(uint, uint, uint, int, uint, nint) public static extern void glDrawRangeElementsEXT(uint mode, uint start, uint end, int count, uint type, nint indices) Parameters mode uint start uint end uint count int type uint indices nint glDrawTransformFeedback(uint, uint) public static extern void glDrawTransformFeedback(uint mode, uint id) Parameters mode uint id uint glDrawTransformFeedbackNV(uint, uint) public static extern void glDrawTransformFeedbackNV(uint mode, uint id) Parameters mode uint id uint glDrawTransformFeedbackStream(uint, uint, uint) public static extern void glDrawTransformFeedbackStream(uint mode, uint id, uint stream) Parameters mode uint id uint stream uint glEdgeFlag(bool) public static extern void glEdgeFlag(bool flag) Parameters flag bool glEdgeFlagFormatNV(int) public static extern void glEdgeFlagFormatNV(int stride) Parameters stride int glEdgeFlagPointer(int, nint) public static extern void glEdgeFlagPointer(int stride, nint pointer) Parameters stride int pointer nint glEdgeFlagPointerEXT(int, int, bool*) public static extern void glEdgeFlagPointerEXT(int stride, int count, bool* pointer) Parameters stride int count int pointer bool* glEdgeFlagPointerListIBM(int, bool*, int) public static extern void glEdgeFlagPointerListIBM(int stride, bool* pointer, int ptrstride) Parameters stride int pointer bool* ptrstride int glEdgeFlagv(bool*) public static extern void glEdgeFlagv(bool* flag) Parameters flag bool* glElementPointerAPPLE(uint, nint) public static extern void glElementPointerAPPLE(uint type, nint pointer) Parameters type uint pointer nint glElementPointerATI(uint, nint) public static extern void glElementPointerATI(uint type, nint pointer) Parameters type uint pointer nint glEnable(uint) public static extern void glEnable(uint cap) Parameters cap uint glEnableClientState(uint) public static extern void glEnableClientState(uint array) Parameters array uint glEnableClientStateIndexedEXT(uint, uint) public static extern void glEnableClientStateIndexedEXT(uint array, uint index) Parameters array uint index uint glEnableIndexedEXT(uint, uint) public static extern void glEnableIndexedEXT(uint target, uint index) Parameters target uint index uint glEnableVariantClientStateEXT(uint) public static extern void glEnableVariantClientStateEXT(uint id) Parameters id uint glEnableVertexAttribAPPLE(uint, uint) public static extern void glEnableVertexAttribAPPLE(uint index, uint pname) Parameters index uint pname uint glEnableVertexAttribArray(uint) public static extern void glEnableVertexAttribArray(uint index) Parameters index uint glEnableVertexAttribArrayARB(uint) public static extern void glEnableVertexAttribArrayARB(uint index) Parameters index uint glEnablei(uint, uint) public static extern void glEnablei(uint target, uint index) Parameters target uint index uint glEnd() public static extern void glEnd() glEndConditionalRender() public static extern void glEndConditionalRender() glEndConditionalRenderNV() public static extern void glEndConditionalRenderNV() glEndFragmentShaderATI() public static extern void glEndFragmentShaderATI() glEndList() public static extern void glEndList() glEndOcclusionQueryNV() public static extern void glEndOcclusionQueryNV() glEndPerfMonitorAMD(uint) public static extern void glEndPerfMonitorAMD(uint monitor) Parameters monitor uint glEndQuery(uint) public static extern void glEndQuery(uint target) Parameters target uint glEndQueryARB(uint) public static extern void glEndQueryARB(uint target) Parameters target uint glEndQueryIndexed(uint, uint) public static extern void glEndQueryIndexed(uint target, uint index) Parameters target uint index uint glEndTransformFeedback() public static extern void glEndTransformFeedback() glEndTransformFeedbackEXT() public static extern void glEndTransformFeedbackEXT() glEndTransformFeedbackNV() public static extern void glEndTransformFeedbackNV() glEndVertexShaderEXT() public static extern void glEndVertexShaderEXT() glEndVideoCaptureNV(uint) public static extern void glEndVideoCaptureNV(uint video_capture_slot) Parameters video_capture_slot uint glEvalCoord1d(double) public static extern void glEvalCoord1d(double u) Parameters u double glEvalCoord1dv(double*) public static extern void glEvalCoord1dv(double* u) Parameters u double* glEvalCoord1f(float) public static extern void glEvalCoord1f(float u) Parameters u float glEvalCoord1fv(float*) public static extern void glEvalCoord1fv(float* u) Parameters u float* glEvalCoord2d(double, double) public static extern void glEvalCoord2d(double u, double v) Parameters u double v double glEvalCoord2dv(double*) public static extern void glEvalCoord2dv(double* u) Parameters u double* glEvalCoord2f(float, float) public static extern void glEvalCoord2f(float u, float v) Parameters u float v float glEvalCoord2fv(float*) public static extern void glEvalCoord2fv(float* u) Parameters u float* glEvalMapsNV(uint, uint) public static extern void glEvalMapsNV(uint target, uint mode) Parameters target uint mode uint glEvalMesh1(uint, int, int) public static extern void glEvalMesh1(uint mode, int i1, int i2) Parameters mode uint i1 int i2 int glEvalMesh2(uint, int, int, int, int) public static extern void glEvalMesh2(uint mode, int i1, int i2, int j1, int j2) Parameters mode uint i1 int i2 int j1 int j2 int glEvalPoint1(int) public static extern void glEvalPoint1(int i) Parameters i int glEvalPoint2(int, int) public static extern void glEvalPoint2(int i, int j) Parameters i int j int glExecuteProgramNV(uint, uint, float*) public static extern void glExecuteProgramNV(uint target, uint id, float* @params) Parameters target uint id uint params float* glExtractComponentEXT(uint, uint, uint) public static extern void glExtractComponentEXT(uint res, uint src, uint num) Parameters res uint src uint num uint glFeedbackBuffer(int, uint, float*) public static extern void glFeedbackBuffer(int size, uint type, float* buffer) Parameters size int type uint buffer float* glFinalCombinerInputNV(uint, uint, uint, uint) public static extern void glFinalCombinerInputNV(uint variable, uint input, uint mapping, uint componentUsage) Parameters variable uint input uint mapping uint componentUsage uint glFinish() public static extern void glFinish() glFinishAsyncSGIX(uint*) public static extern int glFinishAsyncSGIX(uint* markerp) Parameters markerp uint* Returns int glFinishFenceAPPLE(uint) public static extern void glFinishFenceAPPLE(uint fence) Parameters fence uint glFinishFenceNV(uint) public static extern void glFinishFenceNV(uint fence) Parameters fence uint glFinishObjectAPPLE(uint, int) public static extern void glFinishObjectAPPLE(uint @object, int name) Parameters object uint name int glFinishTextureSUNX() public static extern void glFinishTextureSUNX() glFlush() public static extern void glFlush() glFlushMappedBufferRange(uint, nint, nint) public static extern void glFlushMappedBufferRange(uint target, nint offset, nint length) Parameters target uint offset nint length nint glFlushMappedBufferRangeAPPLE(uint, nint, nint) public static extern void glFlushMappedBufferRangeAPPLE(uint target, nint offset, nint size) Parameters target uint offset nint size nint glFlushMappedNamedBufferRangeEXT(uint, nint, nint) public static extern void glFlushMappedNamedBufferRangeEXT(uint buffer, nint offset, nint length) Parameters buffer uint offset nint length nint glFlushPixelDataRangeNV(uint) public static extern void glFlushPixelDataRangeNV(uint target) Parameters target uint glFlushRasterSGIX() public static extern void glFlushRasterSGIX() glFlushVertexArrayRangeAPPLE(int, nint) public static extern void glFlushVertexArrayRangeAPPLE(int length, nint pointer) Parameters length int pointer nint glFlushVertexArrayRangeNV() public static extern void glFlushVertexArrayRangeNV() glFogCoordFormatNV(uint, int) public static extern void glFogCoordFormatNV(uint type, int stride) Parameters type uint stride int glFogCoordPointer(uint, int, nint) public static extern void glFogCoordPointer(uint type, int stride, nint pointer) Parameters type uint stride int pointer nint glFogCoordPointerEXT(uint, int, nint) public static extern void glFogCoordPointerEXT(uint type, int stride, nint pointer) Parameters type uint stride int pointer nint glFogCoordPointerListIBM(uint, int, nint, int) public static extern void glFogCoordPointerListIBM(uint type, int stride, nint pointer, int ptrstride) Parameters type uint stride int pointer nint ptrstride int glFogCoordd(double) public static extern void glFogCoordd(double coord) Parameters coord double glFogCoorddEXT(double) public static extern void glFogCoorddEXT(double coord) Parameters coord double glFogCoorddv(double*) public static extern void glFogCoorddv(double* coord) Parameters coord double* glFogCoorddvEXT(double*) public static extern void glFogCoorddvEXT(double* coord) Parameters coord double* glFogCoordf(float) public static extern void glFogCoordf(float coord) Parameters coord float glFogCoordfEXT(float) public static extern void glFogCoordfEXT(float coord) Parameters coord float glFogCoordfv(float*) public static extern void glFogCoordfv(float* coord) Parameters coord float* glFogCoordfvEXT(float*) public static extern void glFogCoordfvEXT(float* coord) Parameters coord float* glFogCoordhNV(ushort) public static extern void glFogCoordhNV(ushort fog) Parameters fog ushort glFogCoordhvNV(ushort*) public static extern void glFogCoordhvNV(ushort* fog) Parameters fog ushort* glFogFuncSGIS(int, float*) public static extern void glFogFuncSGIS(int n, float* points) Parameters n int points float* glFogf(uint, float) public static extern void glFogf(uint pname, float param) Parameters pname uint param float glFogfv(uint, float*) public static extern void glFogfv(uint pname, float* @params) Parameters pname uint params float* glFogi(uint, int) public static extern void glFogi(uint pname, int param) Parameters pname uint param int glFogiv(uint, int*) public static extern void glFogiv(uint pname, int* @params) Parameters pname uint params int* glFragmentColorMaterialSGIX(uint, uint) public static extern void glFragmentColorMaterialSGIX(uint face, uint mode) Parameters face uint mode uint glFragmentLightModelfSGIX(uint, float) public static extern void glFragmentLightModelfSGIX(uint pname, float param) Parameters pname uint param float glFragmentLightModelfvSGIX(uint, float*) public static extern void glFragmentLightModelfvSGIX(uint pname, float* @params) Parameters pname uint params float* glFragmentLightModeliSGIX(uint, int) public static extern void glFragmentLightModeliSGIX(uint pname, int param) Parameters pname uint param int glFragmentLightModelivSGIX(uint, int*) public static extern void glFragmentLightModelivSGIX(uint pname, int* @params) Parameters pname uint params int* glFragmentLightfSGIX(uint, uint, float) public static extern void glFragmentLightfSGIX(uint light, uint pname, float param) Parameters light uint pname uint param float glFragmentLightfvSGIX(uint, uint, float*) public static extern void glFragmentLightfvSGIX(uint light, uint pname, float* @params) Parameters light uint pname uint params float* glFragmentLightiSGIX(uint, uint, int) public static extern void glFragmentLightiSGIX(uint light, uint pname, int param) Parameters light uint pname uint param int glFragmentLightivSGIX(uint, uint, int*) public static extern void glFragmentLightivSGIX(uint light, uint pname, int* @params) Parameters light uint pname uint params int* glFragmentMaterialfSGIX(uint, uint, float) public static extern void glFragmentMaterialfSGIX(uint face, uint pname, float param) Parameters face uint pname uint param float glFragmentMaterialfvSGIX(uint, uint, float*) public static extern void glFragmentMaterialfvSGIX(uint face, uint pname, float* @params) Parameters face uint pname uint params float* glFragmentMaterialiSGIX(uint, uint, int) public static extern void glFragmentMaterialiSGIX(uint face, uint pname, int param) Parameters face uint pname uint param int glFragmentMaterialivSGIX(uint, uint, int*) public static extern void glFragmentMaterialivSGIX(uint face, uint pname, int* @params) Parameters face uint pname uint params int* glFrameTerminatorGREMEDY() public static extern void glFrameTerminatorGREMEDY() glFrameZoomSGIX(int) public static extern void glFrameZoomSGIX(int factor) Parameters factor int glFramebufferDrawBufferEXT(uint, uint) public static extern void glFramebufferDrawBufferEXT(uint framebuffer, uint mode) Parameters framebuffer uint mode uint glFramebufferDrawBuffersEXT(uint, int, uint*) public static extern void glFramebufferDrawBuffersEXT(uint framebuffer, int n, uint* bufs) Parameters framebuffer uint n int bufs uint* glFramebufferReadBufferEXT(uint, uint) public static extern void glFramebufferReadBufferEXT(uint framebuffer, uint mode) Parameters framebuffer uint mode uint glFramebufferRenderbuffer(uint, uint, uint, uint) public static extern void glFramebufferRenderbuffer(uint target, uint attachment, uint renderbuffertarget, uint renderbuffer) Parameters target uint attachment uint renderbuffertarget uint renderbuffer uint glFramebufferRenderbufferEXT(uint, uint, uint, uint) public static extern void glFramebufferRenderbufferEXT(uint target, uint attachment, uint renderbuffertarget, uint renderbuffer) Parameters target uint attachment uint renderbuffertarget uint renderbuffer uint glFramebufferTexture(uint, uint, uint, int) public static extern void glFramebufferTexture(uint target, uint attachment, uint texture, int level) Parameters target uint attachment uint texture uint level int glFramebufferTexture1D(uint, uint, uint, uint, int) public static extern void glFramebufferTexture1D(uint target, uint attachment, uint textarget, uint texture, int level) Parameters target uint attachment uint textarget uint texture uint level int glFramebufferTexture1DEXT(uint, uint, uint, uint, int) public static extern void glFramebufferTexture1DEXT(uint target, uint attachment, uint textarget, uint texture, int level) Parameters target uint attachment uint textarget uint texture uint level int glFramebufferTexture2D(uint, uint, uint, uint, int) public static extern void glFramebufferTexture2D(uint target, uint attachment, uint textarget, uint texture, int level) Parameters target uint attachment uint textarget uint texture uint level int glFramebufferTexture2DEXT(uint, uint, uint, uint, int) public static extern void glFramebufferTexture2DEXT(uint target, uint attachment, uint textarget, uint texture, int level) Parameters target uint attachment uint textarget uint texture uint level int glFramebufferTexture3D(uint, uint, uint, uint, int, int) public static extern void glFramebufferTexture3D(uint target, uint attachment, uint textarget, uint texture, int level, int zoffset) Parameters target uint attachment uint textarget uint texture uint level int zoffset int glFramebufferTexture3DEXT(uint, uint, uint, uint, int, int) public static extern void glFramebufferTexture3DEXT(uint target, uint attachment, uint textarget, uint texture, int level, int zoffset) Parameters target uint attachment uint textarget uint texture uint level int zoffset int glFramebufferTextureARB(uint, uint, uint, int) public static extern void glFramebufferTextureARB(uint target, uint attachment, uint texture, int level) Parameters target uint attachment uint texture uint level int glFramebufferTextureEXT(uint, uint, uint, int) public static extern void glFramebufferTextureEXT(uint target, uint attachment, uint texture, int level) Parameters target uint attachment uint texture uint level int glFramebufferTextureFaceARB(uint, uint, uint, int, uint) public static extern void glFramebufferTextureFaceARB(uint target, uint attachment, uint texture, int level, uint face) Parameters target uint attachment uint texture uint level int face uint glFramebufferTextureFaceEXT(uint, uint, uint, int, uint) public static extern void glFramebufferTextureFaceEXT(uint target, uint attachment, uint texture, int level, uint face) Parameters target uint attachment uint texture uint level int face uint glFramebufferTextureLayer(uint, uint, uint, int, int) public static extern void glFramebufferTextureLayer(uint target, uint attachment, uint texture, int level, int layer) Parameters target uint attachment uint texture uint level int layer int glFramebufferTextureLayerARB(uint, uint, uint, int, int) public static extern void glFramebufferTextureLayerARB(uint target, uint attachment, uint texture, int level, int layer) Parameters target uint attachment uint texture uint level int layer int glFramebufferTextureLayerEXT(uint, uint, uint, int, int) public static extern void glFramebufferTextureLayerEXT(uint target, uint attachment, uint texture, int level, int layer) Parameters target uint attachment uint texture uint level int layer int glFreeObjectBufferATI(uint) public static extern void glFreeObjectBufferATI(uint buffer) Parameters buffer uint glFrontFace(uint) public static extern void glFrontFace(uint mode) Parameters mode uint glFrustum(double, double, double, double, double, double) public static extern void glFrustum(double left, double right, double bottom, double top, double zNear, double zFar) Parameters left double right double bottom double top double zNear double zFar double glGenAsyncMarkersSGIX(int) public static extern int glGenAsyncMarkersSGIX(int range) Parameters range int Returns int glGenBuffers(int, uint*) public static extern void glGenBuffers(int n, uint* buffers) Parameters n int buffers uint* glGenBuffersARB(int, uint*) public static extern void glGenBuffersARB(int n, uint* buffers) Parameters n int buffers uint* glGenFencesAPPLE(int, uint*) public static extern void glGenFencesAPPLE(int n, uint* fences) Parameters n int fences uint* glGenFencesNV(int, uint*) public static extern void glGenFencesNV(int n, uint* fences) Parameters n int fences uint* glGenFragmentShadersATI(uint) public static extern int glGenFragmentShadersATI(uint range) Parameters range uint Returns int glGenFramebuffers(int, uint*) public static extern void glGenFramebuffers(int n, uint* framebuffers) Parameters n int framebuffers uint* glGenFramebuffersEXT(int, uint*) public static extern void glGenFramebuffersEXT(int n, uint* framebuffers) Parameters n int framebuffers uint* glGenLists(int) public static extern int glGenLists(int range) Parameters range int Returns int glGenNamesAMD(uint, uint, uint*) public static extern void glGenNamesAMD(uint identifier, uint num, uint* names) Parameters identifier uint num uint names uint* glGenOcclusionQueriesNV(int, uint*) public static extern void glGenOcclusionQueriesNV(int n, uint* ids) Parameters n int ids uint* glGenPerfMonitorsAMD(int, uint*) public static extern void glGenPerfMonitorsAMD(int n, uint* monitors) Parameters n int monitors uint* glGenProgramPipelines(int, uint*) public static extern void glGenProgramPipelines(int n, uint* pipelines) Parameters n int pipelines uint* glGenProgramsARB(int, uint*) public static extern void glGenProgramsARB(int n, uint* programs) Parameters n int programs uint* glGenProgramsNV(int, uint*) public static extern void glGenProgramsNV(int n, uint* programs) Parameters n int programs uint* glGenQueries(int, uint*) public static extern void glGenQueries(int n, uint* ids) Parameters n int ids uint* glGenQueriesARB(int, uint*) public static extern void glGenQueriesARB(int n, uint* ids) Parameters n int ids uint* glGenRenderbuffers(int, uint*) public static extern void glGenRenderbuffers(int n, uint* renderbuffers) Parameters n int renderbuffers uint* glGenRenderbuffersEXT(int, uint*) public static extern void glGenRenderbuffersEXT(int n, uint* renderbuffers) Parameters n int renderbuffers uint* glGenSamplers(int, uint*) public static extern void glGenSamplers(int count, uint* samplers) Parameters count int samplers uint* glGenSymbolsEXT(uint, uint, uint, uint) public static extern int glGenSymbolsEXT(uint datatype, uint storagetype, uint range, uint components) Parameters datatype uint storagetype uint range uint components uint Returns int glGenTextures(int, uint*) public static extern void glGenTextures(int n, uint* textures) Parameters n int textures uint* glGenTexturesEXT(int, uint*) public static extern void glGenTexturesEXT(int n, uint* textures) Parameters n int textures uint* glGenTransformFeedbacks(int, uint*) public static extern void glGenTransformFeedbacks(int n, uint* ids) Parameters n int ids uint* glGenTransformFeedbacksNV(int, uint*) public static extern void glGenTransformFeedbacksNV(int n, uint* ids) Parameters n int ids uint* glGenVertexArrays(int, uint*) public static extern void glGenVertexArrays(int n, uint* arrays) Parameters n int arrays uint* glGenVertexArraysAPPLE(int, uint*) public static extern void glGenVertexArraysAPPLE(int n, uint* arrays) Parameters n int arrays uint* glGenVertexShadersEXT(uint) public static extern int glGenVertexShadersEXT(uint range) Parameters range uint Returns int glGenerateMipmap(uint) public static extern void glGenerateMipmap(uint target) Parameters target uint glGenerateMipmapEXT(uint) public static extern void glGenerateMipmapEXT(uint target) Parameters target uint glGenerateMultiTexMipmapEXT(uint, uint) public static extern void glGenerateMultiTexMipmapEXT(uint texunit, uint target) Parameters texunit uint target uint glGenerateTextureMipmapEXT(uint, uint) public static extern void glGenerateTextureMipmapEXT(uint texture, uint target) Parameters texture uint target uint glGetActiveAttrib(uint, uint, int, int*, int*, uint*, StringBuilder) public static extern void glGetActiveAttrib(uint program, uint index, int bufSize, int* length, int* size, uint* type, StringBuilder name) Parameters program uint index uint bufSize int length int* size int* type uint* name StringBuilder glGetActiveAttribARB(uint, uint, int, int*, int*, uint*, StringBuilder) public static extern void glGetActiveAttribARB(uint programObj, uint index, int maxLength, int* length, int* size, uint* type, StringBuilder name) Parameters programObj uint index uint maxLength int length int* size int* type uint* name StringBuilder glGetActiveSubroutineName(uint, uint, uint, int, int*, StringBuilder) public static extern void glGetActiveSubroutineName(uint program, uint shadertype, uint index, int bufsize, int* length, StringBuilder name) Parameters program uint shadertype uint index uint bufsize int length int* name StringBuilder glGetActiveSubroutineUniformName(uint, uint, uint, int, int*, StringBuilder) public static extern void glGetActiveSubroutineUniformName(uint program, uint shadertype, uint index, int bufsize, int* length, StringBuilder name) Parameters program uint shadertype uint index uint bufsize int length int* name StringBuilder glGetActiveSubroutineUniformiv(uint, uint, uint, uint, int*) public static extern void glGetActiveSubroutineUniformiv(uint program, uint shadertype, uint index, uint pname, int* values) Parameters program uint shadertype uint index uint pname uint values int* glGetActiveUniform(uint, uint, int, int*, int*, uint*, StringBuilder) public static extern void glGetActiveUniform(uint program, uint index, int bufSize, int* length, int* size, uint* type, StringBuilder name) Parameters program uint index uint bufSize int length int* size int* type uint* name StringBuilder glGetActiveUniformARB(uint, uint, int, int*, int*, uint*, StringBuilder) public static extern void glGetActiveUniformARB(uint programObj, uint index, int maxLength, int* length, int* size, uint* type, StringBuilder name) Parameters programObj uint index uint maxLength int length int* size int* type uint* name StringBuilder glGetActiveUniformBlockName(uint, uint, int, int*, StringBuilder) public static extern void glGetActiveUniformBlockName(uint program, uint uniformBlockIndex, int bufSize, int* length, StringBuilder uniformBlockName) Parameters program uint uniformBlockIndex uint bufSize int length int* uniformBlockName StringBuilder glGetActiveUniformBlockiv(uint, uint, uint, int*) public static extern void glGetActiveUniformBlockiv(uint program, uint uniformBlockIndex, uint pname, int* @params) Parameters program uint uniformBlockIndex uint pname uint params int* glGetActiveUniformName(uint, uint, int, int*, StringBuilder) public static extern void glGetActiveUniformName(uint program, uint uniformIndex, int bufSize, int* length, StringBuilder uniformName) Parameters program uint uniformIndex uint bufSize int length int* uniformName StringBuilder glGetActiveUniformsiv(uint, int, uint*, uint, int*) public static extern void glGetActiveUniformsiv(uint program, int uniformCount, uint* uniformIndices, uint pname, int* @params) Parameters program uint uniformCount int uniformIndices uint* pname uint params int* glGetActiveVaryingNV(uint, uint, int, int*, int*, uint*, StringBuilder) public static extern void glGetActiveVaryingNV(uint program, uint index, int bufSize, int* length, int* size, uint* type, StringBuilder name) Parameters program uint index uint bufSize int length int* size int* type uint* name StringBuilder glGetArrayObjectfvATI(uint, uint, float*) public static extern void glGetArrayObjectfvATI(uint array, uint pname, float* @params) Parameters array uint pname uint params float* glGetArrayObjectivATI(uint, uint, int*) public static extern void glGetArrayObjectivATI(uint array, uint pname, int* @params) Parameters array uint pname uint params int* glGetAttachedObjectsARB(uint, int, int*, uint*) public static extern void glGetAttachedObjectsARB(uint containerObj, int maxCount, int* count, uint* obj) Parameters containerObj uint maxCount int count int* obj uint* glGetAttachedShaders(uint, int, int*, uint*) public static extern void glGetAttachedShaders(uint program, int maxCount, int* count, uint* obj) Parameters program uint maxCount int count int* obj uint* glGetAttribLocation(uint, string) public static extern int glGetAttribLocation(uint program, string name) Parameters program uint name string Returns int glGetAttribLocationARB(uint, string) public static extern int glGetAttribLocationARB(uint programObj, string name) Parameters programObj uint name string Returns int glGetBooleanIndexedvEXT(uint, uint, bool*) public static extern void glGetBooleanIndexedvEXT(uint target, uint index, bool* data) Parameters target uint index uint data bool* glGetBooleani_v(uint, uint, bool*) public static extern void glGetBooleani_v(uint target, uint index, bool* data) Parameters target uint index uint data bool* glGetBooleanv(uint, bool*) public static extern void glGetBooleanv(uint pname, bool* @params) Parameters pname uint params bool* glGetBufferParameteri64v(uint, uint, long*) public static extern void glGetBufferParameteri64v(uint target, uint pname, long* @params) Parameters target uint pname uint params long* glGetBufferParameteriv(uint, uint, int*) public static extern void glGetBufferParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetBufferParameterivARB(uint, uint, int*) public static extern void glGetBufferParameterivARB(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetBufferParameterui64vNV(uint, uint, ulong*) public static extern void glGetBufferParameterui64vNV(uint target, uint pname, ulong* @params) Parameters target uint pname uint params ulong* glGetBufferPointerv(uint, uint, nint) public static extern void glGetBufferPointerv(uint target, uint pname, nint @params) Parameters target uint pname uint params nint glGetBufferPointervARB(uint, uint, nint) public static extern void glGetBufferPointervARB(uint target, uint pname, nint @params) Parameters target uint pname uint params nint glGetBufferSubData(uint, nint, nint, nint) public static extern void glGetBufferSubData(uint target, nint offset, nint size, nint data) Parameters target uint offset nint size nint data nint glGetBufferSubDataARB(uint, nint, nint, nint) public static extern void glGetBufferSubDataARB(uint target, nint offset, nint size, nint data) Parameters target uint offset nint size nint data nint glGetClipPlane(uint, double*) public static extern void glGetClipPlane(uint plane, double* equation) Parameters plane uint equation double* glGetColorTable(uint, uint, uint, nint) public static extern void glGetColorTable(uint target, uint format, uint type, nint table) Parameters target uint format uint type uint table nint glGetColorTableEXT(uint, uint, uint, nint) public static extern void glGetColorTableEXT(uint target, uint format, uint type, nint data) Parameters target uint format uint type uint data nint glGetColorTableParameterfv(uint, uint, float*) public static extern void glGetColorTableParameterfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetColorTableParameterfvEXT(uint, uint, float*) public static extern void glGetColorTableParameterfvEXT(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetColorTableParameterfvSGI(uint, uint, float*) public static extern void glGetColorTableParameterfvSGI(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetColorTableParameteriv(uint, uint, int*) public static extern void glGetColorTableParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetColorTableParameterivEXT(uint, uint, int*) public static extern void glGetColorTableParameterivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetColorTableParameterivSGI(uint, uint, int*) public static extern void glGetColorTableParameterivSGI(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetColorTableSGI(uint, uint, uint, nint) public static extern void glGetColorTableSGI(uint target, uint format, uint type, nint table) Parameters target uint format uint type uint table nint glGetCombinerInputParameterfvNV(uint, uint, uint, uint, float*) public static extern void glGetCombinerInputParameterfvNV(uint stage, uint portion, uint variable, uint pname, float* @params) Parameters stage uint portion uint variable uint pname uint params float* glGetCombinerInputParameterivNV(uint, uint, uint, uint, int*) public static extern void glGetCombinerInputParameterivNV(uint stage, uint portion, uint variable, uint pname, int* @params) Parameters stage uint portion uint variable uint pname uint params int* glGetCombinerOutputParameterfvNV(uint, uint, uint, float*) public static extern void glGetCombinerOutputParameterfvNV(uint stage, uint portion, uint pname, float* @params) Parameters stage uint portion uint pname uint params float* glGetCombinerOutputParameterivNV(uint, uint, uint, int*) public static extern void glGetCombinerOutputParameterivNV(uint stage, uint portion, uint pname, int* @params) Parameters stage uint portion uint pname uint params int* glGetCombinerStageParameterfvNV(uint, uint, float*) public static extern void glGetCombinerStageParameterfvNV(uint stage, uint pname, float* @params) Parameters stage uint pname uint params float* glGetCompressedMultiTexImageEXT(uint, uint, int, nint) public static extern void glGetCompressedMultiTexImageEXT(uint texunit, uint target, int lod, nint img) Parameters texunit uint target uint lod int img nint glGetCompressedTexImage(uint, int, nint) public static extern void glGetCompressedTexImage(uint target, int level, nint img) Parameters target uint level int img nint glGetCompressedTexImageARB(uint, int, nint) public static extern void glGetCompressedTexImageARB(uint target, int level, nint img) Parameters target uint level int img nint glGetCompressedTextureImageEXT(uint, uint, int, nint) public static extern void glGetCompressedTextureImageEXT(uint texture, uint target, int lod, nint img) Parameters texture uint target uint lod int img nint glGetConvolutionFilter(uint, uint, uint, nint) public static extern void glGetConvolutionFilter(uint target, uint format, uint type, nint image) Parameters target uint format uint type uint image nint glGetConvolutionFilterEXT(uint, uint, uint, nint) public static extern void glGetConvolutionFilterEXT(uint target, uint format, uint type, nint image) Parameters target uint format uint type uint image nint glGetConvolutionParameterfv(uint, uint, float*) public static extern void glGetConvolutionParameterfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetConvolutionParameterfvEXT(uint, uint, float*) public static extern void glGetConvolutionParameterfvEXT(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetConvolutionParameteriv(uint, uint, int*) public static extern void glGetConvolutionParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetConvolutionParameterivEXT(uint, uint, int*) public static extern void glGetConvolutionParameterivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetDebugMessageLogAMD(uint, int, uint*, uint*, uint*, int*, StringBuilder) public static extern int glGetDebugMessageLogAMD(uint count, int bufsize, uint* categories, uint* severities, uint* ids, int* lengths, StringBuilder message) Parameters count uint bufsize int categories uint* severities uint* ids uint* lengths int* message StringBuilder Returns int glGetDebugMessageLogARB(uint, int, uint*, uint*, uint*, uint*, int*, StringBuilder) public static extern int glGetDebugMessageLogARB(uint count, int bufsize, uint* sources, uint* types, uint* ids, uint* severities, int* lengths, StringBuilder messageLog) Parameters count uint bufsize int sources uint* types uint* ids uint* severities uint* lengths int* messageLog StringBuilder Returns int glGetDetailTexFuncSGIS(uint, float*) public static extern void glGetDetailTexFuncSGIS(uint target, float* points) Parameters target uint points float* glGetError() public static extern uint glGetError() Returns uint glGetFenceivNV(uint, uint, int*) public static extern void glGetFenceivNV(uint fence, uint pname, int* @params) Parameters fence uint pname uint params int* glGetFinalCombinerInputParameterfvNV(uint, uint, float*) public static extern void glGetFinalCombinerInputParameterfvNV(uint variable, uint pname, float* @params) Parameters variable uint pname uint params float* glGetFinalCombinerInputParameterivNV(uint, uint, int*) public static extern void glGetFinalCombinerInputParameterivNV(uint variable, uint pname, int* @params) Parameters variable uint pname uint params int* glGetFloatIndexedvEXT(uint, uint, float*) public static extern void glGetFloatIndexedvEXT(uint target, uint index, float* data) Parameters target uint index uint data float* glGetFloati_v(uint, uint, float*) public static extern void glGetFloati_v(uint target, uint index, float* data) Parameters target uint index uint data float* glGetFloatv(uint, float*) public static extern void glGetFloatv(uint pname, float* @params) Parameters pname uint params float* glGetFogFuncSGIS(float*) public static extern void glGetFogFuncSGIS(float* points) Parameters points float* glGetFragDataIndex(uint, string) public static extern int glGetFragDataIndex(uint program, string name) Parameters program uint name string Returns int glGetFragDataLocation(uint, string) public static extern int glGetFragDataLocation(uint program, string name) Parameters program uint name string Returns int glGetFragDataLocationEXT(uint, string) public static extern int glGetFragDataLocationEXT(uint program, string name) Parameters program uint name string Returns int glGetFragmentLightfvSGIX(uint, uint, float*) public static extern void glGetFragmentLightfvSGIX(uint light, uint pname, float* @params) Parameters light uint pname uint params float* glGetFragmentLightivSGIX(uint, uint, int*) public static extern void glGetFragmentLightivSGIX(uint light, uint pname, int* @params) Parameters light uint pname uint params int* glGetFragmentMaterialfvSGIX(uint, uint, float*) public static extern void glGetFragmentMaterialfvSGIX(uint face, uint pname, float* @params) Parameters face uint pname uint params float* glGetFragmentMaterialivSGIX(uint, uint, int*) public static extern void glGetFragmentMaterialivSGIX(uint face, uint pname, int* @params) Parameters face uint pname uint params int* glGetFramebufferAttachmentParameteriv(uint, uint, uint, int*) public static extern void glGetFramebufferAttachmentParameteriv(uint target, uint attachment, uint pname, int* @params) Parameters target uint attachment uint pname uint params int* glGetFramebufferAttachmentParameterivEXT(uint, uint, uint, int*) public static extern void glGetFramebufferAttachmentParameterivEXT(uint target, uint attachment, uint pname, int* @params) Parameters target uint attachment uint pname uint params int* glGetFramebufferParameterivEXT(uint, uint, int*) public static extern void glGetFramebufferParameterivEXT(uint framebuffer, uint pname, int* @params) Parameters framebuffer uint pname uint params int* glGetGraphicsResetStatusARB() public static extern uint glGetGraphicsResetStatusARB() Returns uint glGetHandleARB(uint) public static extern int glGetHandleARB(uint pname) Parameters pname uint Returns int glGetHistogram(uint, bool, uint, uint, nint) public static extern void glGetHistogram(uint target, bool reset, uint format, uint type, nint values) Parameters target uint reset bool format uint type uint values nint glGetHistogramEXT(uint, bool, uint, uint, nint) public static extern void glGetHistogramEXT(uint target, bool reset, uint format, uint type, nint values) Parameters target uint reset bool format uint type uint values nint glGetHistogramParameterfv(uint, uint, float*) public static extern void glGetHistogramParameterfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetHistogramParameterfvEXT(uint, uint, float*) public static extern void glGetHistogramParameterfvEXT(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetHistogramParameteriv(uint, uint, int*) public static extern void glGetHistogramParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetHistogramParameterivEXT(uint, uint, int*) public static extern void glGetHistogramParameterivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetImageTransformParameterfvHP(uint, uint, float*) public static extern void glGetImageTransformParameterfvHP(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetImageTransformParameterivHP(uint, uint, int*) public static extern void glGetImageTransformParameterivHP(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetInfoLogARB(uint, int, int*, StringBuilder) public static extern void glGetInfoLogARB(uint obj, int maxLength, int* length, StringBuilder infoLog) Parameters obj uint maxLength int length int* infoLog StringBuilder glGetInstrumentsSGIX() public static extern int glGetInstrumentsSGIX() Returns int glGetInteger64i_v(uint, uint, long*) public static extern void glGetInteger64i_v(uint target, uint index, long* data) Parameters target uint index uint data long* glGetInteger64v(uint, long*) public static extern void glGetInteger64v(uint pname, long* @params) Parameters pname uint params long* glGetIntegerIndexedvEXT(uint, uint, int*) public static extern void glGetIntegerIndexedvEXT(uint target, uint index, int* data) Parameters target uint index uint data int* glGetIntegeri_v(uint, uint, int*) public static extern void glGetIntegeri_v(uint target, uint index, int* data) Parameters target uint index uint data int* glGetIntegerui64i_vNV(uint, uint, ulong*) public static extern void glGetIntegerui64i_vNV(uint value, uint index, ulong* result) Parameters value uint index uint result ulong* glGetIntegerui64vNV(uint, ulong*) public static extern void glGetIntegerui64vNV(uint value, ulong* result) Parameters value uint result ulong* glGetIntegerv(uint, int*) public static extern void glGetIntegerv(uint pname, int* @params) Parameters pname uint params int* glGetInvariantBooleanvEXT(uint, uint, bool*) public static extern void glGetInvariantBooleanvEXT(uint id, uint value, bool* data) Parameters id uint value uint data bool* glGetInvariantFloatvEXT(uint, uint, float*) public static extern void glGetInvariantFloatvEXT(uint id, uint value, float* data) Parameters id uint value uint data float* glGetInvariantIntegervEXT(uint, uint, int*) public static extern void glGetInvariantIntegervEXT(uint id, uint value, int* data) Parameters id uint value uint data int* glGetLightfv(uint, uint, float*) public static extern void glGetLightfv(uint light, uint pname, float* @params) Parameters light uint pname uint params float* glGetLightiv(uint, uint, int*) public static extern void glGetLightiv(uint light, uint pname, int* @params) Parameters light uint pname uint params int* glGetListParameterfvSGIX(uint, uint, float*) public static extern void glGetListParameterfvSGIX(uint list, uint pname, float* @params) Parameters list uint pname uint params float* glGetListParameterivSGIX(uint, uint, int*) public static extern void glGetListParameterivSGIX(uint list, uint pname, int* @params) Parameters list uint pname uint params int* glGetLocalConstantBooleanvEXT(uint, uint, bool*) public static extern void glGetLocalConstantBooleanvEXT(uint id, uint value, bool* data) Parameters id uint value uint data bool* glGetLocalConstantFloatvEXT(uint, uint, float*) public static extern void glGetLocalConstantFloatvEXT(uint id, uint value, float* data) Parameters id uint value uint data float* glGetLocalConstantIntegervEXT(uint, uint, int*) public static extern void glGetLocalConstantIntegervEXT(uint id, uint value, int* data) Parameters id uint value uint data int* glGetMapAttribParameterfvNV(uint, uint, uint, float*) public static extern void glGetMapAttribParameterfvNV(uint target, uint index, uint pname, float* @params) Parameters target uint index uint pname uint params float* glGetMapAttribParameterivNV(uint, uint, uint, int*) public static extern void glGetMapAttribParameterivNV(uint target, uint index, uint pname, int* @params) Parameters target uint index uint pname uint params int* glGetMapControlPointsNV(uint, uint, uint, int, int, bool, nint) public static extern void glGetMapControlPointsNV(uint target, uint index, uint type, int ustride, int vstride, bool packed, nint points) Parameters target uint index uint type uint ustride int vstride int packed bool points nint glGetMapParameterfvNV(uint, uint, float*) public static extern void glGetMapParameterfvNV(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetMapParameterivNV(uint, uint, int*) public static extern void glGetMapParameterivNV(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetMapdv(uint, uint, double*) public static extern void glGetMapdv(uint target, uint query, double* v) Parameters target uint query uint v double* glGetMapfv(uint, uint, float*) public static extern void glGetMapfv(uint target, uint query, float* v) Parameters target uint query uint v float* glGetMapiv(uint, uint, int*) public static extern void glGetMapiv(uint target, uint query, int* v) Parameters target uint query uint v int* glGetMaterialfv(uint, uint, float*) public static extern void glGetMaterialfv(uint face, uint pname, float* @params) Parameters face uint pname uint params float* glGetMaterialiv(uint, uint, int*) public static extern void glGetMaterialiv(uint face, uint pname, int* @params) Parameters face uint pname uint params int* glGetMinmax(uint, bool, uint, uint, nint) public static extern void glGetMinmax(uint target, bool reset, uint format, uint type, nint values) Parameters target uint reset bool format uint type uint values nint glGetMinmaxEXT(uint, bool, uint, uint, nint) public static extern void glGetMinmaxEXT(uint target, bool reset, uint format, uint type, nint values) Parameters target uint reset bool format uint type uint values nint glGetMinmaxParameterfv(uint, uint, float*) public static extern void glGetMinmaxParameterfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetMinmaxParameterfvEXT(uint, uint, float*) public static extern void glGetMinmaxParameterfvEXT(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetMinmaxParameteriv(uint, uint, int*) public static extern void glGetMinmaxParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetMinmaxParameterivEXT(uint, uint, int*) public static extern void glGetMinmaxParameterivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetMultiTexEnvfvEXT(uint, uint, uint, float*) public static extern void glGetMultiTexEnvfvEXT(uint texunit, uint target, uint pname, float* @params) Parameters texunit uint target uint pname uint params float* glGetMultiTexEnvivEXT(uint, uint, uint, int*) public static extern void glGetMultiTexEnvivEXT(uint texunit, uint target, uint pname, int* @params) Parameters texunit uint target uint pname uint params int* glGetMultiTexGendvEXT(uint, uint, uint, double*) public static extern void glGetMultiTexGendvEXT(uint texunit, uint coord, uint pname, double* @params) Parameters texunit uint coord uint pname uint params double* glGetMultiTexGenfvEXT(uint, uint, uint, float*) public static extern void glGetMultiTexGenfvEXT(uint texunit, uint coord, uint pname, float* @params) Parameters texunit uint coord uint pname uint params float* glGetMultiTexGenivEXT(uint, uint, uint, int*) public static extern void glGetMultiTexGenivEXT(uint texunit, uint coord, uint pname, int* @params) Parameters texunit uint coord uint pname uint params int* glGetMultiTexImageEXT(uint, uint, int, uint, uint, nint) public static extern void glGetMultiTexImageEXT(uint texunit, uint target, int level, uint format, uint type, nint pixels) Parameters texunit uint target uint level int format uint type uint pixels nint glGetMultiTexLevelParameterfvEXT(uint, uint, int, uint, float*) public static extern void glGetMultiTexLevelParameterfvEXT(uint texunit, uint target, int level, uint pname, float* @params) Parameters texunit uint target uint level int pname uint params float* glGetMultiTexLevelParameterivEXT(uint, uint, int, uint, int*) public static extern void glGetMultiTexLevelParameterivEXT(uint texunit, uint target, int level, uint pname, int* @params) Parameters texunit uint target uint level int pname uint params int* glGetMultiTexParameterIivEXT(uint, uint, uint, int*) public static extern void glGetMultiTexParameterIivEXT(uint texunit, uint target, uint pname, int* @params) Parameters texunit uint target uint pname uint params int* glGetMultiTexParameterIuivEXT(uint, uint, uint, uint*) public static extern void glGetMultiTexParameterIuivEXT(uint texunit, uint target, uint pname, uint* @params) Parameters texunit uint target uint pname uint params uint* glGetMultiTexParameterfvEXT(uint, uint, uint, float*) public static extern void glGetMultiTexParameterfvEXT(uint texunit, uint target, uint pname, float* @params) Parameters texunit uint target uint pname uint params float* glGetMultiTexParameterivEXT(uint, uint, uint, int*) public static extern void glGetMultiTexParameterivEXT(uint texunit, uint target, uint pname, int* @params) Parameters texunit uint target uint pname uint params int* glGetMultisamplefv(uint, uint, float*) public static extern void glGetMultisamplefv(uint pname, uint index, float* val) Parameters pname uint index uint val float* glGetMultisamplefvNV(uint, uint, float*) public static extern void glGetMultisamplefvNV(uint pname, uint index, float* val) Parameters pname uint index uint val float* glGetNamedBufferParameterivEXT(uint, uint, int*) public static extern void glGetNamedBufferParameterivEXT(uint buffer, uint pname, int* @params) Parameters buffer uint pname uint params int* glGetNamedBufferParameterui64vNV(uint, uint, ulong*) public static extern void glGetNamedBufferParameterui64vNV(uint buffer, uint pname, ulong* @params) Parameters buffer uint pname uint params ulong* glGetNamedBufferPointervEXT(uint, uint, nint) public static extern void glGetNamedBufferPointervEXT(uint buffer, uint pname, nint @params) Parameters buffer uint pname uint params nint glGetNamedBufferSubDataEXT(uint, nint, nint, nint) public static extern void glGetNamedBufferSubDataEXT(uint buffer, nint offset, nint size, nint data) Parameters buffer uint offset nint size nint data nint glGetNamedFramebufferAttachmentParameterivEXT(uint, uint, uint, int*) public static extern void glGetNamedFramebufferAttachmentParameterivEXT(uint framebuffer, uint attachment, uint pname, int* @params) Parameters framebuffer uint attachment uint pname uint params int* glGetNamedProgramLocalParameterIivEXT(uint, uint, uint, int*) public static extern void glGetNamedProgramLocalParameterIivEXT(uint program, uint target, uint index, int* @params) Parameters program uint target uint index uint params int* glGetNamedProgramLocalParameterIuivEXT(uint, uint, uint, uint*) public static extern void glGetNamedProgramLocalParameterIuivEXT(uint program, uint target, uint index, uint* @params) Parameters program uint target uint index uint params uint* glGetNamedProgramLocalParameterdvEXT(uint, uint, uint, double*) public static extern void glGetNamedProgramLocalParameterdvEXT(uint program, uint target, uint index, double* @params) Parameters program uint target uint index uint params double* glGetNamedProgramLocalParameterfvEXT(uint, uint, uint, float*) public static extern void glGetNamedProgramLocalParameterfvEXT(uint program, uint target, uint index, float* @params) Parameters program uint target uint index uint params float* glGetNamedProgramStringEXT(uint, uint, uint, nint) public static extern void glGetNamedProgramStringEXT(uint program, uint target, uint pname, nint @string) Parameters program uint target uint pname uint string nint glGetNamedProgramivEXT(uint, uint, uint, int*) public static extern void glGetNamedProgramivEXT(uint program, uint target, uint pname, int* @params) Parameters program uint target uint pname uint params int* glGetNamedRenderbufferParameterivEXT(uint, uint, int*) public static extern void glGetNamedRenderbufferParameterivEXT(uint renderbuffer, uint pname, int* @params) Parameters renderbuffer uint pname uint params int* glGetNamedStringARB(int, string, int, int*, StringBuilder) public static extern void glGetNamedStringARB(int namelen, string name, int bufSize, int* stringlen, StringBuilder @string) Parameters namelen int name string bufSize int stringlen int* string StringBuilder glGetNamedStringivARB(int, string, uint, int*) public static extern void glGetNamedStringivARB(int namelen, string name, uint pname, int* @params) Parameters namelen int name string pname uint params int* glGetObjectBufferfvATI(uint, uint, float*) public static extern void glGetObjectBufferfvATI(uint buffer, uint pname, float* @params) Parameters buffer uint pname uint params float* glGetObjectBufferivATI(uint, uint, int*) public static extern void glGetObjectBufferivATI(uint buffer, uint pname, int* @params) Parameters buffer uint pname uint params int* glGetObjectParameterfvARB(uint, uint, float*) public static extern void glGetObjectParameterfvARB(uint obj, uint pname, float* @params) Parameters obj uint pname uint params float* glGetObjectParameterivAPPLE(uint, uint, uint, int*) public static extern void glGetObjectParameterivAPPLE(uint objectType, uint name, uint pname, int* @params) Parameters objectType uint name uint pname uint params int* glGetObjectParameterivARB(uint, uint, int*) public static extern void glGetObjectParameterivARB(uint obj, uint pname, int* @params) Parameters obj uint pname uint params int* glGetOcclusionQueryivNV(uint, uint, int*) public static extern void glGetOcclusionQueryivNV(uint id, uint pname, int* @params) Parameters id uint pname uint params int* glGetOcclusionQueryuivNV(uint, uint, uint*) public static extern void glGetOcclusionQueryuivNV(uint id, uint pname, uint* @params) Parameters id uint pname uint params uint* glGetPerfMonitorCounterDataAMD(uint, uint, int, uint*, int*) public static extern void glGetPerfMonitorCounterDataAMD(uint monitor, uint pname, int dataSize, uint* data, int* bytesWritten) Parameters monitor uint pname uint dataSize int data uint* bytesWritten int* glGetPerfMonitorCounterInfoAMD(uint, uint, uint, nint) public static extern void glGetPerfMonitorCounterInfoAMD(uint group, uint counter, uint pname, nint data) Parameters group uint counter uint pname uint data nint glGetPerfMonitorCounterStringAMD(uint, uint, int, int*, StringBuilder) public static extern void glGetPerfMonitorCounterStringAMD(uint group, uint counter, int bufSize, int* length, StringBuilder counterString) Parameters group uint counter uint bufSize int length int* counterString StringBuilder glGetPerfMonitorCountersAMD(uint, int*, int*, int, uint*) public static extern void glGetPerfMonitorCountersAMD(uint group, int* numCounters, int* maxActiveCounters, int counterSize, uint* counters) Parameters group uint numCounters int* maxActiveCounters int* counterSize int counters uint* glGetPerfMonitorGroupStringAMD(uint, int, int*, StringBuilder) public static extern void glGetPerfMonitorGroupStringAMD(uint group, int bufSize, int* length, StringBuilder groupString) Parameters group uint bufSize int length int* groupString StringBuilder glGetPerfMonitorGroupsAMD(int*, int, uint*) public static extern void glGetPerfMonitorGroupsAMD(int* numGroups, int groupsSize, uint* groups) Parameters numGroups int* groupsSize int groups uint* glGetPixelMapfv(uint, float*) public static extern void glGetPixelMapfv(uint map, float* values) Parameters map uint values float* glGetPixelMapuiv(uint, uint*) public static extern void glGetPixelMapuiv(uint map, uint* values) Parameters map uint values uint* glGetPixelMapusv(uint, ushort*) public static extern void glGetPixelMapusv(uint map, ushort* values) Parameters map uint values ushort* glGetPixelTexGenParameterfvSGIS(uint, float*) public static extern void glGetPixelTexGenParameterfvSGIS(uint pname, float* @params) Parameters pname uint params float* glGetPixelTexGenParameterivSGIS(uint, int*) public static extern void glGetPixelTexGenParameterivSGIS(uint pname, int* @params) Parameters pname uint params int* glGetPointerIndexedvEXT(uint, uint, nint) public static extern void glGetPointerIndexedvEXT(uint target, uint index, nint data) Parameters target uint index uint data nint glGetPointerv(uint, nint) public static extern void glGetPointerv(uint pname, nint @params) Parameters pname uint params nint glGetPointervEXT(uint, nint) public static extern void glGetPointervEXT(uint pname, nint @params) Parameters pname uint params nint glGetPolygonStipple(byte*) public static extern void glGetPolygonStipple(byte* mask) Parameters mask byte* glGetProgramBinary(uint, int, int*, uint*, nint) public static extern void glGetProgramBinary(uint program, int bufSize, int* length, uint* binaryFormat, nint binary) Parameters program uint bufSize int length int* binaryFormat uint* binary nint glGetProgramEnvParameterIivNV(uint, uint, int*) public static extern void glGetProgramEnvParameterIivNV(uint target, uint index, int* @params) Parameters target uint index uint params int* glGetProgramEnvParameterIuivNV(uint, uint, uint*) public static extern void glGetProgramEnvParameterIuivNV(uint target, uint index, uint* @params) Parameters target uint index uint params uint* glGetProgramEnvParameterdvARB(uint, uint, double*) public static extern void glGetProgramEnvParameterdvARB(uint target, uint index, double* @params) Parameters target uint index uint params double* glGetProgramEnvParameterfvARB(uint, uint, float*) public static extern void glGetProgramEnvParameterfvARB(uint target, uint index, float* @params) Parameters target uint index uint params float* glGetProgramInfoLog(uint, int, int*, StringBuilder) public static extern void glGetProgramInfoLog(uint program, int bufSize, int* length, StringBuilder infoLog) Parameters program uint bufSize int length int* infoLog StringBuilder glGetProgramLocalParameterIivNV(uint, uint, int*) public static extern void glGetProgramLocalParameterIivNV(uint target, uint index, int* @params) Parameters target uint index uint params int* glGetProgramLocalParameterIuivNV(uint, uint, uint*) public static extern void glGetProgramLocalParameterIuivNV(uint target, uint index, uint* @params) Parameters target uint index uint params uint* glGetProgramLocalParameterdvARB(uint, uint, double*) public static extern void glGetProgramLocalParameterdvARB(uint target, uint index, double* @params) Parameters target uint index uint params double* glGetProgramLocalParameterfvARB(uint, uint, float*) public static extern void glGetProgramLocalParameterfvARB(uint target, uint index, float* @params) Parameters target uint index uint params float* glGetProgramNamedParameterdvNV(uint, int, byte*, double*) public static extern void glGetProgramNamedParameterdvNV(uint id, int len, byte* name, double* @params) Parameters id uint len int name byte* params double* glGetProgramNamedParameterfvNV(uint, int, byte*, float*) public static extern void glGetProgramNamedParameterfvNV(uint id, int len, byte* name, float* @params) Parameters id uint len int name byte* params float* glGetProgramParameterdvNV(uint, uint, uint, double*) public static extern void glGetProgramParameterdvNV(uint target, uint index, uint pname, double* @params) Parameters target uint index uint pname uint params double* glGetProgramParameterfvNV(uint, uint, uint, float*) public static extern void glGetProgramParameterfvNV(uint target, uint index, uint pname, float* @params) Parameters target uint index uint pname uint params float* glGetProgramPipelineInfoLog(uint, int, int*, StringBuilder) public static extern void glGetProgramPipelineInfoLog(uint pipeline, int bufSize, int* length, StringBuilder infoLog) Parameters pipeline uint bufSize int length int* infoLog StringBuilder glGetProgramPipelineiv(uint, uint, int*) public static extern void glGetProgramPipelineiv(uint pipeline, uint pname, int* @params) Parameters pipeline uint pname uint params int* glGetProgramStageiv(uint, uint, uint, int*) public static extern void glGetProgramStageiv(uint program, uint shadertype, uint pname, int* values) Parameters program uint shadertype uint pname uint values int* glGetProgramStringARB(uint, uint, nint) public static extern void glGetProgramStringARB(uint target, uint pname, nint @string) Parameters target uint pname uint string nint glGetProgramStringNV(uint, uint, byte*) public static extern void glGetProgramStringNV(uint id, uint pname, byte* program) Parameters id uint pname uint program byte* glGetProgramSubroutineParameteruivNV(uint, uint, uint*) public static extern void glGetProgramSubroutineParameteruivNV(uint target, uint index, uint* param) Parameters target uint index uint param uint* glGetProgramiv(uint, uint, int*) public static extern void glGetProgramiv(uint program, uint pname, int* @params) Parameters program uint pname uint params int* glGetProgramivARB(uint, uint, int*) public static extern void glGetProgramivARB(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetProgramivNV(uint, uint, int*) public static extern void glGetProgramivNV(uint id, uint pname, int* @params) Parameters id uint pname uint params int* glGetQueryIndexediv(uint, uint, uint, int*) public static extern void glGetQueryIndexediv(uint target, uint index, uint pname, int* @params) Parameters target uint index uint pname uint params int* glGetQueryObjecti64v(uint, uint, long*) public static extern void glGetQueryObjecti64v(uint id, uint pname, long* @params) Parameters id uint pname uint params long* glGetQueryObjecti64vEXT(uint, uint, long*) public static extern void glGetQueryObjecti64vEXT(uint id, uint pname, long* @params) Parameters id uint pname uint params long* glGetQueryObjectiv(uint, uint, int*) public static extern void glGetQueryObjectiv(uint id, uint pname, int* @params) Parameters id uint pname uint params int* glGetQueryObjectivARB(uint, uint, int*) public static extern void glGetQueryObjectivARB(uint id, uint pname, int* @params) Parameters id uint pname uint params int* glGetQueryObjectui64v(uint, uint, ulong*) public static extern void glGetQueryObjectui64v(uint id, uint pname, ulong* @params) Parameters id uint pname uint params ulong* glGetQueryObjectui64vEXT(uint, uint, ulong*) public static extern void glGetQueryObjectui64vEXT(uint id, uint pname, ulong* @params) Parameters id uint pname uint params ulong* glGetQueryObjectuiv(uint, uint, uint*) public static extern void glGetQueryObjectuiv(uint id, uint pname, uint* @params) Parameters id uint pname uint params uint* glGetQueryObjectuivARB(uint, uint, uint*) public static extern void glGetQueryObjectuivARB(uint id, uint pname, uint* @params) Parameters id uint pname uint params uint* glGetQueryiv(uint, uint, int*) public static extern void glGetQueryiv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetQueryivARB(uint, uint, int*) public static extern void glGetQueryivARB(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetRenderbufferParameteriv(uint, uint, int*) public static extern void glGetRenderbufferParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetRenderbufferParameterivEXT(uint, uint, int*) public static extern void glGetRenderbufferParameterivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetSamplerParameterIiv(uint, uint, int*) public static extern void glGetSamplerParameterIiv(uint sampler, uint pname, int* @params) Parameters sampler uint pname uint params int* glGetSamplerParameterIuiv(uint, uint, uint*) public static extern void glGetSamplerParameterIuiv(uint sampler, uint pname, uint* @params) Parameters sampler uint pname uint params uint* glGetSamplerParameterfv(uint, uint, float*) public static extern void glGetSamplerParameterfv(uint sampler, uint pname, float* @params) Parameters sampler uint pname uint params float* glGetSamplerParameteriv(uint, uint, int*) public static extern void glGetSamplerParameteriv(uint sampler, uint pname, int* @params) Parameters sampler uint pname uint params int* glGetSeparableFilter(uint, uint, uint, nint, nint, nint) public static extern void glGetSeparableFilter(uint target, uint format, uint type, nint row, nint column, nint span) Parameters target uint format uint type uint row nint column nint span nint glGetSeparableFilterEXT(uint, uint, uint, nint, nint, nint) public static extern void glGetSeparableFilterEXT(uint target, uint format, uint type, nint row, nint column, nint span) Parameters target uint format uint type uint row nint column nint span nint glGetShaderInfoLog(uint, int, int*, StringBuilder) public static extern void glGetShaderInfoLog(uint shader, int bufSize, int* length, StringBuilder infoLog) Parameters shader uint bufSize int length int* infoLog StringBuilder glGetShaderPrecisionFormat(uint, uint, int*, int*) public static extern void glGetShaderPrecisionFormat(uint shadertype, uint precisiontype, int* range, int* precision) Parameters shadertype uint precisiontype uint range int* precision int* glGetShaderSource(uint, int, int*, StringBuilder) public static extern void glGetShaderSource(uint shader, int bufSize, int* length, StringBuilder source) Parameters shader uint bufSize int length int* source StringBuilder glGetShaderSourceARB(uint, int, int*, StringBuilder) public static extern void glGetShaderSourceARB(uint obj, int maxLength, int* length, StringBuilder source) Parameters obj uint maxLength int length int* source StringBuilder glGetShaderiv(uint, uint, int*) public static extern void glGetShaderiv(uint shader, uint pname, int* @params) Parameters shader uint pname uint params int* glGetSharpenTexFuncSGIS(uint, float*) public static extern void glGetSharpenTexFuncSGIS(uint target, float* points) Parameters target uint points float* glGetString(uint) public static extern nint glGetString(uint name) Parameters name uint Returns nint glGetStringi(uint, uint) public static extern nint glGetStringi(uint name, uint index) Parameters name uint index uint Returns nint glGetSubroutineIndex(uint, uint, string) public static extern int glGetSubroutineIndex(uint program, uint shadertype, string name) Parameters program uint shadertype uint name string Returns int glGetSubroutineUniformLocation(uint, uint, string) public static extern int glGetSubroutineUniformLocation(uint program, uint shadertype, string name) Parameters program uint shadertype uint name string Returns int glGetSynciv(nint, uint, int, int*, int*) public static extern void glGetSynciv(nint sync, uint pname, int bufSize, int* length, int* values) Parameters sync nint pname uint bufSize int length int* values int* glGetTexBumpParameterfvATI(uint, float*) public static extern void glGetTexBumpParameterfvATI(uint pname, float* param) Parameters pname uint param float* glGetTexBumpParameterivATI(uint, int*) public static extern void glGetTexBumpParameterivATI(uint pname, int* param) Parameters pname uint param int* glGetTexEnvfv(uint, uint, float*) public static extern void glGetTexEnvfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetTexEnviv(uint, uint, int*) public static extern void glGetTexEnviv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetTexFilterFuncSGIS(uint, uint, float*) public static extern void glGetTexFilterFuncSGIS(uint target, uint filter, float* weights) Parameters target uint filter uint weights float* glGetTexGendv(uint, uint, double*) public static extern void glGetTexGendv(uint coord, uint pname, double* @params) Parameters coord uint pname uint params double* glGetTexGenfv(uint, uint, float*) public static extern void glGetTexGenfv(uint coord, uint pname, float* @params) Parameters coord uint pname uint params float* glGetTexGeniv(uint, uint, int*) public static extern void glGetTexGeniv(uint coord, uint pname, int* @params) Parameters coord uint pname uint params int* glGetTexImage(uint, int, uint, uint, nint) public static extern void glGetTexImage(uint target, int level, uint format, uint type, nint pixels) Parameters target uint level int format uint type uint pixels nint glGetTexLevelParameterfv(uint, int, uint, float*) public static extern void glGetTexLevelParameterfv(uint target, int level, uint pname, float* @params) Parameters target uint level int pname uint params float* glGetTexLevelParameteriv(uint, int, uint, int*) public static extern void glGetTexLevelParameteriv(uint target, int level, uint pname, int* @params) Parameters target uint level int pname uint params int* glGetTexParameterIiv(uint, uint, int*) public static extern void glGetTexParameterIiv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetTexParameterIivEXT(uint, uint, int*) public static extern void glGetTexParameterIivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetTexParameterIuiv(uint, uint, uint*) public static extern void glGetTexParameterIuiv(uint target, uint pname, uint* @params) Parameters target uint pname uint params uint* glGetTexParameterIuivEXT(uint, uint, uint*) public static extern void glGetTexParameterIuivEXT(uint target, uint pname, uint* @params) Parameters target uint pname uint params uint* glGetTexParameterPointervAPPLE(uint, uint, nint) public static extern void glGetTexParameterPointervAPPLE(uint target, uint pname, nint @params) Parameters target uint pname uint params nint glGetTexParameterfv(uint, uint, float*) public static extern void glGetTexParameterfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glGetTexParameteriv(uint, uint, int*) public static extern void glGetTexParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glGetTextureImageEXT(uint, uint, int, uint, uint, nint) public static extern void glGetTextureImageEXT(uint texture, uint target, int level, uint format, uint type, nint pixels) Parameters texture uint target uint level int format uint type uint pixels nint glGetTextureLevelParameterfvEXT(uint, uint, int, uint, float*) public static extern void glGetTextureLevelParameterfvEXT(uint texture, uint target, int level, uint pname, float* @params) Parameters texture uint target uint level int pname uint params float* glGetTextureLevelParameterivEXT(uint, uint, int, uint, int*) public static extern void glGetTextureLevelParameterivEXT(uint texture, uint target, int level, uint pname, int* @params) Parameters texture uint target uint level int pname uint params int* glGetTextureParameterIivEXT(uint, uint, uint, int*) public static extern void glGetTextureParameterIivEXT(uint texture, uint target, uint pname, int* @params) Parameters texture uint target uint pname uint params int* glGetTextureParameterIuivEXT(uint, uint, uint, uint*) public static extern void glGetTextureParameterIuivEXT(uint texture, uint target, uint pname, uint* @params) Parameters texture uint target uint pname uint params uint* glGetTextureParameterfvEXT(uint, uint, uint, float*) public static extern void glGetTextureParameterfvEXT(uint texture, uint target, uint pname, float* @params) Parameters texture uint target uint pname uint params float* glGetTextureParameterivEXT(uint, uint, uint, int*) public static extern void glGetTextureParameterivEXT(uint texture, uint target, uint pname, int* @params) Parameters texture uint target uint pname uint params int* glGetTrackMatrixivNV(uint, uint, uint, int*) public static extern void glGetTrackMatrixivNV(uint target, uint address, uint pname, int* @params) Parameters target uint address uint pname uint params int* glGetTransformFeedbackVarying(uint, uint, int, int*, int*, uint*, StringBuilder) public static extern void glGetTransformFeedbackVarying(uint program, uint index, int bufSize, int* length, int* size, uint* type, StringBuilder name) Parameters program uint index uint bufSize int length int* size int* type uint* name StringBuilder glGetTransformFeedbackVaryingEXT(uint, uint, int, int*, int*, uint*, StringBuilder) public static extern void glGetTransformFeedbackVaryingEXT(uint program, uint index, int bufSize, int* length, int* size, uint* type, StringBuilder name) Parameters program uint index uint bufSize int length int* size int* type uint* name StringBuilder glGetTransformFeedbackVaryingNV(uint, uint, int*) public static extern void glGetTransformFeedbackVaryingNV(uint program, uint index, int* location) Parameters program uint index uint location int* glGetUniformBlockIndex(uint, string) public static extern int glGetUniformBlockIndex(uint program, string uniformBlockName) Parameters program uint uniformBlockName string Returns int glGetUniformBufferSizeEXT(uint, int) public static extern int glGetUniformBufferSizeEXT(uint program, int location) Parameters program uint location int Returns int glGetUniformIndices(uint, int, string[], uint*) public static extern void glGetUniformIndices(uint program, int uniformCount, string[] uniformNames, uint* uniformIndices) Parameters program uint uniformCount int uniformNames string[] uniformIndices uint* glGetUniformLocation(uint, string) public static extern int glGetUniformLocation(uint program, string name) Parameters program uint name string Returns int glGetUniformLocationARB(uint, string) public static extern int glGetUniformLocationARB(uint programObj, string name) Parameters programObj uint name string Returns int glGetUniformOffsetEXT(uint, int) public static extern nint glGetUniformOffsetEXT(uint program, int location) Parameters program uint location int Returns nint glGetUniformSubroutineuiv(uint, int, uint*) public static extern void glGetUniformSubroutineuiv(uint shadertype, int location, uint* @params) Parameters shadertype uint location int params uint* glGetUniformdv(uint, int, double*) public static extern void glGetUniformdv(uint program, int location, double* @params) Parameters program uint location int params double* glGetUniformfv(uint, int, float*) public static extern void glGetUniformfv(uint program, int location, float* @params) Parameters program uint location int params float* glGetUniformfvARB(uint, int, float*) public static extern void glGetUniformfvARB(uint programObj, int location, float* @params) Parameters programObj uint location int params float* glGetUniformi64vNV(uint, int, long*) public static extern void glGetUniformi64vNV(uint program, int location, long* @params) Parameters program uint location int params long* glGetUniformiv(uint, int, int*) public static extern void glGetUniformiv(uint program, int location, int* @params) Parameters program uint location int params int* glGetUniformivARB(uint, int, int*) public static extern void glGetUniformivARB(uint programObj, int location, int* @params) Parameters programObj uint location int params int* glGetUniformui64vNV(uint, int, ulong*) public static extern void glGetUniformui64vNV(uint program, int location, ulong* @params) Parameters program uint location int params ulong* glGetUniformuiv(uint, int, uint*) public static extern void glGetUniformuiv(uint program, int location, uint* @params) Parameters program uint location int params uint* glGetUniformuivEXT(uint, int, uint*) public static extern void glGetUniformuivEXT(uint program, int location, uint* @params) Parameters program uint location int params uint* glGetVariantArrayObjectfvATI(uint, uint, float*) public static extern void glGetVariantArrayObjectfvATI(uint id, uint pname, float* @params) Parameters id uint pname uint params float* glGetVariantArrayObjectivATI(uint, uint, int*) public static extern void glGetVariantArrayObjectivATI(uint id, uint pname, int* @params) Parameters id uint pname uint params int* glGetVariantBooleanvEXT(uint, uint, bool*) public static extern void glGetVariantBooleanvEXT(uint id, uint value, bool* data) Parameters id uint value uint data bool* glGetVariantFloatvEXT(uint, uint, float*) public static extern void glGetVariantFloatvEXT(uint id, uint value, float* data) Parameters id uint value uint data float* glGetVariantIntegervEXT(uint, uint, int*) public static extern void glGetVariantIntegervEXT(uint id, uint value, int* data) Parameters id uint value uint data int* glGetVariantPointervEXT(uint, uint, nint) public static extern void glGetVariantPointervEXT(uint id, uint value, nint data) Parameters id uint value uint data nint glGetVaryingLocationNV(uint, string) public static extern int glGetVaryingLocationNV(uint program, string name) Parameters program uint name string Returns int glGetVertexAttribArrayObjectfvATI(uint, uint, float*) public static extern void glGetVertexAttribArrayObjectfvATI(uint index, uint pname, float* @params) Parameters index uint pname uint params float* glGetVertexAttribArrayObjectivATI(uint, uint, int*) public static extern void glGetVertexAttribArrayObjectivATI(uint index, uint pname, int* @params) Parameters index uint pname uint params int* glGetVertexAttribIiv(uint, uint, int*) public static extern void glGetVertexAttribIiv(uint index, uint pname, int* @params) Parameters index uint pname uint params int* glGetVertexAttribIivEXT(uint, uint, int*) public static extern void glGetVertexAttribIivEXT(uint index, uint pname, int* @params) Parameters index uint pname uint params int* glGetVertexAttribIuiv(uint, uint, uint*) public static extern void glGetVertexAttribIuiv(uint index, uint pname, uint* @params) Parameters index uint pname uint params uint* glGetVertexAttribIuivEXT(uint, uint, uint*) public static extern void glGetVertexAttribIuivEXT(uint index, uint pname, uint* @params) Parameters index uint pname uint params uint* glGetVertexAttribLdv(uint, uint, double*) public static extern void glGetVertexAttribLdv(uint index, uint pname, double* @params) Parameters index uint pname uint params double* glGetVertexAttribLdvEXT(uint, uint, double*) public static extern void glGetVertexAttribLdvEXT(uint index, uint pname, double* @params) Parameters index uint pname uint params double* glGetVertexAttribLi64vNV(uint, uint, long*) public static extern void glGetVertexAttribLi64vNV(uint index, uint pname, long* @params) Parameters index uint pname uint params long* glGetVertexAttribLui64vNV(uint, uint, ulong*) public static extern void glGetVertexAttribLui64vNV(uint index, uint pname, ulong* @params) Parameters index uint pname uint params ulong* glGetVertexAttribPointerv(uint, uint, nint) public static extern void glGetVertexAttribPointerv(uint index, uint pname, nint pointer) Parameters index uint pname uint pointer nint glGetVertexAttribPointervARB(uint, uint, nint) public static extern void glGetVertexAttribPointervARB(uint index, uint pname, nint pointer) Parameters index uint pname uint pointer nint glGetVertexAttribPointervNV(uint, uint, nint) public static extern void glGetVertexAttribPointervNV(uint index, uint pname, nint pointer) Parameters index uint pname uint pointer nint glGetVertexAttribdv(uint, uint, double*) public static extern void glGetVertexAttribdv(uint index, uint pname, double* @params) Parameters index uint pname uint params double* glGetVertexAttribdvARB(uint, uint, double*) public static extern void glGetVertexAttribdvARB(uint index, uint pname, double* @params) Parameters index uint pname uint params double* glGetVertexAttribdvNV(uint, uint, double*) public static extern void glGetVertexAttribdvNV(uint index, uint pname, double* @params) Parameters index uint pname uint params double* glGetVertexAttribfv(uint, uint, float*) public static extern void glGetVertexAttribfv(uint index, uint pname, float* @params) Parameters index uint pname uint params float* glGetVertexAttribfvARB(uint, uint, float*) public static extern void glGetVertexAttribfvARB(uint index, uint pname, float* @params) Parameters index uint pname uint params float* glGetVertexAttribfvNV(uint, uint, float*) public static extern void glGetVertexAttribfvNV(uint index, uint pname, float* @params) Parameters index uint pname uint params float* glGetVertexAttribiv(uint, uint, int*) public static extern void glGetVertexAttribiv(uint index, uint pname, int* @params) Parameters index uint pname uint params int* glGetVertexAttribivARB(uint, uint, int*) public static extern void glGetVertexAttribivARB(uint index, uint pname, int* @params) Parameters index uint pname uint params int* glGetVertexAttribivNV(uint, uint, int*) public static extern void glGetVertexAttribivNV(uint index, uint pname, int* @params) Parameters index uint pname uint params int* glGetVideoCaptureStreamdvNV(uint, uint, uint, double*) public static extern void glGetVideoCaptureStreamdvNV(uint video_capture_slot, uint stream, uint pname, double* @params) Parameters video_capture_slot uint stream uint pname uint params double* glGetVideoCaptureStreamfvNV(uint, uint, uint, float*) public static extern void glGetVideoCaptureStreamfvNV(uint video_capture_slot, uint stream, uint pname, float* @params) Parameters video_capture_slot uint stream uint pname uint params float* glGetVideoCaptureStreamivNV(uint, uint, uint, int*) public static extern void glGetVideoCaptureStreamivNV(uint video_capture_slot, uint stream, uint pname, int* @params) Parameters video_capture_slot uint stream uint pname uint params int* glGetVideoCaptureivNV(uint, uint, int*) public static extern void glGetVideoCaptureivNV(uint video_capture_slot, uint pname, int* @params) Parameters video_capture_slot uint pname uint params int* glGetVideoi64vNV(uint, uint, long*) public static extern void glGetVideoi64vNV(uint video_slot, uint pname, long* @params) Parameters video_slot uint pname uint params long* glGetVideoivNV(uint, uint, int*) public static extern void glGetVideoivNV(uint video_slot, uint pname, int* @params) Parameters video_slot uint pname uint params int* glGetVideoui64vNV(uint, uint, ulong*) public static extern void glGetVideoui64vNV(uint video_slot, uint pname, ulong* @params) Parameters video_slot uint pname uint params ulong* glGetVideouivNV(uint, uint, uint*) public static extern void glGetVideouivNV(uint video_slot, uint pname, uint* @params) Parameters video_slot uint pname uint params uint* glGetnColorTableARB(uint, uint, uint, int, nint) public static extern void glGetnColorTableARB(uint target, uint format, uint type, int bufSize, nint table) Parameters target uint format uint type uint bufSize int table nint glGetnCompressedTexImageARB(uint, int, int, nint) public static extern void glGetnCompressedTexImageARB(uint target, int lod, int bufSize, nint img) Parameters target uint lod int bufSize int img nint glGetnConvolutionFilterARB(uint, uint, uint, int, nint) public static extern void glGetnConvolutionFilterARB(uint target, uint format, uint type, int bufSize, nint image) Parameters target uint format uint type uint bufSize int image nint glGetnHistogramARB(uint, bool, uint, uint, int, nint) public static extern void glGetnHistogramARB(uint target, bool reset, uint format, uint type, int bufSize, nint values) Parameters target uint reset bool format uint type uint bufSize int values nint glGetnMapdvARB(uint, uint, int, double*) public static extern void glGetnMapdvARB(uint target, uint query, int bufSize, double* v) Parameters target uint query uint bufSize int v double* glGetnMapfvARB(uint, uint, int, float*) public static extern void glGetnMapfvARB(uint target, uint query, int bufSize, float* v) Parameters target uint query uint bufSize int v float* glGetnMapivARB(uint, uint, int, int*) public static extern void glGetnMapivARB(uint target, uint query, int bufSize, int* v) Parameters target uint query uint bufSize int v int* glGetnMinmaxARB(uint, bool, uint, uint, int, nint) public static extern void glGetnMinmaxARB(uint target, bool reset, uint format, uint type, int bufSize, nint values) Parameters target uint reset bool format uint type uint bufSize int values nint glGetnPixelMapfvARB(uint, int, float*) public static extern void glGetnPixelMapfvARB(uint map, int bufSize, float* values) Parameters map uint bufSize int values float* glGetnPixelMapuivARB(uint, int, uint*) public static extern void glGetnPixelMapuivARB(uint map, int bufSize, uint* values) Parameters map uint bufSize int values uint* glGetnPixelMapusvARB(uint, int, ushort*) public static extern void glGetnPixelMapusvARB(uint map, int bufSize, ushort* values) Parameters map uint bufSize int values ushort* glGetnPolygonStippleARB(int, byte*) public static extern void glGetnPolygonStippleARB(int bufSize, byte* pattern) Parameters bufSize int pattern byte* glGetnSeparableFilterARB(uint, uint, uint, int, nint, int, nint, nint) public static extern void glGetnSeparableFilterARB(uint target, uint format, uint type, int rowBufSize, nint row, int columnBufSize, nint column, nint span) Parameters target uint format uint type uint rowBufSize int row nint columnBufSize int column nint span nint glGetnTexImageARB(uint, int, uint, uint, int, nint) public static extern void glGetnTexImageARB(uint target, int level, uint format, uint type, int bufSize, nint img) Parameters target uint level int format uint type uint bufSize int img nint glGetnUniformdvARB(uint, int, int, double*) public static extern void glGetnUniformdvARB(uint program, int location, int bufSize, double* @params) Parameters program uint location int bufSize int params double* glGetnUniformfvARB(uint, int, int, float*) public static extern void glGetnUniformfvARB(uint program, int location, int bufSize, float* @params) Parameters program uint location int bufSize int params float* glGetnUniformivARB(uint, int, int, int*) public static extern void glGetnUniformivARB(uint program, int location, int bufSize, int* @params) Parameters program uint location int bufSize int params int* glGetnUniformuivARB(uint, int, int, uint*) public static extern void glGetnUniformuivARB(uint program, int location, int bufSize, uint* @params) Parameters program uint location int bufSize int params uint* glGlobalAlphaFactorbSUN(sbyte) public static extern void glGlobalAlphaFactorbSUN(sbyte factor) Parameters factor sbyte glGlobalAlphaFactordSUN(double) public static extern void glGlobalAlphaFactordSUN(double factor) Parameters factor double glGlobalAlphaFactorfSUN(float) public static extern void glGlobalAlphaFactorfSUN(float factor) Parameters factor float glGlobalAlphaFactoriSUN(int) public static extern void glGlobalAlphaFactoriSUN(int factor) Parameters factor int glGlobalAlphaFactorsSUN(short) public static extern void glGlobalAlphaFactorsSUN(short factor) Parameters factor short glGlobalAlphaFactorubSUN(byte) public static extern void glGlobalAlphaFactorubSUN(byte factor) Parameters factor byte glGlobalAlphaFactoruiSUN(uint) public static extern void glGlobalAlphaFactoruiSUN(uint factor) Parameters factor uint glGlobalAlphaFactorusSUN(ushort) public static extern void glGlobalAlphaFactorusSUN(ushort factor) Parameters factor ushort glHint(uint, uint) public static extern void glHint(uint target, uint mode) Parameters target uint mode uint glHintPGI(uint, int) public static extern void glHintPGI(uint target, int mode) Parameters target uint mode int glHistogram(uint, int, uint, bool) public static extern void glHistogram(uint target, int width, uint internalformat, bool sink) Parameters target uint width int internalformat uint sink bool glHistogramEXT(uint, int, uint, bool) public static extern void glHistogramEXT(uint target, int width, uint internalformat, bool sink) Parameters target uint width int internalformat uint sink bool glImageTransformParameterfHP(uint, uint, float) public static extern void glImageTransformParameterfHP(uint target, uint pname, float param) Parameters target uint pname uint param float glImageTransformParameterfvHP(uint, uint, float*) public static extern void glImageTransformParameterfvHP(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glImageTransformParameteriHP(uint, uint, int) public static extern void glImageTransformParameteriHP(uint target, uint pname, int param) Parameters target uint pname uint param int glImageTransformParameterivHP(uint, uint, int*) public static extern void glImageTransformParameterivHP(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glImportSyncEXT(uint, nint, uint) public static extern nint glImportSyncEXT(uint external_sync_type, nint external_sync, uint flags) Parameters external_sync_type uint external_sync nint flags uint Returns nint glIndexFormatNV(uint, int) public static extern void glIndexFormatNV(uint type, int stride) Parameters type uint stride int glIndexFuncEXT(uint, float) public static extern void glIndexFuncEXT(uint func, float @ref) Parameters func uint ref float glIndexMask(uint) public static extern void glIndexMask(uint mask) Parameters mask uint glIndexMaterialEXT(uint, uint) public static extern void glIndexMaterialEXT(uint face, uint mode) Parameters face uint mode uint glIndexPointer(uint, int, nint) public static extern void glIndexPointer(uint type, int stride, nint pointer) Parameters type uint stride int pointer nint glIndexPointerEXT(uint, int, int, nint) public static extern void glIndexPointerEXT(uint type, int stride, int count, nint pointer) Parameters type uint stride int count int pointer nint glIndexPointerListIBM(uint, int, nint, int) public static extern void glIndexPointerListIBM(uint type, int stride, nint pointer, int ptrstride) Parameters type uint stride int pointer nint ptrstride int glIndexd(double) public static extern void glIndexd(double c) Parameters c double glIndexdv(double*) public static extern void glIndexdv(double* c) Parameters c double* glIndexf(float) public static extern void glIndexf(float c) Parameters c float glIndexfv(float*) public static extern void glIndexfv(float* c) Parameters c float* glIndexi(int) public static extern void glIndexi(int c) Parameters c int glIndexiv(int*) public static extern void glIndexiv(int* c) Parameters c int* glIndexs(short) public static extern void glIndexs(short c) Parameters c short glIndexsv(short*) public static extern void glIndexsv(short* c) Parameters c short* glIndexub(byte) public static extern void glIndexub(byte c) Parameters c byte glIndexubv(byte*) public static extern void glIndexubv(byte* c) Parameters c byte* glInitNames() public static extern void glInitNames() glInsertComponentEXT(uint, uint, uint) public static extern void glInsertComponentEXT(uint res, uint src, uint num) Parameters res uint src uint num uint glInstrumentsBufferSGIX(int, int*) public static extern void glInstrumentsBufferSGIX(int size, int* buffer) Parameters size int buffer int* glInterleavedArrays(uint, int, nint) public static extern void glInterleavedArrays(uint format, int stride, nint pointer) Parameters format uint stride int pointer nint glIsAsyncMarkerSGIX(uint) public static extern int glIsAsyncMarkerSGIX(uint marker) Parameters marker uint Returns int glIsBuffer(uint) public static extern int glIsBuffer(uint buffer) Parameters buffer uint Returns int glIsBufferARB(uint) public static extern int glIsBufferARB(uint buffer) Parameters buffer uint Returns int glIsBufferResidentNV(uint) public static extern int glIsBufferResidentNV(uint target) Parameters target uint Returns int glIsEnabled(uint) public static extern int glIsEnabled(uint cap) Parameters cap uint Returns int glIsEnabledIndexedEXT(uint, uint) public static extern int glIsEnabledIndexedEXT(uint target, uint index) Parameters target uint index uint Returns int glIsEnabledi(uint, uint) public static extern int glIsEnabledi(uint target, uint index) Parameters target uint index uint Returns int glIsFenceAPPLE(uint) public static extern int glIsFenceAPPLE(uint fence) Parameters fence uint Returns int glIsFenceNV(uint) public static extern int glIsFenceNV(uint fence) Parameters fence uint Returns int glIsFramebuffer(uint) public static extern int glIsFramebuffer(uint framebuffer) Parameters framebuffer uint Returns int glIsFramebufferEXT(uint) public static extern int glIsFramebufferEXT(uint framebuffer) Parameters framebuffer uint Returns int glIsList(uint) public static extern int glIsList(uint list) Parameters list uint Returns int glIsNameAMD(uint, uint) public static extern int glIsNameAMD(uint identifier, uint name) Parameters identifier uint name uint Returns int glIsNamedBufferResidentNV(uint) public static extern int glIsNamedBufferResidentNV(uint buffer) Parameters buffer uint Returns int glIsNamedStringARB(int, string) public static extern int glIsNamedStringARB(int namelen, string name) Parameters namelen int name string Returns int glIsObjectBufferATI(uint) public static extern int glIsObjectBufferATI(uint buffer) Parameters buffer uint Returns int glIsOcclusionQueryNV(uint) public static extern int glIsOcclusionQueryNV(uint id) Parameters id uint Returns int glIsProgram(uint) public static extern int glIsProgram(uint program) Parameters program uint Returns int glIsProgramARB(uint) public static extern int glIsProgramARB(uint program) Parameters program uint Returns int glIsProgramNV(uint) public static extern int glIsProgramNV(uint id) Parameters id uint Returns int glIsProgramPipeline(uint) public static extern int glIsProgramPipeline(uint pipeline) Parameters pipeline uint Returns int glIsQuery(uint) public static extern int glIsQuery(uint id) Parameters id uint Returns int glIsQueryARB(uint) public static extern int glIsQueryARB(uint id) Parameters id uint Returns int glIsRenderbuffer(uint) public static extern int glIsRenderbuffer(uint renderbuffer) Parameters renderbuffer uint Returns int glIsRenderbufferEXT(uint) public static extern int glIsRenderbufferEXT(uint renderbuffer) Parameters renderbuffer uint Returns int glIsSampler(uint) public static extern int glIsSampler(uint sampler) Parameters sampler uint Returns int glIsShader(uint) public static extern int glIsShader(uint shader) Parameters shader uint Returns int glIsSync(nint) public static extern int glIsSync(nint sync) Parameters sync nint Returns int glIsTexture(uint) public static extern int glIsTexture(uint texture) Parameters texture uint Returns int glIsTextureEXT(uint) public static extern int glIsTextureEXT(uint texture) Parameters texture uint Returns int glIsTransformFeedback(uint) public static extern int glIsTransformFeedback(uint id) Parameters id uint Returns int glIsTransformFeedbackNV(uint) public static extern int glIsTransformFeedbackNV(uint id) Parameters id uint Returns int glIsVariantEnabledEXT(uint, uint) public static extern int glIsVariantEnabledEXT(uint id, uint cap) Parameters id uint cap uint Returns int glIsVertexArray(uint) public static extern int glIsVertexArray(uint array) Parameters array uint Returns int glIsVertexArrayAPPLE(uint) public static extern int glIsVertexArrayAPPLE(uint array) Parameters array uint Returns int glIsVertexAttribEnabledAPPLE(uint, uint) public static extern int glIsVertexAttribEnabledAPPLE(uint index, uint pname) Parameters index uint pname uint Returns int glLightEnviSGIX(uint, int) public static extern void glLightEnviSGIX(uint pname, int param) Parameters pname uint param int glLightModelf(uint, float) public static extern void glLightModelf(uint pname, float param) Parameters pname uint param float glLightModelfv(uint, float*) public static extern void glLightModelfv(uint pname, float* @params) Parameters pname uint params float* glLightModeli(uint, int) public static extern void glLightModeli(uint pname, int param) Parameters pname uint param int glLightModeliv(uint, int*) public static extern void glLightModeliv(uint pname, int* @params) Parameters pname uint params int* glLightf(uint, uint, float) public static extern void glLightf(uint light, uint pname, float param) Parameters light uint pname uint param float glLightfv(uint, uint, float*) public static extern void glLightfv(uint light, uint pname, float* @params) Parameters light uint pname uint params float* glLighti(uint, uint, int) public static extern void glLighti(uint light, uint pname, int param) Parameters light uint pname uint param int glLightiv(uint, uint, int*) public static extern void glLightiv(uint light, uint pname, int* @params) Parameters light uint pname uint params int* glLineStipple(int, ushort) public static extern void glLineStipple(int factor, ushort pattern) Parameters factor int pattern ushort glLineWidth(float) public static extern void glLineWidth(float width) Parameters width float glLinkProgram(uint) public static extern void glLinkProgram(uint program) Parameters program uint glLinkProgramARB(uint) public static extern void glLinkProgramARB(uint programObj) Parameters programObj uint glListBase(uint) public static extern void glListBase(uint @base) Parameters base uint glListParameterfSGIX(uint, uint, float) public static extern void glListParameterfSGIX(uint list, uint pname, float param) Parameters list uint pname uint param float glListParameterfvSGIX(uint, uint, float*) public static extern void glListParameterfvSGIX(uint list, uint pname, float* @params) Parameters list uint pname uint params float* glListParameteriSGIX(uint, uint, int) public static extern void glListParameteriSGIX(uint list, uint pname, int param) Parameters list uint pname uint param int glListParameterivSGIX(uint, uint, int*) public static extern void glListParameterivSGIX(uint list, uint pname, int* @params) Parameters list uint pname uint params int* glLoadIdentity() public static extern void glLoadIdentity() glLoadIdentityDeformationMapSGIX(uint) public static extern void glLoadIdentityDeformationMapSGIX(uint mask) Parameters mask uint glLoadMatrixd(double*) public static extern void glLoadMatrixd(double* m) Parameters m double* glLoadMatrixf(float*) public static extern void glLoadMatrixf(float* m) Parameters m float* glLoadName(uint) public static extern void glLoadName(uint name) Parameters name uint glLoadProgramNV(uint, uint, int, byte*) public static extern void glLoadProgramNV(uint target, uint id, int len, byte* program) Parameters target uint id uint len int program byte* glLoadTransposeMatrixd(double*) public static extern void glLoadTransposeMatrixd(double* m) Parameters m double* glLoadTransposeMatrixdARB(double*) public static extern void glLoadTransposeMatrixdARB(double* m) Parameters m double* glLoadTransposeMatrixf(float*) public static extern void glLoadTransposeMatrixf(float* m) Parameters m float* glLoadTransposeMatrixfARB(float*) public static extern void glLoadTransposeMatrixfARB(float* m) Parameters m float* glLockArraysEXT(int, int) public static extern void glLockArraysEXT(int first, int count) Parameters first int count int glLogicOp(uint) public static extern void glLogicOp(uint opcode) Parameters opcode uint glMakeBufferNonResidentNV(uint) public static extern void glMakeBufferNonResidentNV(uint target) Parameters target uint glMakeBufferResidentNV(uint, uint) public static extern void glMakeBufferResidentNV(uint target, uint access) Parameters target uint access uint glMakeNamedBufferNonResidentNV(uint) public static extern void glMakeNamedBufferNonResidentNV(uint buffer) Parameters buffer uint glMakeNamedBufferResidentNV(uint, uint) public static extern void glMakeNamedBufferResidentNV(uint buffer, uint access) Parameters buffer uint access uint glMap1d(uint, double, double, int, int, double*) public static extern void glMap1d(uint target, double u1, double u2, int stride, int order, double* points) Parameters target uint u1 double u2 double stride int order int points double* glMap1f(uint, float, float, int, int, float*) public static extern void glMap1f(uint target, float u1, float u2, int stride, int order, float* points) Parameters target uint u1 float u2 float stride int order int points float* glMap2d(uint, double, double, int, int, double, double, int, int, double*) public static extern void glMap2d(uint target, double u1, double u2, int ustride, int uorder, double v1, double v2, int vstride, int vorder, double* points) Parameters target uint u1 double u2 double ustride int uorder int v1 double v2 double vstride int vorder int points double* glMap2f(uint, float, float, int, int, float, float, int, int, float*) public static extern void glMap2f(uint target, float u1, float u2, int ustride, int uorder, float v1, float v2, int vstride, int vorder, float* points) Parameters target uint u1 float u2 float ustride int uorder int v1 float v2 float vstride int vorder int points float* glMapBuffer(uint, uint) public static extern nint glMapBuffer(uint target, uint access) Parameters target uint access uint Returns nint glMapBufferARB(uint, uint) public static extern nint glMapBufferARB(uint target, uint access) Parameters target uint access uint Returns nint glMapBufferRange(uint, nint, nint, uint) public static extern nint glMapBufferRange(uint target, nint offset, nint length, uint access) Parameters target uint offset nint length nint access uint Returns nint glMapControlPointsNV(uint, uint, uint, int, int, int, int, bool, nint) public static extern void glMapControlPointsNV(uint target, uint index, uint type, int ustride, int vstride, int uorder, int vorder, bool packed, nint points) Parameters target uint index uint type uint ustride int vstride int uorder int vorder int packed bool points nint glMapGrid1d(int, double, double) public static extern void glMapGrid1d(int un, double u1, double u2) Parameters un int u1 double u2 double glMapGrid1f(int, float, float) public static extern void glMapGrid1f(int un, float u1, float u2) Parameters un int u1 float u2 float glMapGrid2d(int, double, double, int, double, double) public static extern void glMapGrid2d(int un, double u1, double u2, int vn, double v1, double v2) Parameters un int u1 double u2 double vn int v1 double v2 double glMapGrid2f(int, float, float, int, float, float) public static extern void glMapGrid2f(int un, float u1, float u2, int vn, float v1, float v2) Parameters un int u1 float u2 float vn int v1 float v2 float glMapNamedBufferEXT(uint, uint) public static extern nint glMapNamedBufferEXT(uint buffer, uint access) Parameters buffer uint access uint Returns nint glMapNamedBufferRangeEXT(uint, nint, nint, uint) public static extern nint glMapNamedBufferRangeEXT(uint buffer, nint offset, nint length, uint access) Parameters buffer uint offset nint length nint access uint Returns nint glMapObjectBufferATI(uint) public static extern nint glMapObjectBufferATI(uint buffer) Parameters buffer uint Returns nint glMapParameterfvNV(uint, uint, float*) public static extern void glMapParameterfvNV(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glMapParameterivNV(uint, uint, int*) public static extern void glMapParameterivNV(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glMapVertexAttrib1dAPPLE(uint, uint, double, double, int, int, double*) public static extern void glMapVertexAttrib1dAPPLE(uint index, uint size, double u1, double u2, int stride, int order, double* points) Parameters index uint size uint u1 double u2 double stride int order int points double* glMapVertexAttrib1fAPPLE(uint, uint, float, float, int, int, float*) public static extern void glMapVertexAttrib1fAPPLE(uint index, uint size, float u1, float u2, int stride, int order, float* points) Parameters index uint size uint u1 float u2 float stride int order int points float* glMapVertexAttrib2dAPPLE(uint, uint, double, double, int, int, double, double, int, int, double*) public static extern void glMapVertexAttrib2dAPPLE(uint index, uint size, double u1, double u2, int ustride, int uorder, double v1, double v2, int vstride, int vorder, double* points) Parameters index uint size uint u1 double u2 double ustride int uorder int v1 double v2 double vstride int vorder int points double* glMapVertexAttrib2fAPPLE(uint, uint, float, float, int, int, float, float, int, int, float*) public static extern void glMapVertexAttrib2fAPPLE(uint index, uint size, float u1, float u2, int ustride, int uorder, float v1, float v2, int vstride, int vorder, float* points) Parameters index uint size uint u1 float u2 float ustride int uorder int v1 float v2 float vstride int vorder int points float* glMaterialf(uint, uint, float) public static extern void glMaterialf(uint face, uint pname, float param) Parameters face uint pname uint param float glMaterialfv(uint, uint, float*) public static extern void glMaterialfv(uint face, uint pname, float* @params) Parameters face uint pname uint params float* glMateriali(uint, uint, int) public static extern void glMateriali(uint face, uint pname, int param) Parameters face uint pname uint param int glMaterialiv(uint, uint, int*) public static extern void glMaterialiv(uint face, uint pname, int* @params) Parameters face uint pname uint params int* glMatrixFrustumEXT(uint, double, double, double, double, double, double) public static extern void glMatrixFrustumEXT(uint mode, double left, double right, double bottom, double top, double zNear, double zFar) Parameters mode uint left double right double bottom double top double zNear double zFar double glMatrixIndexPointerARB(int, uint, int, nint) public static extern void glMatrixIndexPointerARB(int size, uint type, int stride, nint pointer) Parameters size int type uint stride int pointer nint glMatrixIndexubvARB(int, byte*) public static extern void glMatrixIndexubvARB(int size, byte* indices) Parameters size int indices byte* glMatrixIndexuivARB(int, uint*) public static extern void glMatrixIndexuivARB(int size, uint* indices) Parameters size int indices uint* glMatrixIndexusvARB(int, ushort*) public static extern void glMatrixIndexusvARB(int size, ushort* indices) Parameters size int indices ushort* glMatrixLoadIdentityEXT(uint) public static extern void glMatrixLoadIdentityEXT(uint mode) Parameters mode uint glMatrixLoadTransposedEXT(uint, double*) public static extern void glMatrixLoadTransposedEXT(uint mode, double* m) Parameters mode uint m double* glMatrixLoadTransposefEXT(uint, float*) public static extern void glMatrixLoadTransposefEXT(uint mode, float* m) Parameters mode uint m float* glMatrixLoaddEXT(uint, double*) public static extern void glMatrixLoaddEXT(uint mode, double* m) Parameters mode uint m double* glMatrixLoadfEXT(uint, float*) public static extern void glMatrixLoadfEXT(uint mode, float* m) Parameters mode uint m float* glMatrixMode(uint) public static extern void glMatrixMode(uint mode) Parameters mode uint glMatrixMultTransposedEXT(uint, double*) public static extern void glMatrixMultTransposedEXT(uint mode, double* m) Parameters mode uint m double* glMatrixMultTransposefEXT(uint, float*) public static extern void glMatrixMultTransposefEXT(uint mode, float* m) Parameters mode uint m float* glMatrixMultdEXT(uint, double*) public static extern void glMatrixMultdEXT(uint mode, double* m) Parameters mode uint m double* glMatrixMultfEXT(uint, float*) public static extern void glMatrixMultfEXT(uint mode, float* m) Parameters mode uint m float* glMatrixOrthoEXT(uint, double, double, double, double, double, double) public static extern void glMatrixOrthoEXT(uint mode, double left, double right, double bottom, double top, double zNear, double zFar) Parameters mode uint left double right double bottom double top double zNear double zFar double glMatrixPopEXT(uint) public static extern void glMatrixPopEXT(uint mode) Parameters mode uint glMatrixPushEXT(uint) public static extern void glMatrixPushEXT(uint mode) Parameters mode uint glMatrixRotatedEXT(uint, double, double, double, double) public static extern void glMatrixRotatedEXT(uint mode, double angle, double x, double y, double z) Parameters mode uint angle double x double y double z double glMatrixRotatefEXT(uint, float, float, float, float) public static extern void glMatrixRotatefEXT(uint mode, float angle, float x, float y, float z) Parameters mode uint angle float x float y float z float glMatrixScaledEXT(uint, double, double, double) public static extern void glMatrixScaledEXT(uint mode, double x, double y, double z) Parameters mode uint x double y double z double glMatrixScalefEXT(uint, float, float, float) public static extern void glMatrixScalefEXT(uint mode, float x, float y, float z) Parameters mode uint x float y float z float glMatrixTranslatedEXT(uint, double, double, double) public static extern void glMatrixTranslatedEXT(uint mode, double x, double y, double z) Parameters mode uint x double y double z double glMatrixTranslatefEXT(uint, float, float, float) public static extern void glMatrixTranslatefEXT(uint mode, float x, float y, float z) Parameters mode uint x float y float z float glMemoryBarrierEXT(uint) public static extern void glMemoryBarrierEXT(uint barriers) Parameters barriers uint glMinSampleShading(float) public static extern void glMinSampleShading(float value) Parameters value float glMinSampleShadingARB(float) public static extern void glMinSampleShadingARB(float value) Parameters value float glMinmax(uint, uint, bool) public static extern void glMinmax(uint target, uint internalformat, bool sink) Parameters target uint internalformat uint sink bool glMinmaxEXT(uint, uint, bool) public static extern void glMinmaxEXT(uint target, uint internalformat, bool sink) Parameters target uint internalformat uint sink bool glMultMatrixd(double*) public static extern void glMultMatrixd(double* m) Parameters m double* glMultMatrixf(float*) public static extern void glMultMatrixf(float* m) Parameters m float* glMultTransposeMatrixd(double*) public static extern void glMultTransposeMatrixd(double* m) Parameters m double* glMultTransposeMatrixdARB(double*) public static extern void glMultTransposeMatrixdARB(double* m) Parameters m double* glMultTransposeMatrixf(float*) public static extern void glMultTransposeMatrixf(float* m) Parameters m float* glMultTransposeMatrixfARB(float*) public static extern void glMultTransposeMatrixfARB(float* m) Parameters m float* glMultiDrawArrays(uint, int*, int*, int) public static extern void glMultiDrawArrays(uint mode, int* first, int* count, int primcount) Parameters mode uint first int* count int* primcount int glMultiDrawArraysEXT(uint, int*, int*, int) public static extern void glMultiDrawArraysEXT(uint mode, int* first, int* count, int primcount) Parameters mode uint first int* count int* primcount int glMultiDrawArraysIndirectAMD(uint, nint, int, int) public static extern void glMultiDrawArraysIndirectAMD(uint mode, nint indirect, int primcount, int stride) Parameters mode uint indirect nint primcount int stride int glMultiDrawElementArrayAPPLE(uint, int*, int*, int) public static extern void glMultiDrawElementArrayAPPLE(uint mode, int* first, int* count, int primcount) Parameters mode uint first int* count int* primcount int glMultiDrawElements(uint, int*, uint, nint, int) public static extern void glMultiDrawElements(uint mode, int* count, uint type, nint indices, int primcount) Parameters mode uint count int* type uint indices nint primcount int glMultiDrawElementsBaseVertex(uint, int*, uint, nint, int, int*) public static extern void glMultiDrawElementsBaseVertex(uint mode, int* count, uint type, nint indices, int primcount, int* basevertex) Parameters mode uint count int* type uint indices nint primcount int basevertex int* glMultiDrawElementsEXT(uint, int*, uint, nint, int) public static extern void glMultiDrawElementsEXT(uint mode, int* count, uint type, nint indices, int primcount) Parameters mode uint count int* type uint indices nint primcount int glMultiDrawElementsIndirectAMD(uint, uint, nint, int, int) public static extern void glMultiDrawElementsIndirectAMD(uint mode, uint type, nint indirect, int primcount, int stride) Parameters mode uint type uint indirect nint primcount int stride int glMultiDrawRangeElementArrayAPPLE(uint, uint, uint, int*, int*, int) public static extern void glMultiDrawRangeElementArrayAPPLE(uint mode, uint start, uint end, int* first, int* count, int primcount) Parameters mode uint start uint end uint first int* count int* primcount int glMultiModeDrawArraysIBM(uint*, int*, int*, int, int) public static extern void glMultiModeDrawArraysIBM(uint* mode, int* first, int* count, int primcount, int modestride) Parameters mode uint* first int* count int* primcount int modestride int glMultiModeDrawElementsIBM(uint*, int*, uint, nint, int, int) public static extern void glMultiModeDrawElementsIBM(uint* mode, int* count, uint type, nint indices, int primcount, int modestride) Parameters mode uint* count int* type uint indices nint primcount int modestride int glMultiTexBufferEXT(uint, uint, uint, uint) public static extern void glMultiTexBufferEXT(uint texunit, uint target, uint internalformat, uint buffer) Parameters texunit uint target uint internalformat uint buffer uint glMultiTexCoord1d(uint, double) public static extern void glMultiTexCoord1d(uint target, double s) Parameters target uint s double glMultiTexCoord1dARB(uint, double) public static extern void glMultiTexCoord1dARB(uint target, double s) Parameters target uint s double glMultiTexCoord1dv(uint, double*) public static extern void glMultiTexCoord1dv(uint target, double* v) Parameters target uint v double* glMultiTexCoord1dvARB(uint, double*) public static extern void glMultiTexCoord1dvARB(uint target, double* v) Parameters target uint v double* glMultiTexCoord1f(uint, float) public static extern void glMultiTexCoord1f(uint target, float s) Parameters target uint s float glMultiTexCoord1fARB(uint, float) public static extern void glMultiTexCoord1fARB(uint target, float s) Parameters target uint s float glMultiTexCoord1fv(uint, float*) public static extern void glMultiTexCoord1fv(uint target, float* v) Parameters target uint v float* glMultiTexCoord1fvARB(uint, float*) public static extern void glMultiTexCoord1fvARB(uint target, float* v) Parameters target uint v float* glMultiTexCoord1hNV(uint, ushort) public static extern void glMultiTexCoord1hNV(uint target, ushort s) Parameters target uint s ushort glMultiTexCoord1hvNV(uint, ushort*) public static extern void glMultiTexCoord1hvNV(uint target, ushort* v) Parameters target uint v ushort* glMultiTexCoord1i(uint, int) public static extern void glMultiTexCoord1i(uint target, int s) Parameters target uint s int glMultiTexCoord1iARB(uint, int) public static extern void glMultiTexCoord1iARB(uint target, int s) Parameters target uint s int glMultiTexCoord1iv(uint, int*) public static extern void glMultiTexCoord1iv(uint target, int* v) Parameters target uint v int* glMultiTexCoord1ivARB(uint, int*) public static extern void glMultiTexCoord1ivARB(uint target, int* v) Parameters target uint v int* glMultiTexCoord1s(uint, short) public static extern void glMultiTexCoord1s(uint target, short s) Parameters target uint s short glMultiTexCoord1sARB(uint, short) public static extern void glMultiTexCoord1sARB(uint target, short s) Parameters target uint s short glMultiTexCoord1sv(uint, short*) public static extern void glMultiTexCoord1sv(uint target, short* v) Parameters target uint v short* glMultiTexCoord1svARB(uint, short*) public static extern void glMultiTexCoord1svARB(uint target, short* v) Parameters target uint v short* glMultiTexCoord2d(uint, double, double) public static extern void glMultiTexCoord2d(uint target, double s, double t) Parameters target uint s double t double glMultiTexCoord2dARB(uint, double, double) public static extern void glMultiTexCoord2dARB(uint target, double s, double t) Parameters target uint s double t double glMultiTexCoord2dv(uint, double*) public static extern void glMultiTexCoord2dv(uint target, double* v) Parameters target uint v double* glMultiTexCoord2dvARB(uint, double*) public static extern void glMultiTexCoord2dvARB(uint target, double* v) Parameters target uint v double* glMultiTexCoord2f(uint, float, float) public static extern void glMultiTexCoord2f(uint target, float s, float t) Parameters target uint s float t float glMultiTexCoord2fARB(uint, float, float) public static extern void glMultiTexCoord2fARB(uint target, float s, float t) Parameters target uint s float t float glMultiTexCoord2fv(uint, float*) public static extern void glMultiTexCoord2fv(uint target, float* v) Parameters target uint v float* glMultiTexCoord2fvARB(uint, float*) public static extern void glMultiTexCoord2fvARB(uint target, float* v) Parameters target uint v float* glMultiTexCoord2hNV(uint, ushort, ushort) public static extern void glMultiTexCoord2hNV(uint target, ushort s, ushort t) Parameters target uint s ushort t ushort glMultiTexCoord2hvNV(uint, ushort*) public static extern void glMultiTexCoord2hvNV(uint target, ushort* v) Parameters target uint v ushort* glMultiTexCoord2i(uint, int, int) public static extern void glMultiTexCoord2i(uint target, int s, int t) Parameters target uint s int t int glMultiTexCoord2iARB(uint, int, int) public static extern void glMultiTexCoord2iARB(uint target, int s, int t) Parameters target uint s int t int glMultiTexCoord2iv(uint, int*) public static extern void glMultiTexCoord2iv(uint target, int* v) Parameters target uint v int* glMultiTexCoord2ivARB(uint, int*) public static extern void glMultiTexCoord2ivARB(uint target, int* v) Parameters target uint v int* glMultiTexCoord2s(uint, short, short) public static extern void glMultiTexCoord2s(uint target, short s, short t) Parameters target uint s short t short glMultiTexCoord2sARB(uint, short, short) public static extern void glMultiTexCoord2sARB(uint target, short s, short t) Parameters target uint s short t short glMultiTexCoord2sv(uint, short*) public static extern void glMultiTexCoord2sv(uint target, short* v) Parameters target uint v short* glMultiTexCoord2svARB(uint, short*) public static extern void glMultiTexCoord2svARB(uint target, short* v) Parameters target uint v short* glMultiTexCoord3d(uint, double, double, double) public static extern void glMultiTexCoord3d(uint target, double s, double t, double r) Parameters target uint s double t double r double glMultiTexCoord3dARB(uint, double, double, double) public static extern void glMultiTexCoord3dARB(uint target, double s, double t, double r) Parameters target uint s double t double r double glMultiTexCoord3dv(uint, double*) public static extern void glMultiTexCoord3dv(uint target, double* v) Parameters target uint v double* glMultiTexCoord3dvARB(uint, double*) public static extern void glMultiTexCoord3dvARB(uint target, double* v) Parameters target uint v double* glMultiTexCoord3f(uint, float, float, float) public static extern void glMultiTexCoord3f(uint target, float s, float t, float r) Parameters target uint s float t float r float glMultiTexCoord3fARB(uint, float, float, float) public static extern void glMultiTexCoord3fARB(uint target, float s, float t, float r) Parameters target uint s float t float r float glMultiTexCoord3fv(uint, float*) public static extern void glMultiTexCoord3fv(uint target, float* v) Parameters target uint v float* glMultiTexCoord3fvARB(uint, float*) public static extern void glMultiTexCoord3fvARB(uint target, float* v) Parameters target uint v float* glMultiTexCoord3hNV(uint, ushort, ushort, ushort) public static extern void glMultiTexCoord3hNV(uint target, ushort s, ushort t, ushort r) Parameters target uint s ushort t ushort r ushort glMultiTexCoord3hvNV(uint, ushort*) public static extern void glMultiTexCoord3hvNV(uint target, ushort* v) Parameters target uint v ushort* glMultiTexCoord3i(uint, int, int, int) public static extern void glMultiTexCoord3i(uint target, int s, int t, int r) Parameters target uint s int t int r int glMultiTexCoord3iARB(uint, int, int, int) public static extern void glMultiTexCoord3iARB(uint target, int s, int t, int r) Parameters target uint s int t int r int glMultiTexCoord3iv(uint, int*) public static extern void glMultiTexCoord3iv(uint target, int* v) Parameters target uint v int* glMultiTexCoord3ivARB(uint, int*) public static extern void glMultiTexCoord3ivARB(uint target, int* v) Parameters target uint v int* glMultiTexCoord3s(uint, short, short, short) public static extern void glMultiTexCoord3s(uint target, short s, short t, short r) Parameters target uint s short t short r short glMultiTexCoord3sARB(uint, short, short, short) public static extern void glMultiTexCoord3sARB(uint target, short s, short t, short r) Parameters target uint s short t short r short glMultiTexCoord3sv(uint, short*) public static extern void glMultiTexCoord3sv(uint target, short* v) Parameters target uint v short* glMultiTexCoord3svARB(uint, short*) public static extern void glMultiTexCoord3svARB(uint target, short* v) Parameters target uint v short* glMultiTexCoord4d(uint, double, double, double, double) public static extern void glMultiTexCoord4d(uint target, double s, double t, double r, double q) Parameters target uint s double t double r double q double glMultiTexCoord4dARB(uint, double, double, double, double) public static extern void glMultiTexCoord4dARB(uint target, double s, double t, double r, double q) Parameters target uint s double t double r double q double glMultiTexCoord4dv(uint, double*) public static extern void glMultiTexCoord4dv(uint target, double* v) Parameters target uint v double* glMultiTexCoord4dvARB(uint, double*) public static extern void glMultiTexCoord4dvARB(uint target, double* v) Parameters target uint v double* glMultiTexCoord4f(uint, float, float, float, float) public static extern void glMultiTexCoord4f(uint target, float s, float t, float r, float q) Parameters target uint s float t float r float q float glMultiTexCoord4fARB(uint, float, float, float, float) public static extern void glMultiTexCoord4fARB(uint target, float s, float t, float r, float q) Parameters target uint s float t float r float q float glMultiTexCoord4fv(uint, float*) public static extern void glMultiTexCoord4fv(uint target, float* v) Parameters target uint v float* glMultiTexCoord4fvARB(uint, float*) public static extern void glMultiTexCoord4fvARB(uint target, float* v) Parameters target uint v float* glMultiTexCoord4hNV(uint, ushort, ushort, ushort, ushort) public static extern void glMultiTexCoord4hNV(uint target, ushort s, ushort t, ushort r, ushort q) Parameters target uint s ushort t ushort r ushort q ushort glMultiTexCoord4hvNV(uint, ushort*) public static extern void glMultiTexCoord4hvNV(uint target, ushort* v) Parameters target uint v ushort* glMultiTexCoord4i(uint, int, int, int, int) public static extern void glMultiTexCoord4i(uint target, int s, int t, int r, int q) Parameters target uint s int t int r int q int glMultiTexCoord4iARB(uint, int, int, int, int) public static extern void glMultiTexCoord4iARB(uint target, int s, int t, int r, int q) Parameters target uint s int t int r int q int glMultiTexCoord4iv(uint, int*) public static extern void glMultiTexCoord4iv(uint target, int* v) Parameters target uint v int* glMultiTexCoord4ivARB(uint, int*) public static extern void glMultiTexCoord4ivARB(uint target, int* v) Parameters target uint v int* glMultiTexCoord4s(uint, short, short, short, short) public static extern void glMultiTexCoord4s(uint target, short s, short t, short r, short q) Parameters target uint s short t short r short q short glMultiTexCoord4sARB(uint, short, short, short, short) public static extern void glMultiTexCoord4sARB(uint target, short s, short t, short r, short q) Parameters target uint s short t short r short q short glMultiTexCoord4sv(uint, short*) public static extern void glMultiTexCoord4sv(uint target, short* v) Parameters target uint v short* glMultiTexCoord4svARB(uint, short*) public static extern void glMultiTexCoord4svARB(uint target, short* v) Parameters target uint v short* glMultiTexCoordP1ui(uint, uint, uint) public static extern void glMultiTexCoordP1ui(uint texture, uint type, uint coords) Parameters texture uint type uint coords uint glMultiTexCoordP1uiv(uint, uint, uint*) public static extern void glMultiTexCoordP1uiv(uint texture, uint type, uint* coords) Parameters texture uint type uint coords uint* glMultiTexCoordP2ui(uint, uint, uint) public static extern void glMultiTexCoordP2ui(uint texture, uint type, uint coords) Parameters texture uint type uint coords uint glMultiTexCoordP2uiv(uint, uint, uint*) public static extern void glMultiTexCoordP2uiv(uint texture, uint type, uint* coords) Parameters texture uint type uint coords uint* glMultiTexCoordP3ui(uint, uint, uint) public static extern void glMultiTexCoordP3ui(uint texture, uint type, uint coords) Parameters texture uint type uint coords uint glMultiTexCoordP3uiv(uint, uint, uint*) public static extern void glMultiTexCoordP3uiv(uint texture, uint type, uint* coords) Parameters texture uint type uint coords uint* glMultiTexCoordP4ui(uint, uint, uint) public static extern void glMultiTexCoordP4ui(uint texture, uint type, uint coords) Parameters texture uint type uint coords uint glMultiTexCoordP4uiv(uint, uint, uint*) public static extern void glMultiTexCoordP4uiv(uint texture, uint type, uint* coords) Parameters texture uint type uint coords uint* glMultiTexCoordPointerEXT(uint, int, uint, int, nint) public static extern void glMultiTexCoordPointerEXT(uint texunit, int size, uint type, int stride, nint pointer) Parameters texunit uint size int type uint stride int pointer nint glMultiTexEnvfEXT(uint, uint, uint, float) public static extern void glMultiTexEnvfEXT(uint texunit, uint target, uint pname, float param) Parameters texunit uint target uint pname uint param float glMultiTexEnvfvEXT(uint, uint, uint, float*) public static extern void glMultiTexEnvfvEXT(uint texunit, uint target, uint pname, float* @params) Parameters texunit uint target uint pname uint params float* glMultiTexEnviEXT(uint, uint, uint, int) public static extern void glMultiTexEnviEXT(uint texunit, uint target, uint pname, int param) Parameters texunit uint target uint pname uint param int glMultiTexEnvivEXT(uint, uint, uint, int*) public static extern void glMultiTexEnvivEXT(uint texunit, uint target, uint pname, int* @params) Parameters texunit uint target uint pname uint params int* glMultiTexGendEXT(uint, uint, uint, double) public static extern void glMultiTexGendEXT(uint texunit, uint coord, uint pname, double param) Parameters texunit uint coord uint pname uint param double glMultiTexGendvEXT(uint, uint, uint, double*) public static extern void glMultiTexGendvEXT(uint texunit, uint coord, uint pname, double* @params) Parameters texunit uint coord uint pname uint params double* glMultiTexGenfEXT(uint, uint, uint, float) public static extern void glMultiTexGenfEXT(uint texunit, uint coord, uint pname, float param) Parameters texunit uint coord uint pname uint param float glMultiTexGenfvEXT(uint, uint, uint, float*) public static extern void glMultiTexGenfvEXT(uint texunit, uint coord, uint pname, float* @params) Parameters texunit uint coord uint pname uint params float* glMultiTexGeniEXT(uint, uint, uint, int) public static extern void glMultiTexGeniEXT(uint texunit, uint coord, uint pname, int param) Parameters texunit uint coord uint pname uint param int glMultiTexGenivEXT(uint, uint, uint, int*) public static extern void glMultiTexGenivEXT(uint texunit, uint coord, uint pname, int* @params) Parameters texunit uint coord uint pname uint params int* glMultiTexImage1DEXT(uint, uint, int, uint, int, int, uint, uint, nint) public static extern void glMultiTexImage1DEXT(uint texunit, uint target, int level, uint internalformat, int width, int border, uint format, uint type, nint pixels) Parameters texunit uint target uint level int internalformat uint width int border int format uint type uint pixels nint glMultiTexImage2DEXT(uint, uint, int, uint, int, int, int, uint, uint, nint) public static extern void glMultiTexImage2DEXT(uint texunit, uint target, int level, uint internalformat, int width, int height, int border, uint format, uint type, nint pixels) Parameters texunit uint target uint level int internalformat uint width int height int border int format uint type uint pixels nint glMultiTexImage3DEXT(uint, uint, int, uint, int, int, int, int, uint, uint, nint) public static extern void glMultiTexImage3DEXT(uint texunit, uint target, int level, uint internalformat, int width, int height, int depth, int border, uint format, uint type, nint pixels) Parameters texunit uint target uint level int internalformat uint width int height int depth int border int format uint type uint pixels nint glMultiTexParameterIivEXT(uint, uint, uint, int*) public static extern void glMultiTexParameterIivEXT(uint texunit, uint target, uint pname, int* @params) Parameters texunit uint target uint pname uint params int* glMultiTexParameterIuivEXT(uint, uint, uint, uint*) public static extern void glMultiTexParameterIuivEXT(uint texunit, uint target, uint pname, uint* @params) Parameters texunit uint target uint pname uint params uint* glMultiTexParameterfEXT(uint, uint, uint, float) public static extern void glMultiTexParameterfEXT(uint texunit, uint target, uint pname, float param) Parameters texunit uint target uint pname uint param float glMultiTexParameterfvEXT(uint, uint, uint, float*) public static extern void glMultiTexParameterfvEXT(uint texunit, uint target, uint pname, float* @params) Parameters texunit uint target uint pname uint params float* glMultiTexParameteriEXT(uint, uint, uint, int) public static extern void glMultiTexParameteriEXT(uint texunit, uint target, uint pname, int param) Parameters texunit uint target uint pname uint param int glMultiTexParameterivEXT(uint, uint, uint, int*) public static extern void glMultiTexParameterivEXT(uint texunit, uint target, uint pname, int* @params) Parameters texunit uint target uint pname uint params int* glMultiTexRenderbufferEXT(uint, uint, uint) public static extern void glMultiTexRenderbufferEXT(uint texunit, uint target, uint renderbuffer) Parameters texunit uint target uint renderbuffer uint glMultiTexSubImage1DEXT(uint, uint, int, int, int, uint, uint, nint) public static extern void glMultiTexSubImage1DEXT(uint texunit, uint target, int level, int xoffset, int width, uint format, uint type, nint pixels) Parameters texunit uint target uint level int xoffset int width int format uint type uint pixels nint glMultiTexSubImage2DEXT(uint, uint, int, int, int, int, int, uint, uint, nint) public static extern void glMultiTexSubImage2DEXT(uint texunit, uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, nint pixels) Parameters texunit uint target uint level int xoffset int yoffset int width int height int format uint type uint pixels nint glMultiTexSubImage3DEXT(uint, uint, int, int, int, int, int, int, int, uint, uint, nint) public static extern void glMultiTexSubImage3DEXT(uint texunit, uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, nint pixels) Parameters texunit uint target uint level int xoffset int yoffset int zoffset int width int height int depth int format uint type uint pixels nint glNamedBufferDataEXT(uint, nint, nint, uint) public static extern void glNamedBufferDataEXT(uint buffer, nint size, nint data, uint usage) Parameters buffer uint size nint data nint usage uint glNamedBufferSubDataEXT(uint, nint, nint, nint) public static extern void glNamedBufferSubDataEXT(uint buffer, nint offset, nint size, nint data) Parameters buffer uint offset nint size nint data nint glNamedCopyBufferSubDataEXT(uint, uint, nint, nint, nint) public static extern void glNamedCopyBufferSubDataEXT(uint readBuffer, uint writeBuffer, nint readOffset, nint writeOffset, nint size) Parameters readBuffer uint writeBuffer uint readOffset nint writeOffset nint size nint glNamedFramebufferRenderbufferEXT(uint, uint, uint, uint) public static extern void glNamedFramebufferRenderbufferEXT(uint framebuffer, uint attachment, uint renderbuffertarget, uint renderbuffer) Parameters framebuffer uint attachment uint renderbuffertarget uint renderbuffer uint glNamedFramebufferTexture1DEXT(uint, uint, uint, uint, int) public static extern void glNamedFramebufferTexture1DEXT(uint framebuffer, uint attachment, uint textarget, uint texture, int level) Parameters framebuffer uint attachment uint textarget uint texture uint level int glNamedFramebufferTexture2DEXT(uint, uint, uint, uint, int) public static extern void glNamedFramebufferTexture2DEXT(uint framebuffer, uint attachment, uint textarget, uint texture, int level) Parameters framebuffer uint attachment uint textarget uint texture uint level int glNamedFramebufferTexture3DEXT(uint, uint, uint, uint, int, int) public static extern void glNamedFramebufferTexture3DEXT(uint framebuffer, uint attachment, uint textarget, uint texture, int level, int zoffset) Parameters framebuffer uint attachment uint textarget uint texture uint level int zoffset int glNamedFramebufferTextureEXT(uint, uint, uint, int) public static extern void glNamedFramebufferTextureEXT(uint framebuffer, uint attachment, uint texture, int level) Parameters framebuffer uint attachment uint texture uint level int glNamedFramebufferTextureFaceEXT(uint, uint, uint, int, uint) public static extern void glNamedFramebufferTextureFaceEXT(uint framebuffer, uint attachment, uint texture, int level, uint face) Parameters framebuffer uint attachment uint texture uint level int face uint glNamedFramebufferTextureLayerEXT(uint, uint, uint, int, int) public static extern void glNamedFramebufferTextureLayerEXT(uint framebuffer, uint attachment, uint texture, int level, int layer) Parameters framebuffer uint attachment uint texture uint level int layer int glNamedProgramLocalParameter4dEXT(uint, uint, uint, double, double, double, double) public static extern void glNamedProgramLocalParameter4dEXT(uint program, uint target, uint index, double x, double y, double z, double w) Parameters program uint target uint index uint x double y double z double w double glNamedProgramLocalParameter4dvEXT(uint, uint, uint, double*) public static extern void glNamedProgramLocalParameter4dvEXT(uint program, uint target, uint index, double* @params) Parameters program uint target uint index uint params double* glNamedProgramLocalParameter4fEXT(uint, uint, uint, float, float, float, float) public static extern void glNamedProgramLocalParameter4fEXT(uint program, uint target, uint index, float x, float y, float z, float w) Parameters program uint target uint index uint x float y float z float w float glNamedProgramLocalParameter4fvEXT(uint, uint, uint, float*) public static extern void glNamedProgramLocalParameter4fvEXT(uint program, uint target, uint index, float* @params) Parameters program uint target uint index uint params float* glNamedProgramLocalParameterI4iEXT(uint, uint, uint, int, int, int, int) public static extern void glNamedProgramLocalParameterI4iEXT(uint program, uint target, uint index, int x, int y, int z, int w) Parameters program uint target uint index uint x int y int z int w int glNamedProgramLocalParameterI4ivEXT(uint, uint, uint, int*) public static extern void glNamedProgramLocalParameterI4ivEXT(uint program, uint target, uint index, int* @params) Parameters program uint target uint index uint params int* glNamedProgramLocalParameterI4uiEXT(uint, uint, uint, uint, uint, uint, uint) public static extern void glNamedProgramLocalParameterI4uiEXT(uint program, uint target, uint index, uint x, uint y, uint z, uint w) Parameters program uint target uint index uint x uint y uint z uint w uint glNamedProgramLocalParameterI4uivEXT(uint, uint, uint, uint*) public static extern void glNamedProgramLocalParameterI4uivEXT(uint program, uint target, uint index, uint* @params) Parameters program uint target uint index uint params uint* glNamedProgramLocalParameters4fvEXT(uint, uint, uint, int, float*) public static extern void glNamedProgramLocalParameters4fvEXT(uint program, uint target, uint index, int count, float* @params) Parameters program uint target uint index uint count int params float* glNamedProgramLocalParametersI4ivEXT(uint, uint, uint, int, int*) public static extern void glNamedProgramLocalParametersI4ivEXT(uint program, uint target, uint index, int count, int* @params) Parameters program uint target uint index uint count int params int* glNamedProgramLocalParametersI4uivEXT(uint, uint, uint, int, uint*) public static extern void glNamedProgramLocalParametersI4uivEXT(uint program, uint target, uint index, int count, uint* @params) Parameters program uint target uint index uint count int params uint* glNamedProgramStringEXT(uint, uint, uint, int, nint) public static extern void glNamedProgramStringEXT(uint program, uint target, uint format, int len, nint @string) Parameters program uint target uint format uint len int string nint glNamedRenderbufferStorageEXT(uint, uint, int, int) public static extern void glNamedRenderbufferStorageEXT(uint renderbuffer, uint internalformat, int width, int height) Parameters renderbuffer uint internalformat uint width int height int glNamedRenderbufferStorageMultisampleCoverageEXT(uint, int, int, uint, int, int) public static extern void glNamedRenderbufferStorageMultisampleCoverageEXT(uint renderbuffer, int coverageSamples, int colorSamples, uint internalformat, int width, int height) Parameters renderbuffer uint coverageSamples int colorSamples int internalformat uint width int height int glNamedRenderbufferStorageMultisampleEXT(uint, int, uint, int, int) public static extern void glNamedRenderbufferStorageMultisampleEXT(uint renderbuffer, int samples, uint internalformat, int width, int height) Parameters renderbuffer uint samples int internalformat uint width int height int glNamedStringARB(uint, int, string, int, string) public static extern void glNamedStringARB(uint type, int namelen, string name, int stringlen, string @string) Parameters type uint namelen int name string stringlen int string string glNewList(uint, uint) public static extern void glNewList(uint list, uint mode) Parameters list uint mode uint glNewObjectBufferATI(int, nint, uint) public static extern int glNewObjectBufferATI(int size, nint pointer, uint usage) Parameters size int pointer nint usage uint Returns int glNormal3b(sbyte, sbyte, sbyte) public static extern void glNormal3b(sbyte nx, sbyte ny, sbyte nz) Parameters nx sbyte ny sbyte nz sbyte glNormal3bv(sbyte*) public static extern void glNormal3bv(sbyte* v) Parameters v sbyte* glNormal3d(double, double, double) public static extern void glNormal3d(double nx, double ny, double nz) Parameters nx double ny double nz double glNormal3dv(double*) public static extern void glNormal3dv(double* v) Parameters v double* glNormal3f(float, float, float) public static extern void glNormal3f(float nx, float ny, float nz) Parameters nx float ny float nz float glNormal3fVertex3fSUN(float, float, float, float, float, float) public static extern void glNormal3fVertex3fSUN(float nx, float ny, float nz, float x, float y, float z) Parameters nx float ny float nz float x float y float z float glNormal3fVertex3fvSUN(float*, float*) public static extern void glNormal3fVertex3fvSUN(float* n, float* v) Parameters n float* v float* glNormal3fv(float*) public static extern void glNormal3fv(float* v) Parameters v float* glNormal3hNV(ushort, ushort, ushort) public static extern void glNormal3hNV(ushort nx, ushort ny, ushort nz) Parameters nx ushort ny ushort nz ushort glNormal3hvNV(ushort*) public static extern void glNormal3hvNV(ushort* v) Parameters v ushort* glNormal3i(int, int, int) public static extern void glNormal3i(int nx, int ny, int nz) Parameters nx int ny int nz int glNormal3iv(int*) public static extern void glNormal3iv(int* v) Parameters v int* glNormal3s(short, short, short) public static extern void glNormal3s(short nx, short ny, short nz) Parameters nx short ny short nz short glNormal3sv(short*) public static extern void glNormal3sv(short* v) Parameters v short* glNormalFormatNV(uint, int) public static extern void glNormalFormatNV(uint type, int stride) Parameters type uint stride int glNormalP3ui(uint, uint) public static extern void glNormalP3ui(uint type, uint coords) Parameters type uint coords uint glNormalP3uiv(uint, uint*) public static extern void glNormalP3uiv(uint type, uint* coords) Parameters type uint coords uint* glNormalPointer(uint, int, nint) public static extern void glNormalPointer(uint type, int stride, nint pointer) Parameters type uint stride int pointer nint glNormalPointerEXT(uint, int, int, nint) public static extern void glNormalPointerEXT(uint type, int stride, int count, nint pointer) Parameters type uint stride int count int pointer nint glNormalPointerListIBM(uint, int, nint, int) public static extern void glNormalPointerListIBM(uint type, int stride, nint pointer, int ptrstride) Parameters type uint stride int pointer nint ptrstride int glNormalPointervINTEL(uint, nint) public static extern void glNormalPointervINTEL(uint type, nint pointer) Parameters type uint pointer nint glNormalStream3bATI(uint, sbyte, sbyte, sbyte) public static extern void glNormalStream3bATI(uint stream, sbyte nx, sbyte ny, sbyte nz) Parameters stream uint nx sbyte ny sbyte nz sbyte glNormalStream3bvATI(uint, sbyte*) public static extern void glNormalStream3bvATI(uint stream, sbyte* coords) Parameters stream uint coords sbyte* glNormalStream3dATI(uint, double, double, double) public static extern void glNormalStream3dATI(uint stream, double nx, double ny, double nz) Parameters stream uint nx double ny double nz double glNormalStream3dvATI(uint, double*) public static extern void glNormalStream3dvATI(uint stream, double* coords) Parameters stream uint coords double* glNormalStream3fATI(uint, float, float, float) public static extern void glNormalStream3fATI(uint stream, float nx, float ny, float nz) Parameters stream uint nx float ny float nz float glNormalStream3fvATI(uint, float*) public static extern void glNormalStream3fvATI(uint stream, float* coords) Parameters stream uint coords float* glNormalStream3iATI(uint, int, int, int) public static extern void glNormalStream3iATI(uint stream, int nx, int ny, int nz) Parameters stream uint nx int ny int nz int glNormalStream3ivATI(uint, int*) public static extern void glNormalStream3ivATI(uint stream, int* coords) Parameters stream uint coords int* glNormalStream3sATI(uint, short, short, short) public static extern void glNormalStream3sATI(uint stream, short nx, short ny, short nz) Parameters stream uint nx short ny short nz short glNormalStream3svATI(uint, short*) public static extern void glNormalStream3svATI(uint stream, short* coords) Parameters stream uint coords short* glObjectPurgeableAPPLE(uint, uint, uint) public static extern uint glObjectPurgeableAPPLE(uint objectType, uint name, uint option) Parameters objectType uint name uint option uint Returns uint glObjectUnpurgeableAPPLE(uint, uint, uint) public static extern uint glObjectUnpurgeableAPPLE(uint objectType, uint name, uint option) Parameters objectType uint name uint option uint Returns uint glOrtho(double, double, double, double, double, double) public static extern void glOrtho(double left, double right, double bottom, double top, double zNear, double zFar) Parameters left double right double bottom double top double zNear double zFar double glPassTexCoordATI(uint, uint, uint) public static extern void glPassTexCoordATI(uint dst, uint coord, uint swizzle) Parameters dst uint coord uint swizzle uint glPassThrough(float) public static extern void glPassThrough(float token) Parameters token float glPatchParameterfv(uint, float*) public static extern void glPatchParameterfv(uint pname, float* values) Parameters pname uint values float* glPatchParameteri(uint, int) public static extern void glPatchParameteri(uint pname, int value) Parameters pname uint value int glPauseTransformFeedback() public static extern void glPauseTransformFeedback() glPauseTransformFeedbackNV() public static extern void glPauseTransformFeedbackNV() glPixelDataRangeNV(uint, int, nint) public static extern void glPixelDataRangeNV(uint target, int length, nint pointer) Parameters target uint length int pointer nint glPixelMapfv(uint, int, float*) public static extern void glPixelMapfv(uint map, int mapsize, float* values) Parameters map uint mapsize int values float* glPixelMapuiv(uint, int, uint*) public static extern void glPixelMapuiv(uint map, int mapsize, uint* values) Parameters map uint mapsize int values uint* glPixelMapusv(uint, int, ushort*) public static extern void glPixelMapusv(uint map, int mapsize, ushort* values) Parameters map uint mapsize int values ushort* glPixelStoref(uint, float) public static extern void glPixelStoref(uint pname, float param) Parameters pname uint param float glPixelStorei(uint, int) public static extern void glPixelStorei(uint pname, int param) Parameters pname uint param int glPixelTexGenParameterfSGIS(uint, float) public static extern void glPixelTexGenParameterfSGIS(uint pname, float param) Parameters pname uint param float glPixelTexGenParameterfvSGIS(uint, float*) public static extern void glPixelTexGenParameterfvSGIS(uint pname, float* @params) Parameters pname uint params float* glPixelTexGenParameteriSGIS(uint, int) public static extern void glPixelTexGenParameteriSGIS(uint pname, int param) Parameters pname uint param int glPixelTexGenParameterivSGIS(uint, int*) public static extern void glPixelTexGenParameterivSGIS(uint pname, int* @params) Parameters pname uint params int* glPixelTexGenSGIX(uint) public static extern void glPixelTexGenSGIX(uint mode) Parameters mode uint glPixelTransferf(uint, float) public static extern void glPixelTransferf(uint pname, float param) Parameters pname uint param float glPixelTransferi(uint, int) public static extern void glPixelTransferi(uint pname, int param) Parameters pname uint param int glPixelTransformParameterfEXT(uint, uint, float) public static extern void glPixelTransformParameterfEXT(uint target, uint pname, float param) Parameters target uint pname uint param float glPixelTransformParameterfvEXT(uint, uint, float*) public static extern void glPixelTransformParameterfvEXT(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glPixelTransformParameteriEXT(uint, uint, int) public static extern void glPixelTransformParameteriEXT(uint target, uint pname, int param) Parameters target uint pname uint param int glPixelTransformParameterivEXT(uint, uint, int*) public static extern void glPixelTransformParameterivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glPixelZoom(float, float) public static extern void glPixelZoom(float xfactor, float yfactor) Parameters xfactor float yfactor float glPointParameterf(uint, float) public static extern void glPointParameterf(uint pname, float param) Parameters pname uint param float glPointParameterfARB(uint, float) public static extern void glPointParameterfARB(uint pname, float param) Parameters pname uint param float glPointParameterfEXT(uint, float) public static extern void glPointParameterfEXT(uint pname, float param) Parameters pname uint param float glPointParameterfSGIS(uint, float) public static extern void glPointParameterfSGIS(uint pname, float param) Parameters pname uint param float glPointParameterfv(uint, float*) public static extern void glPointParameterfv(uint pname, float* @params) Parameters pname uint params float* glPointParameterfvARB(uint, float*) public static extern void glPointParameterfvARB(uint pname, float* @params) Parameters pname uint params float* glPointParameterfvEXT(uint, float*) public static extern void glPointParameterfvEXT(uint pname, float* @params) Parameters pname uint params float* glPointParameterfvSGIS(uint, float*) public static extern void glPointParameterfvSGIS(uint pname, float* @params) Parameters pname uint params float* glPointParameteri(uint, int) public static extern void glPointParameteri(uint pname, int param) Parameters pname uint param int glPointParameteriNV(uint, int) public static extern void glPointParameteriNV(uint pname, int param) Parameters pname uint param int glPointParameteriv(uint, int*) public static extern void glPointParameteriv(uint pname, int* @params) Parameters pname uint params int* glPointParameterivNV(uint, int*) public static extern void glPointParameterivNV(uint pname, int* @params) Parameters pname uint params int* glPointSize(float) public static extern void glPointSize(float size) Parameters size float glPollAsyncSGIX(uint*) public static extern int glPollAsyncSGIX(uint* markerp) Parameters markerp uint* Returns int glPollInstrumentsSGIX(int*) public static extern int glPollInstrumentsSGIX(int* marker_p) Parameters marker_p int* Returns int glPolygonMode(uint, uint) public static extern void glPolygonMode(uint face, uint mode) Parameters face uint mode uint glPolygonOffset(float, float) public static extern void glPolygonOffset(float factor, float units) Parameters factor float units float glPolygonOffsetEXT(float, float) public static extern void glPolygonOffsetEXT(float factor, float bias) Parameters factor float bias float glPolygonStipple(byte*) public static extern void glPolygonStipple(byte* mask) Parameters mask byte* glPopAttrib() public static extern void glPopAttrib() glPopClientAttrib() public static extern void glPopClientAttrib() glPopMatrix() public static extern void glPopMatrix() glPopName() public static extern void glPopName() glPresentFrameDualFillNV(uint, ulong, uint, uint, uint, uint, uint, uint, uint, uint, uint, uint, uint) public static extern void glPresentFrameDualFillNV(uint video_slot, ulong minPresentTime, uint beginPresentTimeId, uint presentDurationId, uint type, uint target0, uint fill0, uint target1, uint fill1, uint target2, uint fill2, uint target3, uint fill3) Parameters video_slot uint minPresentTime ulong beginPresentTimeId uint presentDurationId uint type uint target0 uint fill0 uint target1 uint fill1 uint target2 uint fill2 uint target3 uint fill3 uint glPresentFrameKeyedNV(uint, ulong, uint, uint, uint, uint, uint, uint, uint, uint, uint) public static extern void glPresentFrameKeyedNV(uint video_slot, ulong minPresentTime, uint beginPresentTimeId, uint presentDurationId, uint type, uint target0, uint fill0, uint key0, uint target1, uint fill1, uint key1) Parameters video_slot uint minPresentTime ulong beginPresentTimeId uint presentDurationId uint type uint target0 uint fill0 uint key0 uint target1 uint fill1 uint key1 uint glPrimitiveRestartIndex(uint) public static extern void glPrimitiveRestartIndex(uint index) Parameters index uint glPrimitiveRestartIndexNV(uint) public static extern void glPrimitiveRestartIndexNV(uint index) Parameters index uint glPrimitiveRestartNV() public static extern void glPrimitiveRestartNV() glPrioritizeTextures(int, uint*, float*) public static extern void glPrioritizeTextures(int n, uint* textures, float* priorities) Parameters n int textures uint* priorities float* glPrioritizeTexturesEXT(int, uint*, float*) public static extern void glPrioritizeTexturesEXT(int n, uint* textures, float* priorities) Parameters n int textures uint* priorities float* glProgramBinary(uint, uint, nint, int) public static extern void glProgramBinary(uint program, uint binaryFormat, nint binary, int length) Parameters program uint binaryFormat uint binary nint length int glProgramBufferParametersIivNV(uint, uint, uint, int, int*) public static extern void glProgramBufferParametersIivNV(uint target, uint buffer, uint index, int count, int* @params) Parameters target uint buffer uint index uint count int params int* glProgramBufferParametersIuivNV(uint, uint, uint, int, uint*) public static extern void glProgramBufferParametersIuivNV(uint target, uint buffer, uint index, int count, uint* @params) Parameters target uint buffer uint index uint count int params uint* glProgramBufferParametersfvNV(uint, uint, uint, int, float*) public static extern void glProgramBufferParametersfvNV(uint target, uint buffer, uint index, int count, float* @params) Parameters target uint buffer uint index uint count int params float* glProgramEnvParameter4dARB(uint, uint, double, double, double, double) public static extern void glProgramEnvParameter4dARB(uint target, uint index, double x, double y, double z, double w) Parameters target uint index uint x double y double z double w double glProgramEnvParameter4dvARB(uint, uint, double*) public static extern void glProgramEnvParameter4dvARB(uint target, uint index, double* @params) Parameters target uint index uint params double* glProgramEnvParameter4fARB(uint, uint, float, float, float, float) public static extern void glProgramEnvParameter4fARB(uint target, uint index, float x, float y, float z, float w) Parameters target uint index uint x float y float z float w float glProgramEnvParameter4fvARB(uint, uint, float*) public static extern void glProgramEnvParameter4fvARB(uint target, uint index, float* @params) Parameters target uint index uint params float* glProgramEnvParameterI4iNV(uint, uint, int, int, int, int) public static extern void glProgramEnvParameterI4iNV(uint target, uint index, int x, int y, int z, int w) Parameters target uint index uint x int y int z int w int glProgramEnvParameterI4ivNV(uint, uint, int*) public static extern void glProgramEnvParameterI4ivNV(uint target, uint index, int* @params) Parameters target uint index uint params int* glProgramEnvParameterI4uiNV(uint, uint, uint, uint, uint, uint) public static extern void glProgramEnvParameterI4uiNV(uint target, uint index, uint x, uint y, uint z, uint w) Parameters target uint index uint x uint y uint z uint w uint glProgramEnvParameterI4uivNV(uint, uint, uint*) public static extern void glProgramEnvParameterI4uivNV(uint target, uint index, uint* @params) Parameters target uint index uint params uint* glProgramEnvParameters4fvEXT(uint, uint, int, float*) public static extern void glProgramEnvParameters4fvEXT(uint target, uint index, int count, float* @params) Parameters target uint index uint count int params float* glProgramEnvParametersI4ivNV(uint, uint, int, int*) public static extern void glProgramEnvParametersI4ivNV(uint target, uint index, int count, int* @params) Parameters target uint index uint count int params int* glProgramEnvParametersI4uivNV(uint, uint, int, uint*) public static extern void glProgramEnvParametersI4uivNV(uint target, uint index, int count, uint* @params) Parameters target uint index uint count int params uint* glProgramLocalParameter4dARB(uint, uint, double, double, double, double) public static extern void glProgramLocalParameter4dARB(uint target, uint index, double x, double y, double z, double w) Parameters target uint index uint x double y double z double w double glProgramLocalParameter4dvARB(uint, uint, double*) public static extern void glProgramLocalParameter4dvARB(uint target, uint index, double* @params) Parameters target uint index uint params double* glProgramLocalParameter4fARB(uint, uint, float, float, float, float) public static extern void glProgramLocalParameter4fARB(uint target, uint index, float x, float y, float z, float w) Parameters target uint index uint x float y float z float w float glProgramLocalParameter4fvARB(uint, uint, float*) public static extern void glProgramLocalParameter4fvARB(uint target, uint index, float* @params) Parameters target uint index uint params float* glProgramLocalParameterI4iNV(uint, uint, int, int, int, int) public static extern void glProgramLocalParameterI4iNV(uint target, uint index, int x, int y, int z, int w) Parameters target uint index uint x int y int z int w int glProgramLocalParameterI4ivNV(uint, uint, int*) public static extern void glProgramLocalParameterI4ivNV(uint target, uint index, int* @params) Parameters target uint index uint params int* glProgramLocalParameterI4uiNV(uint, uint, uint, uint, uint, uint) public static extern void glProgramLocalParameterI4uiNV(uint target, uint index, uint x, uint y, uint z, uint w) Parameters target uint index uint x uint y uint z uint w uint glProgramLocalParameterI4uivNV(uint, uint, uint*) public static extern void glProgramLocalParameterI4uivNV(uint target, uint index, uint* @params) Parameters target uint index uint params uint* glProgramLocalParameters4fvEXT(uint, uint, int, float*) public static extern void glProgramLocalParameters4fvEXT(uint target, uint index, int count, float* @params) Parameters target uint index uint count int params float* glProgramLocalParametersI4ivNV(uint, uint, int, int*) public static extern void glProgramLocalParametersI4ivNV(uint target, uint index, int count, int* @params) Parameters target uint index uint count int params int* glProgramLocalParametersI4uivNV(uint, uint, int, uint*) public static extern void glProgramLocalParametersI4uivNV(uint target, uint index, int count, uint* @params) Parameters target uint index uint count int params uint* glProgramNamedParameter4dNV(uint, int, byte*, double, double, double, double) public static extern void glProgramNamedParameter4dNV(uint id, int len, byte* name, double x, double y, double z, double w) Parameters id uint len int name byte* x double y double z double w double glProgramNamedParameter4dvNV(uint, int, byte*, double*) public static extern void glProgramNamedParameter4dvNV(uint id, int len, byte* name, double* v) Parameters id uint len int name byte* v double* glProgramNamedParameter4fNV(uint, int, byte*, float, float, float, float) public static extern void glProgramNamedParameter4fNV(uint id, int len, byte* name, float x, float y, float z, float w) Parameters id uint len int name byte* x float y float z float w float glProgramNamedParameter4fvNV(uint, int, byte*, float*) public static extern void glProgramNamedParameter4fvNV(uint id, int len, byte* name, float* v) Parameters id uint len int name byte* v float* glProgramParameter4dNV(uint, uint, double, double, double, double) public static extern void glProgramParameter4dNV(uint target, uint index, double x, double y, double z, double w) Parameters target uint index uint x double y double z double w double glProgramParameter4dvNV(uint, uint, double*) public static extern void glProgramParameter4dvNV(uint target, uint index, double* v) Parameters target uint index uint v double* glProgramParameter4fNV(uint, uint, float, float, float, float) public static extern void glProgramParameter4fNV(uint target, uint index, float x, float y, float z, float w) Parameters target uint index uint x float y float z float w float glProgramParameter4fvNV(uint, uint, float*) public static extern void glProgramParameter4fvNV(uint target, uint index, float* v) Parameters target uint index uint v float* glProgramParameteri(uint, uint, int) public static extern void glProgramParameteri(uint program, uint pname, int value) Parameters program uint pname uint value int glProgramParameteriARB(uint, uint, int) public static extern void glProgramParameteriARB(uint program, uint pname, int value) Parameters program uint pname uint value int glProgramParameteriEXT(uint, uint, int) public static extern void glProgramParameteriEXT(uint program, uint pname, int value) Parameters program uint pname uint value int glProgramParameters4dvNV(uint, uint, int, double*) public static extern void glProgramParameters4dvNV(uint target, uint index, int count, double* v) Parameters target uint index uint count int v double* glProgramParameters4fvNV(uint, uint, int, float*) public static extern void glProgramParameters4fvNV(uint target, uint index, int count, float* v) Parameters target uint index uint count int v float* glProgramStringARB(uint, uint, int, nint) public static extern void glProgramStringARB(uint target, uint format, int len, nint @string) Parameters target uint format uint len int string nint glProgramSubroutineParametersuivNV(uint, int, uint*) public static extern void glProgramSubroutineParametersuivNV(uint target, int count, uint* @params) Parameters target uint count int params uint* glProgramUniform1d(uint, int, double) public static extern void glProgramUniform1d(uint program, int location, double v0) Parameters program uint location int v0 double glProgramUniform1dEXT(uint, int, double) public static extern void glProgramUniform1dEXT(uint program, int location, double x) Parameters program uint location int x double glProgramUniform1dv(uint, int, int, double*) public static extern void glProgramUniform1dv(uint program, int location, int count, double* value) Parameters program uint location int count int value double* glProgramUniform1dvEXT(uint, int, int, double*) public static extern void glProgramUniform1dvEXT(uint program, int location, int count, double* value) Parameters program uint location int count int value double* glProgramUniform1f(uint, int, float) public static extern void glProgramUniform1f(uint program, int location, float v0) Parameters program uint location int v0 float glProgramUniform1fEXT(uint, int, float) public static extern void glProgramUniform1fEXT(uint program, int location, float v0) Parameters program uint location int v0 float glProgramUniform1fv(uint, int, int, float*) public static extern void glProgramUniform1fv(uint program, int location, int count, float* value) Parameters program uint location int count int value float* glProgramUniform1fvEXT(uint, int, int, float*) public static extern void glProgramUniform1fvEXT(uint program, int location, int count, float* value) Parameters program uint location int count int value float* glProgramUniform1i(uint, int, int) public static extern void glProgramUniform1i(uint program, int location, int v0) Parameters program uint location int v0 int glProgramUniform1i64NV(uint, int, long) public static extern void glProgramUniform1i64NV(uint program, int location, long x) Parameters program uint location int x long glProgramUniform1i64vNV(uint, int, int, long*) public static extern void glProgramUniform1i64vNV(uint program, int location, int count, long* value) Parameters program uint location int count int value long* glProgramUniform1iEXT(uint, int, int) public static extern void glProgramUniform1iEXT(uint program, int location, int v0) Parameters program uint location int v0 int glProgramUniform1iv(uint, int, int, int*) public static extern void glProgramUniform1iv(uint program, int location, int count, int* value) Parameters program uint location int count int value int* glProgramUniform1ivEXT(uint, int, int, int*) public static extern void glProgramUniform1ivEXT(uint program, int location, int count, int* value) Parameters program uint location int count int value int* glProgramUniform1ui(uint, int, uint) public static extern void glProgramUniform1ui(uint program, int location, uint v0) Parameters program uint location int v0 uint glProgramUniform1ui64NV(uint, int, ulong) public static extern void glProgramUniform1ui64NV(uint program, int location, ulong x) Parameters program uint location int x ulong glProgramUniform1ui64vNV(uint, int, int, ulong*) public static extern void glProgramUniform1ui64vNV(uint program, int location, int count, ulong* value) Parameters program uint location int count int value ulong* glProgramUniform1uiEXT(uint, int, uint) public static extern void glProgramUniform1uiEXT(uint program, int location, uint v0) Parameters program uint location int v0 uint glProgramUniform1uiv(uint, int, int, uint*) public static extern void glProgramUniform1uiv(uint program, int location, int count, uint* value) Parameters program uint location int count int value uint* glProgramUniform1uivEXT(uint, int, int, uint*) public static extern void glProgramUniform1uivEXT(uint program, int location, int count, uint* value) Parameters program uint location int count int value uint* glProgramUniform2d(uint, int, double, double) public static extern void glProgramUniform2d(uint program, int location, double v0, double v1) Parameters program uint location int v0 double v1 double glProgramUniform2dEXT(uint, int, double, double) public static extern void glProgramUniform2dEXT(uint program, int location, double x, double y) Parameters program uint location int x double y double glProgramUniform2dv(uint, int, int, double*) public static extern void glProgramUniform2dv(uint program, int location, int count, double* value) Parameters program uint location int count int value double* glProgramUniform2dvEXT(uint, int, int, double*) public static extern void glProgramUniform2dvEXT(uint program, int location, int count, double* value) Parameters program uint location int count int value double* glProgramUniform2f(uint, int, float, float) public static extern void glProgramUniform2f(uint program, int location, float v0, float v1) Parameters program uint location int v0 float v1 float glProgramUniform2fEXT(uint, int, float, float) public static extern void glProgramUniform2fEXT(uint program, int location, float v0, float v1) Parameters program uint location int v0 float v1 float glProgramUniform2fv(uint, int, int, float*) public static extern void glProgramUniform2fv(uint program, int location, int count, float* value) Parameters program uint location int count int value float* glProgramUniform2fvEXT(uint, int, int, float*) public static extern void glProgramUniform2fvEXT(uint program, int location, int count, float* value) Parameters program uint location int count int value float* glProgramUniform2i(uint, int, int, int) public static extern void glProgramUniform2i(uint program, int location, int v0, int v1) Parameters program uint location int v0 int v1 int glProgramUniform2i64NV(uint, int, long, long) public static extern void glProgramUniform2i64NV(uint program, int location, long x, long y) Parameters program uint location int x long y long glProgramUniform2i64vNV(uint, int, int, long*) public static extern void glProgramUniform2i64vNV(uint program, int location, int count, long* value) Parameters program uint location int count int value long* glProgramUniform2iEXT(uint, int, int, int) public static extern void glProgramUniform2iEXT(uint program, int location, int v0, int v1) Parameters program uint location int v0 int v1 int glProgramUniform2iv(uint, int, int, int*) public static extern void glProgramUniform2iv(uint program, int location, int count, int* value) Parameters program uint location int count int value int* glProgramUniform2ivEXT(uint, int, int, int*) public static extern void glProgramUniform2ivEXT(uint program, int location, int count, int* value) Parameters program uint location int count int value int* glProgramUniform2ui(uint, int, uint, uint) public static extern void glProgramUniform2ui(uint program, int location, uint v0, uint v1) Parameters program uint location int v0 uint v1 uint glProgramUniform2ui64NV(uint, int, ulong, ulong) public static extern void glProgramUniform2ui64NV(uint program, int location, ulong x, ulong y) Parameters program uint location int x ulong y ulong glProgramUniform2ui64vNV(uint, int, int, ulong*) public static extern void glProgramUniform2ui64vNV(uint program, int location, int count, ulong* value) Parameters program uint location int count int value ulong* glProgramUniform2uiEXT(uint, int, uint, uint) public static extern void glProgramUniform2uiEXT(uint program, int location, uint v0, uint v1) Parameters program uint location int v0 uint v1 uint glProgramUniform2uiv(uint, int, int, uint*) public static extern void glProgramUniform2uiv(uint program, int location, int count, uint* value) Parameters program uint location int count int value uint* glProgramUniform2uivEXT(uint, int, int, uint*) public static extern void glProgramUniform2uivEXT(uint program, int location, int count, uint* value) Parameters program uint location int count int value uint* glProgramUniform3d(uint, int, double, double, double) public static extern void glProgramUniform3d(uint program, int location, double v0, double v1, double v2) Parameters program uint location int v0 double v1 double v2 double glProgramUniform3dEXT(uint, int, double, double, double) public static extern void glProgramUniform3dEXT(uint program, int location, double x, double y, double z) Parameters program uint location int x double y double z double glProgramUniform3dv(uint, int, int, double*) public static extern void glProgramUniform3dv(uint program, int location, int count, double* value) Parameters program uint location int count int value double* glProgramUniform3dvEXT(uint, int, int, double*) public static extern void glProgramUniform3dvEXT(uint program, int location, int count, double* value) Parameters program uint location int count int value double* glProgramUniform3f(uint, int, float, float, float) public static extern void glProgramUniform3f(uint program, int location, float v0, float v1, float v2) Parameters program uint location int v0 float v1 float v2 float glProgramUniform3fEXT(uint, int, float, float, float) public static extern void glProgramUniform3fEXT(uint program, int location, float v0, float v1, float v2) Parameters program uint location int v0 float v1 float v2 float glProgramUniform3fv(uint, int, int, float*) public static extern void glProgramUniform3fv(uint program, int location, int count, float* value) Parameters program uint location int count int value float* glProgramUniform3fvEXT(uint, int, int, float*) public static extern void glProgramUniform3fvEXT(uint program, int location, int count, float* value) Parameters program uint location int count int value float* glProgramUniform3i(uint, int, int, int, int) public static extern void glProgramUniform3i(uint program, int location, int v0, int v1, int v2) Parameters program uint location int v0 int v1 int v2 int glProgramUniform3i64NV(uint, int, long, long, long) public static extern void glProgramUniform3i64NV(uint program, int location, long x, long y, long z) Parameters program uint location int x long y long z long glProgramUniform3i64vNV(uint, int, int, long*) public static extern void glProgramUniform3i64vNV(uint program, int location, int count, long* value) Parameters program uint location int count int value long* glProgramUniform3iEXT(uint, int, int, int, int) public static extern void glProgramUniform3iEXT(uint program, int location, int v0, int v1, int v2) Parameters program uint location int v0 int v1 int v2 int glProgramUniform3iv(uint, int, int, int*) public static extern void glProgramUniform3iv(uint program, int location, int count, int* value) Parameters program uint location int count int value int* glProgramUniform3ivEXT(uint, int, int, int*) public static extern void glProgramUniform3ivEXT(uint program, int location, int count, int* value) Parameters program uint location int count int value int* glProgramUniform3ui(uint, int, uint, uint, uint) public static extern void glProgramUniform3ui(uint program, int location, uint v0, uint v1, uint v2) Parameters program uint location int v0 uint v1 uint v2 uint glProgramUniform3ui64NV(uint, int, ulong, ulong, ulong) public static extern void glProgramUniform3ui64NV(uint program, int location, ulong x, ulong y, ulong z) Parameters program uint location int x ulong y ulong z ulong glProgramUniform3ui64vNV(uint, int, int, ulong*) public static extern void glProgramUniform3ui64vNV(uint program, int location, int count, ulong* value) Parameters program uint location int count int value ulong* glProgramUniform3uiEXT(uint, int, uint, uint, uint) public static extern void glProgramUniform3uiEXT(uint program, int location, uint v0, uint v1, uint v2) Parameters program uint location int v0 uint v1 uint v2 uint glProgramUniform3uiv(uint, int, int, uint*) public static extern void glProgramUniform3uiv(uint program, int location, int count, uint* value) Parameters program uint location int count int value uint* glProgramUniform3uivEXT(uint, int, int, uint*) public static extern void glProgramUniform3uivEXT(uint program, int location, int count, uint* value) Parameters program uint location int count int value uint* glProgramUniform4d(uint, int, double, double, double, double) public static extern void glProgramUniform4d(uint program, int location, double v0, double v1, double v2, double v3) Parameters program uint location int v0 double v1 double v2 double v3 double glProgramUniform4dEXT(uint, int, double, double, double, double) public static extern void glProgramUniform4dEXT(uint program, int location, double x, double y, double z, double w) Parameters program uint location int x double y double z double w double glProgramUniform4dv(uint, int, int, double*) public static extern void glProgramUniform4dv(uint program, int location, int count, double* value) Parameters program uint location int count int value double* glProgramUniform4dvEXT(uint, int, int, double*) public static extern void glProgramUniform4dvEXT(uint program, int location, int count, double* value) Parameters program uint location int count int value double* glProgramUniform4f(uint, int, float, float, float, float) public static extern void glProgramUniform4f(uint program, int location, float v0, float v1, float v2, float v3) Parameters program uint location int v0 float v1 float v2 float v3 float glProgramUniform4fEXT(uint, int, float, float, float, float) public static extern void glProgramUniform4fEXT(uint program, int location, float v0, float v1, float v2, float v3) Parameters program uint location int v0 float v1 float v2 float v3 float glProgramUniform4fv(uint, int, int, float*) public static extern void glProgramUniform4fv(uint program, int location, int count, float* value) Parameters program uint location int count int value float* glProgramUniform4fvEXT(uint, int, int, float*) public static extern void glProgramUniform4fvEXT(uint program, int location, int count, float* value) Parameters program uint location int count int value float* glProgramUniform4i(uint, int, int, int, int, int) public static extern void glProgramUniform4i(uint program, int location, int v0, int v1, int v2, int v3) Parameters program uint location int v0 int v1 int v2 int v3 int glProgramUniform4i64NV(uint, int, long, long, long, long) public static extern void glProgramUniform4i64NV(uint program, int location, long x, long y, long z, long w) Parameters program uint location int x long y long z long w long glProgramUniform4i64vNV(uint, int, int, long*) public static extern void glProgramUniform4i64vNV(uint program, int location, int count, long* value) Parameters program uint location int count int value long* glProgramUniform4iEXT(uint, int, int, int, int, int) public static extern void glProgramUniform4iEXT(uint program, int location, int v0, int v1, int v2, int v3) Parameters program uint location int v0 int v1 int v2 int v3 int glProgramUniform4iv(uint, int, int, int*) public static extern void glProgramUniform4iv(uint program, int location, int count, int* value) Parameters program uint location int count int value int* glProgramUniform4ivEXT(uint, int, int, int*) public static extern void glProgramUniform4ivEXT(uint program, int location, int count, int* value) Parameters program uint location int count int value int* glProgramUniform4ui(uint, int, uint, uint, uint, uint) public static extern void glProgramUniform4ui(uint program, int location, uint v0, uint v1, uint v2, uint v3) Parameters program uint location int v0 uint v1 uint v2 uint v3 uint glProgramUniform4ui64NV(uint, int, ulong, ulong, ulong, ulong) public static extern void glProgramUniform4ui64NV(uint program, int location, ulong x, ulong y, ulong z, ulong w) Parameters program uint location int x ulong y ulong z ulong w ulong glProgramUniform4ui64vNV(uint, int, int, ulong*) public static extern void glProgramUniform4ui64vNV(uint program, int location, int count, ulong* value) Parameters program uint location int count int value ulong* glProgramUniform4uiEXT(uint, int, uint, uint, uint, uint) public static extern void glProgramUniform4uiEXT(uint program, int location, uint v0, uint v1, uint v2, uint v3) Parameters program uint location int v0 uint v1 uint v2 uint v3 uint glProgramUniform4uiv(uint, int, int, uint*) public static extern void glProgramUniform4uiv(uint program, int location, int count, uint* value) Parameters program uint location int count int value uint* glProgramUniform4uivEXT(uint, int, int, uint*) public static extern void glProgramUniform4uivEXT(uint program, int location, int count, uint* value) Parameters program uint location int count int value uint* glProgramUniformMatrix2dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix2dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix2dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix2dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix2fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix2fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix2fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix2fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix2x3dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix2x3dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix2x3dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix2x3dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix2x3fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix2x3fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix2x3fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix2x3fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix2x4dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix2x4dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix2x4dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix2x4dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix2x4fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix2x4fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix2x4fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix2x4fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix3dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix3dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix3dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix3dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix3fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix3fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix3fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix3fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix3x2dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix3x2dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix3x2dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix3x2dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix3x2fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix3x2fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix3x2fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix3x2fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix3x4dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix3x4dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix3x4dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix3x4dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix3x4fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix3x4fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix3x4fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix3x4fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix4dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix4dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix4dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix4dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix4fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix4fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix4fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix4fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix4x2dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix4x2dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix4x2dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix4x2dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix4x2fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix4x2fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix4x2fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix4x2fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix4x3dv(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix4x3dv(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix4x3dvEXT(uint, int, int, bool, double*) public static extern void glProgramUniformMatrix4x3dvEXT(uint program, int location, int count, bool transpose, double* value) Parameters program uint location int count int transpose bool value double* glProgramUniformMatrix4x3fv(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix4x3fv(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformMatrix4x3fvEXT(uint, int, int, bool, float*) public static extern void glProgramUniformMatrix4x3fvEXT(uint program, int location, int count, bool transpose, float* value) Parameters program uint location int count int transpose bool value float* glProgramUniformui64NV(uint, int, ulong) public static extern void glProgramUniformui64NV(uint program, int location, ulong value) Parameters program uint location int value ulong glProgramUniformui64vNV(uint, int, int, ulong*) public static extern void glProgramUniformui64vNV(uint program, int location, int count, ulong* value) Parameters program uint location int count int value ulong* glProgramVertexLimitNV(uint, int) public static extern void glProgramVertexLimitNV(uint target, int limit) Parameters target uint limit int glProvokingVertex(uint) public static extern void glProvokingVertex(uint mode) Parameters mode uint glProvokingVertexEXT(uint) public static extern void glProvokingVertexEXT(uint mode) Parameters mode uint glPushAttrib(uint) public static extern void glPushAttrib(uint mask) Parameters mask uint glPushClientAttrib(uint) public static extern void glPushClientAttrib(uint mask) Parameters mask uint glPushClientAttribDefaultEXT(uint) public static extern void glPushClientAttribDefaultEXT(uint mask) Parameters mask uint glPushMatrix() public static extern void glPushMatrix() glPushName(uint) public static extern void glPushName(uint name) Parameters name uint glQueryCounter(uint, uint) public static extern void glQueryCounter(uint id, uint target) Parameters id uint target uint glRasterPos2d(double, double) public static extern void glRasterPos2d(double x, double y) Parameters x double y double glRasterPos2dv(double*) public static extern void glRasterPos2dv(double* v) Parameters v double* glRasterPos2f(float, float) public static extern void glRasterPos2f(float x, float y) Parameters x float y float glRasterPos2fv(float*) public static extern void glRasterPos2fv(float* v) Parameters v float* glRasterPos2i(int, int) public static extern void glRasterPos2i(int x, int y) Parameters x int y int glRasterPos2iv(int*) public static extern void glRasterPos2iv(int* v) Parameters v int* glRasterPos2s(short, short) public static extern void glRasterPos2s(short x, short y) Parameters x short y short glRasterPos2sv(short*) public static extern void glRasterPos2sv(short* v) Parameters v short* glRasterPos3d(double, double, double) public static extern void glRasterPos3d(double x, double y, double z) Parameters x double y double z double glRasterPos3dv(double*) public static extern void glRasterPos3dv(double* v) Parameters v double* glRasterPos3f(float, float, float) public static extern void glRasterPos3f(float x, float y, float z) Parameters x float y float z float glRasterPos3fv(float*) public static extern void glRasterPos3fv(float* v) Parameters v float* glRasterPos3i(int, int, int) public static extern void glRasterPos3i(int x, int y, int z) Parameters x int y int z int glRasterPos3iv(int*) public static extern void glRasterPos3iv(int* v) Parameters v int* glRasterPos3s(short, short, short) public static extern void glRasterPos3s(short x, short y, short z) Parameters x short y short z short glRasterPos3sv(short*) public static extern void glRasterPos3sv(short* v) Parameters v short* glRasterPos4d(double, double, double, double) public static extern void glRasterPos4d(double x, double y, double z, double w) Parameters x double y double z double w double glRasterPos4dv(double*) public static extern void glRasterPos4dv(double* v) Parameters v double* glRasterPos4f(float, float, float, float) public static extern void glRasterPos4f(float x, float y, float z, float w) Parameters x float y float z float w float glRasterPos4fv(float*) public static extern void glRasterPos4fv(float* v) Parameters v float* glRasterPos4i(int, int, int, int) public static extern void glRasterPos4i(int x, int y, int z, int w) Parameters x int y int z int w int glRasterPos4iv(int*) public static extern void glRasterPos4iv(int* v) Parameters v int* glRasterPos4s(short, short, short, short) public static extern void glRasterPos4s(short x, short y, short z, short w) Parameters x short y short z short w short glRasterPos4sv(short*) public static extern void glRasterPos4sv(short* v) Parameters v short* glReadBuffer(uint) public static extern void glReadBuffer(uint mode) Parameters mode uint glReadInstrumentsSGIX(int) public static extern void glReadInstrumentsSGIX(int marker) Parameters marker int glReadPixels(int, int, int, int, uint, uint, nint) public static extern void glReadPixels(int x, int y, int width, int height, uint format, uint type, nint pixels) Parameters x int y int width int height int format uint type uint pixels nint glReadnPixelsARB(int, int, int, int, uint, uint, int, nint) public static extern void glReadnPixelsARB(int x, int y, int width, int height, uint format, uint type, int bufSize, nint data) Parameters x int y int width int height int format uint type uint bufSize int data nint glRectd(double, double, double, double) public static extern void glRectd(double x1, double y1, double x2, double y2) Parameters x1 double y1 double x2 double y2 double glRectdv(double*, double*) public static extern void glRectdv(double* v1, double* v2) Parameters v1 double* v2 double* glRectf(float, float, float, float) public static extern void glRectf(float x1, float y1, float x2, float y2) Parameters x1 float y1 float x2 float y2 float glRectfv(float*, float*) public static extern void glRectfv(float* v1, float* v2) Parameters v1 float* v2 float* glRecti(int, int, int, int) public static extern void glRecti(int x1, int y1, int x2, int y2) Parameters x1 int y1 int x2 int y2 int glRectiv(int*, int*) public static extern void glRectiv(int* v1, int* v2) Parameters v1 int* v2 int* glRects(short, short, short, short) public static extern void glRects(short x1, short y1, short x2, short y2) Parameters x1 short y1 short x2 short y2 short glRectsv(short*, short*) public static extern void glRectsv(short* v1, short* v2) Parameters v1 short* v2 short* glReferencePlaneSGIX(double*) public static extern void glReferencePlaneSGIX(double* equation) Parameters equation double* glReleaseShaderCompiler() public static extern void glReleaseShaderCompiler() glRenderMode(uint) public static extern int glRenderMode(uint mode) Parameters mode uint Returns int glRenderbufferStorage(uint, uint, int, int) public static extern void glRenderbufferStorage(uint target, uint internalformat, int width, int height) Parameters target uint internalformat uint width int height int glRenderbufferStorageEXT(uint, uint, int, int) public static extern void glRenderbufferStorageEXT(uint target, uint internalformat, int width, int height) Parameters target uint internalformat uint width int height int glRenderbufferStorageMultisample(uint, int, uint, int, int) public static extern void glRenderbufferStorageMultisample(uint target, int samples, uint internalformat, int width, int height) Parameters target uint samples int internalformat uint width int height int glRenderbufferStorageMultisampleCoverageNV(uint, int, int, uint, int, int) public static extern void glRenderbufferStorageMultisampleCoverageNV(uint target, int coverageSamples, int colorSamples, uint internalformat, int width, int height) Parameters target uint coverageSamples int colorSamples int internalformat uint width int height int glRenderbufferStorageMultisampleEXT(uint, int, uint, int, int) public static extern void glRenderbufferStorageMultisampleEXT(uint target, int samples, uint internalformat, int width, int height) Parameters target uint samples int internalformat uint width int height int glReplacementCodePointerSUN(uint, int, nint) public static extern void glReplacementCodePointerSUN(uint type, int stride, nint pointer) Parameters type uint stride int pointer nint glReplacementCodeubSUN(byte) public static extern void glReplacementCodeubSUN(byte code) Parameters code byte glReplacementCodeubvSUN(byte*) public static extern void glReplacementCodeubvSUN(byte* code) Parameters code byte* glReplacementCodeuiColor3fVertex3fSUN(uint, float, float, float, float, float, float) public static extern void glReplacementCodeuiColor3fVertex3fSUN(uint rc, float r, float g, float b, float x, float y, float z) Parameters rc uint r float g float b float x float y float z float glReplacementCodeuiColor3fVertex3fvSUN(uint*, float*, float*) public static extern void glReplacementCodeuiColor3fVertex3fvSUN(uint* rc, float* c, float* v) Parameters rc uint* c float* v float* glReplacementCodeuiColor4fNormal3fVertex3fSUN(uint, float, float, float, float, float, float, float, float, float, float) public static extern void glReplacementCodeuiColor4fNormal3fVertex3fSUN(uint rc, float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z) Parameters rc uint r float g float b float a float nx float ny float nz float x float y float z float glReplacementCodeuiColor4fNormal3fVertex3fvSUN(uint*, float*, float*, float*) public static extern void glReplacementCodeuiColor4fNormal3fVertex3fvSUN(uint* rc, float* c, float* n, float* v) Parameters rc uint* c float* n float* v float* glReplacementCodeuiColor4ubVertex3fSUN(uint, byte, byte, byte, byte, float, float, float) public static extern void glReplacementCodeuiColor4ubVertex3fSUN(uint rc, byte r, byte g, byte b, byte a, float x, float y, float z) Parameters rc uint r byte g byte b byte a byte x float y float z float glReplacementCodeuiColor4ubVertex3fvSUN(uint*, byte*, float*) public static extern void glReplacementCodeuiColor4ubVertex3fvSUN(uint* rc, byte* c, float* v) Parameters rc uint* c byte* v float* glReplacementCodeuiNormal3fVertex3fSUN(uint, float, float, float, float, float, float) public static extern void glReplacementCodeuiNormal3fVertex3fSUN(uint rc, float nx, float ny, float nz, float x, float y, float z) Parameters rc uint nx float ny float nz float x float y float z float glReplacementCodeuiNormal3fVertex3fvSUN(uint*, float*, float*) public static extern void glReplacementCodeuiNormal3fVertex3fvSUN(uint* rc, float* n, float* v) Parameters rc uint* n float* v float* glReplacementCodeuiSUN(uint) public static extern void glReplacementCodeuiSUN(uint code) Parameters code uint glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(uint, float, float, float, float, float, float, float, float, float, float, float, float) public static extern void glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(uint rc, float s, float t, float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z) Parameters rc uint s float t float r float g float b float a float nx float ny float nz float x float y float z float glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(uint*, float*, float*, float*, float*) public static extern void glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(uint* rc, float* tc, float* c, float* n, float* v) Parameters rc uint* tc float* c float* n float* v float* glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(uint, float, float, float, float, float, float, float, float) public static extern void glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(uint rc, float s, float t, float nx, float ny, float nz, float x, float y, float z) Parameters rc uint s float t float nx float ny float nz float x float y float z float glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(uint*, float*, float*, float*) public static extern void glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(uint* rc, float* tc, float* n, float* v) Parameters rc uint* tc float* n float* v float* glReplacementCodeuiTexCoord2fVertex3fSUN(uint, float, float, float, float, float) public static extern void glReplacementCodeuiTexCoord2fVertex3fSUN(uint rc, float s, float t, float x, float y, float z) Parameters rc uint s float t float x float y float z float glReplacementCodeuiTexCoord2fVertex3fvSUN(uint*, float*, float*) public static extern void glReplacementCodeuiTexCoord2fVertex3fvSUN(uint* rc, float* tc, float* v) Parameters rc uint* tc float* v float* glReplacementCodeuiVertex3fSUN(uint, float, float, float) public static extern void glReplacementCodeuiVertex3fSUN(uint rc, float x, float y, float z) Parameters rc uint x float y float z float glReplacementCodeuiVertex3fvSUN(uint*, float*) public static extern void glReplacementCodeuiVertex3fvSUN(uint* rc, float* v) Parameters rc uint* v float* glReplacementCodeuivSUN(uint*) public static extern void glReplacementCodeuivSUN(uint* code) Parameters code uint* glReplacementCodeusSUN(ushort) public static extern void glReplacementCodeusSUN(ushort code) Parameters code ushort glReplacementCodeusvSUN(ushort*) public static extern void glReplacementCodeusvSUN(ushort* code) Parameters code ushort* glRequestResidentProgramsNV(int, uint*) public static extern void glRequestResidentProgramsNV(int n, uint* programs) Parameters n int programs uint* glResetHistogram(uint) public static extern void glResetHistogram(uint target) Parameters target uint glResetHistogramEXT(uint) public static extern void glResetHistogramEXT(uint target) Parameters target uint glResetMinmax(uint) public static extern void glResetMinmax(uint target) Parameters target uint glResetMinmaxEXT(uint) public static extern void glResetMinmaxEXT(uint target) Parameters target uint glResizeBuffersMESA() public static extern void glResizeBuffersMESA() glResumeTransformFeedback() public static extern void glResumeTransformFeedback() glResumeTransformFeedbackNV() public static extern void glResumeTransformFeedbackNV() glRotated(double, double, double, double) public static extern void glRotated(double angle, double x, double y, double z) Parameters angle double x double y double z double glRotatef(float, float, float, float) public static extern void glRotatef(float angle, float x, float y, float z) Parameters angle float x float y float z float glSampleCoverage(float, bool) public static extern void glSampleCoverage(float value, bool invert) Parameters value float invert bool glSampleCoverageARB(float, bool) public static extern void glSampleCoverageARB(float value, bool invert) Parameters value float invert bool glSampleMapATI(uint, uint, uint) public static extern void glSampleMapATI(uint dst, uint interp, uint swizzle) Parameters dst uint interp uint swizzle uint glSampleMaskEXT(float, bool) public static extern void glSampleMaskEXT(float value, bool invert) Parameters value float invert bool glSampleMaskIndexedNV(uint, uint) public static extern void glSampleMaskIndexedNV(uint index, uint mask) Parameters index uint mask uint glSampleMaskSGIS(float, bool) public static extern void glSampleMaskSGIS(float value, bool invert) Parameters value float invert bool glSampleMaski(uint, uint) public static extern void glSampleMaski(uint index, uint mask) Parameters index uint mask uint glSamplePatternEXT(uint) public static extern void glSamplePatternEXT(uint pattern) Parameters pattern uint glSamplePatternSGIS(uint) public static extern void glSamplePatternSGIS(uint pattern) Parameters pattern uint glSamplerParameterIiv(uint, uint, int*) public static extern void glSamplerParameterIiv(uint sampler, uint pname, int* param) Parameters sampler uint pname uint param int* glSamplerParameterIuiv(uint, uint, uint*) public static extern void glSamplerParameterIuiv(uint sampler, uint pname, uint* param) Parameters sampler uint pname uint param uint* glSamplerParameterf(uint, uint, float) public static extern void glSamplerParameterf(uint sampler, uint pname, float param) Parameters sampler uint pname uint param float glSamplerParameterfv(uint, uint, float*) public static extern void glSamplerParameterfv(uint sampler, uint pname, float* param) Parameters sampler uint pname uint param float* glSamplerParameteri(uint, uint, int) public static extern void glSamplerParameteri(uint sampler, uint pname, int param) Parameters sampler uint pname uint param int glSamplerParameteriv(uint, uint, int*) public static extern void glSamplerParameteriv(uint sampler, uint pname, int* param) Parameters sampler uint pname uint param int* glScaled(double, double, double) public static extern void glScaled(double x, double y, double z) Parameters x double y double z double glScalef(float, float, float) public static extern void glScalef(float x, float y, float z) Parameters x float y float z float glScissor(int, int, int, int) public static extern void glScissor(int x, int y, int width, int height) Parameters x int y int width int height int glScissorArrayv(uint, int, int*) public static extern void glScissorArrayv(uint first, int count, int* v) Parameters first uint count int v int* glScissorIndexed(uint, int, int, int, int) public static extern void glScissorIndexed(uint index, int left, int bottom, int width, int height) Parameters index uint left int bottom int width int height int glScissorIndexedv(uint, int*) public static extern void glScissorIndexedv(uint index, int* v) Parameters index uint v int* glSecondaryColor3b(sbyte, sbyte, sbyte) public static extern void glSecondaryColor3b(sbyte red, sbyte green, sbyte blue) Parameters red sbyte green sbyte blue sbyte glSecondaryColor3bEXT(sbyte, sbyte, sbyte) public static extern void glSecondaryColor3bEXT(sbyte red, sbyte green, sbyte blue) Parameters red sbyte green sbyte blue sbyte glSecondaryColor3bv(sbyte*) public static extern void glSecondaryColor3bv(sbyte* v) Parameters v sbyte* glSecondaryColor3bvEXT(sbyte*) public static extern void glSecondaryColor3bvEXT(sbyte* v) Parameters v sbyte* glSecondaryColor3d(double, double, double) public static extern void glSecondaryColor3d(double red, double green, double blue) Parameters red double green double blue double glSecondaryColor3dEXT(double, double, double) public static extern void glSecondaryColor3dEXT(double red, double green, double blue) Parameters red double green double blue double glSecondaryColor3dv(double*) public static extern void glSecondaryColor3dv(double* v) Parameters v double* glSecondaryColor3dvEXT(double*) public static extern void glSecondaryColor3dvEXT(double* v) Parameters v double* glSecondaryColor3f(float, float, float) public static extern void glSecondaryColor3f(float red, float green, float blue) Parameters red float green float blue float glSecondaryColor3fEXT(float, float, float) public static extern void glSecondaryColor3fEXT(float red, float green, float blue) Parameters red float green float blue float glSecondaryColor3fv(float*) public static extern void glSecondaryColor3fv(float* v) Parameters v float* glSecondaryColor3fvEXT(float*) public static extern void glSecondaryColor3fvEXT(float* v) Parameters v float* glSecondaryColor3hNV(ushort, ushort, ushort) public static extern void glSecondaryColor3hNV(ushort red, ushort green, ushort blue) Parameters red ushort green ushort blue ushort glSecondaryColor3hvNV(ushort*) public static extern void glSecondaryColor3hvNV(ushort* v) Parameters v ushort* glSecondaryColor3i(int, int, int) public static extern void glSecondaryColor3i(int red, int green, int blue) Parameters red int green int blue int glSecondaryColor3iEXT(int, int, int) public static extern void glSecondaryColor3iEXT(int red, int green, int blue) Parameters red int green int blue int glSecondaryColor3iv(int*) public static extern void glSecondaryColor3iv(int* v) Parameters v int* glSecondaryColor3ivEXT(int*) public static extern void glSecondaryColor3ivEXT(int* v) Parameters v int* glSecondaryColor3s(short, short, short) public static extern void glSecondaryColor3s(short red, short green, short blue) Parameters red short green short blue short glSecondaryColor3sEXT(short, short, short) public static extern void glSecondaryColor3sEXT(short red, short green, short blue) Parameters red short green short blue short glSecondaryColor3sv(short*) public static extern void glSecondaryColor3sv(short* v) Parameters v short* glSecondaryColor3svEXT(short*) public static extern void glSecondaryColor3svEXT(short* v) Parameters v short* glSecondaryColor3ub(byte, byte, byte) public static extern void glSecondaryColor3ub(byte red, byte green, byte blue) Parameters red byte green byte blue byte glSecondaryColor3ubEXT(byte, byte, byte) public static extern void glSecondaryColor3ubEXT(byte red, byte green, byte blue) Parameters red byte green byte blue byte glSecondaryColor3ubv(byte*) public static extern void glSecondaryColor3ubv(byte* v) Parameters v byte* glSecondaryColor3ubvEXT(byte*) public static extern void glSecondaryColor3ubvEXT(byte* v) Parameters v byte* glSecondaryColor3ui(uint, uint, uint) public static extern void glSecondaryColor3ui(uint red, uint green, uint blue) Parameters red uint green uint blue uint glSecondaryColor3uiEXT(uint, uint, uint) public static extern void glSecondaryColor3uiEXT(uint red, uint green, uint blue) Parameters red uint green uint blue uint glSecondaryColor3uiv(uint*) public static extern void glSecondaryColor3uiv(uint* v) Parameters v uint* glSecondaryColor3uivEXT(uint*) public static extern void glSecondaryColor3uivEXT(uint* v) Parameters v uint* glSecondaryColor3us(ushort, ushort, ushort) public static extern void glSecondaryColor3us(ushort red, ushort green, ushort blue) Parameters red ushort green ushort blue ushort glSecondaryColor3usEXT(ushort, ushort, ushort) public static extern void glSecondaryColor3usEXT(ushort red, ushort green, ushort blue) Parameters red ushort green ushort blue ushort glSecondaryColor3usv(ushort*) public static extern void glSecondaryColor3usv(ushort* v) Parameters v ushort* glSecondaryColor3usvEXT(ushort*) public static extern void glSecondaryColor3usvEXT(ushort* v) Parameters v ushort* glSecondaryColorFormatNV(int, uint, int) public static extern void glSecondaryColorFormatNV(int size, uint type, int stride) Parameters size int type uint stride int glSecondaryColorP3ui(uint, uint) public static extern void glSecondaryColorP3ui(uint type, uint color) Parameters type uint color uint glSecondaryColorP3uiv(uint, uint*) public static extern void glSecondaryColorP3uiv(uint type, uint* color) Parameters type uint color uint* glSecondaryColorPointer(int, uint, int, nint) public static extern void glSecondaryColorPointer(int size, uint type, int stride, nint pointer) Parameters size int type uint stride int pointer nint glSecondaryColorPointerEXT(int, uint, int, nint) public static extern void glSecondaryColorPointerEXT(int size, uint type, int stride, nint pointer) Parameters size int type uint stride int pointer nint glSecondaryColorPointerListIBM(int, uint, int, nint, int) public static extern void glSecondaryColorPointerListIBM(int size, uint type, int stride, nint pointer, int ptrstride) Parameters size int type uint stride int pointer nint ptrstride int glSelectBuffer(int, uint*) public static extern void glSelectBuffer(int size, uint* buffer) Parameters size int buffer uint* glSelectPerfMonitorCountersAMD(uint, bool, uint, int, uint*) public static extern void glSelectPerfMonitorCountersAMD(uint monitor, bool enable, uint group, int numCounters, uint* counterList) Parameters monitor uint enable bool group uint numCounters int counterList uint* glSeparableFilter2D(uint, uint, int, int, uint, uint, nint, nint) public static extern void glSeparableFilter2D(uint target, uint internalformat, int width, int height, uint format, uint type, nint row, nint column) Parameters target uint internalformat uint width int height int format uint type uint row nint column nint glSeparableFilter2DEXT(uint, uint, int, int, uint, uint, nint, nint) public static extern void glSeparableFilter2DEXT(uint target, uint internalformat, int width, int height, uint format, uint type, nint row, nint column) Parameters target uint internalformat uint width int height int format uint type uint row nint column nint glSetFenceAPPLE(uint) public static extern void glSetFenceAPPLE(uint fence) Parameters fence uint glSetFenceNV(uint, uint) public static extern void glSetFenceNV(uint fence, uint condition) Parameters fence uint condition uint glSetFragmentShaderConstantATI(uint, float*) public static extern void glSetFragmentShaderConstantATI(uint dst, float* value) Parameters dst uint value float* glSetInvariantEXT(uint, uint, nint) public static extern void glSetInvariantEXT(uint id, uint type, nint addr) Parameters id uint type uint addr nint glSetLocalConstantEXT(uint, uint, nint) public static extern void glSetLocalConstantEXT(uint id, uint type, nint addr) Parameters id uint type uint addr nint glSetMultisamplefvAMD(uint, uint, float*) public static extern void glSetMultisamplefvAMD(uint pname, uint index, float* val) Parameters pname uint index uint val float* glShadeModel(uint) public static extern void glShadeModel(uint mode) Parameters mode uint glShaderBinary(int, uint*, uint, nint, int) public static extern void glShaderBinary(int count, uint* shaders, uint binaryformat, nint binary, int length) Parameters count int shaders uint* binaryformat uint binary nint length int glShaderOp1EXT(uint, uint, uint) public static extern void glShaderOp1EXT(uint op, uint res, uint arg1) Parameters op uint res uint arg1 uint glShaderOp2EXT(uint, uint, uint, uint) public static extern void glShaderOp2EXT(uint op, uint res, uint arg1, uint arg2) Parameters op uint res uint arg1 uint arg2 uint glShaderOp3EXT(uint, uint, uint, uint, uint) public static extern void glShaderOp3EXT(uint op, uint res, uint arg1, uint arg2, uint arg3) Parameters op uint res uint arg1 uint arg2 uint arg3 uint glShaderSource(uint, int, string[], int*) public static extern void glShaderSource(uint shader, int count, string[] @string, int* length) Parameters shader uint count int string string[] length int* glShaderSourceARB(uint, int, string[], int*) public static extern void glShaderSourceARB(uint shaderObj, int count, string[] @string, int* length) Parameters shaderObj uint count int string string[] length int* glSharpenTexFuncSGIS(uint, int, float*) public static extern void glSharpenTexFuncSGIS(uint target, int n, float* points) Parameters target uint n int points float* glSpriteParameterfSGIX(uint, float) public static extern void glSpriteParameterfSGIX(uint pname, float param) Parameters pname uint param float glSpriteParameterfvSGIX(uint, float*) public static extern void glSpriteParameterfvSGIX(uint pname, float* @params) Parameters pname uint params float* glSpriteParameteriSGIX(uint, int) public static extern void glSpriteParameteriSGIX(uint pname, int param) Parameters pname uint param int glSpriteParameterivSGIX(uint, int*) public static extern void glSpriteParameterivSGIX(uint pname, int* @params) Parameters pname uint params int* glStartInstrumentsSGIX() public static extern void glStartInstrumentsSGIX() glStencilClearTagEXT(int, uint) public static extern void glStencilClearTagEXT(int stencilTagBits, uint stencilClearTag) Parameters stencilTagBits int stencilClearTag uint glStencilFunc(uint, int, uint) public static extern void glStencilFunc(uint func, int @ref, uint mask) Parameters func uint ref int mask uint glStencilFuncSeparate(uint, uint, int, uint) public static extern void glStencilFuncSeparate(uint face, uint func, int @ref, uint mask) Parameters face uint func uint ref int mask uint glStencilFuncSeparateATI(uint, uint, int, uint) public static extern void glStencilFuncSeparateATI(uint frontfunc, uint backfunc, int @ref, uint mask) Parameters frontfunc uint backfunc uint ref int mask uint glStencilMask(uint) public static extern void glStencilMask(uint mask) Parameters mask uint glStencilMaskSeparate(uint, uint) public static extern void glStencilMaskSeparate(uint face, uint mask) Parameters face uint mask uint glStencilOp(uint, uint, uint) public static extern void glStencilOp(uint fail, uint zfail, uint zpass) Parameters fail uint zfail uint zpass uint glStencilOpSeparate(uint, uint, uint, uint) public static extern void glStencilOpSeparate(uint face, uint sfail, uint dpfail, uint dppass) Parameters face uint sfail uint dpfail uint dppass uint glStencilOpSeparateATI(uint, uint, uint, uint) public static extern void glStencilOpSeparateATI(uint face, uint sfail, uint dpfail, uint dppass) Parameters face uint sfail uint dpfail uint dppass uint glStopInstrumentsSGIX(int) public static extern void glStopInstrumentsSGIX(int marker) Parameters marker int glStringMarkerGREMEDY(int, nint) public static extern void glStringMarkerGREMEDY(int len, nint @string) Parameters len int string nint glSwizzleEXT(uint, uint, uint, uint, uint, uint) public static extern void glSwizzleEXT(uint res, uint @in, uint outX, uint outY, uint outZ, uint outW) Parameters res uint in uint outX uint outY uint outZ uint outW uint glTagSampleBufferSGIX() public static extern void glTagSampleBufferSGIX() glTangent3bEXT(sbyte, sbyte, sbyte) public static extern void glTangent3bEXT(sbyte tx, sbyte ty, sbyte tz) Parameters tx sbyte ty sbyte tz sbyte glTangent3bvEXT(sbyte*) public static extern void glTangent3bvEXT(sbyte* v) Parameters v sbyte* glTangent3dEXT(double, double, double) public static extern void glTangent3dEXT(double tx, double ty, double tz) Parameters tx double ty double tz double glTangent3dvEXT(double*) public static extern void glTangent3dvEXT(double* v) Parameters v double* glTangent3fEXT(float, float, float) public static extern void glTangent3fEXT(float tx, float ty, float tz) Parameters tx float ty float tz float glTangent3fvEXT(float*) public static extern void glTangent3fvEXT(float* v) Parameters v float* glTangent3iEXT(int, int, int) public static extern void glTangent3iEXT(int tx, int ty, int tz) Parameters tx int ty int tz int glTangent3ivEXT(int*) public static extern void glTangent3ivEXT(int* v) Parameters v int* glTangent3sEXT(short, short, short) public static extern void glTangent3sEXT(short tx, short ty, short tz) Parameters tx short ty short tz short glTangent3svEXT(short*) public static extern void glTangent3svEXT(short* v) Parameters v short* glTangentPointerEXT(uint, int, nint) public static extern void glTangentPointerEXT(uint type, int stride, nint pointer) Parameters type uint stride int pointer nint glTbufferMask3DFX(uint) public static extern void glTbufferMask3DFX(uint mask) Parameters mask uint glTessellationFactorAMD(float) public static extern void glTessellationFactorAMD(float factor) Parameters factor float glTessellationModeAMD(uint) public static extern void glTessellationModeAMD(uint mode) Parameters mode uint glTestFenceAPPLE(uint) public static extern int glTestFenceAPPLE(uint fence) Parameters fence uint Returns int glTestFenceNV(uint) public static extern int glTestFenceNV(uint fence) Parameters fence uint Returns int glTestObjectAPPLE(uint, uint) public static extern int glTestObjectAPPLE(uint @object, uint name) Parameters object uint name uint Returns int glTexBuffer(uint, uint, uint) public static extern void glTexBuffer(uint target, uint internalformat, uint buffer) Parameters target uint internalformat uint buffer uint glTexBufferARB(uint, uint, uint) public static extern void glTexBufferARB(uint target, uint internalformat, uint buffer) Parameters target uint internalformat uint buffer uint glTexBufferEXT(uint, uint, uint) public static extern void glTexBufferEXT(uint target, uint internalformat, uint buffer) Parameters target uint internalformat uint buffer uint glTexBumpParameterfvATI(uint, float*) public static extern void glTexBumpParameterfvATI(uint pname, float* param) Parameters pname uint param float* glTexBumpParameterivATI(uint, int*) public static extern void glTexBumpParameterivATI(uint pname, int* param) Parameters pname uint param int* glTexCoord1d(double) public static extern void glTexCoord1d(double s) Parameters s double glTexCoord1dv(double*) public static extern void glTexCoord1dv(double* v) Parameters v double* glTexCoord1f(float) public static extern void glTexCoord1f(float s) Parameters s float glTexCoord1fv(float*) public static extern void glTexCoord1fv(float* v) Parameters v float* glTexCoord1hNV(ushort) public static extern void glTexCoord1hNV(ushort s) Parameters s ushort glTexCoord1hvNV(ushort*) public static extern void glTexCoord1hvNV(ushort* v) Parameters v ushort* glTexCoord1i(int) public static extern void glTexCoord1i(int s) Parameters s int glTexCoord1iv(int*) public static extern void glTexCoord1iv(int* v) Parameters v int* glTexCoord1s(short) public static extern void glTexCoord1s(short s) Parameters s short glTexCoord1sv(short*) public static extern void glTexCoord1sv(short* v) Parameters v short* glTexCoord2d(double, double) public static extern void glTexCoord2d(double s, double t) Parameters s double t double glTexCoord2dv(double*) public static extern void glTexCoord2dv(double* v) Parameters v double* glTexCoord2f(float, float) public static extern void glTexCoord2f(float s, float t) Parameters s float t float glTexCoord2fColor3fVertex3fSUN(float, float, float, float, float, float, float, float) public static extern void glTexCoord2fColor3fVertex3fSUN(float s, float t, float r, float g, float b, float x, float y, float z) Parameters s float t float r float g float b float x float y float z float glTexCoord2fColor3fVertex3fvSUN(float*, float*, float*) public static extern void glTexCoord2fColor3fVertex3fvSUN(float* tc, float* c, float* v) Parameters tc float* c float* v float* glTexCoord2fColor4fNormal3fVertex3fSUN(float, float, float, float, float, float, float, float, float, float, float, float) public static extern void glTexCoord2fColor4fNormal3fVertex3fSUN(float s, float t, float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z) Parameters s float t float r float g float b float a float nx float ny float nz float x float y float z float glTexCoord2fColor4fNormal3fVertex3fvSUN(float*, float*, float*, float*) public static extern void glTexCoord2fColor4fNormal3fVertex3fvSUN(float* tc, float* c, float* n, float* v) Parameters tc float* c float* n float* v float* glTexCoord2fColor4ubVertex3fSUN(float, float, byte, byte, byte, byte, float, float, float) public static extern void glTexCoord2fColor4ubVertex3fSUN(float s, float t, byte r, byte g, byte b, byte a, float x, float y, float z) Parameters s float t float r byte g byte b byte a byte x float y float z float glTexCoord2fColor4ubVertex3fvSUN(float*, byte*, float*) public static extern void glTexCoord2fColor4ubVertex3fvSUN(float* tc, byte* c, float* v) Parameters tc float* c byte* v float* glTexCoord2fNormal3fVertex3fSUN(float, float, float, float, float, float, float, float) public static extern void glTexCoord2fNormal3fVertex3fSUN(float s, float t, float nx, float ny, float nz, float x, float y, float z) Parameters s float t float nx float ny float nz float x float y float z float glTexCoord2fNormal3fVertex3fvSUN(float*, float*, float*) public static extern void glTexCoord2fNormal3fVertex3fvSUN(float* tc, float* n, float* v) Parameters tc float* n float* v float* glTexCoord2fVertex3fSUN(float, float, float, float, float) public static extern void glTexCoord2fVertex3fSUN(float s, float t, float x, float y, float z) Parameters s float t float x float y float z float glTexCoord2fVertex3fvSUN(float*, float*) public static extern void glTexCoord2fVertex3fvSUN(float* tc, float* v) Parameters tc float* v float* glTexCoord2fv(float*) public static extern void glTexCoord2fv(float* v) Parameters v float* glTexCoord2hNV(ushort, ushort) public static extern void glTexCoord2hNV(ushort s, ushort t) Parameters s ushort t ushort glTexCoord2hvNV(ushort*) public static extern void glTexCoord2hvNV(ushort* v) Parameters v ushort* glTexCoord2i(int, int) public static extern void glTexCoord2i(int s, int t) Parameters s int t int glTexCoord2iv(int*) public static extern void glTexCoord2iv(int* v) Parameters v int* glTexCoord2s(short, short) public static extern void glTexCoord2s(short s, short t) Parameters s short t short glTexCoord2sv(short*) public static extern void glTexCoord2sv(short* v) Parameters v short* glTexCoord3d(double, double, double) public static extern void glTexCoord3d(double s, double t, double r) Parameters s double t double r double glTexCoord3dv(double*) public static extern void glTexCoord3dv(double* v) Parameters v double* glTexCoord3f(float, float, float) public static extern void glTexCoord3f(float s, float t, float r) Parameters s float t float r float glTexCoord3fv(float*) public static extern void glTexCoord3fv(float* v) Parameters v float* glTexCoord3hNV(ushort, ushort, ushort) public static extern void glTexCoord3hNV(ushort s, ushort t, ushort r) Parameters s ushort t ushort r ushort glTexCoord3hvNV(ushort*) public static extern void glTexCoord3hvNV(ushort* v) Parameters v ushort* glTexCoord3i(int, int, int) public static extern void glTexCoord3i(int s, int t, int r) Parameters s int t int r int glTexCoord3iv(int*) public static extern void glTexCoord3iv(int* v) Parameters v int* glTexCoord3s(short, short, short) public static extern void glTexCoord3s(short s, short t, short r) Parameters s short t short r short glTexCoord3sv(short*) public static extern void glTexCoord3sv(short* v) Parameters v short* glTexCoord4d(double, double, double, double) public static extern void glTexCoord4d(double s, double t, double r, double q) Parameters s double t double r double q double glTexCoord4dv(double*) public static extern void glTexCoord4dv(double* v) Parameters v double* glTexCoord4f(float, float, float, float) public static extern void glTexCoord4f(float s, float t, float r, float q) Parameters s float t float r float q float glTexCoord4fColor4fNormal3fVertex4fSUN(float, float, float, float, float, float, float, float, float, float, float, float, float, float, float) public static extern void glTexCoord4fColor4fNormal3fVertex4fSUN(float s, float t, float p, float q, float r, float g, float b, float a, float nx, float ny, float nz, float x, float y, float z, float w) Parameters s float t float p float q float r float g float b float a float nx float ny float nz float x float y float z float w float glTexCoord4fColor4fNormal3fVertex4fvSUN(float*, float*, float*, float*) public static extern void glTexCoord4fColor4fNormal3fVertex4fvSUN(float* tc, float* c, float* n, float* v) Parameters tc float* c float* n float* v float* glTexCoord4fVertex4fSUN(float, float, float, float, float, float, float, float) public static extern void glTexCoord4fVertex4fSUN(float s, float t, float p, float q, float x, float y, float z, float w) Parameters s float t float p float q float x float y float z float w float glTexCoord4fVertex4fvSUN(float*, float*) public static extern void glTexCoord4fVertex4fvSUN(float* tc, float* v) Parameters tc float* v float* glTexCoord4fv(float*) public static extern void glTexCoord4fv(float* v) Parameters v float* glTexCoord4hNV(ushort, ushort, ushort, ushort) public static extern void glTexCoord4hNV(ushort s, ushort t, ushort r, ushort q) Parameters s ushort t ushort r ushort q ushort glTexCoord4hvNV(ushort*) public static extern void glTexCoord4hvNV(ushort* v) Parameters v ushort* glTexCoord4i(int, int, int, int) public static extern void glTexCoord4i(int s, int t, int r, int q) Parameters s int t int r int q int glTexCoord4iv(int*) public static extern void glTexCoord4iv(int* v) Parameters v int* glTexCoord4s(short, short, short, short) public static extern void glTexCoord4s(short s, short t, short r, short q) Parameters s short t short r short q short glTexCoord4sv(short*) public static extern void glTexCoord4sv(short* v) Parameters v short* glTexCoordFormatNV(int, uint, int) public static extern void glTexCoordFormatNV(int size, uint type, int stride) Parameters size int type uint stride int glTexCoordP1ui(uint, uint) public static extern void glTexCoordP1ui(uint type, uint coords) Parameters type uint coords uint glTexCoordP1uiv(uint, uint*) public static extern void glTexCoordP1uiv(uint type, uint* coords) Parameters type uint coords uint* glTexCoordP2ui(uint, uint) public static extern void glTexCoordP2ui(uint type, uint coords) Parameters type uint coords uint glTexCoordP2uiv(uint, uint*) public static extern void glTexCoordP2uiv(uint type, uint* coords) Parameters type uint coords uint* glTexCoordP3ui(uint, uint) public static extern void glTexCoordP3ui(uint type, uint coords) Parameters type uint coords uint glTexCoordP3uiv(uint, uint*) public static extern void glTexCoordP3uiv(uint type, uint* coords) Parameters type uint coords uint* glTexCoordP4ui(uint, uint) public static extern void glTexCoordP4ui(uint type, uint coords) Parameters type uint coords uint glTexCoordP4uiv(uint, uint*) public static extern void glTexCoordP4uiv(uint type, uint* coords) Parameters type uint coords uint* glTexCoordPointer(int, uint, int, nint) public static extern void glTexCoordPointer(int size, uint type, int stride, nint pointer) Parameters size int type uint stride int pointer nint glTexCoordPointerEXT(int, uint, int, int, nint) public static extern void glTexCoordPointerEXT(int size, uint type, int stride, int count, nint pointer) Parameters size int type uint stride int count int pointer nint glTexCoordPointerListIBM(int, uint, int, nint, int) public static extern void glTexCoordPointerListIBM(int size, uint type, int stride, nint pointer, int ptrstride) Parameters size int type uint stride int pointer nint ptrstride int glTexCoordPointervINTEL(int, uint, nint) public static extern void glTexCoordPointervINTEL(int size, uint type, nint pointer) Parameters size int type uint pointer nint glTexEnvf(uint, uint, float) public static extern void glTexEnvf(uint target, uint pname, float param) Parameters target uint pname uint param float glTexEnvfv(uint, uint, float*) public static extern void glTexEnvfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glTexEnvi(uint, uint, int) public static extern void glTexEnvi(uint target, uint pname, int param) Parameters target uint pname uint param int glTexEnviv(uint, uint, int*) public static extern void glTexEnviv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glTexFilterFuncSGIS(uint, uint, int, float*) public static extern void glTexFilterFuncSGIS(uint target, uint filter, int n, float* weights) Parameters target uint filter uint n int weights float* glTexGend(uint, uint, double) public static extern void glTexGend(uint coord, uint pname, double param) Parameters coord uint pname uint param double glTexGendv(uint, uint, double*) public static extern void glTexGendv(uint coord, uint pname, double* @params) Parameters coord uint pname uint params double* glTexGenf(uint, uint, float) public static extern void glTexGenf(uint coord, uint pname, float param) Parameters coord uint pname uint param float glTexGenfv(uint, uint, float*) public static extern void glTexGenfv(uint coord, uint pname, float* @params) Parameters coord uint pname uint params float* glTexGeni(uint, uint, int) public static extern void glTexGeni(uint coord, uint pname, int param) Parameters coord uint pname uint param int glTexGeniv(uint, uint, int*) public static extern void glTexGeniv(uint coord, uint pname, int* @params) Parameters coord uint pname uint params int* glTexImage1D(uint, int, uint, int, int, uint, uint, nint) public static extern void glTexImage1D(uint target, int level, uint internalformat, int width, int border, uint format, uint type, nint pixels) Parameters target uint level int internalformat uint width int border int format uint type uint pixels nint glTexImage2D(uint, int, uint, int, int, int, uint, uint, nint) public static extern void glTexImage2D(uint target, int level, uint internalformat, int width, int height, int border, uint format, uint type, nint pixels) Parameters target uint level int internalformat uint width int height int border int format uint type uint pixels nint glTexImage2DMultisample(uint, int, uint, int, int, bool) public static extern void glTexImage2DMultisample(uint target, int samples, uint internalformat, int width, int height, bool fixedsamplelocations) Parameters target uint samples int internalformat uint width int height int fixedsamplelocations bool glTexImage2DMultisampleCoverageNV(uint, int, int, int, int, int, bool) public static extern void glTexImage2DMultisampleCoverageNV(uint target, int coverageSamples, int colorSamples, int internalFormat, int width, int height, bool fixedSampleLocations) Parameters target uint coverageSamples int colorSamples int internalFormat int width int height int fixedSampleLocations bool glTexImage3D(uint, int, uint, int, int, int, int, uint, uint, nint) public static extern void glTexImage3D(uint target, int level, uint internalformat, int width, int height, int depth, int border, uint format, uint type, nint pixels) Parameters target uint level int internalformat uint width int height int depth int border int format uint type uint pixels nint glTexImage3DEXT(uint, int, uint, int, int, int, int, uint, uint, nint) public static extern void glTexImage3DEXT(uint target, int level, uint internalformat, int width, int height, int depth, int border, uint format, uint type, nint pixels) Parameters target uint level int internalformat uint width int height int depth int border int format uint type uint pixels nint glTexImage3DMultisample(uint, int, uint, int, int, int, bool) public static extern void glTexImage3DMultisample(uint target, int samples, uint internalformat, int width, int height, int depth, bool fixedsamplelocations) Parameters target uint samples int internalformat uint width int height int depth int fixedsamplelocations bool glTexImage3DMultisampleCoverageNV(uint, int, int, int, int, int, int, bool) public static extern void glTexImage3DMultisampleCoverageNV(uint target, int coverageSamples, int colorSamples, int internalFormat, int width, int height, int depth, bool fixedSampleLocations) Parameters target uint coverageSamples int colorSamples int internalFormat int width int height int depth int fixedSampleLocations bool glTexImage4DSGIS(uint, int, uint, int, int, int, int, int, uint, uint, nint) public static extern void glTexImage4DSGIS(uint target, int level, uint internalformat, int width, int height, int depth, int size4d, int border, uint format, uint type, nint pixels) Parameters target uint level int internalformat uint width int height int depth int size4d int border int format uint type uint pixels nint glTexParameterIiv(uint, uint, int*) public static extern void glTexParameterIiv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glTexParameterIivEXT(uint, uint, int*) public static extern void glTexParameterIivEXT(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glTexParameterIuiv(uint, uint, uint*) public static extern void glTexParameterIuiv(uint target, uint pname, uint* @params) Parameters target uint pname uint params uint* glTexParameterIuivEXT(uint, uint, uint*) public static extern void glTexParameterIuivEXT(uint target, uint pname, uint* @params) Parameters target uint pname uint params uint* glTexParameterf(uint, uint, float) public static extern void glTexParameterf(uint target, uint pname, float param) Parameters target uint pname uint param float glTexParameterfv(uint, uint, float*) public static extern void glTexParameterfv(uint target, uint pname, float* @params) Parameters target uint pname uint params float* glTexParameteri(uint, uint, int) public static extern void glTexParameteri(uint target, uint pname, int param) Parameters target uint pname uint param int glTexParameteriv(uint, uint, int*) public static extern void glTexParameteriv(uint target, uint pname, int* @params) Parameters target uint pname uint params int* glTexRenderbufferNV(uint, uint) public static extern void glTexRenderbufferNV(uint target, uint renderbuffer) Parameters target uint renderbuffer uint glTexSubImage1D(uint, int, int, int, uint, uint, nint) public static extern void glTexSubImage1D(uint target, int level, int xoffset, int width, uint format, uint type, nint pixels) Parameters target uint level int xoffset int width int format uint type uint pixels nint glTexSubImage1DEXT(uint, int, int, int, uint, uint, nint) public static extern void glTexSubImage1DEXT(uint target, int level, int xoffset, int width, uint format, uint type, nint pixels) Parameters target uint level int xoffset int width int format uint type uint pixels nint glTexSubImage2D(uint, int, int, int, int, int, uint, uint, nint) public static extern void glTexSubImage2D(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, nint pixels) Parameters target uint level int xoffset int yoffset int width int height int format uint type uint pixels nint glTexSubImage2DEXT(uint, int, int, int, int, int, uint, uint, nint) public static extern void glTexSubImage2DEXT(uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, nint pixels) Parameters target uint level int xoffset int yoffset int width int height int format uint type uint pixels nint glTexSubImage3D(uint, int, int, int, int, int, int, int, uint, uint, nint) public static extern void glTexSubImage3D(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, nint pixels) Parameters target uint level int xoffset int yoffset int zoffset int width int height int depth int format uint type uint pixels nint glTexSubImage3DEXT(uint, int, int, int, int, int, int, int, uint, uint, nint) public static extern void glTexSubImage3DEXT(uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, nint pixels) Parameters target uint level int xoffset int yoffset int zoffset int width int height int depth int format uint type uint pixels nint glTexSubImage4DSGIS(uint, int, int, int, int, int, int, int, int, int, uint, uint, nint) public static extern void glTexSubImage4DSGIS(uint target, int level, int xoffset, int yoffset, int zoffset, int woffset, int width, int height, int depth, int size4d, uint format, uint type, nint pixels) Parameters target uint level int xoffset int yoffset int zoffset int woffset int width int height int depth int size4d int format uint type uint pixels nint glTextureBarrierNV() public static extern void glTextureBarrierNV() glTextureBufferEXT(uint, uint, uint, uint) public static extern void glTextureBufferEXT(uint texture, uint target, uint internalformat, uint buffer) Parameters texture uint target uint internalformat uint buffer uint glTextureColorMaskSGIS(bool, bool, bool, bool) public static extern void glTextureColorMaskSGIS(bool red, bool green, bool blue, bool alpha) Parameters red bool green bool blue bool alpha bool glTextureImage1DEXT(uint, uint, int, uint, int, int, uint, uint, nint) public static extern void glTextureImage1DEXT(uint texture, uint target, int level, uint internalformat, int width, int border, uint format, uint type, nint pixels) Parameters texture uint target uint level int internalformat uint width int border int format uint type uint pixels nint glTextureImage2DEXT(uint, uint, int, uint, int, int, int, uint, uint, nint) public static extern void glTextureImage2DEXT(uint texture, uint target, int level, uint internalformat, int width, int height, int border, uint format, uint type, nint pixels) Parameters texture uint target uint level int internalformat uint width int height int border int format uint type uint pixels nint glTextureImage2DMultisampleCoverageNV(uint, uint, int, int, int, int, int, bool) public static extern void glTextureImage2DMultisampleCoverageNV(uint texture, uint target, int coverageSamples, int colorSamples, int internalFormat, int width, int height, bool fixedSampleLocations) Parameters texture uint target uint coverageSamples int colorSamples int internalFormat int width int height int fixedSampleLocations bool glTextureImage2DMultisampleNV(uint, uint, int, int, int, int, bool) public static extern void glTextureImage2DMultisampleNV(uint texture, uint target, int samples, int internalFormat, int width, int height, bool fixedSampleLocations) Parameters texture uint target uint samples int internalFormat int width int height int fixedSampleLocations bool glTextureImage3DEXT(uint, uint, int, uint, int, int, int, int, uint, uint, nint) public static extern void glTextureImage3DEXT(uint texture, uint target, int level, uint internalformat, int width, int height, int depth, int border, uint format, uint type, nint pixels) Parameters texture uint target uint level int internalformat uint width int height int depth int border int format uint type uint pixels nint glTextureImage3DMultisampleCoverageNV(uint, uint, int, int, int, int, int, int, bool) public static extern void glTextureImage3DMultisampleCoverageNV(uint texture, uint target, int coverageSamples, int colorSamples, int internalFormat, int width, int height, int depth, bool fixedSampleLocations) Parameters texture uint target uint coverageSamples int colorSamples int internalFormat int width int height int depth int fixedSampleLocations bool glTextureImage3DMultisampleNV(uint, uint, int, int, int, int, int, bool) public static extern void glTextureImage3DMultisampleNV(uint texture, uint target, int samples, int internalFormat, int width, int height, int depth, bool fixedSampleLocations) Parameters texture uint target uint samples int internalFormat int width int height int depth int fixedSampleLocations bool glTextureLightEXT(uint) public static extern void glTextureLightEXT(uint pname) Parameters pname uint glTextureMaterialEXT(uint, uint) public static extern void glTextureMaterialEXT(uint face, uint mode) Parameters face uint mode uint glTextureNormalEXT(uint) public static extern void glTextureNormalEXT(uint mode) Parameters mode uint glTextureParameterIivEXT(uint, uint, uint, int*) public static extern void glTextureParameterIivEXT(uint texture, uint target, uint pname, int* @params) Parameters texture uint target uint pname uint params int* glTextureParameterIuivEXT(uint, uint, uint, uint*) public static extern void glTextureParameterIuivEXT(uint texture, uint target, uint pname, uint* @params) Parameters texture uint target uint pname uint params uint* glTextureParameterfEXT(uint, uint, uint, float) public static extern void glTextureParameterfEXT(uint texture, uint target, uint pname, float param) Parameters texture uint target uint pname uint param float glTextureParameterfvEXT(uint, uint, uint, float*) public static extern void glTextureParameterfvEXT(uint texture, uint target, uint pname, float* @params) Parameters texture uint target uint pname uint params float* glTextureParameteriEXT(uint, uint, uint, int) public static extern void glTextureParameteriEXT(uint texture, uint target, uint pname, int param) Parameters texture uint target uint pname uint param int glTextureParameterivEXT(uint, uint, uint, int*) public static extern void glTextureParameterivEXT(uint texture, uint target, uint pname, int* @params) Parameters texture uint target uint pname uint params int* glTextureRangeAPPLE(uint, int, nint) public static extern void glTextureRangeAPPLE(uint target, int length, nint pointer) Parameters target uint length int pointer nint glTextureRenderbufferEXT(uint, uint, uint) public static extern void glTextureRenderbufferEXT(uint texture, uint target, uint renderbuffer) Parameters texture uint target uint renderbuffer uint glTextureSubImage1DEXT(uint, uint, int, int, int, uint, uint, nint) public static extern void glTextureSubImage1DEXT(uint texture, uint target, int level, int xoffset, int width, uint format, uint type, nint pixels) Parameters texture uint target uint level int xoffset int width int format uint type uint pixels nint glTextureSubImage2DEXT(uint, uint, int, int, int, int, int, uint, uint, nint) public static extern void glTextureSubImage2DEXT(uint texture, uint target, int level, int xoffset, int yoffset, int width, int height, uint format, uint type, nint pixels) Parameters texture uint target uint level int xoffset int yoffset int width int height int format uint type uint pixels nint glTextureSubImage3DEXT(uint, uint, int, int, int, int, int, int, int, uint, uint, nint) public static extern void glTextureSubImage3DEXT(uint texture, uint target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, uint format, uint type, nint pixels) Parameters texture uint target uint level int xoffset int yoffset int zoffset int width int height int depth int format uint type uint pixels nint glTrackMatrixNV(uint, uint, uint, uint) public static extern void glTrackMatrixNV(uint target, uint address, uint matrix, uint transform) Parameters target uint address uint matrix uint transform uint glTransformFeedbackAttribsNV(uint, int*, uint) public static extern void glTransformFeedbackAttribsNV(uint count, int* attribs, uint bufferMode) Parameters count uint attribs int* bufferMode uint glTransformFeedbackStreamAttribsNV(int, int*, int, int*, uint) public static extern void glTransformFeedbackStreamAttribsNV(int count, int* attribs, int nbuffers, int* bufstreams, uint bufferMode) Parameters count int attribs int* nbuffers int bufstreams int* bufferMode uint glTransformFeedbackVaryings(uint, int, string[], uint) public static extern void glTransformFeedbackVaryings(uint program, int count, string[] varyings, uint bufferMode) Parameters program uint count int varyings string[] bufferMode uint glTransformFeedbackVaryingsEXT(uint, int, string[], uint) public static extern void glTransformFeedbackVaryingsEXT(uint program, int count, string[] varyings, uint bufferMode) Parameters program uint count int varyings string[] bufferMode uint glTransformFeedbackVaryingsNV(uint, int, int*, uint) public static extern void glTransformFeedbackVaryingsNV(uint program, int count, int* locations, uint bufferMode) Parameters program uint count int locations int* bufferMode uint glTranslated(double, double, double) public static extern void glTranslated(double x, double y, double z) Parameters x double y double z double glTranslatef(float, float, float) public static extern void glTranslatef(float x, float y, float z) Parameters x float y float z float glUniform1d(int, double) public static extern void glUniform1d(int location, double x) Parameters location int x double glUniform1dv(int, int, double*) public static extern void glUniform1dv(int location, int count, double* value) Parameters location int count int value double* glUniform1f(int, float) public static extern void glUniform1f(int location, float v0) Parameters location int v0 float glUniform1fARB(int, float) public static extern void glUniform1fARB(int location, float v0) Parameters location int v0 float glUniform1fv(int, int, float*) public static extern void glUniform1fv(int location, int count, float* value) Parameters location int count int value float* glUniform1fvARB(int, int, float*) public static extern void glUniform1fvARB(int location, int count, float* value) Parameters location int count int value float* glUniform1i(int, int) public static extern void glUniform1i(int location, int v0) Parameters location int v0 int glUniform1i64NV(int, long) public static extern void glUniform1i64NV(int location, long x) Parameters location int x long glUniform1i64vNV(int, int, long*) public static extern void glUniform1i64vNV(int location, int count, long* value) Parameters location int count int value long* glUniform1iARB(int, int) public static extern void glUniform1iARB(int location, int v0) Parameters location int v0 int glUniform1iv(int, int, int*) public static extern void glUniform1iv(int location, int count, int* value) Parameters location int count int value int* glUniform1ivARB(int, int, int*) public static extern void glUniform1ivARB(int location, int count, int* value) Parameters location int count int value int* glUniform1ui(int, uint) public static extern void glUniform1ui(int location, uint v0) Parameters location int v0 uint glUniform1ui64NV(int, ulong) public static extern void glUniform1ui64NV(int location, ulong x) Parameters location int x ulong glUniform1ui64vNV(int, int, ulong*) public static extern void glUniform1ui64vNV(int location, int count, ulong* value) Parameters location int count int value ulong* glUniform1uiEXT(int, uint) public static extern void glUniform1uiEXT(int location, uint v0) Parameters location int v0 uint glUniform1uiv(int, int, uint*) public static extern void glUniform1uiv(int location, int count, uint* value) Parameters location int count int value uint* glUniform1uivEXT(int, int, uint*) public static extern void glUniform1uivEXT(int location, int count, uint* value) Parameters location int count int value uint* glUniform2d(int, double, double) public static extern void glUniform2d(int location, double x, double y) Parameters location int x double y double glUniform2dv(int, int, double*) public static extern void glUniform2dv(int location, int count, double* value) Parameters location int count int value double* glUniform2f(int, float, float) public static extern void glUniform2f(int location, float v0, float v1) Parameters location int v0 float v1 float glUniform2fARB(int, float, float) public static extern void glUniform2fARB(int location, float v0, float v1) Parameters location int v0 float v1 float glUniform2fv(int, int, float*) public static extern void glUniform2fv(int location, int count, float* value) Parameters location int count int value float* glUniform2fvARB(int, int, float*) public static extern void glUniform2fvARB(int location, int count, float* value) Parameters location int count int value float* glUniform2i(int, int, int) public static extern void glUniform2i(int location, int v0, int v1) Parameters location int v0 int v1 int glUniform2i64NV(int, long, long) public static extern void glUniform2i64NV(int location, long x, long y) Parameters location int x long y long glUniform2i64vNV(int, int, long*) public static extern void glUniform2i64vNV(int location, int count, long* value) Parameters location int count int value long* glUniform2iARB(int, int, int) public static extern void glUniform2iARB(int location, int v0, int v1) Parameters location int v0 int v1 int glUniform2iv(int, int, int*) public static extern void glUniform2iv(int location, int count, int* value) Parameters location int count int value int* glUniform2ivARB(int, int, int*) public static extern void glUniform2ivARB(int location, int count, int* value) Parameters location int count int value int* glUniform2ui(int, uint, uint) public static extern void glUniform2ui(int location, uint v0, uint v1) Parameters location int v0 uint v1 uint glUniform2ui64NV(int, ulong, ulong) public static extern void glUniform2ui64NV(int location, ulong x, ulong y) Parameters location int x ulong y ulong glUniform2ui64vNV(int, int, ulong*) public static extern void glUniform2ui64vNV(int location, int count, ulong* value) Parameters location int count int value ulong* glUniform2uiEXT(int, uint, uint) public static extern void glUniform2uiEXT(int location, uint v0, uint v1) Parameters location int v0 uint v1 uint glUniform2uiv(int, int, uint*) public static extern void glUniform2uiv(int location, int count, uint* value) Parameters location int count int value uint* glUniform2uivEXT(int, int, uint*) public static extern void glUniform2uivEXT(int location, int count, uint* value) Parameters location int count int value uint* glUniform3d(int, double, double, double) public static extern void glUniform3d(int location, double x, double y, double z) Parameters location int x double y double z double glUniform3dv(int, int, double*) public static extern void glUniform3dv(int location, int count, double* value) Parameters location int count int value double* glUniform3f(int, float, float, float) public static extern void glUniform3f(int location, float v0, float v1, float v2) Parameters location int v0 float v1 float v2 float glUniform3fARB(int, float, float, float) public static extern void glUniform3fARB(int location, float v0, float v1, float v2) Parameters location int v0 float v1 float v2 float glUniform3fv(int, int, float*) public static extern void glUniform3fv(int location, int count, float* value) Parameters location int count int value float* glUniform3fvARB(int, int, float*) public static extern void glUniform3fvARB(int location, int count, float* value) Parameters location int count int value float* glUniform3i(int, int, int, int) public static extern void glUniform3i(int location, int v0, int v1, int v2) Parameters location int v0 int v1 int v2 int glUniform3i64NV(int, long, long, long) public static extern void glUniform3i64NV(int location, long x, long y, long z) Parameters location int x long y long z long glUniform3i64vNV(int, int, long*) public static extern void glUniform3i64vNV(int location, int count, long* value) Parameters location int count int value long* glUniform3iARB(int, int, int, int) public static extern void glUniform3iARB(int location, int v0, int v1, int v2) Parameters location int v0 int v1 int v2 int glUniform3iv(int, int, int*) public static extern void glUniform3iv(int location, int count, int* value) Parameters location int count int value int* glUniform3ivARB(int, int, int*) public static extern void glUniform3ivARB(int location, int count, int* value) Parameters location int count int value int* glUniform3ui(int, uint, uint, uint) public static extern void glUniform3ui(int location, uint v0, uint v1, uint v2) Parameters location int v0 uint v1 uint v2 uint glUniform3ui64NV(int, ulong, ulong, ulong) public static extern void glUniform3ui64NV(int location, ulong x, ulong y, ulong z) Parameters location int x ulong y ulong z ulong glUniform3ui64vNV(int, int, ulong*) public static extern void glUniform3ui64vNV(int location, int count, ulong* value) Parameters location int count int value ulong* glUniform3uiEXT(int, uint, uint, uint) public static extern void glUniform3uiEXT(int location, uint v0, uint v1, uint v2) Parameters location int v0 uint v1 uint v2 uint glUniform3uiv(int, int, uint*) public static extern void glUniform3uiv(int location, int count, uint* value) Parameters location int count int value uint* glUniform3uivEXT(int, int, uint*) public static extern void glUniform3uivEXT(int location, int count, uint* value) Parameters location int count int value uint* glUniform4d(int, double, double, double, double) public static extern void glUniform4d(int location, double x, double y, double z, double w) Parameters location int x double y double z double w double glUniform4dv(int, int, double*) public static extern void glUniform4dv(int location, int count, double* value) Parameters location int count int value double* glUniform4f(int, float, float, float, float) public static extern void glUniform4f(int location, float v0, float v1, float v2, float v3) Parameters location int v0 float v1 float v2 float v3 float glUniform4fARB(int, float, float, float, float) public static extern void glUniform4fARB(int location, float v0, float v1, float v2, float v3) Parameters location int v0 float v1 float v2 float v3 float glUniform4fv(int, int, float*) public static extern void glUniform4fv(int location, int count, float* value) Parameters location int count int value float* glUniform4fvARB(int, int, float*) public static extern void glUniform4fvARB(int location, int count, float* value) Parameters location int count int value float* glUniform4i(int, int, int, int, int) public static extern void glUniform4i(int location, int v0, int v1, int v2, int v3) Parameters location int v0 int v1 int v2 int v3 int glUniform4i64NV(int, long, long, long, long) public static extern void glUniform4i64NV(int location, long x, long y, long z, long w) Parameters location int x long y long z long w long glUniform4i64vNV(int, int, long*) public static extern void glUniform4i64vNV(int location, int count, long* value) Parameters location int count int value long* glUniform4iARB(int, int, int, int, int) public static extern void glUniform4iARB(int location, int v0, int v1, int v2, int v3) Parameters location int v0 int v1 int v2 int v3 int glUniform4iv(int, int, int*) public static extern void glUniform4iv(int location, int count, int* value) Parameters location int count int value int* glUniform4ivARB(int, int, int*) public static extern void glUniform4ivARB(int location, int count, int* value) Parameters location int count int value int* glUniform4ui(int, uint, uint, uint, uint) public static extern void glUniform4ui(int location, uint v0, uint v1, uint v2, uint v3) Parameters location int v0 uint v1 uint v2 uint v3 uint glUniform4ui64NV(int, ulong, ulong, ulong, ulong) public static extern void glUniform4ui64NV(int location, ulong x, ulong y, ulong z, ulong w) Parameters location int x ulong y ulong z ulong w ulong glUniform4ui64vNV(int, int, ulong*) public static extern void glUniform4ui64vNV(int location, int count, ulong* value) Parameters location int count int value ulong* glUniform4uiEXT(int, uint, uint, uint, uint) public static extern void glUniform4uiEXT(int location, uint v0, uint v1, uint v2, uint v3) Parameters location int v0 uint v1 uint v2 uint v3 uint glUniform4uiv(int, int, uint*) public static extern void glUniform4uiv(int location, int count, uint* value) Parameters location int count int value uint* glUniform4uivEXT(int, int, uint*) public static extern void glUniform4uivEXT(int location, int count, uint* value) Parameters location int count int value uint* glUniformBlockBinding(uint, uint, uint) public static extern void glUniformBlockBinding(uint program, uint uniformBlockIndex, uint uniformBlockBinding) Parameters program uint uniformBlockIndex uint uniformBlockBinding uint glUniformBufferEXT(uint, int, uint) public static extern void glUniformBufferEXT(uint program, int location, uint buffer) Parameters program uint location int buffer uint glUniformMatrix2dv(int, int, bool, double*) public static extern void glUniformMatrix2dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix2fv(int, int, bool, float*) public static extern void glUniformMatrix2fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix2fvARB(int, int, bool, float*) public static extern void glUniformMatrix2fvARB(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix2x3dv(int, int, bool, double*) public static extern void glUniformMatrix2x3dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix2x3fv(int, int, bool, float*) public static extern void glUniformMatrix2x3fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix2x4dv(int, int, bool, double*) public static extern void glUniformMatrix2x4dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix2x4fv(int, int, bool, float*) public static extern void glUniformMatrix2x4fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix3dv(int, int, bool, double*) public static extern void glUniformMatrix3dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix3fv(int, int, bool, float*) public static extern void glUniformMatrix3fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix3fvARB(int, int, bool, float*) public static extern void glUniformMatrix3fvARB(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix3x2dv(int, int, bool, double*) public static extern void glUniformMatrix3x2dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix3x2fv(int, int, bool, float*) public static extern void glUniformMatrix3x2fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix3x4dv(int, int, bool, double*) public static extern void glUniformMatrix3x4dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix3x4fv(int, int, bool, float*) public static extern void glUniformMatrix3x4fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix4dv(int, int, bool, double*) public static extern void glUniformMatrix4dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix4fv(int, int, bool, float*) public static extern void glUniformMatrix4fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix4fvARB(int, int, bool, float*) public static extern void glUniformMatrix4fvARB(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix4x2dv(int, int, bool, double*) public static extern void glUniformMatrix4x2dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix4x2fv(int, int, bool, float*) public static extern void glUniformMatrix4x2fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformMatrix4x3dv(int, int, bool, double*) public static extern void glUniformMatrix4x3dv(int location, int count, bool transpose, double* value) Parameters location int count int transpose bool value double* glUniformMatrix4x3fv(int, int, bool, float*) public static extern void glUniformMatrix4x3fv(int location, int count, bool transpose, float* value) Parameters location int count int transpose bool value float* glUniformSubroutinesuiv(uint, int, uint*) public static extern void glUniformSubroutinesuiv(uint shadertype, int count, uint* indices) Parameters shadertype uint count int indices uint* glUniformui64NV(int, ulong) public static extern void glUniformui64NV(int location, ulong value) Parameters location int value ulong glUniformui64vNV(int, int, ulong*) public static extern void glUniformui64vNV(int location, int count, ulong* value) Parameters location int count int value ulong* glUnlockArraysEXT() public static extern void glUnlockArraysEXT() glUnmapBuffer(uint) public static extern int glUnmapBuffer(uint target) Parameters target uint Returns int glUnmapBufferARB(uint) public static extern int glUnmapBufferARB(uint target) Parameters target uint Returns int glUnmapNamedBufferEXT(uint) public static extern int glUnmapNamedBufferEXT(uint buffer) Parameters buffer uint Returns int glUnmapObjectBufferATI(uint) public static extern void glUnmapObjectBufferATI(uint buffer) Parameters buffer uint glUpdateObjectBufferATI(uint, uint, int, nint, uint) public static extern void glUpdateObjectBufferATI(uint buffer, uint offset, int size, nint pointer, uint preserve) Parameters buffer uint offset uint size int pointer nint preserve uint glUseProgram(uint) public static extern void glUseProgram(uint program) Parameters program uint glUseProgramObjectARB(uint) public static extern void glUseProgramObjectARB(uint programObj) Parameters programObj uint glUseProgramStages(uint, uint, uint) public static extern void glUseProgramStages(uint pipeline, uint stages, uint program) Parameters pipeline uint stages uint program uint glUseShaderProgramEXT(uint, uint) public static extern void glUseShaderProgramEXT(uint type, uint program) Parameters type uint program uint glVDPAUFiniNV() public static extern void glVDPAUFiniNV() glVDPAUGetSurfaceivNV(nint, uint, int, int*, int*) public static extern void glVDPAUGetSurfaceivNV(nint surface, uint pname, int bufSize, int* length, int* values) Parameters surface nint pname uint bufSize int length int* values int* glVDPAUInitNV(nint, nint) public static extern void glVDPAUInitNV(nint vdpDevice, nint getProcAddress) Parameters vdpDevice nint getProcAddress nint glVDPAUIsSurfaceNV(nint) public static extern void glVDPAUIsSurfaceNV(nint surface) Parameters surface nint glVDPAUMapSurfacesNV(int, nint*) public static extern void glVDPAUMapSurfacesNV(int numSurfaces, nint* surfaces) Parameters numSurfaces int surfaces nint* glVDPAURegisterOutputSurfaceNV(nint, uint, int, uint*) public static extern nint glVDPAURegisterOutputSurfaceNV(nint vdpSurface, uint target, int numTextureNames, uint* textureNames) Parameters vdpSurface nint target uint numTextureNames int textureNames uint* Returns nint glVDPAURegisterVideoSurfaceNV(nint, uint, int, uint*) public static extern nint glVDPAURegisterVideoSurfaceNV(nint vdpSurface, uint target, int numTextureNames, uint* textureNames) Parameters vdpSurface nint target uint numTextureNames int textureNames uint* Returns nint glVDPAUSurfaceAccessNV(nint, uint) public static extern void glVDPAUSurfaceAccessNV(nint surface, uint access) Parameters surface nint access uint glVDPAUUnmapSurfacesNV(int, nint*) public static extern void glVDPAUUnmapSurfacesNV(int numSurface, nint* surfaces) Parameters numSurface int surfaces nint* glVDPAUUnregisterSurfaceNV(nint) public static extern void glVDPAUUnregisterSurfaceNV(nint surface) Parameters surface nint glValidateProgram(uint) public static extern void glValidateProgram(uint program) Parameters program uint glValidateProgramARB(uint) public static extern void glValidateProgramARB(uint programObj) Parameters programObj uint glValidateProgramPipeline(uint) public static extern void glValidateProgramPipeline(uint pipeline) Parameters pipeline uint glVariantArrayObjectATI(uint, uint, int, uint, uint) public static extern void glVariantArrayObjectATI(uint id, uint type, int stride, uint buffer, uint offset) Parameters id uint type uint stride int buffer uint offset uint glVariantPointerEXT(uint, uint, uint, nint) public static extern void glVariantPointerEXT(uint id, uint type, uint stride, nint addr) Parameters id uint type uint stride uint addr nint glVariantbvEXT(uint, sbyte*) public static extern void glVariantbvEXT(uint id, sbyte* addr) Parameters id uint addr sbyte* glVariantdvEXT(uint, double*) public static extern void glVariantdvEXT(uint id, double* addr) Parameters id uint addr double* glVariantfvEXT(uint, float*) public static extern void glVariantfvEXT(uint id, float* addr) Parameters id uint addr float* glVariantivEXT(uint, int*) public static extern void glVariantivEXT(uint id, int* addr) Parameters id uint addr int* glVariantsvEXT(uint, short*) public static extern void glVariantsvEXT(uint id, short* addr) Parameters id uint addr short* glVariantubvEXT(uint, byte*) public static extern void glVariantubvEXT(uint id, byte* addr) Parameters id uint addr byte* glVariantuivEXT(uint, uint*) public static extern void glVariantuivEXT(uint id, uint* addr) Parameters id uint addr uint* glVariantusvEXT(uint, ushort*) public static extern void glVariantusvEXT(uint id, ushort* addr) Parameters id uint addr ushort* glVertex2d(double, double) public static extern void glVertex2d(double x, double y) Parameters x double y double glVertex2dv(double*) public static extern void glVertex2dv(double* v) Parameters v double* glVertex2f(float, float) public static extern void glVertex2f(float x, float y) Parameters x float y float glVertex2fv(float*) public static extern void glVertex2fv(float* v) Parameters v float* glVertex2hNV(ushort, ushort) public static extern void glVertex2hNV(ushort x, ushort y) Parameters x ushort y ushort glVertex2hvNV(ushort*) public static extern void glVertex2hvNV(ushort* v) Parameters v ushort* glVertex2i(int, int) public static extern void glVertex2i(int x, int y) Parameters x int y int glVertex2iv(int*) public static extern void glVertex2iv(int* v) Parameters v int* glVertex2s(short, short) public static extern void glVertex2s(short x, short y) Parameters x short y short glVertex2sv(short*) public static extern void glVertex2sv(short* v) Parameters v short* glVertex3d(double, double, double) public static extern void glVertex3d(double x, double y, double z) Parameters x double y double z double glVertex3dv(double*) public static extern void glVertex3dv(double* v) Parameters v double* glVertex3f(float, float, float) public static extern void glVertex3f(float x, float y, float z) Parameters x float y float z float glVertex3fv(float*) public static extern void glVertex3fv(float* v) Parameters v float* glVertex3hNV(ushort, ushort, ushort) public static extern void glVertex3hNV(ushort x, ushort y, ushort z) Parameters x ushort y ushort z ushort glVertex3hvNV(ushort*) public static extern void glVertex3hvNV(ushort* v) Parameters v ushort* glVertex3i(int, int, int) public static extern void glVertex3i(int x, int y, int z) Parameters x int y int z int glVertex3iv(int*) public static extern void glVertex3iv(int* v) Parameters v int* glVertex3s(short, short, short) public static extern void glVertex3s(short x, short y, short z) Parameters x short y short z short glVertex3sv(short*) public static extern void glVertex3sv(short* v) Parameters v short* glVertex4d(double, double, double, double) public static extern void glVertex4d(double x, double y, double z, double w) Parameters x double y double z double w double glVertex4dv(double*) public static extern void glVertex4dv(double* v) Parameters v double* glVertex4f(float, float, float, float) public static extern void glVertex4f(float x, float y, float z, float w) Parameters x float y float z float w float glVertex4fv(float*) public static extern void glVertex4fv(float* v) Parameters v float* glVertex4hNV(ushort, ushort, ushort, ushort) public static extern void glVertex4hNV(ushort x, ushort y, ushort z, ushort w) Parameters x ushort y ushort z ushort w ushort glVertex4hvNV(ushort*) public static extern void glVertex4hvNV(ushort* v) Parameters v ushort* glVertex4i(int, int, int, int) public static extern void glVertex4i(int x, int y, int z, int w) Parameters x int y int z int w int glVertex4iv(int*) public static extern void glVertex4iv(int* v) Parameters v int* glVertex4s(short, short, short, short) public static extern void glVertex4s(short x, short y, short z, short w) Parameters x short y short z short w short glVertex4sv(short*) public static extern void glVertex4sv(short* v) Parameters v short* glVertexArrayParameteriAPPLE(uint, int) public static extern void glVertexArrayParameteriAPPLE(uint pname, int param) Parameters pname uint param int glVertexArrayRangeAPPLE(int, nint) public static extern void glVertexArrayRangeAPPLE(int length, nint pointer) Parameters length int pointer nint glVertexArrayRangeNV(int, nint) public static extern void glVertexArrayRangeNV(int length, nint pointer) Parameters length int pointer nint glVertexArrayVertexAttribLOffsetEXT(uint, uint, uint, int, uint, int, nint) public static extern void glVertexArrayVertexAttribLOffsetEXT(uint vaobj, uint buffer, uint index, int size, uint type, int stride, nint offset) Parameters vaobj uint buffer uint index uint size int type uint stride int offset nint glVertexAttrib1d(uint, double) public static extern void glVertexAttrib1d(uint index, double x) Parameters index uint x double glVertexAttrib1dARB(uint, double) public static extern void glVertexAttrib1dARB(uint index, double x) Parameters index uint x double glVertexAttrib1dNV(uint, double) public static extern void glVertexAttrib1dNV(uint index, double x) Parameters index uint x double glVertexAttrib1dv(uint, double*) public static extern void glVertexAttrib1dv(uint index, double* v) Parameters index uint v double* glVertexAttrib1dvARB(uint, double*) public static extern void glVertexAttrib1dvARB(uint index, double* v) Parameters index uint v double* glVertexAttrib1dvNV(uint, double*) public static extern void glVertexAttrib1dvNV(uint index, double* v) Parameters index uint v double* glVertexAttrib1f(uint, float) public static extern void glVertexAttrib1f(uint index, float x) Parameters index uint x float glVertexAttrib1fARB(uint, float) public static extern void glVertexAttrib1fARB(uint index, float x) Parameters index uint x float glVertexAttrib1fNV(uint, float) public static extern void glVertexAttrib1fNV(uint index, float x) Parameters index uint x float glVertexAttrib1fv(uint, float*) public static extern void glVertexAttrib1fv(uint index, float* v) Parameters index uint v float* glVertexAttrib1fvARB(uint, float*) public static extern void glVertexAttrib1fvARB(uint index, float* v) Parameters index uint v float* glVertexAttrib1fvNV(uint, float*) public static extern void glVertexAttrib1fvNV(uint index, float* v) Parameters index uint v float* glVertexAttrib1hNV(uint, ushort) public static extern void glVertexAttrib1hNV(uint index, ushort x) Parameters index uint x ushort glVertexAttrib1hvNV(uint, ushort*) public static extern void glVertexAttrib1hvNV(uint index, ushort* v) Parameters index uint v ushort* glVertexAttrib1s(uint, short) public static extern void glVertexAttrib1s(uint index, short x) Parameters index uint x short glVertexAttrib1sARB(uint, short) public static extern void glVertexAttrib1sARB(uint index, short x) Parameters index uint x short glVertexAttrib1sNV(uint, short) public static extern void glVertexAttrib1sNV(uint index, short x) Parameters index uint x short glVertexAttrib1sv(uint, short*) public static extern void glVertexAttrib1sv(uint index, short* v) Parameters index uint v short* glVertexAttrib1svARB(uint, short*) public static extern void glVertexAttrib1svARB(uint index, short* v) Parameters index uint v short* glVertexAttrib1svNV(uint, short*) public static extern void glVertexAttrib1svNV(uint index, short* v) Parameters index uint v short* glVertexAttrib2d(uint, double, double) public static extern void glVertexAttrib2d(uint index, double x, double y) Parameters index uint x double y double glVertexAttrib2dARB(uint, double, double) public static extern void glVertexAttrib2dARB(uint index, double x, double y) Parameters index uint x double y double glVertexAttrib2dNV(uint, double, double) public static extern void glVertexAttrib2dNV(uint index, double x, double y) Parameters index uint x double y double glVertexAttrib2dv(uint, double*) public static extern void glVertexAttrib2dv(uint index, double* v) Parameters index uint v double* glVertexAttrib2dvARB(uint, double*) public static extern void glVertexAttrib2dvARB(uint index, double* v) Parameters index uint v double* glVertexAttrib2dvNV(uint, double*) public static extern void glVertexAttrib2dvNV(uint index, double* v) Parameters index uint v double* glVertexAttrib2f(uint, float, float) public static extern void glVertexAttrib2f(uint index, float x, float y) Parameters index uint x float y float glVertexAttrib2fARB(uint, float, float) public static extern void glVertexAttrib2fARB(uint index, float x, float y) Parameters index uint x float y float glVertexAttrib2fNV(uint, float, float) public static extern void glVertexAttrib2fNV(uint index, float x, float y) Parameters index uint x float y float glVertexAttrib2fv(uint, float*) public static extern void glVertexAttrib2fv(uint index, float* v) Parameters index uint v float* glVertexAttrib2fvARB(uint, float*) public static extern void glVertexAttrib2fvARB(uint index, float* v) Parameters index uint v float* glVertexAttrib2fvNV(uint, float*) public static extern void glVertexAttrib2fvNV(uint index, float* v) Parameters index uint v float* glVertexAttrib2hNV(uint, ushort, ushort) public static extern void glVertexAttrib2hNV(uint index, ushort x, ushort y) Parameters index uint x ushort y ushort glVertexAttrib2hvNV(uint, ushort*) public static extern void glVertexAttrib2hvNV(uint index, ushort* v) Parameters index uint v ushort* glVertexAttrib2s(uint, short, short) public static extern void glVertexAttrib2s(uint index, short x, short y) Parameters index uint x short y short glVertexAttrib2sARB(uint, short, short) public static extern void glVertexAttrib2sARB(uint index, short x, short y) Parameters index uint x short y short glVertexAttrib2sNV(uint, short, short) public static extern void glVertexAttrib2sNV(uint index, short x, short y) Parameters index uint x short y short glVertexAttrib2sv(uint, short*) public static extern void glVertexAttrib2sv(uint index, short* v) Parameters index uint v short* glVertexAttrib2svARB(uint, short*) public static extern void glVertexAttrib2svARB(uint index, short* v) Parameters index uint v short* glVertexAttrib2svNV(uint, short*) public static extern void glVertexAttrib2svNV(uint index, short* v) Parameters index uint v short* glVertexAttrib3d(uint, double, double, double) public static extern void glVertexAttrib3d(uint index, double x, double y, double z) Parameters index uint x double y double z double glVertexAttrib3dARB(uint, double, double, double) public static extern void glVertexAttrib3dARB(uint index, double x, double y, double z) Parameters index uint x double y double z double glVertexAttrib3dNV(uint, double, double, double) public static extern void glVertexAttrib3dNV(uint index, double x, double y, double z) Parameters index uint x double y double z double glVertexAttrib3dv(uint, double*) public static extern void glVertexAttrib3dv(uint index, double* v) Parameters index uint v double* glVertexAttrib3dvARB(uint, double*) public static extern void glVertexAttrib3dvARB(uint index, double* v) Parameters index uint v double* glVertexAttrib3dvNV(uint, double*) public static extern void glVertexAttrib3dvNV(uint index, double* v) Parameters index uint v double* glVertexAttrib3f(uint, float, float, float) public static extern void glVertexAttrib3f(uint index, float x, float y, float z) Parameters index uint x float y float z float glVertexAttrib3fARB(uint, float, float, float) public static extern void glVertexAttrib3fARB(uint index, float x, float y, float z) Parameters index uint x float y float z float glVertexAttrib3fNV(uint, float, float, float) public static extern void glVertexAttrib3fNV(uint index, float x, float y, float z) Parameters index uint x float y float z float glVertexAttrib3fv(uint, float*) public static extern void glVertexAttrib3fv(uint index, float* v) Parameters index uint v float* glVertexAttrib3fvARB(uint, float*) public static extern void glVertexAttrib3fvARB(uint index, float* v) Parameters index uint v float* glVertexAttrib3fvNV(uint, float*) public static extern void glVertexAttrib3fvNV(uint index, float* v) Parameters index uint v float* glVertexAttrib3hNV(uint, ushort, ushort, ushort) public static extern void glVertexAttrib3hNV(uint index, ushort x, ushort y, ushort z) Parameters index uint x ushort y ushort z ushort glVertexAttrib3hvNV(uint, ushort*) public static extern void glVertexAttrib3hvNV(uint index, ushort* v) Parameters index uint v ushort* glVertexAttrib3s(uint, short, short, short) public static extern void glVertexAttrib3s(uint index, short x, short y, short z) Parameters index uint x short y short z short glVertexAttrib3sARB(uint, short, short, short) public static extern void glVertexAttrib3sARB(uint index, short x, short y, short z) Parameters index uint x short y short z short glVertexAttrib3sNV(uint, short, short, short) public static extern void glVertexAttrib3sNV(uint index, short x, short y, short z) Parameters index uint x short y short z short glVertexAttrib3sv(uint, short*) public static extern void glVertexAttrib3sv(uint index, short* v) Parameters index uint v short* glVertexAttrib3svARB(uint, short*) public static extern void glVertexAttrib3svARB(uint index, short* v) Parameters index uint v short* glVertexAttrib3svNV(uint, short*) public static extern void glVertexAttrib3svNV(uint index, short* v) Parameters index uint v short* glVertexAttrib4Nbv(uint, sbyte*) public static extern void glVertexAttrib4Nbv(uint index, sbyte* v) Parameters index uint v sbyte* glVertexAttrib4NbvARB(uint, sbyte*) public static extern void glVertexAttrib4NbvARB(uint index, sbyte* v) Parameters index uint v sbyte* glVertexAttrib4Niv(uint, int*) public static extern void glVertexAttrib4Niv(uint index, int* v) Parameters index uint v int* glVertexAttrib4NivARB(uint, int*) public static extern void glVertexAttrib4NivARB(uint index, int* v) Parameters index uint v int* glVertexAttrib4Nsv(uint, short*) public static extern void glVertexAttrib4Nsv(uint index, short* v) Parameters index uint v short* glVertexAttrib4NsvARB(uint, short*) public static extern void glVertexAttrib4NsvARB(uint index, short* v) Parameters index uint v short* glVertexAttrib4Nub(uint, byte, byte, byte, byte) public static extern void glVertexAttrib4Nub(uint index, byte x, byte y, byte z, byte w) Parameters index uint x byte y byte z byte w byte glVertexAttrib4NubARB(uint, byte, byte, byte, byte) public static extern void glVertexAttrib4NubARB(uint index, byte x, byte y, byte z, byte w) Parameters index uint x byte y byte z byte w byte glVertexAttrib4Nubv(uint, byte*) public static extern void glVertexAttrib4Nubv(uint index, byte* v) Parameters index uint v byte* glVertexAttrib4NubvARB(uint, byte*) public static extern void glVertexAttrib4NubvARB(uint index, byte* v) Parameters index uint v byte* glVertexAttrib4Nuiv(uint, uint*) public static extern void glVertexAttrib4Nuiv(uint index, uint* v) Parameters index uint v uint* glVertexAttrib4NuivARB(uint, uint*) public static extern void glVertexAttrib4NuivARB(uint index, uint* v) Parameters index uint v uint* glVertexAttrib4Nusv(uint, ushort*) public static extern void glVertexAttrib4Nusv(uint index, ushort* v) Parameters index uint v ushort* glVertexAttrib4NusvARB(uint, ushort*) public static extern void glVertexAttrib4NusvARB(uint index, ushort* v) Parameters index uint v ushort* glVertexAttrib4bv(uint, sbyte*) public static extern void glVertexAttrib4bv(uint index, sbyte* v) Parameters index uint v sbyte* glVertexAttrib4bvARB(uint, sbyte*) public static extern void glVertexAttrib4bvARB(uint index, sbyte* v) Parameters index uint v sbyte* glVertexAttrib4d(uint, double, double, double, double) public static extern void glVertexAttrib4d(uint index, double x, double y, double z, double w) Parameters index uint x double y double z double w double glVertexAttrib4dARB(uint, double, double, double, double) public static extern void glVertexAttrib4dARB(uint index, double x, double y, double z, double w) Parameters index uint x double y double z double w double glVertexAttrib4dNV(uint, double, double, double, double) public static extern void glVertexAttrib4dNV(uint index, double x, double y, double z, double w) Parameters index uint x double y double z double w double glVertexAttrib4dv(uint, double*) public static extern void glVertexAttrib4dv(uint index, double* v) Parameters index uint v double* glVertexAttrib4dvARB(uint, double*) public static extern void glVertexAttrib4dvARB(uint index, double* v) Parameters index uint v double* glVertexAttrib4dvNV(uint, double*) public static extern void glVertexAttrib4dvNV(uint index, double* v) Parameters index uint v double* glVertexAttrib4f(uint, float, float, float, float) public static extern void glVertexAttrib4f(uint index, float x, float y, float z, float w) Parameters index uint x float y float z float w float glVertexAttrib4fARB(uint, float, float, float, float) public static extern void glVertexAttrib4fARB(uint index, float x, float y, float z, float w) Parameters index uint x float y float z float w float glVertexAttrib4fNV(uint, float, float, float, float) public static extern void glVertexAttrib4fNV(uint index, float x, float y, float z, float w) Parameters index uint x float y float z float w float glVertexAttrib4fv(uint, float*) public static extern void glVertexAttrib4fv(uint index, float* v) Parameters index uint v float* glVertexAttrib4fvARB(uint, float*) public static extern void glVertexAttrib4fvARB(uint index, float* v) Parameters index uint v float* glVertexAttrib4fvNV(uint, float*) public static extern void glVertexAttrib4fvNV(uint index, float* v) Parameters index uint v float* glVertexAttrib4hNV(uint, ushort, ushort, ushort, ushort) public static extern void glVertexAttrib4hNV(uint index, ushort x, ushort y, ushort z, ushort w) Parameters index uint x ushort y ushort z ushort w ushort glVertexAttrib4hvNV(uint, ushort*) public static extern void glVertexAttrib4hvNV(uint index, ushort* v) Parameters index uint v ushort* glVertexAttrib4iv(uint, int*) public static extern void glVertexAttrib4iv(uint index, int* v) Parameters index uint v int* glVertexAttrib4ivARB(uint, int*) public static extern void glVertexAttrib4ivARB(uint index, int* v) Parameters index uint v int* glVertexAttrib4s(uint, short, short, short, short) public static extern void glVertexAttrib4s(uint index, short x, short y, short z, short w) Parameters index uint x short y short z short w short glVertexAttrib4sARB(uint, short, short, short, short) public static extern void glVertexAttrib4sARB(uint index, short x, short y, short z, short w) Parameters index uint x short y short z short w short glVertexAttrib4sNV(uint, short, short, short, short) public static extern void glVertexAttrib4sNV(uint index, short x, short y, short z, short w) Parameters index uint x short y short z short w short glVertexAttrib4sv(uint, short*) public static extern void glVertexAttrib4sv(uint index, short* v) Parameters index uint v short* glVertexAttrib4svARB(uint, short*) public static extern void glVertexAttrib4svARB(uint index, short* v) Parameters index uint v short* glVertexAttrib4svNV(uint, short*) public static extern void glVertexAttrib4svNV(uint index, short* v) Parameters index uint v short* glVertexAttrib4ubNV(uint, byte, byte, byte, byte) public static extern void glVertexAttrib4ubNV(uint index, byte x, byte y, byte z, byte w) Parameters index uint x byte y byte z byte w byte glVertexAttrib4ubv(uint, byte*) public static extern void glVertexAttrib4ubv(uint index, byte* v) Parameters index uint v byte* glVertexAttrib4ubvARB(uint, byte*) public static extern void glVertexAttrib4ubvARB(uint index, byte* v) Parameters index uint v byte* glVertexAttrib4ubvNV(uint, byte*) public static extern void glVertexAttrib4ubvNV(uint index, byte* v) Parameters index uint v byte* glVertexAttrib4uiv(uint, uint*) public static extern void glVertexAttrib4uiv(uint index, uint* v) Parameters index uint v uint* glVertexAttrib4uivARB(uint, uint*) public static extern void glVertexAttrib4uivARB(uint index, uint* v) Parameters index uint v uint* glVertexAttrib4usv(uint, ushort*) public static extern void glVertexAttrib4usv(uint index, ushort* v) Parameters index uint v ushort* glVertexAttrib4usvARB(uint, ushort*) public static extern void glVertexAttrib4usvARB(uint index, ushort* v) Parameters index uint v ushort* glVertexAttribArrayObjectATI(uint, int, uint, bool, int, uint, uint) public static extern void glVertexAttribArrayObjectATI(uint index, int size, uint type, bool normalized, int stride, uint buffer, uint offset) Parameters index uint size int type uint normalized bool stride int buffer uint offset uint glVertexAttribDivisor(uint, uint) public static extern void glVertexAttribDivisor(uint index, uint divisor) Parameters index uint divisor uint glVertexAttribDivisorARB(uint, uint) public static extern void glVertexAttribDivisorARB(uint index, uint divisor) Parameters index uint divisor uint glVertexAttribFormatNV(uint, int, uint, bool, int) public static extern void glVertexAttribFormatNV(uint index, int size, uint type, bool normalized, int stride) Parameters index uint size int type uint normalized bool stride int glVertexAttribI1i(uint, int) public static extern void glVertexAttribI1i(uint index, int x) Parameters index uint x int glVertexAttribI1iEXT(uint, int) public static extern void glVertexAttribI1iEXT(uint index, int x) Parameters index uint x int glVertexAttribI1iv(uint, int*) public static extern void glVertexAttribI1iv(uint index, int* v) Parameters index uint v int* glVertexAttribI1ivEXT(uint, int*) public static extern void glVertexAttribI1ivEXT(uint index, int* v) Parameters index uint v int* glVertexAttribI1ui(uint, uint) public static extern void glVertexAttribI1ui(uint index, uint x) Parameters index uint x uint glVertexAttribI1uiEXT(uint, uint) public static extern void glVertexAttribI1uiEXT(uint index, uint x) Parameters index uint x uint glVertexAttribI1uiv(uint, uint*) public static extern void glVertexAttribI1uiv(uint index, uint* v) Parameters index uint v uint* glVertexAttribI1uivEXT(uint, uint*) public static extern void glVertexAttribI1uivEXT(uint index, uint* v) Parameters index uint v uint* glVertexAttribI2i(uint, int, int) public static extern void glVertexAttribI2i(uint index, int x, int y) Parameters index uint x int y int glVertexAttribI2iEXT(uint, int, int) public static extern void glVertexAttribI2iEXT(uint index, int x, int y) Parameters index uint x int y int glVertexAttribI2iv(uint, int*) public static extern void glVertexAttribI2iv(uint index, int* v) Parameters index uint v int* glVertexAttribI2ivEXT(uint, int*) public static extern void glVertexAttribI2ivEXT(uint index, int* v) Parameters index uint v int* glVertexAttribI2ui(uint, uint, uint) public static extern void glVertexAttribI2ui(uint index, uint x, uint y) Parameters index uint x uint y uint glVertexAttribI2uiEXT(uint, uint, uint) public static extern void glVertexAttribI2uiEXT(uint index, uint x, uint y) Parameters index uint x uint y uint glVertexAttribI2uiv(uint, uint*) public static extern void glVertexAttribI2uiv(uint index, uint* v) Parameters index uint v uint* glVertexAttribI2uivEXT(uint, uint*) public static extern void glVertexAttribI2uivEXT(uint index, uint* v) Parameters index uint v uint* glVertexAttribI3i(uint, int, int, int) public static extern void glVertexAttribI3i(uint index, int x, int y, int z) Parameters index uint x int y int z int glVertexAttribI3iEXT(uint, int, int, int) public static extern void glVertexAttribI3iEXT(uint index, int x, int y, int z) Parameters index uint x int y int z int glVertexAttribI3iv(uint, int*) public static extern void glVertexAttribI3iv(uint index, int* v) Parameters index uint v int* glVertexAttribI3ivEXT(uint, int*) public static extern void glVertexAttribI3ivEXT(uint index, int* v) Parameters index uint v int* glVertexAttribI3ui(uint, uint, uint, uint) public static extern void glVertexAttribI3ui(uint index, uint x, uint y, uint z) Parameters index uint x uint y uint z uint glVertexAttribI3uiEXT(uint, uint, uint, uint) public static extern void glVertexAttribI3uiEXT(uint index, uint x, uint y, uint z) Parameters index uint x uint y uint z uint glVertexAttribI3uiv(uint, uint*) public static extern void glVertexAttribI3uiv(uint index, uint* v) Parameters index uint v uint* glVertexAttribI3uivEXT(uint, uint*) public static extern void glVertexAttribI3uivEXT(uint index, uint* v) Parameters index uint v uint* glVertexAttribI4bv(uint, sbyte*) public static extern void glVertexAttribI4bv(uint index, sbyte* v) Parameters index uint v sbyte* glVertexAttribI4bvEXT(uint, sbyte*) public static extern void glVertexAttribI4bvEXT(uint index, sbyte* v) Parameters index uint v sbyte* glVertexAttribI4i(uint, int, int, int, int) public static extern void glVertexAttribI4i(uint index, int x, int y, int z, int w) Parameters index uint x int y int z int w int glVertexAttribI4iEXT(uint, int, int, int, int) public static extern void glVertexAttribI4iEXT(uint index, int x, int y, int z, int w) Parameters index uint x int y int z int w int glVertexAttribI4iv(uint, int*) public static extern void glVertexAttribI4iv(uint index, int* v) Parameters index uint v int* glVertexAttribI4ivEXT(uint, int*) public static extern void glVertexAttribI4ivEXT(uint index, int* v) Parameters index uint v int* glVertexAttribI4sv(uint, short*) public static extern void glVertexAttribI4sv(uint index, short* v) Parameters index uint v short* glVertexAttribI4svEXT(uint, short*) public static extern void glVertexAttribI4svEXT(uint index, short* v) Parameters index uint v short* glVertexAttribI4ubv(uint, byte*) public static extern void glVertexAttribI4ubv(uint index, byte* v) Parameters index uint v byte* glVertexAttribI4ubvEXT(uint, byte*) public static extern void glVertexAttribI4ubvEXT(uint index, byte* v) Parameters index uint v byte* glVertexAttribI4ui(uint, uint, uint, uint, uint) public static extern void glVertexAttribI4ui(uint index, uint x, uint y, uint z, uint w) Parameters index uint x uint y uint z uint w uint glVertexAttribI4uiEXT(uint, uint, uint, uint, uint) public static extern void glVertexAttribI4uiEXT(uint index, uint x, uint y, uint z, uint w) Parameters index uint x uint y uint z uint w uint glVertexAttribI4uiv(uint, uint*) public static extern void glVertexAttribI4uiv(uint index, uint* v) Parameters index uint v uint* glVertexAttribI4uivEXT(uint, uint*) public static extern void glVertexAttribI4uivEXT(uint index, uint* v) Parameters index uint v uint* glVertexAttribI4usv(uint, ushort*) public static extern void glVertexAttribI4usv(uint index, ushort* v) Parameters index uint v ushort* glVertexAttribI4usvEXT(uint, ushort*) public static extern void glVertexAttribI4usvEXT(uint index, ushort* v) Parameters index uint v ushort* glVertexAttribIFormatNV(uint, int, uint, int) public static extern void glVertexAttribIFormatNV(uint index, int size, uint type, int stride) Parameters index uint size int type uint stride int glVertexAttribIPointer(uint, int, uint, int, nint) public static extern void glVertexAttribIPointer(uint index, int size, uint type, int stride, nint pointer) Parameters index uint size int type uint stride int pointer nint glVertexAttribIPointerEXT(uint, int, uint, int, nint) public static extern void glVertexAttribIPointerEXT(uint index, int size, uint type, int stride, nint pointer) Parameters index uint size int type uint stride int pointer nint glVertexAttribL1d(uint, double) public static extern void glVertexAttribL1d(uint index, double x) Parameters index uint x double glVertexAttribL1dEXT(uint, double) public static extern void glVertexAttribL1dEXT(uint index, double x) Parameters index uint x double glVertexAttribL1dv(uint, double*) public static extern void glVertexAttribL1dv(uint index, double* v) Parameters index uint v double* glVertexAttribL1dvEXT(uint, double*) public static extern void glVertexAttribL1dvEXT(uint index, double* v) Parameters index uint v double* glVertexAttribL1i64NV(uint, long) public static extern void glVertexAttribL1i64NV(uint index, long x) Parameters index uint x long glVertexAttribL1i64vNV(uint, long*) public static extern void glVertexAttribL1i64vNV(uint index, long* v) Parameters index uint v long* glVertexAttribL1ui64NV(uint, ulong) public static extern void glVertexAttribL1ui64NV(uint index, ulong x) Parameters index uint x ulong glVertexAttribL1ui64vNV(uint, ulong*) public static extern void glVertexAttribL1ui64vNV(uint index, ulong* v) Parameters index uint v ulong* glVertexAttribL2d(uint, double, double) public static extern void glVertexAttribL2d(uint index, double x, double y) Parameters index uint x double y double glVertexAttribL2dEXT(uint, double, double) public static extern void glVertexAttribL2dEXT(uint index, double x, double y) Parameters index uint x double y double glVertexAttribL2dv(uint, double*) public static extern void glVertexAttribL2dv(uint index, double* v) Parameters index uint v double* glVertexAttribL2dvEXT(uint, double*) public static extern void glVertexAttribL2dvEXT(uint index, double* v) Parameters index uint v double* glVertexAttribL2i64NV(uint, long, long) public static extern void glVertexAttribL2i64NV(uint index, long x, long y) Parameters index uint x long y long glVertexAttribL2i64vNV(uint, long*) public static extern void glVertexAttribL2i64vNV(uint index, long* v) Parameters index uint v long* glVertexAttribL2ui64NV(uint, ulong, ulong) public static extern void glVertexAttribL2ui64NV(uint index, ulong x, ulong y) Parameters index uint x ulong y ulong glVertexAttribL2ui64vNV(uint, ulong*) public static extern void glVertexAttribL2ui64vNV(uint index, ulong* v) Parameters index uint v ulong* glVertexAttribL3d(uint, double, double, double) public static extern void glVertexAttribL3d(uint index, double x, double y, double z) Parameters index uint x double y double z double glVertexAttribL3dEXT(uint, double, double, double) public static extern void glVertexAttribL3dEXT(uint index, double x, double y, double z) Parameters index uint x double y double z double glVertexAttribL3dv(uint, double*) public static extern void glVertexAttribL3dv(uint index, double* v) Parameters index uint v double* glVertexAttribL3dvEXT(uint, double*) public static extern void glVertexAttribL3dvEXT(uint index, double* v) Parameters index uint v double* glVertexAttribL3i64NV(uint, long, long, long) public static extern void glVertexAttribL3i64NV(uint index, long x, long y, long z) Parameters index uint x long y long z long glVertexAttribL3i64vNV(uint, long*) public static extern void glVertexAttribL3i64vNV(uint index, long* v) Parameters index uint v long* glVertexAttribL3ui64NV(uint, ulong, ulong, ulong) public static extern void glVertexAttribL3ui64NV(uint index, ulong x, ulong y, ulong z) Parameters index uint x ulong y ulong z ulong glVertexAttribL3ui64vNV(uint, ulong*) public static extern void glVertexAttribL3ui64vNV(uint index, ulong* v) Parameters index uint v ulong* glVertexAttribL4d(uint, double, double, double, double) public static extern void glVertexAttribL4d(uint index, double x, double y, double z, double w) Parameters index uint x double y double z double w double glVertexAttribL4dEXT(uint, double, double, double, double) public static extern void glVertexAttribL4dEXT(uint index, double x, double y, double z, double w) Parameters index uint x double y double z double w double glVertexAttribL4dv(uint, double*) public static extern void glVertexAttribL4dv(uint index, double* v) Parameters index uint v double* glVertexAttribL4dvEXT(uint, double*) public static extern void glVertexAttribL4dvEXT(uint index, double* v) Parameters index uint v double* glVertexAttribL4i64NV(uint, long, long, long, long) public static extern void glVertexAttribL4i64NV(uint index, long x, long y, long z, long w) Parameters index uint x long y long z long w long glVertexAttribL4i64vNV(uint, long*) public static extern void glVertexAttribL4i64vNV(uint index, long* v) Parameters index uint v long* glVertexAttribL4ui64NV(uint, ulong, ulong, ulong, ulong) public static extern void glVertexAttribL4ui64NV(uint index, ulong x, ulong y, ulong z, ulong w) Parameters index uint x ulong y ulong z ulong w ulong glVertexAttribL4ui64vNV(uint, ulong*) public static extern void glVertexAttribL4ui64vNV(uint index, ulong* v) Parameters index uint v ulong* glVertexAttribLFormatNV(uint, int, uint, int) public static extern void glVertexAttribLFormatNV(uint index, int size, uint type, int stride) Parameters index uint size int type uint stride int glVertexAttribLPointer(uint, int, uint, int, nint) public static extern void glVertexAttribLPointer(uint index, int size, uint type, int stride, nint pointer) Parameters index uint size int type uint stride int pointer nint glVertexAttribLPointerEXT(uint, int, uint, int, nint) public static extern void glVertexAttribLPointerEXT(uint index, int size, uint type, int stride, nint pointer) Parameters index uint size int type uint stride int pointer nint glVertexAttribP1ui(uint, uint, bool, uint) public static extern void glVertexAttribP1ui(uint index, uint type, bool normalized, uint value) Parameters index uint type uint normalized bool value uint glVertexAttribP1uiv(uint, uint, bool, uint*) public static extern void glVertexAttribP1uiv(uint index, uint type, bool normalized, uint* value) Parameters index uint type uint normalized bool value uint* glVertexAttribP2ui(uint, uint, bool, uint) public static extern void glVertexAttribP2ui(uint index, uint type, bool normalized, uint value) Parameters index uint type uint normalized bool value uint glVertexAttribP2uiv(uint, uint, bool, uint*) public static extern void glVertexAttribP2uiv(uint index, uint type, bool normalized, uint* value) Parameters index uint type uint normalized bool value uint* glVertexAttribP3ui(uint, uint, bool, uint) public static extern void glVertexAttribP3ui(uint index, uint type, bool normalized, uint value) Parameters index uint type uint normalized bool value uint glVertexAttribP3uiv(uint, uint, bool, uint*) public static extern void glVertexAttribP3uiv(uint index, uint type, bool normalized, uint* value) Parameters index uint type uint normalized bool value uint* glVertexAttribP4ui(uint, uint, bool, uint) public static extern void glVertexAttribP4ui(uint index, uint type, bool normalized, uint value) Parameters index uint type uint normalized bool value uint glVertexAttribP4uiv(uint, uint, bool, uint*) public static extern void glVertexAttribP4uiv(uint index, uint type, bool normalized, uint* value) Parameters index uint type uint normalized bool value uint* glVertexAttribPointer(uint, int, uint, bool, int, nint) public static extern void glVertexAttribPointer(uint index, int size, uint type, bool normalized, int stride, nint pointer) Parameters index uint size int type uint normalized bool stride int pointer nint glVertexAttribPointerARB(uint, int, uint, bool, int, nint) public static extern void glVertexAttribPointerARB(uint index, int size, uint type, bool normalized, int stride, nint pointer) Parameters index uint size int type uint normalized bool stride int pointer nint glVertexAttribPointerNV(uint, int, uint, int, nint) public static extern void glVertexAttribPointerNV(uint index, int fsize, uint type, int stride, nint pointer) Parameters index uint fsize int type uint stride int pointer nint glVertexAttribs1dvNV(uint, int, double*) public static extern void glVertexAttribs1dvNV(uint index, int count, double* v) Parameters index uint count int v double* glVertexAttribs1fvNV(uint, int, float*) public static extern void glVertexAttribs1fvNV(uint index, int count, float* v) Parameters index uint count int v float* glVertexAttribs1hvNV(uint, int, ushort*) public static extern void glVertexAttribs1hvNV(uint index, int n, ushort* v) Parameters index uint n int v ushort* glVertexAttribs1svNV(uint, int, short*) public static extern void glVertexAttribs1svNV(uint index, int count, short* v) Parameters index uint count int v short* glVertexAttribs2dvNV(uint, int, double*) public static extern void glVertexAttribs2dvNV(uint index, int count, double* v) Parameters index uint count int v double* glVertexAttribs2fvNV(uint, int, float*) public static extern void glVertexAttribs2fvNV(uint index, int count, float* v) Parameters index uint count int v float* glVertexAttribs2hvNV(uint, int, ushort*) public static extern void glVertexAttribs2hvNV(uint index, int n, ushort* v) Parameters index uint n int v ushort* glVertexAttribs2svNV(uint, int, short*) public static extern void glVertexAttribs2svNV(uint index, int count, short* v) Parameters index uint count int v short* glVertexAttribs3dvNV(uint, int, double*) public static extern void glVertexAttribs3dvNV(uint index, int count, double* v) Parameters index uint count int v double* glVertexAttribs3fvNV(uint, int, float*) public static extern void glVertexAttribs3fvNV(uint index, int count, float* v) Parameters index uint count int v float* glVertexAttribs3hvNV(uint, int, ushort*) public static extern void glVertexAttribs3hvNV(uint index, int n, ushort* v) Parameters index uint n int v ushort* glVertexAttribs3svNV(uint, int, short*) public static extern void glVertexAttribs3svNV(uint index, int count, short* v) Parameters index uint count int v short* glVertexAttribs4dvNV(uint, int, double*) public static extern void glVertexAttribs4dvNV(uint index, int count, double* v) Parameters index uint count int v double* glVertexAttribs4fvNV(uint, int, float*) public static extern void glVertexAttribs4fvNV(uint index, int count, float* v) Parameters index uint count int v float* glVertexAttribs4hvNV(uint, int, ushort*) public static extern void glVertexAttribs4hvNV(uint index, int n, ushort* v) Parameters index uint n int v ushort* glVertexAttribs4svNV(uint, int, short*) public static extern void glVertexAttribs4svNV(uint index, int count, short* v) Parameters index uint count int v short* glVertexAttribs4ubvNV(uint, int, byte*) public static extern void glVertexAttribs4ubvNV(uint index, int count, byte* v) Parameters index uint count int v byte* glVertexBlendARB(int) public static extern void glVertexBlendARB(int count) Parameters count int glVertexBlendEnvfATI(uint, float) public static extern void glVertexBlendEnvfATI(uint pname, float param) Parameters pname uint param float glVertexBlendEnviATI(uint, int) public static extern void glVertexBlendEnviATI(uint pname, int param) Parameters pname uint param int glVertexFormatNV(int, uint, int) public static extern void glVertexFormatNV(int size, uint type, int stride) Parameters size int type uint stride int glVertexP2ui(uint, uint) public static extern void glVertexP2ui(uint type, uint value) Parameters type uint value uint glVertexP2uiv(uint, uint*) public static extern void glVertexP2uiv(uint type, uint* value) Parameters type uint value uint* glVertexP3ui(uint, uint) public static extern void glVertexP3ui(uint type, uint value) Parameters type uint value uint glVertexP3uiv(uint, uint*) public static extern void glVertexP3uiv(uint type, uint* value) Parameters type uint value uint* glVertexP4ui(uint, uint) public static extern void glVertexP4ui(uint type, uint value) Parameters type uint value uint glVertexP4uiv(uint, uint*) public static extern void glVertexP4uiv(uint type, uint* value) Parameters type uint value uint* glVertexPointer(int, uint, int, nint) public static extern void glVertexPointer(int size, uint type, int stride, nint pointer) Parameters size int type uint stride int pointer nint glVertexPointerEXT(int, uint, int, int, nint) public static extern void glVertexPointerEXT(int size, uint type, int stride, int count, nint pointer) Parameters size int type uint stride int count int pointer nint glVertexPointerListIBM(int, uint, int, nint, int) public static extern void glVertexPointerListIBM(int size, uint type, int stride, nint pointer, int ptrstride) Parameters size int type uint stride int pointer nint ptrstride int glVertexPointervINTEL(int, uint, nint) public static extern void glVertexPointervINTEL(int size, uint type, nint pointer) Parameters size int type uint pointer nint glVertexStream1dATI(uint, double) public static extern void glVertexStream1dATI(uint stream, double x) Parameters stream uint x double glVertexStream1dvATI(uint, double*) public static extern void glVertexStream1dvATI(uint stream, double* coords) Parameters stream uint coords double* glVertexStream1fATI(uint, float) public static extern void glVertexStream1fATI(uint stream, float x) Parameters stream uint x float glVertexStream1fvATI(uint, float*) public static extern void glVertexStream1fvATI(uint stream, float* coords) Parameters stream uint coords float* glVertexStream1iATI(uint, int) public static extern void glVertexStream1iATI(uint stream, int x) Parameters stream uint x int glVertexStream1ivATI(uint, int*) public static extern void glVertexStream1ivATI(uint stream, int* coords) Parameters stream uint coords int* glVertexStream1sATI(uint, short) public static extern void glVertexStream1sATI(uint stream, short x) Parameters stream uint x short glVertexStream1svATI(uint, short*) public static extern void glVertexStream1svATI(uint stream, short* coords) Parameters stream uint coords short* glVertexStream2dATI(uint, double, double) public static extern void glVertexStream2dATI(uint stream, double x, double y) Parameters stream uint x double y double glVertexStream2dvATI(uint, double*) public static extern void glVertexStream2dvATI(uint stream, double* coords) Parameters stream uint coords double* glVertexStream2fATI(uint, float, float) public static extern void glVertexStream2fATI(uint stream, float x, float y) Parameters stream uint x float y float glVertexStream2fvATI(uint, float*) public static extern void glVertexStream2fvATI(uint stream, float* coords) Parameters stream uint coords float* glVertexStream2iATI(uint, int, int) public static extern void glVertexStream2iATI(uint stream, int x, int y) Parameters stream uint x int y int glVertexStream2ivATI(uint, int*) public static extern void glVertexStream2ivATI(uint stream, int* coords) Parameters stream uint coords int* glVertexStream2sATI(uint, short, short) public static extern void glVertexStream2sATI(uint stream, short x, short y) Parameters stream uint x short y short glVertexStream2svATI(uint, short*) public static extern void glVertexStream2svATI(uint stream, short* coords) Parameters stream uint coords short* glVertexStream3dATI(uint, double, double, double) public static extern void glVertexStream3dATI(uint stream, double x, double y, double z) Parameters stream uint x double y double z double glVertexStream3dvATI(uint, double*) public static extern void glVertexStream3dvATI(uint stream, double* coords) Parameters stream uint coords double* glVertexStream3fATI(uint, float, float, float) public static extern void glVertexStream3fATI(uint stream, float x, float y, float z) Parameters stream uint x float y float z float glVertexStream3fvATI(uint, float*) public static extern void glVertexStream3fvATI(uint stream, float* coords) Parameters stream uint coords float* glVertexStream3iATI(uint, int, int, int) public static extern void glVertexStream3iATI(uint stream, int x, int y, int z) Parameters stream uint x int y int z int glVertexStream3ivATI(uint, int*) public static extern void glVertexStream3ivATI(uint stream, int* coords) Parameters stream uint coords int* glVertexStream3sATI(uint, short, short, short) public static extern void glVertexStream3sATI(uint stream, short x, short y, short z) Parameters stream uint x short y short z short glVertexStream3svATI(uint, short*) public static extern void glVertexStream3svATI(uint stream, short* coords) Parameters stream uint coords short* glVertexStream4dATI(uint, double, double, double, double) public static extern void glVertexStream4dATI(uint stream, double x, double y, double z, double w) Parameters stream uint x double y double z double w double glVertexStream4dvATI(uint, double*) public static extern void glVertexStream4dvATI(uint stream, double* coords) Parameters stream uint coords double* glVertexStream4fATI(uint, float, float, float, float) public static extern void glVertexStream4fATI(uint stream, float x, float y, float z, float w) Parameters stream uint x float y float z float w float glVertexStream4fvATI(uint, float*) public static extern void glVertexStream4fvATI(uint stream, float* coords) Parameters stream uint coords float* glVertexStream4iATI(uint, int, int, int, int) public static extern void glVertexStream4iATI(uint stream, int x, int y, int z, int w) Parameters stream uint x int y int z int w int glVertexStream4ivATI(uint, int*) public static extern void glVertexStream4ivATI(uint stream, int* coords) Parameters stream uint coords int* glVertexStream4sATI(uint, short, short, short, short) public static extern void glVertexStream4sATI(uint stream, short x, short y, short z, short w) Parameters stream uint x short y short z short w short glVertexStream4svATI(uint, short*) public static extern void glVertexStream4svATI(uint stream, short* coords) Parameters stream uint coords short* glVertexWeightPointerEXT(int, uint, int, nint) public static extern void glVertexWeightPointerEXT(int size, uint type, int stride, nint pointer) Parameters size int type uint stride int pointer nint glVertexWeightfEXT(float) public static extern void glVertexWeightfEXT(float weight) Parameters weight float glVertexWeightfvEXT(float*) public static extern void glVertexWeightfvEXT(float* weight) Parameters weight float* glVertexWeighthNV(ushort) public static extern void glVertexWeighthNV(ushort weight) Parameters weight ushort glVertexWeighthvNV(ushort*) public static extern void glVertexWeighthvNV(ushort* weight) Parameters weight ushort* glVideoCaptureNV(uint, uint*, ulong*) public static extern uint glVideoCaptureNV(uint video_capture_slot, uint* sequence_num, ulong* capture_time) Parameters video_capture_slot uint sequence_num uint* capture_time ulong* Returns uint glVideoCaptureStreamParameterdvNV(uint, uint, uint, double*) public static extern void glVideoCaptureStreamParameterdvNV(uint video_capture_slot, uint stream, uint pname, double* @params) Parameters video_capture_slot uint stream uint pname uint params double* glVideoCaptureStreamParameterfvNV(uint, uint, uint, float*) public static extern void glVideoCaptureStreamParameterfvNV(uint video_capture_slot, uint stream, uint pname, float* @params) Parameters video_capture_slot uint stream uint pname uint params float* glVideoCaptureStreamParameterivNV(uint, uint, uint, int*) public static extern void glVideoCaptureStreamParameterivNV(uint video_capture_slot, uint stream, uint pname, int* @params) Parameters video_capture_slot uint stream uint pname uint params int* glViewport(int, int, int, int) public static extern void glViewport(int x, int y, int width, int height) Parameters x int y int width int height int glViewportArrayv(uint, int, float*) public static extern void glViewportArrayv(uint first, int count, float* v) Parameters first uint count int v float* glViewportIndexedf(uint, float, float, float, float) public static extern void glViewportIndexedf(uint index, float x, float y, float w, float h) Parameters index uint x float y float w float h float glViewportIndexedfv(uint, float*) public static extern void glViewportIndexedfv(uint index, float* v) Parameters index uint v float* glWaitSync(nint, uint, ulong) public static extern void glWaitSync(nint sync, uint flags, ulong timeout) Parameters sync nint flags uint timeout ulong glWeightPointerARB(int, uint, int, nint) public static extern void glWeightPointerARB(int size, uint type, int stride, nint pointer) Parameters size int type uint stride int pointer nint glWeightbvARB(int, sbyte*) public static extern void glWeightbvARB(int size, sbyte* weights) Parameters size int weights sbyte* glWeightdvARB(int, double*) public static extern void glWeightdvARB(int size, double* weights) Parameters size int weights double* glWeightfvARB(int, float*) public static extern void glWeightfvARB(int size, float* weights) Parameters size int weights float* glWeightivARB(int, int*) public static extern void glWeightivARB(int size, int* weights) Parameters size int weights int* glWeightsvARB(int, short*) public static extern void glWeightsvARB(int size, short* weights) Parameters size int weights short* glWeightubvARB(int, byte*) public static extern void glWeightubvARB(int size, byte* weights) Parameters size int weights byte* glWeightuivARB(int, uint*) public static extern void glWeightuivARB(int size, uint* weights) Parameters size int weights uint* glWeightusvARB(int, ushort*) public static extern void glWeightusvARB(int size, ushort* weights) Parameters size int weights ushort* glWindowPos2d(double, double) public static extern void glWindowPos2d(double x, double y) Parameters x double y double glWindowPos2dARB(double, double) public static extern void glWindowPos2dARB(double x, double y) Parameters x double y double glWindowPos2dMESA(double, double) public static extern void glWindowPos2dMESA(double x, double y) Parameters x double y double glWindowPos2dv(double*) public static extern void glWindowPos2dv(double* v) Parameters v double* glWindowPos2dvARB(double*) public static extern void glWindowPos2dvARB(double* v) Parameters v double* glWindowPos2dvMESA(double*) public static extern void glWindowPos2dvMESA(double* v) Parameters v double* glWindowPos2f(float, float) public static extern void glWindowPos2f(float x, float y) Parameters x float y float glWindowPos2fARB(float, float) public static extern void glWindowPos2fARB(float x, float y) Parameters x float y float glWindowPos2fMESA(float, float) public static extern void glWindowPos2fMESA(float x, float y) Parameters x float y float glWindowPos2fv(float*) public static extern void glWindowPos2fv(float* v) Parameters v float* glWindowPos2fvARB(float*) public static extern void glWindowPos2fvARB(float* v) Parameters v float* glWindowPos2fvMESA(float*) public static extern void glWindowPos2fvMESA(float* v) Parameters v float* glWindowPos2i(int, int) public static extern void glWindowPos2i(int x, int y) Parameters x int y int glWindowPos2iARB(int, int) public static extern void glWindowPos2iARB(int x, int y) Parameters x int y int glWindowPos2iMESA(int, int) public static extern void glWindowPos2iMESA(int x, int y) Parameters x int y int glWindowPos2iv(int*) public static extern void glWindowPos2iv(int* v) Parameters v int* glWindowPos2ivARB(int*) public static extern void glWindowPos2ivARB(int* v) Parameters v int* glWindowPos2ivMESA(int*) public static extern void glWindowPos2ivMESA(int* v) Parameters v int* glWindowPos2s(short, short) public static extern void glWindowPos2s(short x, short y) Parameters x short y short glWindowPos2sARB(short, short) public static extern void glWindowPos2sARB(short x, short y) Parameters x short y short glWindowPos2sMESA(short, short) public static extern void glWindowPos2sMESA(short x, short y) Parameters x short y short glWindowPos2sv(short*) public static extern void glWindowPos2sv(short* v) Parameters v short* glWindowPos2svARB(short*) public static extern void glWindowPos2svARB(short* v) Parameters v short* glWindowPos2svMESA(short*) public static extern void glWindowPos2svMESA(short* v) Parameters v short* glWindowPos3d(double, double, double) public static extern void glWindowPos3d(double x, double y, double z) Parameters x double y double z double glWindowPos3dARB(double, double, double) public static extern void glWindowPos3dARB(double x, double y, double z) Parameters x double y double z double glWindowPos3dMESA(double, double, double) public static extern void glWindowPos3dMESA(double x, double y, double z) Parameters x double y double z double glWindowPos3dv(double*) public static extern void glWindowPos3dv(double* v) Parameters v double* glWindowPos3dvARB(double*) public static extern void glWindowPos3dvARB(double* v) Parameters v double* glWindowPos3dvMESA(double*) public static extern void glWindowPos3dvMESA(double* v) Parameters v double* glWindowPos3f(float, float, float) public static extern void glWindowPos3f(float x, float y, float z) Parameters x float y float z float glWindowPos3fARB(float, float, float) public static extern void glWindowPos3fARB(float x, float y, float z) Parameters x float y float z float glWindowPos3fMESA(float, float, float) public static extern void glWindowPos3fMESA(float x, float y, float z) Parameters x float y float z float glWindowPos3fv(float*) public static extern void glWindowPos3fv(float* v) Parameters v float* glWindowPos3fvARB(float*) public static extern void glWindowPos3fvARB(float* v) Parameters v float* glWindowPos3fvMESA(float*) public static extern void glWindowPos3fvMESA(float* v) Parameters v float* glWindowPos3i(int, int, int) public static extern void glWindowPos3i(int x, int y, int z) Parameters x int y int z int glWindowPos3iARB(int, int, int) public static extern void glWindowPos3iARB(int x, int y, int z) Parameters x int y int z int glWindowPos3iMESA(int, int, int) public static extern void glWindowPos3iMESA(int x, int y, int z) Parameters x int y int z int glWindowPos3iv(int*) public static extern void glWindowPos3iv(int* v) Parameters v int* glWindowPos3ivARB(int*) public static extern void glWindowPos3ivARB(int* v) Parameters v int* glWindowPos3ivMESA(int*) public static extern void glWindowPos3ivMESA(int* v) Parameters v int* glWindowPos3s(short, short, short) public static extern void glWindowPos3s(short x, short y, short z) Parameters x short y short z short glWindowPos3sARB(short, short, short) public static extern void glWindowPos3sARB(short x, short y, short z) Parameters x short y short z short glWindowPos3sMESA(short, short, short) public static extern void glWindowPos3sMESA(short x, short y, short z) Parameters x short y short z short glWindowPos3sv(short*) public static extern void glWindowPos3sv(short* v) Parameters v short* glWindowPos3svARB(short*) public static extern void glWindowPos3svARB(short* v) Parameters v short* glWindowPos3svMESA(short*) public static extern void glWindowPos3svMESA(short* v) Parameters v short* glWindowPos4dMESA(double, double, double, double) public static extern void glWindowPos4dMESA(double x, double y, double z, double w) Parameters x double y double z double w double glWindowPos4dvMESA(double*) public static extern void glWindowPos4dvMESA(double* v) Parameters v double* glWindowPos4fMESA(float, float, float, float) public static extern void glWindowPos4fMESA(float x, float y, float z, float w) Parameters x float y float z float w float glWindowPos4fvMESA(float*) public static extern void glWindowPos4fvMESA(float* v) Parameters v float* glWindowPos4iMESA(int, int, int, int) public static extern void glWindowPos4iMESA(int x, int y, int z, int w) Parameters x int y int z int w int glWindowPos4ivMESA(int*) public static extern void glWindowPos4ivMESA(int* v) Parameters v int* glWindowPos4sMESA(short, short, short, short) public static extern void glWindowPos4sMESA(short x, short y, short z, short w) Parameters x short y short z short w short glWindowPos4svMESA(short*) public static extern void glWindowPos4svMESA(short* v) Parameters v short* glWriteMaskEXT(uint, uint, uint, uint, uint, uint) public static extern void glWriteMaskEXT(uint res, uint @in, uint outX, uint outY, uint outZ, uint outW) Parameters res uint in uint outX uint outY uint outZ uint outW uint" }, "api/Hi.Disp.IDisplayee.html": { "href": "api/Hi.Disp.IDisplayee.html", @@ -1252,7 +1297,7 @@ "api/Hi.Disp.StringDrawing.html": { "href": "api/Hi.Disp.StringDrawing.html", "title": "Class StringDrawing | HiAPI-C# 2025", - "summary": "Class StringDrawing Namespace Hi.Disp Assembly HiDisp.dll An IDisplayee to draw string. public class StringDrawing : IDisplayee, IExpandToBox3d, IDisposable Inheritance object StringDrawing Implements IDisplayee IExpandToBox3d IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) 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 StringDrawing(string) Constructor. public StringDrawing(string text) Parameters text string text Fields text Text to draw. public readonly string text Field Value string Properties Height Gets the height of the string drawing in pixels. public int Height { get; } Property Value int IsAlwaysOnTop Is text always on top. public bool IsAlwaysOnTop { get; set; } Property Value bool Width Gets the width of the string drawing in pixels. public int Width { get; } Property Value int Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Display(Bind, Vec3d, bool) Display at p. public void Display(Bind bind, Vec3d p, bool isAlwaysOnTop = false) Parameters bind Bind bind p Vec3d position isAlwaysOnTop bool is always on top Display(Bind, string, Vec3d, bool) Display text at p. public static void Display(Bind bind, string text, Vec3d p = null, bool isAlwaysOnTop = false) Parameters bind Bind bind text string text p Vec3d position isAlwaysOnTop bool is always on top Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ~StringDrawing() protected ~StringDrawing()" + "summary": "Class StringDrawing Namespace Hi.Disp Assembly HiDisp.dll An IDisplayee to draw string. Multi-line text is supported: ‘\\n’ starts a new line. public class StringDrawing : IDisplayee, IExpandToBox3d, IDisposable Inheritance object StringDrawing Implements IDisplayee IExpandToBox3d IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) 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 StringDrawing(string) Constructor. public StringDrawing(string text) Parameters text string text Fields text Text to draw. public readonly string text Field Value string Properties Height Gets the height of the string drawing in pixels. public int Height { get; } Property Value int IsAlwaysOnTop Is text always on top. public bool IsAlwaysOnTop { get; set; } Property Value bool Width Gets the width of the string drawing in pixels. public int Width { get; } Property Value int Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Display(Bind, Vec3d, bool) Display at p. public void Display(Bind bind, Vec3d p, bool isAlwaysOnTop = false) Parameters bind Bind bind p Vec3d position isAlwaysOnTop bool is always on top Display(Bind, string, Vec3d, bool) Display text at p. public static void Display(Bind bind, string text, Vec3d p = null, bool isAlwaysOnTop = false) Parameters bind Bind bind text string text p Vec3d position isAlwaysOnTop bool is always on top Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ~StringDrawing() protected ~StringDrawing()" }, "api/Hi.Disp.Treat.LineWidthSwap.html": { "href": "api/Hi.Disp.Treat.LineWidthSwap.html", @@ -1317,7 +1362,7 @@ "api/Hi.Disp.html": { "href": "api/Hi.Disp.html", "title": "Namespace Hi.Disp | HiAPI-C# 2025", - "summary": "Namespace Hi.Disp Classes Bind Runtime rendering data for each iteration in rendering loop. It manipulates geometry transformation, such as moving, rotatingand scaling. It also deal with color and picking. A bind_t object is generated by rendering in the every beginning of each rendering iteration. Box3dDispUtil Utility and Extension of Box3d. DelegateFuncDisplayee A displayee implementation that delegates display functionality to a function. DispEngine HiAPI display engine. DispEngineConfig Configuration class for display engine. DispFrameUtil Utility class for display frame management. DispList A combination of IDisplayee and SynList. DispUtil Display Utility Drawing The most efficient elemental 3D rendering unit. FuncDisplayee A displayee implementation that delegates display functionality to function delegates. GL Native opengl functions wrapper. MatStack Stack-based Matrix. MatStack.ItemDisposable A disposable class that manages push and pop operations on a matrix stack. Pickable Picking event handler for rendering. Note that it has to be disposed manually or the object occurs memory leak. PopModelMat Call Pop() for Hi.Disp.Bind.modelMatStack in Display(Bind). This function is only for test purpose. Since the ExpandToBox3d(Box3d) just expand the translation part of the mat to the target box. This function should be use with PushModelMat. PushModelMat Call Push() for Hi.Disp.Bind.modelMatStack in Display(Bind). This function is only for test purpose. Since the ExpandToBox3d(Box3d) just expand the translation part of the mat to the target box. This function should be use with PopModelMat. Segment3dDispUtil Utilities for converting geometry segments to renderable drawings. ShowEventPickable Show pick events in console. StringDrawing An IDisplayee to draw string. Tri3dDispUtil Utility and Extension of Tri3d. Vec3dDispUtil Utility and Extension of Vec3d. WrappedDisplayee A wrapper class for IDisplayee that allows customizing display and bounding box behavior. Interfaces IDisplayee An object which can be displayed in DispEngine. IGetDispEngine Interface fo getting DispEngine. IGetPickable Get Pickable interface. IGlContextDirver Bridge of Native OpenGL Context. Enums MvpBoxRelation Relation between mvpBox and an AABB Stamp Data scope of the double array for Drawing. Delegates Box3dDispUtil.BoxableExpandToBox3dDel Delegate for expanding a native boxable object to a box3d. DispEngine.ImageRequestedDelegate For ImageRequestAfterBufferSwapped." + "summary": "Namespace Hi.Disp Classes Bind Runtime rendering data for each iteration in rendering loop. It manipulates geometry transformation, such as moving, rotatingand scaling. It also deal with color and picking. A bind_t object is generated by rendering in the every beginning of each rendering iteration. Box3dDispUtil Utility and Extension of Box3d. DelegateFuncDisplayee A displayee implementation that delegates display functionality to a function. DispEngine HiAPI display engine. DispEngineConfig Configuration class for display engine. DispFrameUtil Utility class for display frame management. DispList A combination of IDisplayee and SynList. DispUtil Display Utility Drawing The most efficient elemental 3D rendering unit. FuncDisplayee A displayee implementation that delegates display functionality to function delegates. GL Native opengl functions wrapper. MatStack Stack-based Matrix. MatStack.ItemDisposable A disposable class that manages push and pop operations on a matrix stack. Pickable Picking event handler for rendering. Note that it has to be disposed manually or the object occurs memory leak. PopModelMat Call Pop() for Hi.Disp.Bind.modelMatStack in Display(Bind). This function is only for test purpose. Since the ExpandToBox3d(Box3d) just expand the translation part of the mat to the target box. This function should be use with PushModelMat. PushModelMat Call Push() for Hi.Disp.Bind.modelMatStack in Display(Bind). This function is only for test purpose. Since the ExpandToBox3d(Box3d) just expand the translation part of the mat to the target box. This function should be use with PopModelMat. Segment3dDispUtil Utilities for converting geometry segments to renderable drawings. ShowEventPickable Show pick events in console. StringDrawing An IDisplayee to draw string. Multi-line text is supported: ‘\\n’ starts a new line. Tri3dDispUtil Utility and Extension of Tri3d. Vec3dDispUtil Utility and Extension of Vec3d. WrappedDisplayee A wrapper class for IDisplayee that allows customizing display and bounding box behavior. Interfaces IDisplayee An object which can be displayed in DispEngine. IGetDispEngine Interface fo getting DispEngine. IGetPickable Get Pickable interface. IGlContextDirver Bridge of Native OpenGL Context. Enums MvpBoxRelation Relation between mvpBox and an AABB Stamp Data scope of the double array for Drawing. Delegates Box3dDispUtil.BoxableExpandToBox3dDel Delegate for expanding a native boxable object to a box3d. DispEngine.ImageRequestedDelegate For ImageRequestAfterBufferSwapped." }, "api/Hi.Fanuc.FanucVarTable.html": { "href": "api/Hi.Fanuc.FanucVarTable.html", @@ -1362,12 +1407,12 @@ "api/Hi.Geom.Box3d.html": { "href": "api/Hi.Geom.Box3d.html", "title": "Class Box3d | HiAPI-C# 2025", - "summary": "Class Box3d Namespace Hi.Geom Assembly HiGeom.dll Lightweight 3d box. An orthogonal box which the edges are all parallel with Cartesian Coordinate. The data contains in a Box3d is Min and Max. public class Box3d : IExpandToBox3d, IEquatable, IStlSource, IGetStl, IMakeXmlSource, IBinaryIo, IWriteBin, IDuplicate, IFormattable, IToPresentDto Inheritance object Box3d Implements IExpandToBox3d IEquatable IStlSource IGetStl IMakeXmlSource IBinaryIo IWriteBin IDuplicate IFormattable IToPresentDto Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods BinIoUtil.ToBytes(IWriteBin) XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) GeomUtil.ExpandToBox3d(IExpandToBox3d, Mat4d, Box3d) GeomUtil.GetBox3d(IExpandToBox3d) PairZrUtil.GetZrList(IGetStl) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Box3d() Ctor. public Box3d() Box3d(NoInit) Ctor. The Ctor keeps Min and Max to null. public Box3d(Box3d.NoInit noInit) Parameters noInit Box3d.NoInit Box3d(params IExpandToBox3d[]) Creates a box that encompasses all the provided expandable objects. public Box3d(params IExpandToBox3d[] src) Parameters src IExpandToBox3d[] Array of objects that can expand to a box Box3d(Vec3d, Vec3d) Ctor. public Box3d(Vec3d min, Vec3d max) Parameters min Vec3d Min max Vec3d Max Box3d(box3d) Ctor. public Box3d(box3d src) Parameters src box3d src Box3d(IEnumerable) Creates a box that encompasses all the provided expandable objects. public Box3d(IEnumerable src) Parameters src IEnumerable Collection of objects that can expand to a box Box3d(double, double, double, double, double, double) Creates a box with the specified minimum and maximum coordinates. public Box3d(double minx, double miny, double minz, double maxx, double maxy, double maxz) Parameters minx double Minimum X coordinate miny double Minimum Y coordinate minz double Minimum Z coordinate maxx double Maximum X coordinate maxy double Maximum Y coordinate maxz double Maximum Z coordinate Box3d(BinaryReader) Creates a box from binary data. public Box3d(BinaryReader reader) Parameters reader BinaryReader Binary reader to read the box data from Box3d(XElement) Ctor. public Box3d(XElement src) Parameters src XElement XML Properties BottomCenter Center of the bottom surface. public Vec3d BottomCenter { get; } Property Value Vec3d BottomView Gets a transformation matrix for viewing the box from the bottom. public Mat4d BottomView { get; } Property Value Mat4d Center Center public Vec3d Center { get; } Property Value Vec3d CenterUnitBox Generate a center unit box which min~max is (-0.5,-0.5,-0.5)~(0.5,0.5,0.5). public static Box3d CenterUnitBox { get; } Property Value Box3d DiagonalLength Diagonal length. public double DiagonalLength { get; } Property Value double Dim Dimension. public Vec3d Dim { get; } Property Value Vec3d FrontView Gets a transformation matrix for viewing the box from the front. public Mat4d FrontView { get; } Property Value Mat4d HasVolume Checks if the box has a positive volume (all dimensions are greater than zero). public bool HasVolume { get; } Property Value bool InfiniteBox Generate a infinite box which min~max is (-∞,-∞,-∞)~(∞,∞,∞). public static Box3d InfiniteBox { get; } Property Value Box3d IsAllNaN True if all components of Min and Max are NaN. public bool IsAllNaN { get; } Property Value bool IsFinite True if the box is finite. public bool IsFinite { get; } Property Value bool IsReversedPoleBox True if the box is ReversedPoleBox public bool IsReversedPoleBox { get; } Property Value bool IsometricView Gets a transformation matrix for viewing the box from an isometric perspective. public Mat4d IsometricView { get; } Property Value Mat4d LeftSideView Gets a transformation matrix for viewing the box from the left side. public Mat4d LeftSideView { get; } Property Value Mat4d Max Maximum point of the box. public Vec3d Max { get; set; } Property Value Vec3d Min Minimum point of the box. public Vec3d Min { get; set; } Property Value Vec3d NaN Generate a nan box which min~max is (nan,nan,nan)~(nan,nan,nan). public static Box3d NaN { get; } Property Value Box3d NativeByteSize Gets the native byte size of a Box3d (2 Vec3d objects). public static int NativeByteSize { get; } Property Value int RearView Gets a transformation matrix for viewing the box from the rear. public Mat4d RearView { get; } Property Value Mat4d ReversedPoleBox Generate a reversed pole box which min~max is (∞,∞,∞)~(-∞,-∞,-∞). public static Box3d ReversedPoleBox { get; } Property Value Box3d RightSideView Gets a transformation matrix for viewing the box from the right side. public Mat4d RightSideView { get; } Property Value Mat4d TopCenter Center of the top surface. public Vec3d TopCenter { get; } Property Value Vec3d TopView Gets a transformation matrix for viewing the box from the top. public Mat4d TopView { get; } Property Value Mat4d UnitBox Generate a unit box which min~max is (0,0,0)~(1,1,1). public static Box3d UnitBox { get; } Property Value Box3d Volume Gets the volume of the box. public double Volume { get; } Property Value double XName Name for XML IO. public static string XName { get; } Property Value string ZeroBox Generate a zero box which min~max is (0,0,0)~(0,0,0). public static Box3d ZeroBox { get; } Property Value Box3d Methods ApexAt(int) Get Apex at the box. public Vec3d ApexAt(int index) Parameters index int index 0~7. all of 8 apex. Returns Vec3d Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object Equals(Box3d) Indicates whether the current object is equal to another object of the same type. public bool Equals(Box3d other) Parameters other Box3d An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. Expand(Box3d) Expands this box to include another box. public Box3d Expand(Box3d src) Parameters src Box3d The box to include Returns Box3d This box after expansion Expand(Vec3d) Expands the box to include the specified point. public Box3d Expand(Vec3d p) Parameters p Vec3d Point to include in the box Returns Box3d This box after expansion Expand(IEnumerable) Expands the box to include all specified points. public Box3d Expand(IEnumerable ps) Parameters ps IEnumerable The points to include in the box. Returns Box3d This box after expansion. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. GetStl() Generate Stl. public Stl GetStl() Returns Stl stl GetTransformedBoundingBox(Mat4d) Get the bounding box of the transformed box. public Box3d GetTransformedBoundingBox(Mat4d mat) Parameters mat Mat4d matrix Returns Box3d GetTris(ICollection) Generates triangles representing the box's surfaces. public int GetTris(ICollection dst) Parameters dst ICollection Collection to add the triangles to Returns int The number of triangles added (12) IsOverlapped(Box3d) Is the box overlapped to otherBox. public bool IsOverlapped(Box3d otherBox) Parameters otherBox Box3d other box Returns bool is overlapped 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. MemberAt(int) Get member at the location. public Vec3d MemberAt(int iter) Parameters iter int iterator Returns Vec3d Minif iter is 0; otherwise, return Max ReadBin(BinaryReader) Reads box data from a binary reader. public void ReadBin(BinaryReader reader) Parameters reader BinaryReader Binary reader to read the box data from Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ScaleFromCenter(double) Scales the box from its center point. public Box3d ScaleFromCenter(double s) Parameters s double Scale factor Returns Box3d This box after scaling Set(Box3d) Copy the src. The Min and Max are kept the same object. Only the double values changed. public Box3d Set(Box3d src) Parameters src Box3d src Returns Box3d this Set(box3d) Copy the src. The Min and Max are kept the same object. Only the double values changed. public Box3d Set(box3d src) Parameters src box3d src Returns Box3d this Set(double, double, double, double, double, double) Sets the box coordinates to the specified values. public Box3d Set(double minx, double miny, double minz, double maxx, double maxy, double maxz) Parameters minx double Minimum X coordinate miny double Minimum Y coordinate minz double Minimum Z coordinate maxx double Maximum X coordinate maxy double Maximum Y coordinate maxz double Maximum Z coordinate Returns Box3d This box after modification SetToTransformedBoundingBox(Mat4d) Set the box to the bounding box of the matrix-transformed box. public Box3d SetToTransformedBoundingBox(Mat4d mat) Parameters mat Mat4d matrix Returns Box3d this ToPresentDto() Convert Box3d to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO object with type, min, max properties ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToString(string, IFormatProvider) Returns a string representation of the box formatted according to the specified format. public string ToString(string format, IFormatProvider formatProvider) Parameters format string The format to use for each component formatProvider IFormatProvider The format provider to use Returns string A formatted string representation of the box Translate(Vec3d) Translate the box. public Box3d Translate(Vec3d vec) Parameters vec Vec3d translation vector Returns Box3d this WriteBin(BinaryWriter) Writes box data to a binary writer. public void WriteBin(BinaryWriter writer) Parameters writer BinaryWriter Binary writer to write the box data to" + "summary": "Class Box3d Namespace Hi.Geom Assembly HiGeom.dll Lightweight 3d box. An orthogonal box which the edges are all parallel with Cartesian Coordinate. The data contains in a Box3d is Min and Max. public class Box3d : IExpandToBox3d, IEquatable, IStlSource, IGetStl, IMakeXmlSource, IBinaryIo, IWriteBin, IDuplicate, IFormattable, IToPresentDto Inheritance object Box3d Implements IExpandToBox3d IEquatable IStlSource IGetStl IMakeXmlSource IBinaryIo IWriteBin IDuplicate IFormattable IToPresentDto Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods BinIoUtil.ToBytes(IWriteBin) XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) GeomUtil.ExpandToBox3d(IExpandToBox3d, Mat4d, Box3d) GeomUtil.GetBox3d(IExpandToBox3d) PairZrUtil.GetZrList(IGetStl) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Box3d() Ctor. public Box3d() Box3d(NoInit) Ctor. The Ctor keeps Min and Max to null. public Box3d(Box3d.NoInit noInit) Parameters noInit Box3d.NoInit Box3d(params IExpandToBox3d[]) Creates a box that encompasses all the provided expandable objects. public Box3d(params IExpandToBox3d[] src) Parameters src IExpandToBox3d[] Array of objects that can expand to a box Box3d(Vec3d, Vec3d) Ctor. public Box3d(Vec3d min, Vec3d max) Parameters min Vec3d Min max Vec3d Max Box3d(box3d) Ctor. public Box3d(box3d src) Parameters src box3d src Box3d(IEnumerable) Creates a box that encompasses all the provided expandable objects. public Box3d(IEnumerable src) Parameters src IEnumerable Collection of objects that can expand to a box Box3d(double, double, double, double, double, double) Creates a box with the specified minimum and maximum coordinates. public Box3d(double minx, double miny, double minz, double maxx, double maxy, double maxz) Parameters minx double Minimum X coordinate miny double Minimum Y coordinate minz double Minimum Z coordinate maxx double Maximum X coordinate maxy double Maximum Y coordinate maxz double Maximum Z coordinate Box3d(BinaryReader) Creates a box from binary data. public Box3d(BinaryReader reader) Parameters reader BinaryReader Binary reader to read the box data from Box3d(XElement) Ctor. public Box3d(XElement src) Parameters src XElement XML Properties BottomCenter Center of the bottom surface. public Vec3d BottomCenter { get; } Property Value Vec3d BottomView Gets a transformation matrix for viewing the box from the bottom. public Mat4d BottomView { get; } Property Value Mat4d Center Center public Vec3d Center { get; } Property Value Vec3d CenterUnitBox Generate a center unit box which min~max is (-0.5,-0.5,-0.5)~(0.5,0.5,0.5). public static Box3d CenterUnitBox { get; } Property Value Box3d DiagonalLength Diagonal length. public double DiagonalLength { get; } Property Value double Dim Dimension. public Vec3d Dim { get; } Property Value Vec3d FrontView Gets a transformation matrix for viewing the box from the front. public Mat4d FrontView { get; } Property Value Mat4d HasVolume Checks if the box has a positive volume (all dimensions are greater than zero). public bool HasVolume { get; } Property Value bool InfiniteBox Generate a infinite box which min~max is (-∞,-∞,-∞)~(∞,∞,∞). public static Box3d InfiniteBox { get; } Property Value Box3d IsAllNaN True if all components of Min and Max are NaN. public bool IsAllNaN { get; } Property Value bool IsFinite True if the box is finite. public bool IsFinite { get; } Property Value bool IsReversedPoleBox True if the box is ReversedPoleBox public bool IsReversedPoleBox { get; } Property Value bool IsometricView Gets a transformation matrix for viewing the box from an isometric perspective. public Mat4d IsometricView { get; } Property Value Mat4d LeftSideView Gets a transformation matrix for viewing the box from the left side. public Mat4d LeftSideView { get; } Property Value Mat4d Max Maximum point of the box. public Vec3d Max { get; set; } Property Value Vec3d Min Minimum point of the box. public Vec3d Min { get; set; } Property Value Vec3d NaN Generate a nan box which min~max is (nan,nan,nan)~(nan,nan,nan). public static Box3d NaN { get; } Property Value Box3d NativeByteSize Gets the native byte size of a Box3d (2 Vec3d objects). public static int NativeByteSize { get; } Property Value int RearView Gets a transformation matrix for viewing the box from the rear. public Mat4d RearView { get; } Property Value Mat4d ReversedPoleBox Generate a reversed pole box which min~max is (∞,∞,∞)~(-∞,-∞,-∞). public static Box3d ReversedPoleBox { get; } Property Value Box3d RightSideView Gets a transformation matrix for viewing the box from the right side. public Mat4d RightSideView { get; } Property Value Mat4d TopCenter Center of the top surface. public Vec3d TopCenter { get; } Property Value Vec3d TopView Gets a transformation matrix for viewing the box from the top. public Mat4d TopView { get; } Property Value Mat4d UnitBox Generate a unit box which min~max is (0,0,0)~(1,1,1). public static Box3d UnitBox { get; } Property Value Box3d Volume Gets the volume of the box. public double Volume { get; } Property Value double XName Name for XML IO. public static string XName { get; } Property Value string ZeroBox Generate a zero box which min~max is (0,0,0)~(0,0,0). public static Box3d ZeroBox { get; } Property Value Box3d Methods ApexAt(int) Get Apex at the box. public Vec3d ApexAt(int index) Parameters index int index 0~7. all of 8 apex. Returns Vec3d Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object Equals(Box3d) Indicates whether the current object is equal to another object of the same type. public bool Equals(Box3d other) Parameters other Box3d An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. Expand(Box3d) Expands this box to include another box. public Box3d Expand(Box3d src) Parameters src Box3d The box to include Returns Box3d This box after expansion Expand(Vec3d) Expands the box to include the specified point. public Box3d Expand(Vec3d p) Parameters p Vec3d Point to include in the box Returns Box3d This box after expansion Expand(IEnumerable) Expands the box to include all specified points. public Box3d Expand(IEnumerable ps) Parameters ps IEnumerable The points to include in the box. Returns Box3d This box after expansion. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. GetStl() Generate Stl. public Stl GetStl() Returns Stl stl GetTransformedBoundingBox(Mat4d) Get the bounding box of the transformed box. public Box3d GetTransformedBoundingBox(Mat4d mat) Parameters mat Mat4d matrix Returns Box3d GetTris(ICollection) Generates triangles representing the box's surfaces. public int GetTris(ICollection dst) Parameters dst ICollection Collection to add the triangles to Returns int The number of triangles added (12) IsOverlapped(Box3d) Is the box overlapped to otherBox. public bool IsOverlapped(Box3d otherBox) Parameters otherBox Box3d other box Returns bool is overlapped 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. MemberAt(int) Get member at the location. public Vec3d MemberAt(int iter) Parameters iter int iterator Returns Vec3d Minif iter is 0; otherwise, return Max ReadBin(BinaryReader) Reads box data from a binary reader. public void ReadBin(BinaryReader reader) Parameters reader BinaryReader Binary reader to read the box data from Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ScaleFromCenter(double) Scales the box from its center point. public Box3d ScaleFromCenter(double s) Parameters s double Scale factor Returns Box3d This box after scaling Set(Box3d) Copy the src. The Min and Max are kept the same object. Only the double values changed. public Box3d Set(Box3d src) Parameters src Box3d src Returns Box3d this Set(box3d) Copy the src. The Min and Max are kept the same object. Only the double values changed. public Box3d Set(box3d src) Parameters src box3d src Returns Box3d this Set(double, double, double, double, double, double) Sets the box coordinates to the specified values. public Box3d Set(double minx, double miny, double minz, double maxx, double maxy, double maxz) Parameters minx double Minimum X coordinate miny double Minimum Y coordinate minz double Minimum Z coordinate maxx double Maximum X coordinate maxy double Maximum Y coordinate maxz double Maximum Z coordinate Returns Box3d This box after modification SetToTransformedBoundingBox(Mat4d) Set the box to the bounding box of the matrix-transformed box. public Box3d SetToTransformedBoundingBox(Mat4d mat) Parameters mat Mat4d matrix Returns Box3d this ToPresentDto() Convert Box3d to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO dictionary with Type, Min, Max keys ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToString(string, IFormatProvider) Returns a string representation of the box formatted according to the specified format. public string ToString(string format, IFormatProvider formatProvider) Parameters format string The format to use for each component formatProvider IFormatProvider The format provider to use Returns string A formatted string representation of the box Translate(Vec3d) Translate the box. public Box3d Translate(Vec3d vec) Parameters vec Vec3d translation vector Returns Box3d this WriteBin(BinaryWriter) Writes box data to a binary writer. public void WriteBin(BinaryWriter writer) Parameters writer BinaryWriter Binary writer to write the box data to" }, "api/Hi.Geom.Cylindroid.html": { "href": "api/Hi.Geom.Cylindroid.html", "title": "Class Cylindroid | HiAPI-C# 2025", - "summary": "Class Cylindroid Namespace Hi.Geom Assembly HiGeom.dll 3d Geometry of Cylindroid. public class Cylindroid : IStlSource, IGetStl, IMakeXmlSource, IExpandToBox3d, IGetZrContour, IDuplicate, IGetZrList, IGenStl, IToPresentDto Inheritance object Cylindroid Implements IStlSource IGetStl IMakeXmlSource IExpandToBox3d IGetZrContour IDuplicate IGetZrList IGenStl IToPresentDto Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) GeomUtil.ExpandToBox3d(IExpandToBox3d, Mat4d, Box3d) GeomUtil.GetBox3d(IExpandToBox3d) PairZrUtil.GetZrList(IGetStl) PairZrUtil.GetVolume(IGetZrList) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Cylindroid() Initializes a new instance of the Cylindroid class with an empty list of PairZr objects. public Cylindroid() Cylindroid(Cylindroid) Initializes a new instance of the Cylindroid class by copying another Cylindroid. public Cylindroid(Cylindroid src) Parameters src Cylindroid The source Cylindroid to copy from. Cylindroid(params PairZr[]) Ctor. The order of z values should be from small to large in general case. public Cylindroid(params PairZr[] pairZRs) Parameters pairZRs PairZr[] See PairZrs. Cylindroid(XElement) Ctor. public Cylindroid(XElement src) Parameters src XElement XML Properties DefaultPolarResolution2d Default polar resolution. public static IPolarResolution2d DefaultPolarResolution2d { get; set; } Property Value IPolarResolution2d PairZrs ZR values. The order of z values should be from small to large in general case. public List PairZrs { get; set; } Property Value List UnitCylinder Generate a cylindroid that height is 1 and radius is 0.5. public static Cylindroid UnitCylinder { get; } Property Value Cylindroid XName Name for XML IO. public static string XName { get; } Property Value string Methods Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GenCylinder(double, double) Generates a cylinder with the specified height and radius. public static Cylindroid GenCylinder(double height, double r) Parameters height double The height of the cylinder. r double The radius of the cylinder. Returns Cylindroid A new Cylindroid representing the cylinder. GenStl(IPolarResolution2d) Generates a new STL. public Stl GenStl(IPolarResolution2d resolution) Parameters resolution IPolarResolution2d Polar resolution Returns Stl A newly created STL. GetStl() Gets the STL geometry data. public Stl GetStl() Returns Stl The STL geometry object GetZrContour(double) Gets Z-R contour data as a list of PairZr objects. The Z values should generally be ordered from smallest to largest. public IList GetZrContour(double latitudeAngleResolution_rad) Parameters latitudeAngleResolution_rad double Resolution of latitude angle in radians Returns IList Z-R contour data as a list of PairZr objects GetZrList() Gets a list of Z-R coordinate pairs. public List GetZrList() Returns List A list of PairZr objects representing Z-R coordinates. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToPresentDto() Convert Cylindroid to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO object with type and zrPairs properties" + "summary": "Class Cylindroid Namespace Hi.Geom Assembly HiGeom.dll 3d Geometry of Cylindroid. public class Cylindroid : IStlSource, IGetStl, IMakeXmlSource, IExpandToBox3d, IGetZrContour, IDuplicate, IGetZrList, IGenStl, IToPresentDto Inheritance object Cylindroid Implements IStlSource IGetStl IMakeXmlSource IExpandToBox3d IGetZrContour IDuplicate IGetZrList IGenStl IToPresentDto Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) GeomUtil.ExpandToBox3d(IExpandToBox3d, Mat4d, Box3d) GeomUtil.GetBox3d(IExpandToBox3d) PairZrUtil.GetZrList(IGetStl) PairZrUtil.GetVolume(IGetZrList) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Cylindroid() Initializes a new instance of the Cylindroid class with an empty list of PairZr objects. public Cylindroid() Cylindroid(Cylindroid) Initializes a new instance of the Cylindroid class by copying another Cylindroid. public Cylindroid(Cylindroid src) Parameters src Cylindroid The source Cylindroid to copy from. Cylindroid(params PairZr[]) Ctor. The order of z values should be from small to large in general case. public Cylindroid(params PairZr[] pairZRs) Parameters pairZRs PairZr[] See PairZrs. Cylindroid(XElement) Ctor. public Cylindroid(XElement src) Parameters src XElement XML Properties DefaultPolarResolution2d Default polar resolution. public static IPolarResolution2d DefaultPolarResolution2d { get; set; } Property Value IPolarResolution2d PairZrs ZR values. The order of z values should be from small to large in general case. public List PairZrs { get; set; } Property Value List UnitCylinder Generate a cylindroid that height is 1 and radius is 0.5. public static Cylindroid UnitCylinder { get; } Property Value Cylindroid XName Name for XML IO. public static string XName { get; } Property Value string Methods Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GenCylinder(double, double) Generates a cylinder with the specified height and radius. public static Cylindroid GenCylinder(double height, double r) Parameters height double The height of the cylinder. r double The radius of the cylinder. Returns Cylindroid A new Cylindroid representing the cylinder. GenStl(IPolarResolution2d) Generates a new STL. public Stl GenStl(IPolarResolution2d resolution) Parameters resolution IPolarResolution2d Polar resolution Returns Stl A newly created STL. GetStl() Gets the STL geometry data. public Stl GetStl() Returns Stl The STL geometry object GetZrContour(double) Gets Z-R contour data as a list of PairZr objects. The Z values should generally be ordered from smallest to largest. public IList GetZrContour(double latitudeAngleResolution_rad) Parameters latitudeAngleResolution_rad double Resolution of latitude angle in radians Returns IList Z-R contour data as a list of PairZr objects GetZrList() Gets a list of Z-R coordinate pairs. public List GetZrList() Returns List A list of PairZr objects representing Z-R coordinates. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToPresentDto() Convert Cylindroid to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO dictionary with Type and PairZrs keys" }, "api/Hi.Geom.DVec3d.html": { "href": "api/Hi.Geom.DVec3d.html", @@ -1402,7 +1447,7 @@ "api/Hi.Geom.GeomCombination.html": { "href": "api/Hi.Geom.GeomCombination.html", "title": "Class GeomCombination | HiAPI-C# 2025", - "summary": "Class GeomCombination Namespace Hi.Geom Assembly HiGeom.dll A class that manages multiple STL sources as a single source. public class GeomCombination : IStlSource, IGetStl, IMakeXmlSource, IGenStl Inheritance object GeomCombination Implements IStlSource IGetStl IMakeXmlSource IGenStl Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) PairZrUtil.GetZrList(IGetStl) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors GeomCombination() Default constructor that initializes an empty collection of STL sources. public GeomCombination() GeomCombination(params IStlSource[]) Initializes a new instance with a set of STL sources. public GeomCombination(params IStlSource[] stlSources) Parameters stlSources IStlSource[] A set of STL sources GeomCombination(XElement, string, string, IProgress) Ctor. public GeomCombination(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement XML baseDirectory string Base directory path relFile string Relative file path progress IProgress Optional progress reporter for the XML parsing chain Properties StlSources Collection of STL sources managed by this instance. public List StlSources { get; } Property Value List XName Name for XML IO. public static string XName { get; } Property Value string Methods CleanStlCache() Clears the cached STL data, forcing it to be regenerated on the next request. public void CleanStlCache() Duplicate(params object[]) public object Duplicate(params object[] res) Parameters res object[] Returns object GenStl(IPolarResolution2d) Generates a new STL. public Stl GenStl(IPolarResolution2d resolution) Parameters resolution IPolarResolution2d Polar resolution Returns Stl A newly created STL. GetStl() Gets the STL geometry data. public Stl GetStl() Returns Stl The STL geometry object 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class GeomCombination Namespace Hi.Geom Assembly HiGeom.dll A class that manages multiple STL sources as a single source. public class GeomCombination : IStlSource, IGetStl, IMakeXmlSource, IGenStl Inheritance object GeomCombination Implements IStlSource IGetStl IMakeXmlSource IGenStl Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) PairZrUtil.GetZrList(IGetStl) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors GeomCombination() Default constructor that initializes an empty collection of STL sources. public GeomCombination() GeomCombination(params IStlSource[]) Initializes a new instance with a set of STL sources. public GeomCombination(params IStlSource[] stlSources) Parameters stlSources IStlSource[] A set of STL sources GeomCombination(XElement, string, string, IProgress) Ctor. public GeomCombination(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement XML baseDirectory string Base directory path relFile string Relative file path progress IProgress Optional progress reporter for the XML parsing chain Properties StlSources Collection of STL sources managed by this instance. public List StlSources { get; } Property Value List XName Name for XML IO. public static string XName { get; } Property Value string Methods CleanStlCache() Clears the cached STL data, forcing it to be regenerated on the next request. public void CleanStlCache() Duplicate(params object[]) public object Duplicate(params object[] res) Parameters res object[] Returns object GenStl(IPolarResolution2d) Generates a new STL. public Stl GenStl(IPolarResolution2d resolution) Parameters resolution IPolarResolution2d Polar resolution Returns Stl A newly created STL. GetStl() Gets the STL geometry data. public Stl GetStl() Returns Stl The STL geometry object 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.Geom.GeomUtil.html": { "href": "api/Hi.Geom.GeomUtil.html", @@ -1487,7 +1532,7 @@ "api/Hi.Geom.MathUtil.html": { "href": "api/Hi.Geom.MathUtil.html", "title": "Class MathUtil | HiAPI-C# 2025", - "summary": "Class MathUtil Namespace Hi.Geom Assembly HiGeom.dll Math Utility. public static class MathUtil Inheritance object MathUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields sqrt2 square root of 2. public const double sqrt2 = 1.4142135623730951 Field Value double sqrt3 square root of 3. public const double sqrt3 = 1.7320508075688772 Field Value double Methods AbsDiffAngle(double, double) Calculates the absolute difference between two angles in radians public static double AbsDiffAngle(double angleA_rad, double angleB_rad) Parameters angleA_rad double First angle in radians angleB_rad double Second angle in radians Returns double The absolute difference between the two angles Add(double[], double[]) Adds the elements of the second array to the corresponding elements of the first array in-place. public static double[] Add(this double[] src, double[] src2) Parameters src double[] The source array to which elements will be added. src2 double[] The array containing elements to add. Returns double[] The modified source array. AlterIfNan(double, double) public static double AlterIfNan(double primaryValue, double alteringValue) Parameters primaryValue double primary value alteringValue double the candidate value Returns double ApplyAlterIf(T, Func, T) Applies an alternative value if the source value meets a specified condition. public static T ApplyAlterIf(T src, Func isApplyingAlternateFunc, T alternative) Parameters src T The source value to check. isApplyingAlternateFunc Func Function that determines if the alternative should be applied. alternative T The alternative value to use if the condition is met. Returns T Either the original value or the alternative value based on the condition. Type Parameters T The type of the values. Average(IEnumerable) Average. public static Vec3d Average(this IEnumerable src) Parameters src IEnumerable src Returns Vec3d Average BilinearInterpolate(double, double, double, double, double, double) Performs bilinear interpolation between four double values public static double BilinearInterpolate(double v00, double v01, double v10, double v11, double u, double v) Parameters v00 double Value at (0,0) on normalized bilinear coordinate v01 double Value at (0,1) on normalized bilinear coordinate v10 double Value at (1,0) on normalized bilinear coordinate v11 double Value at (1,1) on normalized bilinear coordinate u double Ratio along v00 and v10, etc. v double Ratio along v00 and v01, etc. Returns double The interpolated value BilinearInterpolate(T, T, T, T, double, double) Bilinear interpolate. public static T BilinearInterpolate(T v00, T v01, T v10, T v11, double u, double v) where T : IAdditionOperators, IMultiplyOperators Parameters v00 T value at (0,0) on normalized bilinear coordinate v01 T value at (0,1) on normalized bilinear coordinate v10 T value at (1,0) on normalized bilinear coordinate v11 T value at (1,1) on normalized bilinear coordinate u double ratio along v00 and v10, etc. v double ratio along v00 and v01, etc. Returns T interpolated value Type Parameters T value type. BilinearInterpolate(T, T, T, T, double, double, Func, Func) Bilinear interpolate. public static T BilinearInterpolate(T v00, T v01, T v10, T v11, double u, double v, Func scalingFunc, Func addingFunc) Parameters v00 T value at (0,0) on normalized bilinear coordinate v01 T value at (0,1) on normalized bilinear coordinate v10 T value at (1,0) on normalized bilinear coordinate v11 T value at (1,1) on normalized bilinear coordinate u double ratio along v00 and v10, etc. v double ratio along v00 and v01, etc. scalingFunc Func scaling function addingFunc Func adding function Returns T interpolated value Type Parameters T value type. BinaryDividentSequence(int) Generates a value in a binary divident sequence based on the seed. public static double BinaryDividentSequence(int seed) Parameters seed int The seed value for the sequence. Returns double The value in the binary divident sequence. Cbrt(double) Calculates the cube root of a number. public static double Cbrt(double v) Parameters v double The value to calculate the cube root of. Returns double The cube root of the specified value. Clamp(T, T, T) Clamps a value within an inclusive range of minimum and maximum values. public static T Clamp(this T val, T min, T max) where T : IComparable Parameters val T min T max T Returns T Type Parameters T Convert_inchdmin_To_mmds(double) Converts inches per minute to millimeters per second. public static double Convert_inchdmin_To_mmds(double inchdmin) Parameters inchdmin double Value in inches per minute. Returns double Value in millimeters per second. Convert_mdmin_To_mmds(double) Converts meters per minute to millimeters per second. public static double Convert_mdmin_To_mmds(double mdmin) Parameters mdmin double Value in meters per minute. Returns double Value in millimeters per second. Convert_mmdmin_To_mmds(double) Converts millimeters per minute to millimeters per second. public static double Convert_mmdmin_To_mmds(double mmdmin) Parameters mmdmin double Value in millimeters per minute. Returns double Value in millimeters per second. Convert_mmds_To_mdmin(double) Converts millimeters per second to meters per minute. public static double Convert_mmds_To_mdmin(double mmds) Parameters mmds double Value in millimeters per second. Returns double Value in meters per minute. Convert_mmds_To_mmdmin(double) Converts millimeters per second to millimeters per minute. public static double Convert_mmds_To_mmdmin(double mmds) Parameters mmds double Value in millimeters per second. Returns double Value in millimeters per minute. Convert_radds_To_rpm(double) Converts radians per second to revolutions per minute (RPM). public static double Convert_radds_To_rpm(double radds) Parameters radds double Value in radians per second. Returns double Value in revolutions per minute. Convert_rpm_To_radds(double) Converts revolutions per minute (RPM) to radians per second. public static double Convert_rpm_To_radds(double rpm) Parameters rpm double Value in revolutions per minute. Returns double Value in radians per second. Cycle(double, double, double) If the value is within lowerBound and upperBound, return value. Otherwise, perform looped value according to the direction from lower to upper. ex. bound=(0,1), value=3.1, than return 0.1. public static double Cycle(double value, double lowerBound, double upperBound) Parameters value double value lowerBound double lower bound, inclusive upperBound double upper bound, exclusive Returns double cycled value Cycle(double, double, double, bool) Cycles a value to be within the specified range, with configurable bound inclusivity. public static double Cycle(double value, double lowerBound, double upperBound, bool isBothBoundInclusive) Parameters value double The value to cycle. lowerBound double The lower bound of the range. upperBound double The upper bound of the range. isBothBoundInclusive bool If true, both bounds are inclusive; otherwise, only the lower bound is inclusive. Returns double The cycled value within the specified range. Cycle2Pi_rad(double, double, bool) Get value by the cycle range transformation. The cycle is from anchor_rad-pi to anchor_rad+pi. public static double Cycle2Pi_rad(double target_rad, double anchor_rad = 0, bool isBothBoundInclusive = false) Parameters target_rad double target angle anchor_rad double anchor angle isBothBoundInclusive bool if true, both bounds are inclusive; otherwise, only the lower bound is inclusive Returns double adjusted target angle CycleUnit(double) Get the value locates on 0(inclusive) ~ 1(exclusive). The source code: return v - Math.Floor(v); public static double CycleUnit(double v) Parameters v double value Returns double 0 (inclusive) ~1 (exclusive) Decompose(double[,], out int[], out int) Performs LU decomposition with partial pivoting on a matrix. public static double[,] Decompose(double[,] matrix, out int[] perm, out int toggle) Parameters matrix double[,] The matrix to decompose. perm int[] Output parameter that holds row permutations. toggle int Output parameter that is +1 or -1 depending on whether the number of row exchanges is even or odd. Returns double[,] The LU decomposition of the matrix. Exceptions Exception Thrown when attempting to decompose a non-square matrix. Div(double[], double) Divides each element of the array by a scalar value in-place. public static double[] Div(this double[] src, double scale) Parameters src double[] The source array to be modified. scale double The scalar value to divide by. Returns double[] The modified source array. Erf(double) Calculates the error function (erf) for the specified value. public static double Erf(double x) Parameters x double The value to calculate the error function for Returns double The error function value Erfc(double) Calculates the complementary error function (erfc) for the specified value. public static double Erfc(double x) Parameters x double The value to calculate the complementary error function for Returns double The complementary error function value GetAbs(double[]) Creates a new array containing the absolute values of the elements in the source array. public static double[] GetAbs(this double[] src) Parameters src double[] The source array. Returns double[] A new array containing the absolute values of the elements in the source array. GetAdd(double[], double[]) Creates a new array by adding corresponding elements of two arrays. public static double[] GetAdd(this double[] src, double[] src2) Parameters src double[] The first array. src2 double[] The second array. Returns double[] A new array containing the sum of corresponding elements. GetCommonRatioFromGeometricSeries(double, double, double) Calculates the common ratio from a geometric series sum. public static double GetCommonRatioFromGeometricSeries(double geometricSeriesSum, double powIndex, double convergenceLimit = 0.001) Parameters geometricSeriesSum double The sum of the geometric series. powIndex double The power index in the series. convergenceLimit double The convergence limit for the calculation. Returns double The common ratio of the geometric series. GetDiv(double[], double) Creates a new array by dividing each element of the source array by a scalar value. public static double[] GetDiv(this double[] src, double scale) Parameters src double[] The source array. scale double The scalar value to divide by. Returns double[] A new array with each element divided by the scalar value. GetDot(double[], double[]) Creates a new array by multiplying corresponding elements of two arrays. public static double[] GetDot(this double[] a, double[] b) Parameters a double[] The first array. b double[] The second array. Returns double[] A new array containing the product of corresponding elements. GetInterpolationRatio(TimeSpan, TimeSpan, TimeSpan) Gets the interpolation ratio between two TimeSpan values public static double GetInterpolationRatio(TimeSpan begin, TimeSpan end, TimeSpan pos) Parameters begin TimeSpan The beginning TimeSpan end TimeSpan The ending TimeSpan pos TimeSpan The position TimeSpan to calculate the ratio for Returns double The interpolation ratio: (pos - begin) / (end - begin) GetInterpolationRatio(T, T, T) Get position ratio. (pos - begin) / (end - begin) . public static double GetInterpolationRatio(T begin, T end, T pos) where T : ISubtractionOperators, IDivisionOperators Parameters begin T range begin end T range end pos T key position Returns double position ratio Type Parameters T GetInterpolationRatio(T, T, T, Func, Func) Gets the interpolation ratio between two values using custom subtraction and division functions public static double GetInterpolationRatio(T begin, T end, T pos, Func minusFunc, Func divFunc) Parameters begin T The beginning value end T The ending value pos T The position value to calculate the ratio for minusFunc Func The function to use for subtraction divFunc Func The function to use for division Returns double The interpolation ratio: (pos - begin) / (end - begin) Type Parameters T The type of the values GetMul(double[], double) Creates a new array by multiplying each element of the source array by a scalar value. public static double[] GetMul(this double[] src, double s) Parameters src double[] The source array. s double The scalar value to multiply by. Returns double[] A new array with each element multiplied by the scalar value. GetSub(double[], double[]) Creates a new array by subtracting corresponding elements of the second array from the first array. public static double[] GetSub(this double[] a, double[] b) Parameters a double[] The first array. b double[] The second array to subtract. Returns double[] A new array containing the difference of corresponding elements. Idt(int) Creates an identity matrix of the specified size. public static double[,] Idt(int n) Parameters n int The size of the square identity matrix. Returns double[,] An n x n identity matrix. Interpolate(TimeSpan, TimeSpan, double) Interpolates between two TimeSpan values using the specified ratio public static TimeSpan Interpolate(TimeSpan a, TimeSpan b, double ratio) Parameters a TimeSpan The first TimeSpan value b TimeSpan The second TimeSpan value ratio double The interpolation ratio (0.0 to 1.0) Returns TimeSpan The interpolated TimeSpan value: a * (1 - ratio) + b * ratio InterpolateWithinBoundary(T, T, double) If ratio smaller or equal 0, return a. If ratio larger or equal 1, return b. Otherwise, interpolate by ratio. public static T InterpolateWithinBoundary(T a, T b, double ratio) where T : IEqualityOperators, IAdditionOperators, IMultiplyOperators Parameters a T b T ratio double Returns T Type Parameters T Interpolate(T, T, double) Interpolate from a to b with ratio alpha:(1-alpha). public static T Interpolate(T a, T b, double ratio) where T : IEqualityOperators, IAdditionOperators, IMultiplyOperators Parameters a T a b T b ratio double ratio Returns T a * (1 - ratio) + b * ratio Type Parameters T Interpolate(T, T, double, Func) Interpolates between two values based on a position using a position function. public static T Interpolate(T a, T b, double pos, Func posFunc) where T : INumber, IMultiplyOperators Parameters a T The first value b T The second value pos double The position to interpolate at posFunc Func Function to extract a position from a value Returns T The interpolated value Type Parameters T The type of the values Interpolate(TItem, TItem, double, Func, Func, Func) Interpolates between two items based on a key value using custom functions. public static TItem Interpolate(TItem a, TItem b, double key, Func keyFunc, Func addingFunc, Func scalingFunc) Parameters a TItem The first item b TItem The second item key double The key value to interpolate at (0.0 to 1.0) keyFunc Func Function to extract a double key from an item addingFunc Func Function to add two items scalingFunc Func Function to scale an item by a double Returns TItem The interpolated item Type Parameters TItem The type of the items Interpolate(T, T, double, Func, Func) Interpolates between two values using custom addition and scaling functions public static T Interpolate(T a, T b, double ratio, Func addingFunc, Func scalingFunc) Parameters a T The first value b T The second value ratio double The interpolation ratio (0.0 to 1.0) addingFunc Func The function to use for addition scalingFunc Func The function to use for scaling Returns T The interpolated value: a * (1 - ratio) + b * ratio Type Parameters T The type of the values Interpolate(T[], T[], double) Interpolates between two arrays of values using the specified ratio public static T[] Interpolate(T[] a, T[] b, double ratio) where T : INumber, IMultiplyOperators Parameters a T[] The first array b T[] The second array ratio double The interpolation ratio (0.0 to 1.0) Returns T[] A new array containing the interpolated values Type Parameters T The type of the array elements Interpolate(TItem, TItem, TKey, Func, Func, Func, Func, Func) Interpolates between two items using custom key extraction, key operations, and item operations public static TItem Interpolate(TItem a, TItem b, TKey key, Func keyFunc, Func keyMinusFunc, Func keyDivFunc, Func itemAddingFunc, Func itemScalingFunc) Parameters a TItem The first item b TItem The second item key TKey The key value to interpolate at keyFunc Func Function to extract a key from an item keyMinusFunc Func Function to subtract keys keyDivFunc Func Function to divide keys itemAddingFunc Func Function to add items itemScalingFunc Func Function to scale items Returns TItem The interpolated item Type Parameters TKey The type of the key used for interpolation TItem The type of the items being interpolated Inverse(double[,]) Computes the inverse of a matrix. public static double[,] Inverse(double[,] matrix) Parameters matrix double[,] The matrix to invert. Returns double[,] The inverse of the matrix. Exceptions Exception Thrown when the matrix cannot be inverted. Inverse2d(double[,], double[,]) Calculates the inverse of a 2x2 matrix public static void Inverse2d(double[,] src, double[,] dst) Parameters src double[,] The source 2x2 matrix dst double[,] The destination matrix to store the inverse Inverse3d(double[,], double[,]) Calculates the inverse of a 3x3 matrix public static void Inverse3d(double[,] src, double[,] dst) Parameters src double[,] The source 3x3 matrix dst double[,] The destination matrix to store the inverse IsFinite(double) Is v neither NaN nor infinity. public static bool IsFinite(double v) Parameters v double value Returns bool Is v neither NaN nor infinity. Max(T, T) Returns the larger of two values. public static T Max(T a, T b) where T : IComparable Parameters a T The first value to compare. b T The second value to compare. Returns T The larger of the two values. Type Parameters T The type of values to compare. Min(T, T) Returns the smaller of two values. public static T Min(T a, T b) where T : IComparable Parameters a T The first value to compare. b T The second value to compare. Returns T The smaller of the two values. Type Parameters T The type of values to compare. Mul(double[], double) Multiplies each element of the array by a scalar value in-place. public static double[] Mul(this double[] src, double scale) Parameters src double[] The source array to be modified. scale double The scalar value to multiply by. Returns double[] The modified source array. NoChanged(double) Do nothing. public static double NoChanged(double src) Parameters src double src Returns double src Norm2(double[]) Calculates the Euclidean norm (L2 norm) of a vector. public static double Norm2(this double[] src) Parameters src double[] The source vector as an array of doubles. Returns double The Euclidean norm of the vector. Normalized(double[]) Creates a new array by normalizing the source array to have a unit norm. public static double[] Normalized(this double[] src) Parameters src double[] The source array. Returns double[] A new array with the same direction as the source array but with unit norm. Pow3(double) Calculates the cube (power of 3) of a double value. public static double Pow3(this double src) Parameters src double The source double value Returns double The cube of the source value Pow3(int) Calculates the cube (power of 3) of an integer value. public static int Pow3(this int src) Parameters src int The source integer value Returns int The cube of the source value Pow4(double) Calculates the fourth power of a double value. public static double Pow4(this double src) Parameters src double The source double value Returns double The fourth power of the source value Pow4(int) Calculates the fourth power of an integer value. public static int Pow4(this int src) Parameters src int The source integer value Returns int The fourth power of the source value Product(double[,], double[,]) Multiplies two matrices. public static double[,] Product(double[,] matrixA, double[,] matrixB) Parameters matrixA double[,] The first matrix. matrixB double[,] The second matrix. Returns double[,] The product of the two matrices. Exceptions Exception Thrown when the matrices are not conformable for multiplication. SolveCubic(double, double, double, double) public static Complex[] SolveCubic(double c0, double c1, double c2, double c3) Parameters c0 double constant term. c1 double coefficient of power of 1 of x. c2 double coefficient of power of 2 of x. c3 double coefficient of power of 3 of x. Returns Complex[] SolveQuadratic(double, double, double, out double, out double) Solve quadratic equation. public static double SolveQuadratic(double c, double b, double a, out double x0, out double x1) Parameters c double coefficient of constant of x. b double coefficient of power of 1 of x. a double coefficient of power of 2 of x. x0 double lower root x1 double higher root Returns double determinent SqrtVariance(IList, out double) Standard deviation with n denominator (instead of n-1). public static double SqrtVariance(IList src, out double avg) Parameters src IList avg double Returns double STD Square(double) Calculates the square of a double value. public static double Square(this double src) Parameters src double The source double value Returns double The square of the source value Square(int) Calculates the square of an integer value. public static int Square(this int src) Parameters src int The source integer value Returns int The square of the source value Sum(IEnumerable) Sum. public static Vec3d Sum(this IEnumerable src) Parameters src IEnumerable src Returns Vec3d Sum ToDeg(double) Get degree from radian. public static double ToDeg(double rad) Parameters rad double radian Returns double degree ToRad(double) Get radian from degree. public static double ToRad(double deg) Parameters deg double degree Returns double radian ToString(double[,], string) Converts a 2D double array to a string representation using the specified format public static string ToString(this double[,] src, string format) Parameters src double[,] The source 2D double array format string The format string to use for each double value Returns string A string representation of the 2D array ToString(double[], string) Converts a double array to a string representation using the specified format public static string ToString(this double[] src, string format) Parameters src double[] The source double array format string The format string to use for each double value Returns string A string representation of the array ToStringWithoutCultureNum(double, string) To string function. The special number is formatted by XmlConvert. public static string ToStringWithoutCultureNum(this double src, string format) Parameters src double src format string format Returns string string Transpose(double[,]) Transposes a 2D matrix represented as a 2D array. public static double[,] Transpose(double[,] src) Parameters src double[,] The source matrix to transpose. Returns double[,] A new matrix that is the transpose of the source matrix." + "summary": "Class MathUtil Namespace Hi.Geom Assembly HiGeom.dll Math Utility. public static class MathUtil Inheritance object MathUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields sqrt2 square root of 2. public const double sqrt2 = 1.4142135623730951 Field Value double sqrt3 square root of 3. public const double sqrt3 = 1.7320508075688772 Field Value double Methods AbsDiffAngle(double, double) Calculates the absolute difference between two angles in radians public static double AbsDiffAngle(double angleA_rad, double angleB_rad) Parameters angleA_rad double First angle in radians angleB_rad double Second angle in radians Returns double The absolute difference between the two angles Add(double[], double[]) Adds the elements of the second array to the corresponding elements of the first array in-place. public static double[] Add(this double[] src, double[] src2) Parameters src double[] The source array to which elements will be added. src2 double[] The array containing elements to add. Returns double[] The modified source array. AlterIfNan(double, double) public static double AlterIfNan(double primaryValue, double alteringValue) Parameters primaryValue double primary value alteringValue double the candidate value Returns double ApplyAlterIf(T, Func, T) Applies an alternative value if the source value meets a specified condition. public static T ApplyAlterIf(T src, Func isApplyingAlternateFunc, T alternative) Parameters src T The source value to check. isApplyingAlternateFunc Func Function that determines if the alternative should be applied. alternative T The alternative value to use if the condition is met. Returns T Either the original value or the alternative value based on the condition. Type Parameters T The type of the values. Average(IEnumerable) Average. public static Vec3d Average(this IEnumerable src) Parameters src IEnumerable src Returns Vec3d Average BilinearInterpolate(double, double, double, double, double, double) Performs bilinear interpolation between four double values public static double BilinearInterpolate(double v00, double v01, double v10, double v11, double u, double v) Parameters v00 double Value at (0,0) on normalized bilinear coordinate v01 double Value at (0,1) on normalized bilinear coordinate v10 double Value at (1,0) on normalized bilinear coordinate v11 double Value at (1,1) on normalized bilinear coordinate u double Ratio along v00 and v10, etc. v double Ratio along v00 and v01, etc. Returns double The interpolated value BilinearInterpolate(T, T, T, T, double, double) Bilinear interpolate. public static T BilinearInterpolate(T v00, T v01, T v10, T v11, double u, double v) where T : IAdditionOperators, IMultiplyOperators Parameters v00 T value at (0,0) on normalized bilinear coordinate v01 T value at (0,1) on normalized bilinear coordinate v10 T value at (1,0) on normalized bilinear coordinate v11 T value at (1,1) on normalized bilinear coordinate u double ratio along v00 and v10, etc. v double ratio along v00 and v01, etc. Returns T interpolated value Type Parameters T value type. BilinearInterpolate(T, T, T, T, double, double, Func, Func) Bilinear interpolate. public static T BilinearInterpolate(T v00, T v01, T v10, T v11, double u, double v, Func scalingFunc, Func addingFunc) Parameters v00 T value at (0,0) on normalized bilinear coordinate v01 T value at (0,1) on normalized bilinear coordinate v10 T value at (1,0) on normalized bilinear coordinate v11 T value at (1,1) on normalized bilinear coordinate u double ratio along v00 and v10, etc. v double ratio along v00 and v01, etc. scalingFunc Func scaling function addingFunc Func adding function Returns T interpolated value Type Parameters T value type. BinaryDividentSequence(int) Generates a value in a binary divident sequence based on the seed. public static double BinaryDividentSequence(int seed) Parameters seed int The seed value for the sequence. Returns double The value in the binary divident sequence. Cbrt(double) Calculates the cube root of a number. public static double Cbrt(double v) Parameters v double The value to calculate the cube root of. Returns double The cube root of the specified value. Clamp(T, T, T) Clamps a value within an inclusive range of minimum and maximum values. public static T Clamp(this T val, T min, T max) where T : IComparable Parameters val T min T max T Returns T Type Parameters T Convert_inchdmin_To_mmds(double) Converts inches per minute to millimeters per second. public static double Convert_inchdmin_To_mmds(double inchdmin) Parameters inchdmin double Value in inches per minute. Returns double Value in millimeters per second. Convert_mdmin_To_mmds(double) Converts meters per minute to millimeters per second. public static double Convert_mdmin_To_mmds(double mdmin) Parameters mdmin double Value in meters per minute. Returns double Value in millimeters per second. Convert_mmdmin_To_mmds(double) Converts millimeters per minute to millimeters per second. public static double Convert_mmdmin_To_mmds(double mmdmin) Parameters mmdmin double Value in millimeters per minute. Returns double Value in millimeters per second. Convert_mmds_To_mdmin(double) Converts millimeters per second to meters per minute. public static double Convert_mmds_To_mdmin(double mmds) Parameters mmds double Value in millimeters per second. Returns double Value in meters per minute. Convert_mmds_To_mmdmin(double) Converts millimeters per second to millimeters per minute. public static double Convert_mmds_To_mmdmin(double mmds) Parameters mmds double Value in millimeters per second. Returns double Value in millimeters per minute. Convert_radds_To_rpm(double) Converts radians per second to revolutions per minute (RPM). public static double Convert_radds_To_rpm(double radds) Parameters radds double Value in radians per second. Returns double Value in revolutions per minute. Convert_rpm_To_radds(double) Converts revolutions per minute (RPM) to radians per second. public static double Convert_rpm_To_radds(double rpm) Parameters rpm double Value in revolutions per minute. Returns double Value in radians per second. Cycle(double, double, double) If the value is within lowerBound and upperBound, return value. Otherwise, perform looped value according to the direction from lower to upper. ex. bound=(0,1), value=3.1, than return 0.1. public static double Cycle(double value, double lowerBound, double upperBound) Parameters value double value lowerBound double lower bound, inclusive upperBound double upper bound, exclusive Returns double cycled value Cycle(double, double, double, bool) Cycles a value to be within the specified range, with configurable bound inclusivity. public static double Cycle(double value, double lowerBound, double upperBound, bool isBothBoundInclusive) Parameters value double The value to cycle. lowerBound double The lower bound of the range. upperBound double The upper bound of the range. isBothBoundInclusive bool If true, both bounds are inclusive; otherwise, only the lower bound is inclusive. Returns double The cycled value within the specified range. Cycle2Pi_rad(double, double, bool) Get value by the cycle range transformation. The cycle is from anchor_rad-pi to anchor_rad+pi. public static double Cycle2Pi_rad(double target_rad, double anchor_rad = 0, bool isBothBoundInclusive = false) Parameters target_rad double target angle anchor_rad double anchor angle isBothBoundInclusive bool if true, both bounds are inclusive; otherwise, only the lower bound is inclusive Returns double adjusted target angle CycleUnit(double) Get the value locates on 0(inclusive) ~ 1(exclusive). The source code: return v - Math.Floor(v); public static double CycleUnit(double v) Parameters v double value Returns double 0 (inclusive) ~1 (exclusive) CycleUpperInclusive(double, double, double) Cycles a value into the lower-exclusive/upper-inclusive window (lowerBound, upperBound] — the mirror of Cycle(double, double, double), whose window is lower-inclusive/upper-exclusive. A value congruent with the bounds resolves to upperBound, never lowerBound — the property a negative-direction rotary window (anchor-2π, anchor] needs so a target congruent with the anchor stays put instead of committing a full negative turn. public static double CycleUpperInclusive(double value, double lowerBound, double upperBound) Parameters value double value lowerBound double lower bound, exclusive upperBound double upper bound, inclusive Returns double cycled value Decompose(double[,], out int[], out int) Performs LU decomposition with partial pivoting on a matrix. public static double[,] Decompose(double[,] matrix, out int[] perm, out int toggle) Parameters matrix double[,] The matrix to decompose. perm int[] Output parameter that holds row permutations. toggle int Output parameter that is +1 or -1 depending on whether the number of row exchanges is even or odd. Returns double[,] The LU decomposition of the matrix. Exceptions Exception Thrown when attempting to decompose a non-square matrix. Div(double[], double) Divides each element of the array by a scalar value in-place. public static double[] Div(this double[] src, double scale) Parameters src double[] The source array to be modified. scale double The scalar value to divide by. Returns double[] The modified source array. Erf(double) Calculates the error function (erf) for the specified value. public static double Erf(double x) Parameters x double The value to calculate the error function for Returns double The error function value Erfc(double) Calculates the complementary error function (erfc) for the specified value. public static double Erfc(double x) Parameters x double The value to calculate the complementary error function for Returns double The complementary error function value GetAbs(double[]) Creates a new array containing the absolute values of the elements in the source array. public static double[] GetAbs(this double[] src) Parameters src double[] The source array. Returns double[] A new array containing the absolute values of the elements in the source array. GetAdd(double[], double[]) Creates a new array by adding corresponding elements of two arrays. public static double[] GetAdd(this double[] src, double[] src2) Parameters src double[] The first array. src2 double[] The second array. Returns double[] A new array containing the sum of corresponding elements. GetCommonRatioFromGeometricSeries(double, double, double) Calculates the common ratio from a geometric series sum. public static double GetCommonRatioFromGeometricSeries(double geometricSeriesSum, double powIndex, double convergenceLimit = 0.001) Parameters geometricSeriesSum double The sum of the geometric series. powIndex double The power index in the series. convergenceLimit double The convergence limit for the calculation. Returns double The common ratio of the geometric series. GetDiv(double[], double) Creates a new array by dividing each element of the source array by a scalar value. public static double[] GetDiv(this double[] src, double scale) Parameters src double[] The source array. scale double The scalar value to divide by. Returns double[] A new array with each element divided by the scalar value. GetDot(double[], double[]) Creates a new array by multiplying corresponding elements of two arrays. public static double[] GetDot(this double[] a, double[] b) Parameters a double[] The first array. b double[] The second array. Returns double[] A new array containing the product of corresponding elements. GetInterpolationRatio(TimeSpan, TimeSpan, TimeSpan) Gets the interpolation ratio between two TimeSpan values public static double GetInterpolationRatio(TimeSpan begin, TimeSpan end, TimeSpan pos) Parameters begin TimeSpan The beginning TimeSpan end TimeSpan The ending TimeSpan pos TimeSpan The position TimeSpan to calculate the ratio for Returns double The interpolation ratio: (pos - begin) / (end - begin) GetInterpolationRatio(T, T, T) Get position ratio. (pos - begin) / (end - begin) . public static double GetInterpolationRatio(T begin, T end, T pos) where T : ISubtractionOperators, IDivisionOperators Parameters begin T range begin end T range end pos T key position Returns double position ratio Type Parameters T GetInterpolationRatio(T, T, T, Func, Func) Gets the interpolation ratio between two values using custom subtraction and division functions public static double GetInterpolationRatio(T begin, T end, T pos, Func minusFunc, Func divFunc) Parameters begin T The beginning value end T The ending value pos T The position value to calculate the ratio for minusFunc Func The function to use for subtraction divFunc Func The function to use for division Returns double The interpolation ratio: (pos - begin) / (end - begin) Type Parameters T The type of the values GetMul(double[], double) Creates a new array by multiplying each element of the source array by a scalar value. public static double[] GetMul(this double[] src, double s) Parameters src double[] The source array. s double The scalar value to multiply by. Returns double[] A new array with each element multiplied by the scalar value. GetSub(double[], double[]) Creates a new array by subtracting corresponding elements of the second array from the first array. public static double[] GetSub(this double[] a, double[] b) Parameters a double[] The first array. b double[] The second array to subtract. Returns double[] A new array containing the difference of corresponding elements. Idt(int) Creates an identity matrix of the specified size. public static double[,] Idt(int n) Parameters n int The size of the square identity matrix. Returns double[,] An n x n identity matrix. Interpolate(TimeSpan, TimeSpan, double) Interpolates between two TimeSpan values using the specified ratio public static TimeSpan Interpolate(TimeSpan a, TimeSpan b, double ratio) Parameters a TimeSpan The first TimeSpan value b TimeSpan The second TimeSpan value ratio double The interpolation ratio (0.0 to 1.0) Returns TimeSpan The interpolated TimeSpan value: a * (1 - ratio) + b * ratio InterpolateWithinBoundary(T, T, double) If ratio smaller or equal 0, return a. If ratio larger or equal 1, return b. Otherwise, interpolate by ratio. public static T InterpolateWithinBoundary(T a, T b, double ratio) where T : IEqualityOperators, IAdditionOperators, IMultiplyOperators Parameters a T b T ratio double Returns T Type Parameters T Interpolate(T, T, double) Interpolate from a to b with ratio alpha:(1-alpha). public static T Interpolate(T a, T b, double ratio) where T : IEqualityOperators, IAdditionOperators, IMultiplyOperators Parameters a T a b T b ratio double ratio Returns T a * (1 - ratio) + b * ratio Type Parameters T Interpolate(T, T, double, Func) Interpolates between two values based on a position using a position function. public static T Interpolate(T a, T b, double pos, Func posFunc) where T : INumber, IMultiplyOperators Parameters a T The first value b T The second value pos double The position to interpolate at posFunc Func Function to extract a position from a value Returns T The interpolated value Type Parameters T The type of the values Interpolate(TItem, TItem, double, Func, Func, Func) Interpolates between two items based on a key value using custom functions. public static TItem Interpolate(TItem a, TItem b, double key, Func keyFunc, Func addingFunc, Func scalingFunc) Parameters a TItem The first item b TItem The second item key double The key value to interpolate at (0.0 to 1.0) keyFunc Func Function to extract a double key from an item addingFunc Func Function to add two items scalingFunc Func Function to scale an item by a double Returns TItem The interpolated item Type Parameters TItem The type of the items Interpolate(T, T, double, Func, Func) Interpolates between two values using custom addition and scaling functions public static T Interpolate(T a, T b, double ratio, Func addingFunc, Func scalingFunc) Parameters a T The first value b T The second value ratio double The interpolation ratio (0.0 to 1.0) addingFunc Func The function to use for addition scalingFunc Func The function to use for scaling Returns T The interpolated value: a * (1 - ratio) + b * ratio Type Parameters T The type of the values Interpolate(T[], T[], double) Interpolates between two arrays of values using the specified ratio public static T[] Interpolate(T[] a, T[] b, double ratio) where T : INumber, IMultiplyOperators Parameters a T[] The first array b T[] The second array ratio double The interpolation ratio (0.0 to 1.0) Returns T[] A new array containing the interpolated values Type Parameters T The type of the array elements Interpolate(TItem, TItem, TKey, Func, Func, Func, Func, Func) Interpolates between two items using custom key extraction, key operations, and item operations public static TItem Interpolate(TItem a, TItem b, TKey key, Func keyFunc, Func keyMinusFunc, Func keyDivFunc, Func itemAddingFunc, Func itemScalingFunc) Parameters a TItem The first item b TItem The second item key TKey The key value to interpolate at keyFunc Func Function to extract a key from an item keyMinusFunc Func Function to subtract keys keyDivFunc Func Function to divide keys itemAddingFunc Func Function to add items itemScalingFunc Func Function to scale items Returns TItem The interpolated item Type Parameters TKey The type of the key used for interpolation TItem The type of the items being interpolated Inverse(double[,]) Computes the inverse of a matrix. public static double[,] Inverse(double[,] matrix) Parameters matrix double[,] The matrix to invert. Returns double[,] The inverse of the matrix. Exceptions Exception Thrown when the matrix cannot be inverted. Inverse2d(double[,], double[,]) Calculates the inverse of a 2x2 matrix public static void Inverse2d(double[,] src, double[,] dst) Parameters src double[,] The source 2x2 matrix dst double[,] The destination matrix to store the inverse Inverse3d(double[,], double[,]) Calculates the inverse of a 3x3 matrix public static void Inverse3d(double[,] src, double[,] dst) Parameters src double[,] The source 3x3 matrix dst double[,] The destination matrix to store the inverse IsFinite(double) Is v neither NaN nor infinity. public static bool IsFinite(double v) Parameters v double value Returns bool Is v neither NaN nor infinity. Max(T, T) Returns the larger of two values. public static T Max(T a, T b) where T : IComparable Parameters a T The first value to compare. b T The second value to compare. Returns T The larger of the two values. Type Parameters T The type of values to compare. Min(T, T) Returns the smaller of two values. public static T Min(T a, T b) where T : IComparable Parameters a T The first value to compare. b T The second value to compare. Returns T The smaller of the two values. Type Parameters T The type of values to compare. Mul(double[], double) Multiplies each element of the array by a scalar value in-place. public static double[] Mul(this double[] src, double scale) Parameters src double[] The source array to be modified. scale double The scalar value to multiply by. Returns double[] The modified source array. NoChanged(double) Do nothing. public static double NoChanged(double src) Parameters src double src Returns double src Norm2(double[]) Calculates the Euclidean norm (L2 norm) of a vector. public static double Norm2(this double[] src) Parameters src double[] The source vector as an array of doubles. Returns double The Euclidean norm of the vector. Normalized(double[]) Creates a new array by normalizing the source array to have a unit norm. public static double[] Normalized(this double[] src) Parameters src double[] The source array. Returns double[] A new array with the same direction as the source array but with unit norm. Pow3(double) Calculates the cube (power of 3) of a double value. public static double Pow3(this double src) Parameters src double The source double value Returns double The cube of the source value Pow3(int) Calculates the cube (power of 3) of an integer value. public static int Pow3(this int src) Parameters src int The source integer value Returns int The cube of the source value Pow4(double) Calculates the fourth power of a double value. public static double Pow4(this double src) Parameters src double The source double value Returns double The fourth power of the source value Pow4(int) Calculates the fourth power of an integer value. public static int Pow4(this int src) Parameters src int The source integer value Returns int The fourth power of the source value Product(double[,], double[,]) Multiplies two matrices. public static double[,] Product(double[,] matrixA, double[,] matrixB) Parameters matrixA double[,] The first matrix. matrixB double[,] The second matrix. Returns double[,] The product of the two matrices. Exceptions Exception Thrown when the matrices are not conformable for multiplication. SolveCubic(double, double, double, double) public static Complex[] SolveCubic(double c0, double c1, double c2, double c3) Parameters c0 double constant term. c1 double coefficient of power of 1 of x. c2 double coefficient of power of 2 of x. c3 double coefficient of power of 3 of x. Returns Complex[] SolveQuadratic(double, double, double, out double, out double) Solve quadratic equation. public static double SolveQuadratic(double c, double b, double a, out double x0, out double x1) Parameters c double coefficient of constant of x. b double coefficient of power of 1 of x. a double coefficient of power of 2 of x. x0 double lower root x1 double higher root Returns double determinent SqrtVariance(IList, out double) Standard deviation with n denominator (instead of n-1). public static double SqrtVariance(IList src, out double avg) Parameters src IList avg double Returns double STD Square(double) Calculates the square of a double value. public static double Square(this double src) Parameters src double The source double value Returns double The square of the source value Square(int) Calculates the square of an integer value. public static int Square(this int src) Parameters src int The source integer value Returns int The square of the source value Sum(IEnumerable) Sum. public static Vec3d Sum(this IEnumerable src) Parameters src IEnumerable src Returns Vec3d Sum ToDeg(double) Get degree from radian. public static double ToDeg(double rad) Parameters rad double radian Returns double degree ToRad(double) Get radian from degree. public static double ToRad(double deg) Parameters deg double degree Returns double radian ToString(double[,], string) Converts a 2D double array to a string representation using the specified format public static string ToString(this double[,] src, string format) Parameters src double[,] The source 2D double array format string The format string to use for each double value Returns string A string representation of the 2D array ToString(double[], string) Converts a double array to a string representation using the specified format public static string ToString(this double[] src, string format) Parameters src double[] The source double array format string The format string to use for each double value Returns string A string representation of the array ToStringWithoutCultureNum(double, string) To string function. The special number is formatted by XmlConvert. public static string ToStringWithoutCultureNum(this double src, string format) Parameters src double src format string format Returns string string Transpose(double[,]) Transposes a 2D matrix represented as a 2D array. public static double[,] Transpose(double[,] src) Parameters src double[,] The source matrix to transpose. Returns double[,] A new matrix that is the transpose of the source matrix." }, "api/Hi.Geom.NativeFraction.html": { "href": "api/Hi.Geom.NativeFraction.html", @@ -1499,16 +1544,6 @@ "title": "Class NativeStl | HiAPI-C# 2025", "summary": "Class NativeStl Namespace Hi.Geom Assembly HiCbtr.dll Native Stl. For purpose of efficient swept volume. public class NativeStl : IGetStl, IDisposable, IExpandToBox3d Inheritance object NativeStl Implements IGetStl IDisposable IExpandToBox3d Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods StlUtil.ToFaceDrawing(IGetStl) StlUtil.ToLineDrawing(IGetStl) StlUtil.ToSparkleLineDrawing(IGetStl) 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 NativeStl(Stl) Ctor. public NativeStl(Stl stl) Parameters stl Stl ctor Properties StlPtr Native pointer. public nint StlPtr { get; } Property Value nint TriangleNum Triangle number. public int TriangleNum { get; } Property Value int Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Remarks The dispose will also dispose the related TriTree. Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ~NativeStl() protected ~NativeStl() GenStl() Generate Stl. public Stl GenStl() Returns Stl stl GetStl() Gets the STL geometry data. public Stl GetStl() Returns Stl The STL geometry object" }, - "api/Hi.Geom.NativeTopoStld.html": { - "href": "api/Hi.Geom.NativeTopoStld.html", - "title": "Class NativeTopoStld | HiAPI-C# 2025", - "summary": "Class NativeTopoStld Namespace Hi.Geom Assembly HiDisp.dll Native TopoStl with element type double. public class NativeTopoStld : IDisposable, IDisplayee, IExpandToBox3d Inheritance object NativeTopoStld Implements IDisposable IDisplayee IExpandToBox3d Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) 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 NativeTopoStld(Stl) Initializes a new instance of the NativeTopoStld class. public NativeTopoStld(Stl stl) Parameters stl Stl The STL model to convert to a native topology. Properties CosRoundAngle Gets or sets the cosine of the angle used for rounding. public double CosRoundAngle { get; set; } Property Value double Size Gets the number of triangles in the native topology. public int Size { get; } Property Value int TopoStlPtr Gets the pointer to the native topology structure. public nint TopoStlPtr { get; } Property Value nint Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. DisplaySharpEdges(Bind) Renders only the edges of the topology. public void DisplaySharpEdges(Bind bind) Parameters bind Bind The binding context for rendering. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ~NativeTopoStld() protected ~NativeTopoStld() GenStl() Generates an STL model from the native topology. public Stl GenStl() Returns Stl A new STL model." - }, - "api/Hi.Geom.NativeTopoStlfr.html": { - "href": "api/Hi.Geom.NativeTopoStlfr.html", - "title": "Class NativeTopoStlfr | HiAPI-C# 2025", - "summary": "Class NativeTopoStlfr Namespace Hi.Geom Assembly HiDisp.dll Native TopoStl with element type fraction. public class NativeTopoStlfr : IDisposable, IDisplayee, IExpandToBox3d Inheritance object NativeTopoStlfr Implements IDisposable IDisplayee IExpandToBox3d Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) 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 NativeTopoStlfr(Stl, double) Initializes a new instance of the NativeTopoStlfr class. public NativeTopoStlfr(Stl stl, double fractionTolerance) Parameters stl Stl The STL model to convert to a native topology. fractionTolerance double The tolerance for fraction calculations. Properties Size Gets the number of triangles in the native topology. public int Size { get; } Property Value int TopoStlPtr Gets the pointer to the native topology structure. public nint TopoStlPtr { get; } Property Value nint Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ~NativeTopoStlfr() protected ~NativeTopoStlfr() GenStl() Generates an STL model from the native topology. public Stl GenStl() Returns Stl A new STL model." - }, "api/Hi.Geom.ObjUtil.html": { "href": "api/Hi.Geom.ObjUtil.html", "title": "Class ObjUtil | HiAPI-C# 2025", @@ -1627,7 +1662,7 @@ "api/Hi.Geom.StlFile.html": { "href": "api/Hi.Geom.StlFile.html", "title": "Class StlFile | HiAPI-C# 2025", - "summary": "Class StlFile Namespace Hi.Geom Assembly HiGeom.dll Represents an STL file with loading and saving capabilities public class StlFile : IStlSource, IGetStl, IMakeXmlSource, IExpandToBox3d, IDuplicate, ISourceFile, IToPresentDto Inheritance object StlFile Implements IStlSource IGetStl IMakeXmlSource IExpandToBox3d IDuplicate ISourceFile IToPresentDto Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) GeomUtil.ExpandToBox3d(IExpandToBox3d, Mat4d, Box3d) GeomUtil.GetBox3d(IExpandToBox3d) PairZrUtil.GetZrList(IGetStl) 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 StlFile() Ctor. public StlFile() StlFile(string) Ctor. public StlFile(string filePath) Parameters filePath string file path StlFile(string, string) Initializes a new instance with the specified file path and optional base directory. If base directory is provided, the STL will be loaded immediately. public StlFile(string filePath, string baseDirectory) Parameters filePath string STL file path baseDirectory string Base directory to load file from StlFile(XElement, string, IProgress) Ctor. public StlFile(XElement src, string baseDirectory, IProgress progress) Parameters src XElement XML baseDirectory string Base directory path progress IProgress Progress reporter for diagnostic messages emitted during construction. Properties CacheStl CacheStl is loaded by the xml construtor. public Stl CacheStl { get; set; } Property Value Stl SourceFile Stl file path. public string SourceFile { get; set; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string Methods Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetStl() Gets the STL geometry data. public Stl GetStl() Returns Stl The STL geometry object LoadStlByFile(string) Loads an STL file from the specified base directory into the cache public Stl LoadStlByFile(string baseDirectory) Parameters baseDirectory string The base directory where the file is located Returns Stl The loaded STL object, or null if the file path is empty or loading fails 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SaveStlToFile(string) Saves the cached STL data to a file in the specified base directory public void SaveStlToFile(string baseDirectory) Parameters baseDirectory string The base directory where the file will be saved ToPresentDto() Convert StlFile to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO object with type and sourceFile properties" + "summary": "Class StlFile Namespace Hi.Geom Assembly HiGeom.dll Represents an STL file with loading and saving capabilities public class StlFile : IStlSource, IGetStl, IMakeXmlSource, IExpandToBox3d, IDuplicate, ISourceFile, IToPresentDto Inheritance object StlFile Implements IStlSource IGetStl IMakeXmlSource IExpandToBox3d IDuplicate ISourceFile IToPresentDto Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) GeomUtil.ExpandToBox3d(IExpandToBox3d, Mat4d, Box3d) GeomUtil.GetBox3d(IExpandToBox3d) PairZrUtil.GetZrList(IGetStl) 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 StlFile() Ctor. public StlFile() StlFile(string) Ctor. public StlFile(string filePath) Parameters filePath string file path StlFile(string, string) Initializes a new instance with the specified file path and optional base directory. If base directory is provided, the STL will be loaded immediately. public StlFile(string filePath, string baseDirectory) Parameters filePath string STL file path baseDirectory string Base directory to load file from StlFile(XElement, string, IProgress) Ctor. public StlFile(XElement src, string baseDirectory, IProgress progress) Parameters src XElement XML baseDirectory string Base directory path progress IProgress Progress reporter for diagnostic messages emitted during construction. Properties CacheStl CacheStl is loaded by the xml construtor. public Stl CacheStl { get; set; } Property Value Stl SourceFile Stl file path. public string SourceFile { get; set; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string Methods Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetStl() Gets the STL geometry data. public Stl GetStl() Returns Stl The STL geometry object LoadStlByFile(string) Loads an STL file from the specified base directory into the cache public Stl LoadStlByFile(string baseDirectory) Parameters baseDirectory string The base directory where the file is located Returns Stl The loaded STL object, or null if the file path is empty or loading fails 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SaveStlToFile(string) Saves the cached STL data to a file in the specified base directory public void SaveStlToFile(string baseDirectory) Parameters baseDirectory string The base directory where the file will be saved ToPresentDto() Convert StlFile to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO dictionary with Type and SourceFile keys" }, "api/Hi.Geom.StlFuncHost.html": { "href": "api/Hi.Geom.StlFuncHost.html", @@ -1639,50 +1674,75 @@ "title": "Class StlUtil | HiAPI-C# 2025", "summary": "Class StlUtil Namespace Hi.Geom Assembly HiDisp.dll Utility for Stl. public static class StlUtil Inheritance object StlUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods ToFaceDrawing(IGetStl) To Drawing, in form of faces. If GetStl() is null, return null. public static Drawing ToFaceDrawing(this IGetStl src) Parameters src IGetStl src Returns Drawing Face Drawing ToLineDrawing(IGetStl) To Drawing, in form of lines. If GetStl() is null, return null. public static Drawing ToLineDrawing(this IGetStl src) Parameters src IGetStl src Returns Drawing Lines Drawing ToSparkleLineDrawing(IGetStl) Converts an STL geometry to a sparkle line drawing. public static Drawing ToSparkleLineDrawing(this IGetStl src) Parameters src IGetStl The source STL geometry. Returns Drawing A sparkle line drawing, or null if the STL or its triangles are null." }, + "api/Hi.Geom.Topo.CarveBooleanKind.html": { + "href": "api/Hi.Geom.Topo.CarveBooleanKind.html", + "title": "Enum CarveBooleanKind | HiAPI-C# 2025", + "summary": "Enum CarveBooleanKind Namespace Hi.Geom.Topo Assembly HiDisp.dll What a carve boolean did to the workpiece container. public enum CarveBooleanKind 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 AddedShell = 1 Union with a strictly disjoint tool: the tool joined as a second shell. Crossed = 0 The surfaces crossed and were stitched along the seam contour. Kept = 2 The operation was a no-op (e.g. union with a tool inside the workpiece). Replaced = 3 Union with an enclosing tool: the workpiece content was replaced by the tool." + }, + "api/Hi.Geom.Topo.CarveBooleanResult.html": { + "href": "api/Hi.Geom.Topo.CarveBooleanResult.html", + "title": "Class CarveBooleanResult | HiAPI-C# 2025", + "summary": "Class CarveBooleanResult Namespace Hi.Geom.Topo Assembly HiDisp.dll Result of one carve boolean step. On failure the workpiece is untouched and the step may simply be skipped. public sealed class CarveBooleanResult Inheritance object CarveBooleanResult 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) Properties FailReason Reason of a failed step, empty otherwise. public string FailReason { get; } Property Value string Failed Whether the boolean refused the step (non-manifold cut, contact without crossing, ...). public bool Failed { get; } Property Value bool KeyLines The seam contour segments (double-evaluated copies of the exact seam). public IReadOnlyList KeyLines { get; } Property Value IReadOnlyList Kind What the boolean did. Meaningless when Failed is set. public CarveBooleanKind Kind { get; } Property Value CarveBooleanKind RemovedWorkpieceTris Number of workpiece triangles removed by the surgery. public int RemovedWorkpieceTris { get; } Property Value int SewnToolTris Number of tool triangles sewn into the workpiece. public int SewnToolTris { get; } Property Value int" + }, + "api/Hi.Geom.Topo.CarveStl.html": { + "href": "api/Hi.Geom.Topo.CarveStl.html", + "title": "Class CarveStl | HiAPI-C# 2025", + "summary": "Class CarveStl Namespace Hi.Geom.Topo Assembly HiDisp.dll A triangle mesh that can be carved: an exact-fraction topology graph with an incrementally maintained spatial index, mutated in place by exact boolean steps (SubstractVolume(Stl, double) / AddVolume(Stl, double)). Unlike NativeTopoStl3wfr (build-once sweeping input), this object is long-lived and accumulates cut geometry step after step; sharp edges and exact planar faces survive the booleans exactly. Not thread-safe. public class CarveStl : IDisposable, IDisplayee, IExpandToBox3d Inheritance object CarveStl Implements IDisposable IDisplayee IExpandToBox3d Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) 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 Conversion loss, by source: NativeTopoStl3wfr and another CarveStl are already exact fractions, so those overloads copy coordinates verbatim and take no tolerance — the only lossless inbound paths. Stl and NativeTopoStl3d hold doubles, which have no small-denominator exact form, so those overloads convert at fractionTolerance. The loss is inherent to the source type, not to the route: converting such a mesh by any other path costs the same. Outbound, GenStl() evaluates to double, so a carved result round-tripped through it loses the compound coordinates the booleans produced. Keep the CarveStl itself, or pass it directly as a tool, when the exact surface is the deliverable. Constructors CarveStl(Stl, double) Initializes the container from an STL model. The triangles are converted to exact fractions at fractionTolerance. public CarveStl(Stl stl, double fractionTolerance) Parameters stl Stl The initial workpiece mesh (a closed shell). fractionTolerance double The tolerance for fraction conversion. CarveStl(CarveStl) Initializes the container as an exact copy of another CarveStl — a snapshot that later boolean steps on either object leave untouched. Lossless. public CarveStl(CarveStl src) Parameters src CarveStl The container to copy. CarveStl(NativeTopoStl3d, double) Initializes the container from a double-precision topology graph. The triangles are converted to exact fractions at fractionTolerance — the source holds doubles, so this is inherently the lossy path. public CarveStl(NativeTopoStl3d src, double fractionTolerance) Parameters src NativeTopoStl3d The source mesh (a closed shell). fractionTolerance double The tolerance for fraction conversion. CarveStl(NativeTopoStl3wfr) Initializes the container from an exact-fraction topology graph, copying every coordinate verbatim. Lossless, hence no tolerance: the source is already the same numeric type. The source is only read. public CarveStl(NativeTopoStl3wfr src) Parameters src NativeTopoStl3wfr The source mesh (a closed shell). Properties CarvePtr Gets the pointer to the native container. public nint CarvePtr { get; } Property Value nint IsSeamless Gets whether every directed edge is paired with an owned reverse (the manifold invariant the booleans maintain). public bool IsSeamless { get; } Property Value bool Size Gets the number of triangles currently in the container. public int Size { get; } Property Value int Methods AddVolume(Stl, double) Exact in-place union: merges the tool volume into the container. Same calling contract as SubstractVolume(Stl, double). public CarveBooleanResult AddVolume(Stl tool, double fractionTolerance) Parameters tool Stl The tool mesh (a closed shell). fractionTolerance double The tolerance for the tool's fraction conversion. Returns CarveBooleanResult The step result; on failure the container is untouched. AddVolume(CarveStl) Exact in-place union with another container's current state. Lossless; tool is only read. public CarveBooleanResult AddVolume(CarveStl tool) Parameters tool CarveStl The container whose volume is merged in. Returns CarveBooleanResult The step result; on failure this container is untouched. AddVolume(NativeTopoStl3wfr) Exact in-place union with an exact-fraction tool — the lossless tool path, hence no tolerance. The tool mesh is copied natively before the surgery consumes it, so tool survives the call. public CarveBooleanResult AddVolume(NativeTopoStl3wfr tool) Parameters tool NativeTopoStl3wfr The tool mesh (a closed shell). Returns CarveBooleanResult The step result; on failure the container is untouched. Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ~CarveStl() protected ~CarveStl() GenStl() Generates an STL model from the container's current state. public Stl GenStl() Returns Stl A new STL model. SubstractVolume(Stl, double) Exact in-place difference: carves the tool volume out of the container. The tool triangles are consumed natively per call, so the same Stl may be reused for further steps. public CarveBooleanResult SubstractVolume(Stl tool, double fractionTolerance) Parameters tool Stl The tool mesh (a closed shell). fractionTolerance double The tolerance for the tool's fraction conversion. Returns CarveBooleanResult The step result; on failure the container is untouched. SubstractVolume(CarveStl) Exact in-place difference using another container's current state as the tool. Lossless; tool is only read. public CarveBooleanResult SubstractVolume(CarveStl tool) Parameters tool CarveStl The container whose volume is carved away. Returns CarveBooleanResult The step result; on failure this container is untouched. SubstractVolume(NativeTopoStl3wfr) Exact in-place difference with an exact-fraction tool — the lossless tool path, hence no tolerance. The tool mesh is copied natively before the surgery consumes it, so tool survives the call and may be reused for further steps. public CarveBooleanResult SubstractVolume(NativeTopoStl3wfr tool) Parameters tool NativeTopoStl3wfr The tool mesh (a closed shell). Returns CarveBooleanResult The step result; on failure the container is untouched." + }, + "api/Hi.Geom.Topo.NativeTopoStl3d.html": { + "href": "api/Hi.Geom.Topo.NativeTopoStl3d.html", + "title": "Class NativeTopoStl3d | HiAPI-C# 2025", + "summary": "Class NativeTopoStl3d Namespace Hi.Geom.Topo Assembly HiDisp.dll Native TopoStl with element type double. public class NativeTopoStl3d : IDisposable, IDisplayee, IExpandToBox3d Inheritance object NativeTopoStl3d Implements IDisposable IDisplayee IExpandToBox3d Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) 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 NativeTopoStl3d(Stl) Initializes a new instance of the NativeTopoStl3d class. public NativeTopoStl3d(Stl stl) Parameters stl Stl The STL model to convert to a native topology. Properties CosRoundAngle Gets or sets the cosine of the angle used for rounding. public double CosRoundAngle { get; set; } Property Value double Size Gets the number of triangles in the native topology. public int Size { get; } Property Value int TopoStlPtr Gets the pointer to the native topology structure. public nint TopoStlPtr { get; } Property Value nint Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. DisplaySharpEdges(Bind) Renders only the edges of the topology. public void DisplaySharpEdges(Bind bind) Parameters bind Bind The binding context for rendering. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ~NativeTopoStl3d() protected ~NativeTopoStl3d() GenStl() Generates an STL model from the native topology. public Stl GenStl() Returns Stl A new STL model." + }, + "api/Hi.Geom.Topo.NativeTopoStl3wfr.html": { + "href": "api/Hi.Geom.Topo.NativeTopoStl3wfr.html", + "title": "Class NativeTopoStl3wfr | HiAPI-C# 2025", + "summary": "Class NativeTopoStl3wfr Namespace Hi.Geom.Topo Assembly HiDisp.dll Native TopoStl with element type fraction. public class NativeTopoStl3wfr : IDisposable, IDisplayee, IExpandToBox3d Inheritance object NativeTopoStl3wfr Implements IDisposable IDisplayee IExpandToBox3d Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) 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 NativeTopoStl3wfr(Stl, double) Initializes a new instance of the NativeTopoStl3wfr class. public NativeTopoStl3wfr(Stl stl, double fractionTolerance) Parameters stl Stl The STL model to convert to a native topology. fractionTolerance double The tolerance for fraction calculations. Properties Size Gets the number of triangles in the native topology. public int Size { get; } Property Value int TopoStlPtr Gets the pointer to the native topology structure. public nint TopoStlPtr { get; } Property Value nint Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box ~NativeTopoStl3wfr() protected ~NativeTopoStl3wfr() GenStl() Generates an STL model from the native topology. public Stl GenStl() Returns Stl A new STL model." + }, "api/Hi.Geom.Topo.TopoLine3Hfr.html": { "href": "api/Hi.Geom.Topo.TopoLine3Hfr.html", "title": "Class TopoLine3Hfr | HiAPI-C# 2025", - "summary": "Class TopoLine3Hfr Namespace Hi.Geom.Topo Assembly HiDisp.dll Topological 3D line (directed edge) with Fraction coordinates. Maintains connectivity to adjacent reversed line and owning triangle. Corresponds to C++ topo_line3_t. public class TopoLine3Hfr Inheritance object TopoLine3Hfr 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) Fields P0 Start point. public readonly TopoPoint3Hfr P0 Field Value TopoPoint3Hfr P1 End point. public readonly TopoPoint3Hfr P1 Field Value TopoPoint3Hfr ReversedLine The reversed (opposite direction) line sharing the same two endpoints. Null if no adjacent triangle shares this edge in reverse. public TopoLine3Hfr ReversedLine Field Value TopoLine3Hfr Tri The triangle that owns this directed line. Null if this line is not yet part of a triangle. public TopoTri3Hfr Tri Field Value TopoTri3Hfr Methods ClearCache() Clears cached arrow and direction. public void ClearCache() GetArrow() Gets the arrow vector (P1 - P0) in fraction coordinates. Cached after first computation. public Vec3Hfr GetArrow() Returns Vec3Hfr GetDirection() Gets the normalized direction vector in double precision. Cached after first computation. public Vec3d GetDirection() Returns Vec3d ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + "summary": "Class TopoLine3Hfr Namespace Hi.Geom.Topo Assembly HiDisp.dll Topological 3D line (directed edge) with Fraction coordinates. Maintains connectivity to adjacent reversed line and owning triangle. Corresponds to C++ topo_line3wfr_t. public class TopoLine3Hfr Inheritance object TopoLine3Hfr 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) Fields P0 Start point. public readonly TopoPoint3Hfr P0 Field Value TopoPoint3Hfr P1 End point. public readonly TopoPoint3Hfr P1 Field Value TopoPoint3Hfr ReversedLine The reversed (opposite direction) line sharing the same two endpoints. Null if no adjacent triangle shares this edge in reverse. public TopoLine3Hfr ReversedLine Field Value TopoLine3Hfr Tri The triangle that owns this directed line. Null if this line is not yet part of a triangle. public TopoTri3Hfr Tri Field Value TopoTri3Hfr Methods ClearCache() Clears cached arrow and direction. public void ClearCache() GetArrow() Gets the arrow vector (P1 - P0) in fraction coordinates. Cached after first computation. public Vec3Hfr GetArrow() Returns Vec3Hfr GetDirection() Gets the normalized direction vector in double precision. Cached after first computation. public Vec3d GetDirection() Returns Vec3d ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, "api/Hi.Geom.Topo.TopoLine3StockHfr.html": { "href": "api/Hi.Geom.Topo.TopoLine3StockHfr.html", "title": "Class TopoLine3StockHfr | HiAPI-C# 2025", - "summary": "Class TopoLine3StockHfr Namespace Hi.Geom.Topo Assembly HiDisp.dll Stock (pool) of topological lines with deduplication based on endpoint identity. Corresponds to C++ topo_line3_stock_t. public class TopoLine3StockHfr Inheritance object TopoLine3StockHfr 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 TopoLine3StockHfr(int) Initializes a new line stock with the specified capacity. public TopoLine3StockHfr(int capacity) Parameters capacity int Properties Count Gets the number of lines. public int Count { get; } Property Value int Lines Gets all lines in the stock. public IEnumerable Lines { get; } Property Value IEnumerable Methods BuildAdjacentLineIfExisted(TopoLine3Hfr) Builds the reversed line link for a single line if the reverse exists. public void BuildAdjacentLineIfExisted(TopoLine3Hfr tl) Parameters tl TopoLine3Hfr BuildAdjacentLinesIfExisted() Builds reversed line links for all lines in the stock. Corresponds to C++ build_adjacent_lines_if_existed. public void BuildAdjacentLinesIfExisted() Call(TopoPoint3Hfr, TopoPoint3Hfr) Gets or creates a topological line from p0 to p1. Thread-safe. If a line with the same endpoints already exists, returns the existing one. public TopoLine3Hfr Call(TopoPoint3Hfr p0, TopoPoint3Hfr p1) Parameters p0 TopoPoint3Hfr p1 TopoPoint3Hfr Returns TopoLine3Hfr CallIfExisted(TopoPoint3Hfr, TopoPoint3Hfr) Gets an existing topological line from p0 to p1, or null if not found. Thread-safe. public TopoLine3Hfr CallIfExisted(TopoPoint3Hfr p0, TopoPoint3Hfr p1) Parameters p0 TopoPoint3Hfr p1 TopoPoint3Hfr Returns TopoLine3Hfr Del(TopoLine3Hfr) Removes a line from the stock and cleans up connectivity. Thread-safe. public void Del(TopoLine3Hfr line) Parameters line TopoLine3Hfr" + "summary": "Class TopoLine3StockHfr Namespace Hi.Geom.Topo Assembly HiDisp.dll Stock (pool) of topological lines with deduplication based on endpoint identity. Corresponds to C++ topo_line3wfr_stock_t. public class TopoLine3StockHfr Inheritance object TopoLine3StockHfr 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 TopoLine3StockHfr(int) Initializes a new line stock with the specified capacity. public TopoLine3StockHfr(int capacity) Parameters capacity int Properties Count Gets the number of lines. public int Count { get; } Property Value int Lines Gets all lines in the stock. public IEnumerable Lines { get; } Property Value IEnumerable Methods BuildAdjacentLineIfExisted(TopoLine3Hfr) Builds the reversed line link for a single line if the reverse exists. public void BuildAdjacentLineIfExisted(TopoLine3Hfr tl) Parameters tl TopoLine3Hfr BuildAdjacentLinesIfExisted() Builds reversed line links for all lines in the stock. Corresponds to C++ build_adjacent_lines_if_existed. public void BuildAdjacentLinesIfExisted() Call(TopoPoint3Hfr, TopoPoint3Hfr) Gets or creates a topological line from p0 to p1. Thread-safe. If a line with the same endpoints already exists, returns the existing one. public TopoLine3Hfr Call(TopoPoint3Hfr p0, TopoPoint3Hfr p1) Parameters p0 TopoPoint3Hfr p1 TopoPoint3Hfr Returns TopoLine3Hfr CallIfExisted(TopoPoint3Hfr, TopoPoint3Hfr) Gets an existing topological line from p0 to p1, or null if not found. Thread-safe. public TopoLine3Hfr CallIfExisted(TopoPoint3Hfr p0, TopoPoint3Hfr p1) Parameters p0 TopoPoint3Hfr p1 TopoPoint3Hfr Returns TopoLine3Hfr Del(TopoLine3Hfr) Removes a line from the stock and cleans up connectivity. Thread-safe. public void Del(TopoLine3Hfr line) Parameters line TopoLine3Hfr" }, "api/Hi.Geom.Topo.TopoPoint3Hfr.html": { "href": "api/Hi.Geom.Topo.TopoPoint3Hfr.html", "title": "Class TopoPoint3Hfr | HiAPI-C# 2025", - "summary": "Class TopoPoint3Hfr Namespace Hi.Geom.Topo Assembly HiDisp.dll Topological 3D point with Fraction coordinates. Maintains connectivity to adjacent lines and triangles. Corresponds to C++ topo_point3_t. public class TopoPoint3Hfr Inheritance object TopoPoint3Hfr 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) Fields BackwardLines Backward lines (lines ending at this point). Do not modify directly. public readonly List BackwardLines Field Value List ForwardLines Forward lines (lines starting from this point). Do not modify directly. public readonly List ForwardLines Field Value List Position The position in fraction coordinates. public Vec3Hfr Position Field Value Vec3Hfr Tris Triangles that contain this point. Do not modify directly. public readonly List Tris Field Value List Properties IsIsolated Whether the point is isolated (no forward lines). public bool IsIsolated { get; } Property Value bool IsSeamless Whether the point is seamless (all forward lines have a reversed line with a triangle). public bool IsSeamless { get; } Property Value bool 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 TopoPoint3Hfr Namespace Hi.Geom.Topo Assembly HiDisp.dll Topological 3D point with Fraction coordinates. Maintains connectivity to adjacent lines and triangles. Corresponds to C++ topo_point3wfr_t. public class TopoPoint3Hfr Inheritance object TopoPoint3Hfr 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) Fields BackwardLines Backward lines (lines ending at this point). Do not modify directly. public readonly List BackwardLines Field Value List ForwardLines Forward lines (lines starting from this point). Do not modify directly. public readonly List ForwardLines Field Value List Position The position in fraction coordinates. public Vec3Hfr Position Field Value Vec3Hfr Tris Triangles that contain this point. Do not modify directly. public readonly List Tris Field Value List Properties IsIsolated Whether the point is isolated (no forward lines). public bool IsIsolated { get; } Property Value bool IsSeamless Whether the point is seamless (all forward lines have a reversed line with a triangle). public bool IsSeamless { get; } Property Value bool 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.Geom.Topo.TopoPoint3StockHfr.html": { "href": "api/Hi.Geom.Topo.TopoPoint3StockHfr.html", "title": "Class TopoPoint3StockHfr | HiAPI-C# 2025", - "summary": "Class TopoPoint3StockHfr Namespace Hi.Geom.Topo Assembly HiDisp.dll Stock (pool) of topological points with deduplication based on fraction coordinates. Corresponds to C++ topo_point3_stock_t. public class TopoPoint3StockHfr Inheritance object TopoPoint3StockHfr 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 TopoPoint3StockHfr(int) Initializes a new point stock with the specified capacity. public TopoPoint3StockHfr(int capacity) Parameters capacity int Properties Count Gets the number of points. public int Count { get; } Property Value int Points Gets all points in the stock. public IEnumerable Points { get; } Property Value IEnumerable Methods Call(Vec3Hfr) Gets or creates a topological point at the given position. Thread-safe. If a point with the same coordinates already exists, returns the existing one. public TopoPoint3Hfr Call(Vec3Hfr v) Parameters v Vec3Hfr Returns TopoPoint3Hfr CallIfExisted(Vec3Hfr) Gets an existing topological point at the given position, or null if not found. Thread-safe. public TopoPoint3Hfr CallIfExisted(Vec3Hfr v) Parameters v Vec3Hfr Returns TopoPoint3Hfr Del(TopoPoint3Hfr) Removes a point from the stock. Thread-safe. public void Del(TopoPoint3Hfr tp) Parameters tp TopoPoint3Hfr ExpandToBox3d(Box3d) Expands a Box3d to include all points. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d" + "summary": "Class TopoPoint3StockHfr Namespace Hi.Geom.Topo Assembly HiDisp.dll Stock (pool) of topological points with deduplication based on fraction coordinates. Corresponds to C++ topo_point3wfr_stock_t. public class TopoPoint3StockHfr Inheritance object TopoPoint3StockHfr 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 TopoPoint3StockHfr(int) Initializes a new point stock with the specified capacity. public TopoPoint3StockHfr(int capacity) Parameters capacity int Properties Count Gets the number of points. public int Count { get; } Property Value int Points Gets all points in the stock. public IEnumerable Points { get; } Property Value IEnumerable Methods Call(Vec3Hfr) Gets or creates a topological point at the given position. Thread-safe. If a point with the same coordinates already exists, returns the existing one. public TopoPoint3Hfr Call(Vec3Hfr v) Parameters v Vec3Hfr Returns TopoPoint3Hfr CallIfExisted(Vec3Hfr) Gets an existing topological point at the given position, or null if not found. Thread-safe. public TopoPoint3Hfr CallIfExisted(Vec3Hfr v) Parameters v Vec3Hfr Returns TopoPoint3Hfr Del(TopoPoint3Hfr) Removes a point from the stock. Thread-safe. public void Del(TopoPoint3Hfr tp) Parameters tp TopoPoint3Hfr ExpandToBox3d(Box3d) Expands a Box3d to include all points. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d" }, "api/Hi.Geom.Topo.TopoStl3Hfr.html": { "href": "api/Hi.Geom.Topo.TopoStl3Hfr.html", "title": "Class TopoStl3Hfr | HiAPI-C# 2025", - "summary": "Class TopoStl3Hfr Namespace Hi.Geom.Topo Assembly HiDisp.dll Pure C# topological STL (triangle mesh) with Fraction coordinates. Hfr: High-Precision (decimal) FRaction. Provides unlimited-precision exact arithmetic for geometric computations without relying on native (C++) interop. Corresponds to C++ topo_stl3_t. public class TopoStl3Hfr : IDisplayee, IExpandToBox3d, IDisposable Inheritance object TopoStl3Hfr Implements IDisplayee IExpandToBox3d IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) 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 TopoStl3Hfr(Stl, decimal) Initializes a topological STL from an Stl model. public TopoStl3Hfr(Stl stl, decimal fractionResolution) Parameters stl Stl Source STL model. fractionResolution decimal Fraction approximation resolution (decimal). TopoStl3Hfr(IReadOnlyList) Initializes a topological STL from fraction-precision triangles (Vec3Hfr arrays). Each element is a 3-element array of Vec3Hfr representing triangle apexes. Corresponds to C++ constructor topo_stl3_t(Tri3fr_Iter, Tri3fr_Iter). public TopoStl3Hfr(IReadOnlyList tris) Parameters tris IReadOnlyList Source triangles as arrays of 3 Vec3Hfr. TopoStl3Hfr(IReadOnlyList, decimal) Initializes a topological STL from double-precision triangles. Phase 1 (parallel): converts vertices to fraction coordinates via Stern-Brocot approximation. Phase 2 (sequential): builds topology (stocks, connectivity). Corresponds to C++ constructor topo_stl3_t(Tri3d_Iter, Tri3d_Iter, double). public TopoStl3Hfr(IReadOnlyList tris, decimal fractionResolution) Parameters tris IReadOnlyList Source triangles. fractionResolution decimal Fraction approximation resolution (decimal). TopoStl3Hfr(int) Initializes an empty topological STL with the specified triangle capacity. public TopoStl3Hfr(int trisCap) Parameters trisCap int Expected number of triangles (for pre-allocation). Fields TlStock The line stock for this topological STL. public readonly TopoLine3StockHfr TlStock Field Value TopoLine3StockHfr TpStock The point stock for this topological STL. public readonly TopoPoint3StockHfr TpStock Field Value TopoPoint3StockHfr TtStock The triangle stock for this topological STL. public readonly TopoTri3StockHfr TtStock Field Value TopoTri3StockHfr Properties Count Gets the number of triangles. public int Count { get; } Property Value int FlatDisplayee Gets the flat-shaded displayee for this topological STL. Created lazily on first access. public TopoStl3HfrFlatDisplayee FlatDisplayee { get; } Property Value TopoStl3HfrFlatDisplayee Methods ClearDrawingsCache() Invalidates all cached displayees. Call this after modifying the topology. public void ClearDrawingsCache() Display(Bind) Displays the topological STL using flat shading. For smooth rendering, use TopoStl3HfrSmoothDisplayee. public void Display(Bind bind) Parameters bind Bind The rendering bind context. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) Disposes the cached drawings. protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the box to include all points. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d IsSeamless() Checks whether the mesh is seamless (all edges have a properly paired reversed line). A seamless mesh is a necessary condition for a manifold (closed, watertight) geometry. Corresponds to C++ is_seamless(). public bool IsSeamless() Returns bool True if every directed edge has a reversed line with a triangle. IsSeamless(List) Checks whether the mesh is seamless. Defect lines are output to dstDefectLines. Corresponds to C++ is_seamless(vector&). public bool IsSeamless(List dstDefectLines) Parameters dstDefectLines List Output list for defect (non-seamless) lines. Returns bool True if the mesh is fully seamless. ToStl() Converts to an Stl model. public Stl ToStl() Returns Stl ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToTris() Converts all triangles to a list of Tri3d (double precision). Corresponds to C++ to_tris(). public List ToTris() Returns List" + "summary": "Class TopoStl3Hfr Namespace Hi.Geom.Topo Assembly HiDisp.dll Pure C# topological STL (triangle mesh) with Fraction coordinates. Hfr: High-Precision (decimal) FRaction. Provides unlimited-precision exact arithmetic for geometric computations without relying on native (C++) interop. Corresponds to C++ topo_stl3wfr_t. public class TopoStl3Hfr : IDisplayee, IExpandToBox3d, IDisposable Inheritance object TopoStl3Hfr Implements IDisplayee IExpandToBox3d IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) 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 TopoStl3Hfr(Stl, decimal) Initializes a topological STL from an Stl model. public TopoStl3Hfr(Stl stl, decimal fractionResolution) Parameters stl Stl Source STL model. fractionResolution decimal Fraction approximation resolution (decimal). TopoStl3Hfr(IReadOnlyList) Initializes a topological STL from fraction-precision triangles (Vec3Hfr arrays). Each element is a 3-element array of Vec3Hfr representing triangle apexes. Corresponds to C++ constructor topo_stl3wfr_t(Tri3fr_Iter, Tri3fr_Iter). public TopoStl3Hfr(IReadOnlyList tris) Parameters tris IReadOnlyList Source triangles as arrays of 3 Vec3Hfr. TopoStl3Hfr(IReadOnlyList, decimal) Initializes a topological STL from double-precision triangles. Phase 1 (parallel): converts vertices to fraction coordinates via Stern-Brocot approximation. Phase 2 (sequential): builds topology (stocks, connectivity). Corresponds to C++ constructor topo_stl3wfr_t(Tri3d_Iter, Tri3d_Iter, double). public TopoStl3Hfr(IReadOnlyList tris, decimal fractionResolution) Parameters tris IReadOnlyList Source triangles. fractionResolution decimal Fraction approximation resolution (decimal). TopoStl3Hfr(int) Initializes an empty topological STL with the specified triangle capacity. public TopoStl3Hfr(int trisCap) Parameters trisCap int Expected number of triangles (for pre-allocation). Fields TlStock The line stock for this topological STL. public readonly TopoLine3StockHfr TlStock Field Value TopoLine3StockHfr TpStock The point stock for this topological STL. public readonly TopoPoint3StockHfr TpStock Field Value TopoPoint3StockHfr TtStock The triangle stock for this topological STL. public readonly TopoTri3StockHfr TtStock Field Value TopoTri3StockHfr Properties Count Gets the number of triangles. public int Count { get; } Property Value int FlatDisplayee Gets the flat-shaded displayee for this topological STL. Created lazily on first access. public TopoStl3HfrFlatDisplayee FlatDisplayee { get; } Property Value TopoStl3HfrFlatDisplayee Methods ClearDrawingsCache() Invalidates all cached displayees. Call this after modifying the topology. public void ClearDrawingsCache() Display(Bind) Displays the topological STL using flat shading. For smooth rendering, use TopoStl3HfrSmoothDisplayee. public void Display(Bind bind) Parameters bind Bind The rendering bind context. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) Disposes the cached drawings. protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the box to include all points. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d IsSeamless() Checks whether the mesh is seamless (all edges have a properly paired reversed line). A seamless mesh is a necessary condition for a manifold (closed, watertight) geometry. Corresponds to C++ is_seamless(). public bool IsSeamless() Returns bool True if every directed edge has a reversed line with a triangle. IsSeamless(List) Checks whether the mesh is seamless. Defect lines are output to dstDefectLines. Corresponds to C++ is_seamless(vector&). public bool IsSeamless(List dstDefectLines) Parameters dstDefectLines List Output list for defect (non-seamless) lines. Returns bool True if the mesh is fully seamless. ToStl() Converts to an Stl model. public Stl ToStl() Returns Stl ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToTris() Converts all triangles to a list of Tri3d (double precision). Corresponds to C++ to_tris(). public List ToTris() Returns List" }, "api/Hi.Geom.Topo.TopoStl3HfrFlatDisplayee.html": { "href": "api/Hi.Geom.Topo.TopoStl3HfrFlatDisplayee.html", "title": "Class TopoStl3HfrFlatDisplayee | HiAPI-C# 2025", - "summary": "Class TopoStl3HfrFlatDisplayee Namespace Hi.Geom.Topo Assembly HiDisp.dll Flat-shaded displayee for TopoStl3Hfr. Renders flat triangle faces (one normal per triangle) and all unique edge lines. Corresponds to C++ TopoStl3::_flatDraw + all-lines draw. public class TopoStl3HfrFlatDisplayee : IDisplayee, IExpandToBox3d, IDisposable Inheritance object TopoStl3HfrFlatDisplayee Implements IDisplayee IExpandToBox3d IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) 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 TopoStl3HfrFlatDisplayee(TopoStl3Hfr) Initializes a new flat displayee wrapping the given TopoStl3Hfr. public TopoStl3HfrFlatDisplayee(TopoStl3Hfr source) Parameters source TopoStl3Hfr The source topological STL. Properties Source The source topological STL. public TopoStl3Hfr Source { get; } Property Value TopoStl3Hfr Methods ClearCache() Invalidates all cached drawings. Call this after modifying the source topology. public void ClearCache() Display(Bind) Displays the flat-shaded topological STL: all edges in black + flat-shaded triangle faces. public void Display(Bind bind) Parameters bind Bind Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box" + "summary": "Class TopoStl3HfrFlatDisplayee Namespace Hi.Geom.Topo Assembly HiDisp.dll Flat-shaded displayee for TopoStl3Hfr. Renders flat triangle faces (one normal per triangle) and all unique edge lines. Corresponds to C++ topo_stl3::_flatDraw + all-lines draw. public class TopoStl3HfrFlatDisplayee : IDisplayee, IExpandToBox3d, IDisposable Inheritance object TopoStl3HfrFlatDisplayee Implements IDisplayee IExpandToBox3d IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) 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 TopoStl3HfrFlatDisplayee(TopoStl3Hfr) Initializes a new flat displayee wrapping the given TopoStl3Hfr. public TopoStl3HfrFlatDisplayee(TopoStl3Hfr source) Parameters source TopoStl3Hfr The source topological STL. Properties Source The source topological STL. public TopoStl3Hfr Source { get; } Property Value TopoStl3Hfr Methods ClearCache() Invalidates all cached drawings. Call this after modifying the source topology. public void ClearCache() Display(Bind) Displays the flat-shaded topological STL: all edges in black + flat-shaded triangle faces. public void Display(Bind bind) Parameters bind Bind Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box" }, "api/Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee.html": { "href": "api/Hi.Geom.Topo.TopoStl3HfrSmoothDisplayee.html", "title": "Class TopoStl3HfrSmoothDisplayee | HiAPI-C# 2025", - "summary": "Class TopoStl3HfrSmoothDisplayee Namespace Hi.Geom.Topo Assembly HiDisp.dll Smooth-shaded displayee for TopoStl3Hfr. Renders smooth faces (per-vertex averaged normals) and sharp edges only. All rendering-related cached data (adjacent cos², smooth normals) is stored in this class via dictionaries, keeping the source TopoStl3Hfr clean. Corresponds to C++ TopoStl3::_smoothDraw + _edgeDraw. public class TopoStl3HfrSmoothDisplayee : IDisplayee, IExpandToBox3d, IDisposable Inheritance object TopoStl3HfrSmoothDisplayee Implements IDisplayee IExpandToBox3d IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) 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 TopoStl3HfrSmoothDisplayee(TopoStl3Hfr, double) Initializes a new smooth displayee wrapping the given TopoStl3Hfr. public TopoStl3HfrSmoothDisplayee(TopoStl3Hfr source, double roundCos = 0.8) Parameters source TopoStl3Hfr The source topological STL. roundCos double Round cosine threshold (default 0.8). Fields DefaultRoundCos Default round cosine threshold for smooth/sharp edge classification. public const double DefaultRoundCos = 0.8 Field Value double DefaultRoundCosSquare Default round cosine squared threshold. public const double DefaultRoundCosSquare = 0.6400000000000001 Field Value double Properties RoundCos Gets or sets the round cosine threshold for smooth/sharp edge classification. Edges where the cos² of adjacent triangle normals exceeds this² are considered “round” (smooth). Setting this value invalidates the cached drawings. Corresponds to C++ _round_cos. public double RoundCos { get; set; } Property Value double Source The source topological STL. public TopoStl3Hfr Source { get; } Property Value TopoStl3Hfr Methods ClearCache() Invalidates all cached data (dictionaries and drawings). Call this after modifying the source topology or changing RoundCos. public void ClearCache() Display(Bind) Displays the smooth-shaded topological STL: sharp edges in black + smooth-shaded faces. Corresponds to C++ TopoStl3::Render. public void Display(Bind bind) Parameters bind Bind Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box" + "summary": "Class TopoStl3HfrSmoothDisplayee Namespace Hi.Geom.Topo Assembly HiDisp.dll Smooth-shaded displayee for TopoStl3Hfr. Renders smooth faces (per-vertex averaged normals) and sharp edges only. All rendering-related cached data (adjacent cos², smooth normals) is stored in this class via dictionaries, keeping the source TopoStl3Hfr clean. Corresponds to C++ topo_stl3::_smoothDraw + _edgeDraw. public class TopoStl3HfrSmoothDisplayee : IDisplayee, IExpandToBox3d, IDisposable Inheritance object TopoStl3HfrSmoothDisplayee Implements IDisplayee IExpandToBox3d IDisposable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) 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 TopoStl3HfrSmoothDisplayee(TopoStl3Hfr, double) Initializes a new smooth displayee wrapping the given TopoStl3Hfr. public TopoStl3HfrSmoothDisplayee(TopoStl3Hfr source, double roundCos = 0.8) Parameters source TopoStl3Hfr The source topological STL. roundCos double Round cosine threshold (default 0.8). Fields DefaultRoundCos Default round cosine threshold for smooth/sharp edge classification. public const double DefaultRoundCos = 0.8 Field Value double DefaultRoundCosSquare Default round cosine squared threshold. public const double DefaultRoundCosSquare = 0.6400000000000001 Field Value double Properties RoundCos Gets or sets the round cosine threshold for smooth/sharp edge classification. Edges where the cos² of adjacent triangle normals exceeds this² are considered “round” (smooth). Setting this value invalidates the cached drawings. Corresponds to C++ _round_cos. public double RoundCos { get; set; } Property Value double Source The source topological STL. public TopoStl3Hfr Source { get; } Property Value TopoStl3Hfr Methods ClearCache() Invalidates all cached data (dictionaries and drawings). Call this after modifying the source topology or changing RoundCos. public void ClearCache() Display(Bind) Displays the smooth-shaded topological STL: sharp edges in black + smooth-shaded faces. Corresponds to C++ topo_stl3::Render. public void Display(Bind bind) Parameters bind Bind Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box" }, "api/Hi.Geom.Topo.TopoTri3Hfr.html": { "href": "api/Hi.Geom.Topo.TopoTri3Hfr.html", "title": "Class TopoTri3Hfr | HiAPI-C# 2025", - "summary": "Class TopoTri3Hfr Namespace Hi.Geom.Topo Assembly HiDisp.dll Topological 3D triangle with Fraction coordinates. Maintains connectivity to points and lines. Corresponds to C++ topo_tri3_t. public class TopoTri3Hfr Inheritance object TopoTri3Hfr 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) Fields Lines Three directed edges. The index is aligned to the begin point: lines[0] = {P0=ps[0], P1=ps[1]}, lines[1] = {P0=ps[1], P1=ps[2]}, lines[2] = {P0=ps[2], P1=ps[0]}. public readonly TopoLine3Hfr[] Lines Field Value TopoLine3Hfr[] Ps Three apex points. ps[i] == lines[i].P0. public readonly TopoPoint3Hfr[] Ps Field Value TopoPoint3Hfr[] Properties CachedCross Gets or sets the cached cross product. Setting this is useful when the cross is computed externally (e.g. during construction). public Vec3Hfr? CachedCross { get; set; } Property Value Vec3Hfr? Methods ApexAtc(int) Gets the apex at the specified index. public Vec3Hfr ApexAtc(int index) Parameters index int Returns Vec3Hfr ClearCache() Clears all cached values. public void ClearCache() GetCross() Gets the cross product vector from line edges: lines[2].arrow x lines[0].arrow. Cached after first computation. Corresponds to C++ get_cross. public Vec3Hfr GetCross() Returns Vec3Hfr GetCrossByTls(TopoLine3Hfr, TopoLine3Hfr) Computes cross from line arrows: lines[2].arrow x lines[0].arrow. public static Vec3Hfr GetCrossByTls(TopoLine3Hfr tl0, TopoLine3Hfr tl2) Parameters tl0 TopoLine3Hfr tl2 TopoLine3Hfr Returns Vec3Hfr GetIntegerNormal() Gets the integer normal vector (cross scaled to integer-like fraction). Corresponds to C++ get_integer_normal. public Vec3Hfr GetIntegerNormal() Returns Vec3Hfr GetNormal() Gets the normalized (unit length) normal vector in double precision. Cached after first computation. Corresponds to C++ get_normal. public Vec3d GetNormal() Returns Vec3d ResetCross() Recomputes the cached cross product. public void ResetCross() ResetIntegerNormal() Recomputes the cached integer normal. Also recomputes the cross. public void ResetIntegerNormal() ResetNormal() Recomputes the cached normal. Also recomputes the integer normal and cross. public void ResetNormal() ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToTri3d() Converts to a Tri3d (double precision). public Tri3d ToTri3d() Returns Tri3d" + "summary": "Class TopoTri3Hfr Namespace Hi.Geom.Topo Assembly HiDisp.dll Topological 3D triangle with Fraction coordinates. Maintains connectivity to points and lines. Corresponds to C++ topo_tri3wfr_t. public class TopoTri3Hfr Inheritance object TopoTri3Hfr 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) Fields Lines Three directed edges. The index is aligned to the begin point: lines[0] = {P0=ps[0], P1=ps[1]}, lines[1] = {P0=ps[1], P1=ps[2]}, lines[2] = {P0=ps[2], P1=ps[0]}. public readonly TopoLine3Hfr[] Lines Field Value TopoLine3Hfr[] Ps Three apex points. ps[i] == lines[i].P0. public readonly TopoPoint3Hfr[] Ps Field Value TopoPoint3Hfr[] Properties CachedCross Gets or sets the cached cross product. Setting this is useful when the cross is computed externally (e.g. during construction). public Vec3Hfr? CachedCross { get; set; } Property Value Vec3Hfr? Methods ApexAtc(int) Gets the apex at the specified index. public Vec3Hfr ApexAtc(int index) Parameters index int Returns Vec3Hfr ClearCache() Clears all cached values. public void ClearCache() GetCross() Gets the cross product vector from line edges: lines[2].arrow x lines[0].arrow. Cached after first computation. Corresponds to C++ get_cross. public Vec3Hfr GetCross() Returns Vec3Hfr GetCrossByTls(TopoLine3Hfr, TopoLine3Hfr) Computes cross from line arrows: lines[2].arrow x lines[0].arrow. public static Vec3Hfr GetCrossByTls(TopoLine3Hfr tl0, TopoLine3Hfr tl2) Parameters tl0 TopoLine3Hfr tl2 TopoLine3Hfr Returns Vec3Hfr GetIntegerNormal() Gets the integer normal vector (cross scaled to integer-like fraction). Corresponds to C++ get_integer_normal. public Vec3Hfr GetIntegerNormal() Returns Vec3Hfr GetNormal() Gets the normalized (unit length) normal vector in double precision. Cached after first computation. Corresponds to C++ get_normal. public Vec3d GetNormal() Returns Vec3d ResetCross() Recomputes the cached cross product. public void ResetCross() ResetIntegerNormal() Recomputes the cached integer normal. Also recomputes the cross. public void ResetIntegerNormal() ResetNormal() Recomputes the cached normal. Also recomputes the integer normal and cross. public void ResetNormal() ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToTri3d() Converts to a Tri3d (double precision). public Tri3d ToTri3d() Returns Tri3d" }, "api/Hi.Geom.Topo.TopoTri3StockHfr.html": { "href": "api/Hi.Geom.Topo.TopoTri3StockHfr.html", "title": "Class TopoTri3StockHfr | HiAPI-C# 2025", - "summary": "Class TopoTri3StockHfr Namespace Hi.Geom.Topo Assembly HiDisp.dll Stock (pool) of topological triangles. Corresponds to C++ topo_tri3_stock_t. public class TopoTri3StockHfr Inheritance object TopoTri3StockHfr 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 TopoTri3StockHfr(int) Initializes a new triangle stock with the specified capacity. public TopoTri3StockHfr(int capacity) Parameters capacity int Properties Count Gets the number of triangles. public int Count { get; } Property Value int Tris Gets all triangles in the stock. public IReadOnlyCollection Tris { get; } Property Value IReadOnlyCollection Methods Del(TopoTri3Hfr) Removes a triangle from the stock and cleans up connectivity. Thread-safe. public void Del(TopoTri3Hfr src) Parameters src TopoTri3Hfr Gen(TopoLine3Hfr, TopoLine3Hfr, TopoLine3Hfr) Creates a new triangle from three directed edges and adds it to the stock. Thread-safe. public TopoTri3Hfr Gen(TopoLine3Hfr tl0, TopoLine3Hfr tl1, TopoLine3Hfr tl2) Parameters tl0 TopoLine3Hfr tl1 TopoLine3Hfr tl2 TopoLine3Hfr Returns TopoTri3Hfr Gen(TopoPoint3Hfr, TopoPoint3Hfr, TopoPoint3Hfr, TopoLine3StockHfr) Creates a new triangle from three points (automatically creating lines via the stock). Thread-safe. public TopoTri3Hfr Gen(TopoPoint3Hfr tp0, TopoPoint3Hfr tp1, TopoPoint3Hfr tp2, TopoLine3StockHfr tlStock) Parameters tp0 TopoPoint3Hfr tp1 TopoPoint3Hfr tp2 TopoPoint3Hfr tlStock TopoLine3StockHfr Returns TopoTri3Hfr" + "summary": "Class TopoTri3StockHfr Namespace Hi.Geom.Topo Assembly HiDisp.dll Stock (pool) of topological triangles. Corresponds to C++ topo_tri3wfr_stock_t. public class TopoTri3StockHfr Inheritance object TopoTri3StockHfr 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 TopoTri3StockHfr(int) Initializes a new triangle stock with the specified capacity. public TopoTri3StockHfr(int capacity) Parameters capacity int Properties Count Gets the number of triangles. public int Count { get; } Property Value int Tris Gets all triangles in the stock. public IReadOnlyCollection Tris { get; } Property Value IReadOnlyCollection Methods Del(TopoTri3Hfr) Removes a triangle from the stock and cleans up connectivity. Thread-safe. public void Del(TopoTri3Hfr src) Parameters src TopoTri3Hfr Gen(TopoLine3Hfr, TopoLine3Hfr, TopoLine3Hfr) Creates a new triangle from three directed edges and adds it to the stock. Thread-safe. public TopoTri3Hfr Gen(TopoLine3Hfr tl0, TopoLine3Hfr tl1, TopoLine3Hfr tl2) Parameters tl0 TopoLine3Hfr tl1 TopoLine3Hfr tl2 TopoLine3Hfr Returns TopoTri3Hfr Gen(TopoPoint3Hfr, TopoPoint3Hfr, TopoPoint3Hfr, TopoLine3StockHfr) Creates a new triangle from three points (automatically creating lines via the stock). Thread-safe. public TopoTri3Hfr Gen(TopoPoint3Hfr tp0, TopoPoint3Hfr tp1, TopoPoint3Hfr tp2, TopoLine3StockHfr lineStock) Parameters tp0 TopoPoint3Hfr tp1 TopoPoint3Hfr tp2 TopoPoint3Hfr lineStock TopoLine3StockHfr Returns TopoTri3Hfr" }, "api/Hi.Geom.Topo.Vec3Hfr.html": { "href": "api/Hi.Geom.Topo.Vec3Hfr.html", @@ -1692,12 +1752,12 @@ "api/Hi.Geom.Topo.html": { "href": "api/Hi.Geom.Topo.html", "title": "Namespace Hi.Geom.Topo | HiAPI-C# 2025", - "summary": "Namespace Hi.Geom.Topo Classes TopoLine3Hfr Topological 3D line (directed edge) with Fraction coordinates. Maintains connectivity to adjacent reversed line and owning triangle. Corresponds to C++ topo_line3_t. TopoLine3StockHfr Stock (pool) of topological lines with deduplication based on endpoint identity. Corresponds to C++ topo_line3_stock_t. TopoPoint3Hfr Topological 3D point with Fraction coordinates. Maintains connectivity to adjacent lines and triangles. Corresponds to C++ topo_point3_t. TopoPoint3StockHfr Stock (pool) of topological points with deduplication based on fraction coordinates. Corresponds to C++ topo_point3_stock_t. TopoStl3Hfr Pure C# topological STL (triangle mesh) with Fraction coordinates. Hfr: High-Precision (decimal) FRaction. Provides unlimited-precision exact arithmetic for geometric computations without relying on native (C++) interop. Corresponds to C++ topo_stl3_t. TopoStl3HfrFlatDisplayee Flat-shaded displayee for TopoStl3Hfr. Renders flat triangle faces (one normal per triangle) and all unique edge lines. Corresponds to C++ TopoStl3::_flatDraw + all-lines draw. TopoStl3HfrSmoothDisplayee Smooth-shaded displayee for TopoStl3Hfr. Renders smooth faces (per-vertex averaged normals) and sharp edges only. All rendering-related cached data (adjacent cos², smooth normals) is stored in this class via dictionaries, keeping the source TopoStl3Hfr clean. Corresponds to C++ TopoStl3::_smoothDraw + _edgeDraw. TopoTri3Hfr Topological 3D triangle with Fraction coordinates. Maintains connectivity to points and lines. Corresponds to C++ topo_tri3_t. TopoTri3StockHfr Stock (pool) of topological triangles. Corresponds to C++ topo_tri3_stock_t. Structs Vec3Hfr 3D vector with Fraction elements. Provides unlimited-precision exact arithmetic for geometric computations. Corresponds to C++ vec3." + "summary": "Namespace Hi.Geom.Topo Classes CarveBooleanResult Result of one carve boolean step. On failure the workpiece is untouched and the step may simply be skipped. CarveStl A triangle mesh that can be carved: an exact-fraction topology graph with an incrementally maintained spatial index, mutated in place by exact boolean steps (SubstractVolume(Stl, double) / AddVolume(Stl, double)). Unlike NativeTopoStl3wfr (build-once sweeping input), this object is long-lived and accumulates cut geometry step after step; sharp edges and exact planar faces survive the booleans exactly. Not thread-safe. NativeTopoStl3d Native TopoStl with element type double. NativeTopoStl3wfr Native TopoStl with element type fraction. TopoLine3Hfr Topological 3D line (directed edge) with Fraction coordinates. Maintains connectivity to adjacent reversed line and owning triangle. Corresponds to C++ topo_line3wfr_t. TopoLine3StockHfr Stock (pool) of topological lines with deduplication based on endpoint identity. Corresponds to C++ topo_line3wfr_stock_t. TopoPoint3Hfr Topological 3D point with Fraction coordinates. Maintains connectivity to adjacent lines and triangles. Corresponds to C++ topo_point3wfr_t. TopoPoint3StockHfr Stock (pool) of topological points with deduplication based on fraction coordinates. Corresponds to C++ topo_point3wfr_stock_t. TopoStl3Hfr Pure C# topological STL (triangle mesh) with Fraction coordinates. Hfr: High-Precision (decimal) FRaction. Provides unlimited-precision exact arithmetic for geometric computations without relying on native (C++) interop. Corresponds to C++ topo_stl3wfr_t. TopoStl3HfrFlatDisplayee Flat-shaded displayee for TopoStl3Hfr. Renders flat triangle faces (one normal per triangle) and all unique edge lines. Corresponds to C++ topo_stl3::_flatDraw + all-lines draw. TopoStl3HfrSmoothDisplayee Smooth-shaded displayee for TopoStl3Hfr. Renders smooth faces (per-vertex averaged normals) and sharp edges only. All rendering-related cached data (adjacent cos², smooth normals) is stored in this class via dictionaries, keeping the source TopoStl3Hfr clean. Corresponds to C++ topo_stl3::_smoothDraw + _edgeDraw. TopoTri3Hfr Topological 3D triangle with Fraction coordinates. Maintains connectivity to points and lines. Corresponds to C++ topo_tri3wfr_t. TopoTri3StockHfr Stock (pool) of topological triangles. Corresponds to C++ topo_tri3wfr_stock_t. Structs Vec3Hfr 3D vector with Fraction elements. Provides unlimited-precision exact arithmetic for geometric computations. Corresponds to C++ vec3. Enums CarveBooleanKind What a carve boolean did to the workpiece container." }, "api/Hi.Geom.TransformationGeom.html": { "href": "api/Hi.Geom.TransformationGeom.html", "title": "Class TransformationGeom | HiAPI-C# 2025", - "summary": "Class TransformationGeom Namespace Hi.Geom Assembly HiMech.dll Represents a geometric transformation that can be applied to a geometry object. This class combines a transformer with a target geometry to produce transformed geometric results. public class TransformationGeom : IStlSource, IGetStl, IMakeXmlSource, IGeomProperty, IGenStl, IExpandToBox3d, IDuplicate Inheritance object TransformationGeom Implements IStlSource IGetStl IMakeXmlSource IGeomProperty IGenStl IExpandToBox3d IDuplicate Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods StlUtil.ToFaceDrawing(IGetStl) StlUtil.ToLineDrawing(IGetStl) StlUtil.ToSparkleLineDrawing(IGetStl) 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 TransformationGeom class provides functionality to: Apply geometric transformations to STL geometry Support XML serialization and deserialization Handle duplication of transformation configurations Manage transformation matrices and their application to geometry Constructors TransformationGeom() Initializes a new instance of the TransformationGeom class with default values. public TransformationGeom() TransformationGeom(IGetStl) Initializes a new instance of the TransformationGeom class with a specified geometry. public TransformationGeom(IGetStl geom) Parameters geom IGetStl The geometry object to be transformed. TransformationGeom(XElement, string, IProgress) Initializes a new instance of the TransformationGeom class from XML data. public TransformationGeom(XElement src, string baseDirectory, IProgress progress) Parameters src XElement The XML element containing the transformation data. baseDirectory string The base directory for resolving relative paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. Remarks This constructor deserializes both the transformer and geometry data from the provided XML. If either element is missing or invalid, the corresponding property will be null. Properties Geom Gets or sets the target geometry that will be transformed. public IGetStl Geom { get; set; } Property Value IGetStl Remarks This property represents the base geometry object that will have the transformation applied to it. If null, operations involving this geometry will return null results. Transformer Gets or sets the transformer that defines the geometric transformation. The transformation is applied from left (first element) to right (last element), with the target geometry being on the left side. public ITransformer Transformer { get; set; } Property Value ITransformer Remarks The transformer can be null, in which case no transformation is applied to the geometry. XName Gets the XML element name used for serialization. public static string XName { get; } Property Value string The string “TransformationGeom”. Methods Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object Remarks The duplication process creates new instances of both the transformer and geometry objects if they implement the appropriate cloning interfaces. ExpandToBox3d(Box3d) Expands the given box to include the bounds of the transformed geometry. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The box to expand. Remarks This method updates the provided box to encompass the transformed geometry. If the geometry or its STL representation is null, no expansion occurs. GenStl(IPolarResolution2d) Generates a new STL. public Stl GenStl(IPolarResolution2d resolution) Parameters resolution IPolarResolution2d Polar resolution Returns Stl A newly created STL. GetStl() Gets the transformed STL representation of the geometry. public Stl GetStl() Returns Stl The transformed STL if both geometry and transformer are valid; the original STL if transformer is null; null if geometry is null or produces null STL. Remarks If the transformer is null, the method returns the untransformed geometry. If the geometry is null or produces a null STL, the method returns null. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + "summary": "Class TransformationGeom Namespace Hi.Geom Assembly HiMech.dll Represents a geometric transformation that can be applied to a geometry object. This class combines a transformer with a target geometry to produce transformed geometric results. public class TransformationGeom : IStlSource, IGetStl, IMakeXmlSource, IGeomProperty, IGenStl, IExpandToBox3d, IDuplicate Inheritance object TransformationGeom Implements IStlSource IGetStl IMakeXmlSource IGeomProperty IGenStl IExpandToBox3d IDuplicate Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods StlUtil.ToFaceDrawing(IGetStl) StlUtil.ToLineDrawing(IGetStl) StlUtil.ToSparkleLineDrawing(IGetStl) 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 TransformationGeom class provides functionality to: Apply geometric transformations to STL geometry Support XML serialization and deserialization Handle duplication of transformation configurations Manage transformation matrices and their application to geometry Constructors TransformationGeom() Initializes a new instance of the TransformationGeom class with default values. public TransformationGeom() TransformationGeom(IGetStl) Initializes a new instance of the TransformationGeom class with a specified geometry. public TransformationGeom(IGetStl geom) Parameters geom IGetStl The geometry object to be transformed. TransformationGeom(XElement, string, IProgress) Initializes a new instance of the TransformationGeom class from XML data. public TransformationGeom(XElement src, string baseDirectory, IProgress progress) Parameters src XElement The XML element containing the transformation data. baseDirectory string The base directory for resolving relative paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. Remarks This constructor deserializes both the transformer and geometry data from the provided XML. If either element is missing or invalid, the corresponding property will be null. Properties Geom Gets or sets the target geometry that will be transformed. public IGetStl Geom { get; set; } Property Value IGetStl Remarks This property represents the base geometry object that will have the transformation applied to it. If null, operations involving this geometry will return null results. Transformer Gets or sets the transformer that defines the geometric transformation. The transformation is applied from left (first element) to right (last element), with the target geometry being on the left side. public ITransformer Transformer { get; set; } Property Value ITransformer Remarks The transformer can be null, in which case no transformation is applied to the geometry. XName Gets the XML element name used for serialization. public static string XName { get; } Property Value string The string “TransformationGeom”. Methods Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object Remarks The duplication process creates new instances of both the transformer and geometry objects if they implement the appropriate cloning interfaces. ExpandToBox3d(Box3d) Expands the given box to include the bounds of the transformed geometry. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The box to expand. Remarks This method updates the provided box to encompass the transformed geometry. If the geometry or its STL representation is null, no expansion occurs. GenStl(IPolarResolution2d) Generates a new STL. public Stl GenStl(IPolarResolution2d resolution) Parameters resolution IPolarResolution2d Polar resolution Returns Stl A newly created STL. GetStl() Gets the transformed STL representation of the geometry. public Stl GetStl() Returns Stl The transformed STL if both geometry and transformer are valid; the original STL if transformer is null; null if geometry is null or produces null STL. Remarks If the transformer is null, the method returns the untransformed geometry. If the geometry is null or produces a null STL, the method returns null. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, "api/Hi.Geom.Tri3d.html": { "href": "api/Hi.Geom.Tri3d.html", @@ -1742,12 +1802,12 @@ "api/Hi.Geom.Vec3d.html": { "href": "api/Hi.Geom.Vec3d.html", "title": "Class Vec3d | HiAPI-C# 2025", - "summary": "Class Vec3d Namespace Hi.Geom Assembly HiGeom.dll Basic 3D point (or vector). public class Vec3d : IEquatable, IExpandToBox3d, IBinaryIo, IWriteBin, ICsvRowIo, IEqualityOperators, IAdditionOperators, ISubtractionOperators, IMultiplyOperators, IMultiplyOperators, IDivisionOperators, IVec, IFormattable, IToPresentDto Inheritance object Vec3d Implements IEquatable IExpandToBox3d IBinaryIo IWriteBin ICsvRowIo IEqualityOperators IAdditionOperators ISubtractionOperators IMultiplyOperators IMultiplyOperators IDivisionOperators IVec IFormattable IToPresentDto Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods BinIoUtil.ToBytes(IWriteBin) GeomUtil.ExpandToBox3d(IExpandToBox3d, Mat4d, Box3d) GeomUtil.GetBox3d(IExpandToBox3d) 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 Vec3d() Ctor. public Vec3d() Vec3d(Polar3d) Ctor. public Vec3d(Polar3d src) Parameters src Polar3d src Vec3d(Vec2d, double) Initializes a new instance of the Vec3d class from a 2D vector and z coordinate. public Vec3d(Vec2d xy, double z) Parameters xy Vec2d The 2D vector providing x and y coordinates. z double The z coordinate. Vec3d(Vec3d) Copy ctor. public Vec3d(Vec3d src) Parameters src Vec3d src Vec3d(vec3d) ctor. public Vec3d(vec3d src) Parameters src vec3d src Vec3d(vec3f) ctor. public Vec3d(vec3f src) Parameters src vec3f src Vec3d(IEnumerable) Creates a vector from an enumerable collection of three double values. public Vec3d(IEnumerable src) Parameters src IEnumerable Source collection containing three double values Vec3d(double, double, double) Ctor. public Vec3d(double x, double y, double z) Parameters x double x y double y z double z Vec3d(Func) Creates a vector using a function that maps direction index to value. public Vec3d(Func dirToValueFunc) Parameters dirToValueFunc Func Function that takes direction index (0=X, 1=Y, 2=Z) and returns the corresponding value Vec3d(BinaryReader) Ctor by bytes: x = reader.ReadDouble(); y = reader.ReadDouble(); z = reader.ReadDouble(); public Vec3d(BinaryReader reader) Parameters reader BinaryReader reader Vec3d(int, double, double, double) Ctor by direction offset. Direction 0,1,2 indicate x,y,z respectively. public Vec3d(int dir, double a, double b, double c) Parameters dir int direction offset a double value at direction (0+dir)%3 b double value at direction (1+dir)%3 c double value at direction (2+dir)%3 Vec3d(string) Ctor by string. The format is (x,y,z). public Vec3d(string src) Parameters src string src Vec3d((double, double, double)) Ctor. public Vec3d((double, double, double) src) Parameters src (double, double, double) src Fields x Value at x direction. public double x Field Value double y Value at y direction. public double y Field Value double z Value at z direction. public double z Field Value double Properties AbsSum public double AbsSum { get; } Property Value double Sum of the abs {x,y,z}. Which is Math.Abs(x) + Math.Abs(y) + Math.Abs(z). AllOne public static Vec3d AllOne { get; } Property Value Vec3d Generate Vec3d(1, 1, 1). CsvText Csv text. public string CsvText { get; set; } Property Value string CsvTitleText Csv titles text. public string CsvTitleText { get; } Property Value string ElementNum Element number: 3 for (x,y,z). public static int ElementNum { get; } Property Value int IsAllFinite public bool IsAllFinite { get; } Property Value bool Is x,y,z all finite. IsAllNaN public bool IsAllNaN { get; } Property Value bool is x,y,z all NaN. IsAllNegativeInfinity public bool IsAllNegativeInfinity { get; } Property Value bool is x,y,z all NegativeInfinity. IsAllPositiveInfinity public bool IsAllPositiveInfinity { get; } Property Value bool is x,y,z all PositiveInfinity. IsAnyFinite public bool IsAnyFinite { get; } Property Value bool Is at least one of x,y,z finite. IsAnyNaN public bool IsAnyNaN { get; } Property Value bool Is any of {x,y,z} NaN. IsZero public bool IsZero { get; } Property Value bool Is zero vector. Which is x == 0 && y == 0 && z == 0. this[int] Gets or sets the element at the specified index. public double this[int dir] { get; set; } Parameters dir int Property Value double The element at the specified index. Length public double Length { get; } Property Value double Geometry length of this. LengthSquare public double LengthSquare { get; } Property Value double Geometry length ^ 2. Which is x * x + y * y + z * z. MaxAbsDir public int MaxAbsDir { get; } Property Value int Get the direction index with maximum absolute value. If the absolute of {x,y,z} is the biggest, return {0,1,2}. MaxDir public int MaxDir { get; } Property Value int Get the direction index with maximum value. If {x,y,z} is the biggest, return {0,1,2}. MaxValue public double MaxValue { get; } Property Value double The max value selected from {x,y,z}. Which is Math.Max(Math.Max(x, y), z). MinDir public int MinDir { get; } Property Value int Get the direction index with maximum value. If {x,y,z} is the biggest, return {0,1,2}. MinValue public double MinValue { get; } Property Value double The min value selected from {x,y,z}. Which is Math.Min(Math.Min(x, y), z). NaN public static Vec3d NaN { get; } Property Value Vec3d Generate Vec3d(double.NaN, double.NaN, double.NaN). NativeByteSize public static int NativeByteSize { get; } Property Value int Byte size: sizeof(double) * 3. NegativeInfinity public static Vec3d NegativeInfinity { get; } Property Value Vec3d Generate Vec3d(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity) PositiveInfinity public static Vec3d PositiveInfinity { get; } Property Value Vec3d Generate Vec3d(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity) Rank Dimension (i.e. Size) of the Vector. public int Rank { get; } Property Value int Text Gets or sets the vector as a string representation. public string Text { get; set; } Property Value string UnitX public static Vec3d UnitX { get; } Property Value Vec3d Generate Vec3d(1, 0, 0). UnitY public static Vec3d UnitY { get; } Property Value Vec3d Generate Vec3d(0, 1, 0). UnitZ public static Vec3d UnitZ { get; } Property Value Vec3d Generate Vec3d(0, 0, 1). X Value at x direction. public double X { get; set; } Property Value double XY Vec2d of X and Y. The getter gets a copied object. public Vec2d XY { get; set; } Property Value Vec2d Y Value at y direction. public double Y { get; set; } Property Value double Z Value at z direction. public double Z { get; set; } Property Value double Zero public static Vec3d Zero { get; } Property Value Vec3d Generate Vec3d(0, 0, 0). Methods All(double) Creates a vector with all components set to the specified value. public static Vec3d All(double v) Parameters v double Value to set for all components Returns Vec3d A new vector with all components set to the specified value At(int) Get the value at the dirction. Direction 0,1,2 are x,y,z. If direction index is larger than 2, the return value is at z direction. public ref double At(int dir) Parameters dir int direction index Returns double value at the direction BilinearInterpolate(Vec3d, Vec3d, Vec3d, Vec3d, double, double) Performs bilinear interpolation between four points. public static Vec3d BilinearInterpolate(Vec3d p00, Vec3d p01, Vec3d p10, Vec3d p11, double u, double v) Parameters p00 Vec3d Point at (0,0) p01 Vec3d Point at (0,1) p10 Vec3d Point at (1,0) p11 Vec3d Point at (1,1) u double Interpolation parameter in first dimension (0.0 to 1.0) v double Interpolation parameter in second dimension (0.0 to 1.0) Returns Vec3d The interpolated point Cross(Vec3d, Vec3d) Get a cross b. public static Vec3d Cross(Vec3d a, Vec3d b) Parameters a Vec3d a b Vec3d b Returns Vec3d a x b Dot(Vec3d) this dot src. public double Dot(Vec3d src) Parameters src Vec3d src Returns double dotted value Enumerate() Enumerates the components of the vector. public IEnumerable Enumerate() Returns IEnumerable An enumerable sequence of the vector's components (X, Y, Z) Equals(Vec3d) Indicates whether the current object is equal to another object of the same type. public bool Equals(Vec3d other) Parameters other Vec3d An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(Vec3d, double) check equals for each component with tolerance. public bool Equals(Vec3d other, double toleranceForEachComponent) Parameters other Vec3d other vec toleranceForEachComponent double tolerance for each component Returns bool check equals for each component with tolerance. Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. ExpandMax(Vec3d) Find and expand maximum values from src. public void ExpandMax(Vec3d src) Parameters src Vec3d src ExpandMin(Vec3d) Find and expand minimum values from src. public void ExpandMin(Vec3d src) Parameters src Vec3d src ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetCosSquareWith(Vec3d) Get Cos(theta)^2. theta is the angle between this and src. This function is faster than GetCosWith(Vec3d) since it lacks one square root operation. public double GetCosSquareWith(Vec3d src) Parameters src Vec3d one of edge vector Returns double Cos(theta)^2 GetCosWith(Vec3d) Get Cos(theta). theta is the angle between this and v. public double GetCosWith(Vec3d v) Parameters v Vec3d a vector Returns double Cos(theta) GetCross(Vec3d) Get this cross src. public Vec3d GetCross(Vec3d src) Parameters src Vec3d src Returns Vec3d GetCsvText(string) Gets the CSV text representation of this vector with the specified format. public string GetCsvText(string format) Parameters format string Format string for the double values Returns string CSV formatted string GetEachValueAbs() Creates a new vector with the absolute value of each component. public Vec3d GetEachValueAbs() Returns Vec3d A new vector with absolute values of each component GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. GetMulEach(Vec3d) Creates a new vector by multiplying each component of this vector with the corresponding component of another vector. public Vec3d GetMulEach(Vec3d vec) Parameters vec Vec3d The vector to multiply with Returns Vec3d A new vector with component-wise multiplication results GetMulWithoutTrans(Mat4d) Get a new object by this*mat without translation part. public Vec3d GetMulWithoutTrans(Mat4d mat) Parameters mat Mat4d transform matrix Returns Vec3d new Vec3d(x * mat.At(0, 0) + y * mat.At(1, 0) + z * mat.At(2, 0) , x* mat.At(0, 1) + y* mat.At(1, 1) + z* mat.At(2, 1) , x* mat.At(0, 2) + y* mat.At(1, 2) + z* mat.At(2, 2)) GetNormalized() Generate normalized vec. public Vec3d GetNormalized() Returns Vec3d Normalized vec GetRadian(Vec3d) Get angle between this and v. The angle has no sign. This vector is not required to be an unit vector. public double GetRadian(Vec3d v) Parameters v Vec3d one of the edge vector. Not required to be an unit vector. Returns double Angle in radian GetRadian(Vec3d, Vec3d) Get angle between this and v. This function applies normal vector to determine the sign of angle. This vector is not required to be an unit vector. public double GetRadian(Vec3d v, Vec3d n) Parameters v Vec3d vector of ending edge. Not required to be an unit vector. n Vec3d normal vector. Not required to be an unit vector. Returns double angle in radian GetRadianByUnitVector(Vec3d) Get angle between this and v. The angle has no sign. This vector is not required to be an unit vector. Both this and v should be unit vector. Much efficient than GetRadian(Vec3d). public double GetRadianByUnitVector(Vec3d v) Parameters v Vec3d one of the edge vector. Not required to be an unit vector. Returns double Angle in radian GetTransform(Func) Get the new Vec3d by transforming each element by the function. public Vec3d GetTransform(Func transformingFunc) Parameters transformingFunc Func Returns Vec3d GetVec2dByPlaneDir(int) Gets a 2D vector by projecting the 3D vector onto a plane. public Vec2d GetVec2dByPlaneDir(int dir) Parameters dir int Direction index: 0 for YZ plane, 1 for ZX plane, 2 for XY plane Returns Vec2d A 2D vector representing the projection GetXRotation(double) Get rotated Vec3d along x direction. CCW. Much efficient than using Mat4d multiplication. public Vec3d GetXRotation(double rad) Parameters rad double rotation radian Returns Vec3d rotated Vec3d GetYRotation(double) Get rotated Vec3d along y direction. CCW. Much efficient than using Mat4d multiplication. public Vec3d GetYRotation(double rad) Parameters rad double rotation radian Returns Vec3d rotated Vec3d GetZRotation(double) Get rotated Vec3d along z direction. CCW. Much efficient than using Mat4d multiplication. public Vec3d GetZRotation(double rad) Parameters rad double rotation radian Returns Vec3d rotated Vec3d Interpolate(Vec3d, Vec3d, double) Interpolate from a to b with ratio alpha:(1-alpha). public static Vec3d Interpolate(Vec3d a, Vec3d b, double alpha) Parameters a Vec3d a b Vec3d b alpha double ratio Returns Vec3d a * (1 - alpha) + b * alpha IsNormalized(double) Checks if the vector is normalized (has a length of approximately 1). public bool IsNormalized(double toleranceSquare = 1E-07) Parameters toleranceSquare double Square of the tolerance value for comparing with 1 (default: 1e-7) Returns bool True if the vector is normalized within the specified tolerance MulEach(Vec3d) Multiplies each component of this vector with the corresponding component of another vector. public Vec3d MulEach(Vec3d vec) Parameters vec Vec3d The vector to multiply with Returns Vec3d This vector after multiplication MulWithoutTrans(Mat4d) this*=mat without translation part. public Vec3d MulWithoutTrans(Mat4d mat) Parameters mat Mat4d transformation matrix Returns Vec3d this See Also GetMulWithoutTrans(Mat4d) Normalize() Normalize this. public Vec3d Normalize() Returns Vec3d this Parse(string) If src is not null and not empty string, return Vec3d(string); otherwise return null. public static Vec3d Parse(string src) Parameters src string src Returns Vec3d parsed Vec3d ParseByCsv(string) Parses a vector from a CSV text string. public static Vec3d ParseByCsv(string csvText) Parameters csvText string CSV formatted string containing vector components Returns Vec3d A new vector parsed from the CSV text ReadBin(BinaryReader) Reads binary data to initialize the object. public void ReadBin(BinaryReader reader) Parameters reader BinaryReader The binary reader to read from Set(Vec3d) Set values by copy. public Vec3d Set(Vec3d src) Parameters src Vec3d src Returns Vec3d this Set(vec3d) Set values by copy. public Vec3d Set(vec3d src) Parameters src vec3d src Returns Vec3d this Set(double, double, double) Set values. public Vec3d Set(double x, double y, double z) Parameters x double x y double y z double z Returns Vec3d this Set(double[]) Set values by array. public Vec3d Set(double[] xyz) Parameters xyz double[] double[]{x,y,z} Returns Vec3d this Set(Func) Sets vector components using a function that maps direction index and current value to new value. public Vec3d Set(Func dirToValueFunc) Parameters dirToValueFunc Func Function that takes direction index (0=X, 1=Y, 2=Z) and current value, and returns the new value Returns Vec3d This vector after modification Set(Func) Sets vector components using a function that maps direction index to value. public Vec3d Set(Func dirToValueFunc) Parameters dirToValueFunc Func Function that takes direction index (0=X, 1=Y, 2=Z) and returns the corresponding value Returns Vec3d This vector after modification Set(int, double, double, double) Set values by direction offset. Direction 0,1,2 indicate x,y,z respectively. public Vec3d Set(int dir, double a, double b, double c) Parameters dir int direction offset a double value at direction (0+dir)%3 b double value at direction (1+dir)%3 c double value at direction (2+dir)%3 Returns Vec3d this SetEachNanToZero() Set NaN to 0 for each value. public Vec3d SetEachNanToZero() Returns Vec3d this SetEachValueAbs() Set each value to absolute. public Vec3d SetEachValueAbs() Returns Vec3d this ToArray() return new double[] { x, y, z } public double[] ToArray() Returns double[] { x, y, z } ToBuf(double[]) Set x,y,z to the dst array. public void ToBuf(double[] dst) Parameters dst double[] dst ToBuf(double[], ref int) Set x,y,z to the dst array from postion p and increase p by the pushed number. public int ToBuf(double[] dst, ref int p) Parameters dst double[] dst p int position from dst Returns int Which is pushed number of double ToPresentDto() Convert Vec3d to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO object with type, x, y, z properties ToString() To representative string with format:(x,y,z). public override string ToString() Returns string Representative string ToString(string) To string with format: (x,y,z) public string ToString(string format) Parameters format string format of ToString(string) Returns string Representative string ToString(string, IFormatProvider) Returns a string representation of the vector formatted according to the specified format. public string ToString(string format, IFormatProvider formatProvider) Parameters format string The format to use for each component formatProvider IFormatProvider The format provider to use Returns string A formatted string representation of the vector ToString(string, int) Converts the vector to a string with the specified format and left padding. public string ToString(string format, int leftPadding) Parameters format string Format string for the double values leftPadding int Number of characters to pad on the left of each value Returns string Formatted string representation of the vector Transform(Func) Transform each element by the function. public Vec3d Transform(Func transformingFunc) Parameters transformingFunc Func Returns Vec3d TryParse(string, out Vec3d) Attempts to parse a string into a Vec3d. public static bool TryParse(string src, out Vec3d dst) Parameters src string The string to parse in format “(x,y,z)” dst Vec3d When this method returns, contains the Vec3d value if parsing succeeded, or null if parsing failed Returns bool true if parsing succeeded; otherwise, false TryParseLoose(string, out Vec3d) Attempts to parse a string into a Vec3d using a loose format. Accepts various delimiters (comma, semicolon, space) and removes brackets/parentheses. public static bool TryParseLoose(string text, out Vec3d dst) Parameters text string The string to parse. Can contain brackets, parentheses, or other delimiters. dst Vec3d When this method returns, contains the parsed Vec3d if successful, or Vec3d.NaN if parsing failed. Returns bool True if parsing was successful; otherwise, false. WriteBin(BinaryWriter) Output to bytes: writer.Write(x); writer.Write(y); writer.Write(z); public void WriteBin(BinaryWriter writer) Parameters writer BinaryWriter writer Operators operator +(Vec3d, Vec3d) Plus. public static Vec3d operator +(Vec3d left, Vec3d right) Parameters left Vec3d a right Vec3d b Returns Vec3d new Vec3d(a.x + b.x, a.y + b.y, a.z + b.z) operator /(Vec3d, double) Get a new object from a scaled by 1/d. public static Vec3d operator /(Vec3d a, double d) Parameters a Vec3d d double Returns Vec3d operator ==(Vec3d, Vec3d) Equality operator for comparing two Vec3d objects. public static bool operator ==(Vec3d left, Vec3d right) Parameters left Vec3d Left operand right Vec3d Right operand Returns bool True if the vectors are equal, false otherwise operator !=(Vec3d, Vec3d) Inequality operator for comparing two Vec3d objects. public static bool operator !=(Vec3d left, Vec3d right) Parameters left Vec3d Left operand right Vec3d Right operand Returns bool True if the vectors are not equal, false otherwise operator *(Vec3d, Mat4d) Get p*src. public static Vec3d operator *(Vec3d p, Mat4d src) Parameters p Vec3d point src Mat4d transmform matrix Returns Vec3d new Vec3d(p.x * src.At(0, 0) + p.y * src.At(1, 0) + p.z * src.At(2, 0) + src.At(3, 0) , p.x* src.At(0, 1) + p.y* src.At(1, 1) + p.z* src.At(2, 1) + src.At(3, 1) , p.x* src.At(0, 2) + p.y* src.At(1, 2) + p.z* src.At(2, 2) + src.At(3, 2)) operator *(Vec3d, double) Scale a by s. public static Vec3d operator *(Vec3d a, double s) Parameters a Vec3d vector s double scale Returns Vec3d new Vec3d(a.x * s, a.y * s, a.z * s) operator -(Vec3d, Vec3d) Minus. public static Vec3d operator -(Vec3d a, Vec3d b) Parameters a Vec3d a b Vec3d b Returns Vec3d new Vec3d(a.x - b.x, a.y - b.y, a.z - b.z) operator -(Vec3d) Get negate vector. public static Vec3d operator -(Vec3d src) Parameters src Vec3d src Returns Vec3d new Vec3d(-src.x, -src.y, -src.z)" + "summary": "Class Vec3d Namespace Hi.Geom Assembly HiGeom.dll Basic 3D point (or vector). public class Vec3d : IEquatable, IExpandToBox3d, IBinaryIo, IWriteBin, ICsvRowIo, IEqualityOperators, IAdditionOperators, ISubtractionOperators, IMultiplyOperators, IMultiplyOperators, IDivisionOperators, IVec, IFormattable, IToPresentDto Inheritance object Vec3d Implements IEquatable IExpandToBox3d IBinaryIo IWriteBin ICsvRowIo IEqualityOperators IAdditionOperators ISubtractionOperators IMultiplyOperators IMultiplyOperators IDivisionOperators IVec IFormattable IToPresentDto Inherited Members object.Equals(object, object) object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods BinIoUtil.ToBytes(IWriteBin) GeomUtil.ExpandToBox3d(IExpandToBox3d, Mat4d, Box3d) GeomUtil.GetBox3d(IExpandToBox3d) 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 Vec3d() Ctor. public Vec3d() Vec3d(Polar3d) Ctor. public Vec3d(Polar3d src) Parameters src Polar3d src Vec3d(Vec2d, double) Initializes a new instance of the Vec3d class from a 2D vector and z coordinate. public Vec3d(Vec2d xy, double z) Parameters xy Vec2d The 2D vector providing x and y coordinates. z double The z coordinate. Vec3d(Vec3d) Copy ctor. public Vec3d(Vec3d src) Parameters src Vec3d src Vec3d(vec3d) ctor. public Vec3d(vec3d src) Parameters src vec3d src Vec3d(vec3f) ctor. public Vec3d(vec3f src) Parameters src vec3f src Vec3d(IEnumerable) Creates a vector from an enumerable collection of three double values. public Vec3d(IEnumerable src) Parameters src IEnumerable Source collection containing three double values Vec3d(double, double, double) Ctor. public Vec3d(double x, double y, double z) Parameters x double x y double y z double z Vec3d(Func) Creates a vector using a function that maps direction index to value. public Vec3d(Func dirToValueFunc) Parameters dirToValueFunc Func Function that takes direction index (0=X, 1=Y, 2=Z) and returns the corresponding value Vec3d(BinaryReader) Ctor by bytes: x = reader.ReadDouble(); y = reader.ReadDouble(); z = reader.ReadDouble(); public Vec3d(BinaryReader reader) Parameters reader BinaryReader reader Vec3d(int, double, double, double) Ctor by direction offset. Direction 0,1,2 indicate x,y,z respectively. public Vec3d(int dir, double a, double b, double c) Parameters dir int direction offset a double value at direction (0+dir)%3 b double value at direction (1+dir)%3 c double value at direction (2+dir)%3 Vec3d(string) Ctor by string. The format is (x,y,z). public Vec3d(string src) Parameters src string src Vec3d((double, double, double)) Ctor. public Vec3d((double, double, double) src) Parameters src (double, double, double) src Fields x Value at x direction. public double x Field Value double y Value at y direction. public double y Field Value double z Value at z direction. public double z Field Value double Properties AbsSum public double AbsSum { get; } Property Value double Sum of the abs {x,y,z}. Which is Math.Abs(x) + Math.Abs(y) + Math.Abs(z). AllOne public static Vec3d AllOne { get; } Property Value Vec3d Generate Vec3d(1, 1, 1). CsvText Csv text. public string CsvText { get; set; } Property Value string CsvTitleText Csv titles text. public string CsvTitleText { get; } Property Value string ElementNum Element number: 3 for (x,y,z). public static int ElementNum { get; } Property Value int IsAllFinite public bool IsAllFinite { get; } Property Value bool Is x,y,z all finite. IsAllNaN public bool IsAllNaN { get; } Property Value bool is x,y,z all NaN. IsAllNegativeInfinity public bool IsAllNegativeInfinity { get; } Property Value bool is x,y,z all NegativeInfinity. IsAllPositiveInfinity public bool IsAllPositiveInfinity { get; } Property Value bool is x,y,z all PositiveInfinity. IsAnyFinite public bool IsAnyFinite { get; } Property Value bool Is at least one of x,y,z finite. IsAnyNaN public bool IsAnyNaN { get; } Property Value bool Is any of {x,y,z} NaN. IsZero public bool IsZero { get; } Property Value bool Is zero vector. Which is x == 0 && y == 0 && z == 0. this[int] Gets or sets the element at the specified index. public double this[int dir] { get; set; } Parameters dir int Property Value double The element at the specified index. Length public double Length { get; } Property Value double Geometry length of this. LengthSquare public double LengthSquare { get; } Property Value double Geometry length ^ 2. Which is x * x + y * y + z * z. MaxAbsDir public int MaxAbsDir { get; } Property Value int Get the direction index with maximum absolute value. If the absolute of {x,y,z} is the biggest, return {0,1,2}. MaxDir public int MaxDir { get; } Property Value int Get the direction index with maximum value. If {x,y,z} is the biggest, return {0,1,2}. MaxValue public double MaxValue { get; } Property Value double The max value selected from {x,y,z}. Which is Math.Max(Math.Max(x, y), z). MinDir public int MinDir { get; } Property Value int Get the direction index with maximum value. If {x,y,z} is the biggest, return {0,1,2}. MinValue public double MinValue { get; } Property Value double The min value selected from {x,y,z}. Which is Math.Min(Math.Min(x, y), z). NaN public static Vec3d NaN { get; } Property Value Vec3d Generate Vec3d(double.NaN, double.NaN, double.NaN). NativeByteSize public static int NativeByteSize { get; } Property Value int Byte size: sizeof(double) * 3. NegativeInfinity public static Vec3d NegativeInfinity { get; } Property Value Vec3d Generate Vec3d(double.NegativeInfinity, double.NegativeInfinity, double.NegativeInfinity) PositiveInfinity public static Vec3d PositiveInfinity { get; } Property Value Vec3d Generate Vec3d(double.PositiveInfinity, double.PositiveInfinity, double.PositiveInfinity) Rank Dimension (i.e. Size) of the Vector. public int Rank { get; } Property Value int Text Gets or sets the vector as a string representation. public string Text { get; set; } Property Value string UnitX public static Vec3d UnitX { get; } Property Value Vec3d Generate Vec3d(1, 0, 0). UnitY public static Vec3d UnitY { get; } Property Value Vec3d Generate Vec3d(0, 1, 0). UnitZ public static Vec3d UnitZ { get; } Property Value Vec3d Generate Vec3d(0, 0, 1). X Value at x direction. public double X { get; set; } Property Value double XY Vec2d of X and Y. The getter gets a copied object. public Vec2d XY { get; set; } Property Value Vec2d Y Value at y direction. public double Y { get; set; } Property Value double Z Value at z direction. public double Z { get; set; } Property Value double Zero public static Vec3d Zero { get; } Property Value Vec3d Generate Vec3d(0, 0, 0). Methods All(double) Creates a vector with all components set to the specified value. public static Vec3d All(double v) Parameters v double Value to set for all components Returns Vec3d A new vector with all components set to the specified value At(int) Get the value at the dirction. Direction 0,1,2 are x,y,z. If direction index is larger than 2, the return value is at z direction. public ref double At(int dir) Parameters dir int direction index Returns double value at the direction BilinearInterpolate(Vec3d, Vec3d, Vec3d, Vec3d, double, double) Performs bilinear interpolation between four points. public static Vec3d BilinearInterpolate(Vec3d p00, Vec3d p01, Vec3d p10, Vec3d p11, double u, double v) Parameters p00 Vec3d Point at (0,0) p01 Vec3d Point at (0,1) p10 Vec3d Point at (1,0) p11 Vec3d Point at (1,1) u double Interpolation parameter in first dimension (0.0 to 1.0) v double Interpolation parameter in second dimension (0.0 to 1.0) Returns Vec3d The interpolated point Cross(Vec3d, Vec3d) Get a cross b. public static Vec3d Cross(Vec3d a, Vec3d b) Parameters a Vec3d a b Vec3d b Returns Vec3d a x b Dot(Vec3d) this dot src. public double Dot(Vec3d src) Parameters src Vec3d src Returns double dotted value Enumerate() Enumerates the components of the vector. public IEnumerable Enumerate() Returns IEnumerable An enumerable sequence of the vector's components (X, Y, Z) Equals(Vec3d) Indicates whether the current object is equal to another object of the same type. public bool Equals(Vec3d other) Parameters other Vec3d An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(Vec3d, double) check equals for each component with tolerance. public bool Equals(Vec3d other, double toleranceForEachComponent) Parameters other Vec3d other vec toleranceForEachComponent double tolerance for each component Returns bool check equals for each component with tolerance. Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. ExpandMax(Vec3d) Find and expand maximum values from src. public void ExpandMax(Vec3d src) Parameters src Vec3d src ExpandMin(Vec3d) Find and expand minimum values from src. public void ExpandMin(Vec3d src) Parameters src Vec3d src ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetCosSquareWith(Vec3d) Get Cos(theta)^2. theta is the angle between this and src. This function is faster than GetCosWith(Vec3d) since it lacks one square root operation. public double GetCosSquareWith(Vec3d src) Parameters src Vec3d one of edge vector Returns double Cos(theta)^2 GetCosWith(Vec3d) Get Cos(theta). theta is the angle between this and v. public double GetCosWith(Vec3d v) Parameters v Vec3d a vector Returns double Cos(theta) GetCross(Vec3d) Get this cross src. public Vec3d GetCross(Vec3d src) Parameters src Vec3d src Returns Vec3d GetCsvText(string) Gets the CSV text representation of this vector with the specified format. public string GetCsvText(string format) Parameters format string Format string for the double values Returns string CSV formatted string GetEachValueAbs() Creates a new vector with the absolute value of each component. public Vec3d GetEachValueAbs() Returns Vec3d A new vector with absolute values of each component GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. GetMulEach(Vec3d) Creates a new vector by multiplying each component of this vector with the corresponding component of another vector. public Vec3d GetMulEach(Vec3d vec) Parameters vec Vec3d The vector to multiply with Returns Vec3d A new vector with component-wise multiplication results GetMulWithoutTrans(Mat4d) Get a new object by this*mat without translation part. public Vec3d GetMulWithoutTrans(Mat4d mat) Parameters mat Mat4d transform matrix Returns Vec3d new Vec3d(x * mat.At(0, 0) + y * mat.At(1, 0) + z * mat.At(2, 0) , x* mat.At(0, 1) + y* mat.At(1, 1) + z* mat.At(2, 1) , x* mat.At(0, 2) + y* mat.At(1, 2) + z* mat.At(2, 2)) GetNormalized() Generate normalized vec. public Vec3d GetNormalized() Returns Vec3d Normalized vec GetRadian(Vec3d) Get angle between this and v. The angle has no sign. This vector is not required to be an unit vector. public double GetRadian(Vec3d v) Parameters v Vec3d one of the edge vector. Not required to be an unit vector. Returns double Angle in radian GetRadian(Vec3d, Vec3d) Get angle between this and v. This function applies normal vector to determine the sign of angle. This vector is not required to be an unit vector. public double GetRadian(Vec3d v, Vec3d n) Parameters v Vec3d vector of ending edge. Not required to be an unit vector. n Vec3d normal vector. Not required to be an unit vector. Returns double angle in radian GetRadianByUnitVector(Vec3d) Get angle between this and v. The angle has no sign. This vector is not required to be an unit vector. Both this and v should be unit vector. Much efficient than GetRadian(Vec3d). public double GetRadianByUnitVector(Vec3d v) Parameters v Vec3d one of the edge vector. Not required to be an unit vector. Returns double Angle in radian GetTransform(Func) Get the new Vec3d by transforming each element by the function. public Vec3d GetTransform(Func transformingFunc) Parameters transformingFunc Func Returns Vec3d GetVec2dByPlaneDir(int) Gets a 2D vector by projecting the 3D vector onto a plane. public Vec2d GetVec2dByPlaneDir(int dir) Parameters dir int Direction index: 0 for YZ plane, 1 for ZX plane, 2 for XY plane Returns Vec2d A 2D vector representing the projection GetXRotation(double) Get rotated Vec3d along x direction. CCW. Much efficient than using Mat4d multiplication. public Vec3d GetXRotation(double rad) Parameters rad double rotation radian Returns Vec3d rotated Vec3d GetYRotation(double) Get rotated Vec3d along y direction. CCW. Much efficient than using Mat4d multiplication. public Vec3d GetYRotation(double rad) Parameters rad double rotation radian Returns Vec3d rotated Vec3d GetZRotation(double) Get rotated Vec3d along z direction. CCW. Much efficient than using Mat4d multiplication. public Vec3d GetZRotation(double rad) Parameters rad double rotation radian Returns Vec3d rotated Vec3d Interpolate(Vec3d, Vec3d, double) Interpolate from a to b with ratio alpha:(1-alpha). public static Vec3d Interpolate(Vec3d a, Vec3d b, double alpha) Parameters a Vec3d a b Vec3d b alpha double ratio Returns Vec3d a * (1 - alpha) + b * alpha IsNormalized(double) Checks if the vector is normalized (has a length of approximately 1). public bool IsNormalized(double toleranceSquare = 1E-07) Parameters toleranceSquare double Square of the tolerance value for comparing with 1 (default: 1e-7) Returns bool True if the vector is normalized within the specified tolerance MulEach(Vec3d) Multiplies each component of this vector with the corresponding component of another vector. public Vec3d MulEach(Vec3d vec) Parameters vec Vec3d The vector to multiply with Returns Vec3d This vector after multiplication MulWithoutTrans(Mat4d) this*=mat without translation part. public Vec3d MulWithoutTrans(Mat4d mat) Parameters mat Mat4d transformation matrix Returns Vec3d this See Also GetMulWithoutTrans(Mat4d) Normalize() Normalize this. public Vec3d Normalize() Returns Vec3d this Parse(string) If src is not null and not empty string, return Vec3d(string); otherwise return null. public static Vec3d Parse(string src) Parameters src string src Returns Vec3d parsed Vec3d ParseByCsv(string) Parses a vector from a CSV text string. public static Vec3d ParseByCsv(string csvText) Parameters csvText string CSV formatted string containing vector components Returns Vec3d A new vector parsed from the CSV text ReadBin(BinaryReader) Reads binary data to initialize the object. public void ReadBin(BinaryReader reader) Parameters reader BinaryReader The binary reader to read from Set(Vec3d) Set values by copy. public Vec3d Set(Vec3d src) Parameters src Vec3d src Returns Vec3d this Set(vec3d) Set values by copy. public Vec3d Set(vec3d src) Parameters src vec3d src Returns Vec3d this Set(double, double, double) Set values. public Vec3d Set(double x, double y, double z) Parameters x double x y double y z double z Returns Vec3d this Set(double[]) Set values by array. public Vec3d Set(double[] xyz) Parameters xyz double[] double[]{x,y,z} Returns Vec3d this Set(Func) Sets vector components using a function that maps direction index and current value to new value. public Vec3d Set(Func dirToValueFunc) Parameters dirToValueFunc Func Function that takes direction index (0=X, 1=Y, 2=Z) and current value, and returns the new value Returns Vec3d This vector after modification Set(Func) Sets vector components using a function that maps direction index to value. public Vec3d Set(Func dirToValueFunc) Parameters dirToValueFunc Func Function that takes direction index (0=X, 1=Y, 2=Z) and returns the corresponding value Returns Vec3d This vector after modification Set(int, double, double, double) Set values by direction offset. Direction 0,1,2 indicate x,y,z respectively. public Vec3d Set(int dir, double a, double b, double c) Parameters dir int direction offset a double value at direction (0+dir)%3 b double value at direction (1+dir)%3 c double value at direction (2+dir)%3 Returns Vec3d this SetEachNanToZero() Set NaN to 0 for each value. public Vec3d SetEachNanToZero() Returns Vec3d this SetEachValueAbs() Set each value to absolute. public Vec3d SetEachValueAbs() Returns Vec3d this ToArray() return new double[] { x, y, z } public double[] ToArray() Returns double[] { x, y, z } ToBuf(double[]) Set x,y,z to the dst array. public void ToBuf(double[] dst) Parameters dst double[] dst ToBuf(double[], ref int) Set x,y,z to the dst array from postion p and increase p by the pushed number. public int ToBuf(double[] dst, ref int p) Parameters dst double[] dst p int position from dst Returns int Which is pushed number of double ToPresentDto() Convert Vec3d to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO dictionary with Type, x, y, z keys ToString() To representative string with format:(x,y,z). public override string ToString() Returns string Representative string ToString(string) To string with format: (x,y,z) public string ToString(string format) Parameters format string format of ToString(string) Returns string Representative string ToString(string, IFormatProvider) Returns a string representation of the vector formatted according to the specified format. public string ToString(string format, IFormatProvider formatProvider) Parameters format string The format to use for each component formatProvider IFormatProvider The format provider to use Returns string A formatted string representation of the vector ToString(string, int) Converts the vector to a string with the specified format and left padding. public string ToString(string format, int leftPadding) Parameters format string Format string for the double values leftPadding int Number of characters to pad on the left of each value Returns string Formatted string representation of the vector Transform(Func) Transform each element by the function. public Vec3d Transform(Func transformingFunc) Parameters transformingFunc Func Returns Vec3d TryParse(string, out Vec3d) Attempts to parse a string into a Vec3d. public static bool TryParse(string src, out Vec3d dst) Parameters src string The string to parse in format “(x,y,z)” dst Vec3d When this method returns, contains the Vec3d value if parsing succeeded, or null if parsing failed Returns bool true if parsing succeeded; otherwise, false TryParseLoose(string, out Vec3d) Attempts to parse a string into a Vec3d using a loose format. Accepts various delimiters (comma, semicolon, space) and removes brackets/parentheses. public static bool TryParseLoose(string text, out Vec3d dst) Parameters text string The string to parse. Can contain brackets, parentheses, or other delimiters. dst Vec3d When this method returns, contains the parsed Vec3d if successful, or Vec3d.NaN if parsing failed. Returns bool True if parsing was successful; otherwise, false. WriteBin(BinaryWriter) Output to bytes: writer.Write(x); writer.Write(y); writer.Write(z); public void WriteBin(BinaryWriter writer) Parameters writer BinaryWriter writer Operators operator +(Vec3d, Vec3d) Plus. public static Vec3d operator +(Vec3d left, Vec3d right) Parameters left Vec3d a right Vec3d b Returns Vec3d new Vec3d(a.x + b.x, a.y + b.y, a.z + b.z) operator /(Vec3d, double) Get a new object from a scaled by 1/d. public static Vec3d operator /(Vec3d a, double d) Parameters a Vec3d d double Returns Vec3d operator ==(Vec3d, Vec3d) Equality operator for comparing two Vec3d objects. public static bool operator ==(Vec3d left, Vec3d right) Parameters left Vec3d Left operand right Vec3d Right operand Returns bool True if the vectors are equal, false otherwise operator !=(Vec3d, Vec3d) Inequality operator for comparing two Vec3d objects. public static bool operator !=(Vec3d left, Vec3d right) Parameters left Vec3d Left operand right Vec3d Right operand Returns bool True if the vectors are not equal, false otherwise operator *(Vec3d, Mat4d) Get p*src. public static Vec3d operator *(Vec3d p, Mat4d src) Parameters p Vec3d point src Mat4d transmform matrix Returns Vec3d new Vec3d(p.x * src.At(0, 0) + p.y * src.At(1, 0) + p.z * src.At(2, 0) + src.At(3, 0) , p.x* src.At(0, 1) + p.y* src.At(1, 1) + p.z* src.At(2, 1) + src.At(3, 1) , p.x* src.At(0, 2) + p.y* src.At(1, 2) + p.z* src.At(2, 2) + src.At(3, 2)) operator *(Vec3d, double) Scale a by s. public static Vec3d operator *(Vec3d a, double s) Parameters a Vec3d vector s double scale Returns Vec3d new Vec3d(a.x * s, a.y * s, a.z * s) operator -(Vec3d, Vec3d) Minus. public static Vec3d operator -(Vec3d a, Vec3d b) Parameters a Vec3d a b Vec3d b Returns Vec3d new Vec3d(a.x - b.x, a.y - b.y, a.z - b.z) operator -(Vec3d) Get negate vector. public static Vec3d operator -(Vec3d src) Parameters src Vec3d src Returns Vec3d new Vec3d(-src.x, -src.y, -src.z)" }, "api/Hi.Geom.html": { "href": "api/Hi.Geom.html", "title": "Namespace Hi.Geom | HiAPI-C# 2025", - "summary": "Namespace Hi.Geom Classes ArrayUtil Utility class for array operations. AxisAngle4d Axis(3d) and angle(1d) Box2d Lightweight 2d box. An orthogonal box which the edges are all parallel with Cartesian Coordinate. The data contains in a Box2d is Min and Max. Box2d.NoInit Flag for calling Box2d(NoInit). Box3d Lightweight 3d box. An orthogonal box which the edges are all parallel with Cartesian Coordinate. The data contains in a Box3d is Min and Max. Box3d.NoInit Flag for calling Box3d(NoInit). Cylindroid 3d Geometry of Cylindroid. DVec3d Dual Vec3d with p(Vec3d) and n(Vec3d). ExtendedCylinder An extensible cylinder geometry that generates a corresponding Cylindroid by the start section and the total length. Flat3d Represents a 3D plane defined by a unit normal vector and its signed distance from the origin. The plane equation is: Ax + By + Cz + d = 0, where (A,B,C) is the normal vector and d is the distance to origin. GeomCombination A class that manages multiple STL sources as a single source. GeomUtil Utility of Geometry. Mat4d 4x4 Matrix. MathNetUtil Utility class for MathNet.Numerics operations. MathUtil Math Utility. NativeFraction Native wrapper for C++ fraction_t<0> (unlimited precision fraction). A fraction consists of a numerator and denominator using unlimited precision integers. NativeStl Native Stl. For purpose of efficient swept volume. NativeTopoStld Native TopoStl with element type double. NativeTopoStlfr Native TopoStl with element type fraction. ObjUtil Wavefront OBJ writer for RGB-coloured triangle buffers. PairZr Value pair of Z and R. PairZrUtil Utility class for working with PairZr objects PlyUtil Stanford PLY writer for RGB-coloured triangle buffers. Polar3d Represents a point in 3D space using polar coordinates Segment3d Represents a 3D line segment defined by two endpoints. Stl STL (stereolithography). Composed by Triangles. Provide Stl File R/W. StlFile Represents an STL file with loading and saving capabilities StlFuncHost A class that hosts a function to generate STL geometry. StlUtil Utility for Stl. TransformationGeom Represents a geometric transformation that can be applied to a geometry object. This class combines a transformer with a target geometry to produce transformed geometric results. Tri3d Basic 3D Triangle. Tri3dUtil Utility of Tri3d. Include generator of triangles from points. Vec2d Basic 2D point (or vector). Vec2i Basic 2D point (or vector). Vec3d Basic 3D point (or vector). Structs Fraction Pure C# unlimited precision fraction. Interfaces IExpandToBox2d Object that can be expanded to a Box2d. IExpandToBox3d Object that can be expanded to a Box3d. IFlat3d Interface for a 3D plane that provides an anchor point and a normal vector. IGenStl Interface for generating STL geometry with a resolution. IGeomProperty Interface for objects that have a geometry property. IGetStl Interface for retrieving STL geometry data. IGetZrContour Interface for retrieving Z-R contour data for rotational geometries. IGetZrList Interface for getting a list of Z-R pairs. IStlSource Stl provider with xml support. ITri3d Interface for 3D triangles. IVec Interface for vector types with generic element type. IZrListSourceProperty Provides a source for obtaining an IGetZrList. Enums Dir Enumeration of coordinate axis directions in 3D space. FractionStatus Status flags for Fraction and NativeFraction. Corresponds to IS_PACKED_MASK and IS_EVALUATED_MASK in C++ fraction_base_t. Mat4d.IndexFlag Specifies the indexing method for matrix construction from vectors. Stl.StlType Stl file format." + "summary": "Namespace Hi.Geom Classes ArrayUtil Utility class for array operations. AxisAngle4d Axis(3d) and angle(1d) Box2d Lightweight 2d box. An orthogonal box which the edges are all parallel with Cartesian Coordinate. The data contains in a Box2d is Min and Max. Box2d.NoInit Flag for calling Box2d(NoInit). Box3d Lightweight 3d box. An orthogonal box which the edges are all parallel with Cartesian Coordinate. The data contains in a Box3d is Min and Max. Box3d.NoInit Flag for calling Box3d(NoInit). Cylindroid 3d Geometry of Cylindroid. DVec3d Dual Vec3d with p(Vec3d) and n(Vec3d). ExtendedCylinder An extensible cylinder geometry that generates a corresponding Cylindroid by the start section and the total length. Flat3d Represents a 3D plane defined by a unit normal vector and its signed distance from the origin. The plane equation is: Ax + By + Cz + d = 0, where (A,B,C) is the normal vector and d is the distance to origin. GeomCombination A class that manages multiple STL sources as a single source. GeomUtil Utility of Geometry. Mat4d 4x4 Matrix. MathNetUtil Utility class for MathNet.Numerics operations. MathUtil Math Utility. NativeFraction Native wrapper for C++ fraction_t<0> (unlimited precision fraction). A fraction consists of a numerator and denominator using unlimited precision integers. NativeStl Native Stl. For purpose of efficient swept volume. ObjUtil Wavefront OBJ writer for RGB-coloured triangle buffers. PairZr Value pair of Z and R. PairZrUtil Utility class for working with PairZr objects PlyUtil Stanford PLY writer for RGB-coloured triangle buffers. Polar3d Represents a point in 3D space using polar coordinates Segment3d Represents a 3D line segment defined by two endpoints. Stl STL (stereolithography). Composed by Triangles. Provide Stl File R/W. StlFile Represents an STL file with loading and saving capabilities StlFuncHost A class that hosts a function to generate STL geometry. StlUtil Utility for Stl. TransformationGeom Represents a geometric transformation that can be applied to a geometry object. This class combines a transformer with a target geometry to produce transformed geometric results. Tri3d Basic 3D Triangle. Tri3dUtil Utility of Tri3d. Include generator of triangles from points. Vec2d Basic 2D point (or vector). Vec2i Basic 2D point (or vector). Vec3d Basic 3D point (or vector). Structs Fraction Pure C# unlimited precision fraction. Interfaces IExpandToBox2d Object that can be expanded to a Box2d. IExpandToBox3d Object that can be expanded to a Box3d. IFlat3d Interface for a 3D plane that provides an anchor point and a normal vector. IGenStl Interface for generating STL geometry with a resolution. IGeomProperty Interface for objects that have a geometry property. IGetStl Interface for retrieving STL geometry data. IGetZrContour Interface for retrieving Z-R contour data for rotational geometries. IGetZrList Interface for getting a list of Z-R pairs. IStlSource Stl provider with xml support. ITri3d Interface for 3D triangles. IVec Interface for vector types with generic element type. IZrListSourceProperty Provides a source for obtaining an IGetZrList. Enums Dir Enumeration of coordinate axis directions in 3D space. FractionStatus Status flags for Fraction and NativeFraction. Corresponds to IS_PACKED_MASK and IS_EVALUATED_MASK in C++ fraction_base_t. Mat4d.IndexFlag Specifies the indexing method for matrix construction from vectors. Stl.StlType Stl file format." }, "api/Hi.HiNcKits.BasePathEnum.html": { "href": "api/Hi.HiNcKits.BasePathEnum.html", @@ -1769,35 +1829,25 @@ "title": "Class LocalAppConfig | HiAPI-C# 2025", "summary": "Class LocalAppConfig Namespace Hi.HiNcKits Assembly HiNc.dll Configuration for host-related settings. public class LocalAppConfig Inheritance object LocalAppConfig 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 LocalAppConfig() Initializes a new instance. public LocalAppConfig() LocalAppConfig(XElement, string) Initializes a new instance of the LocalAppConfig class from XML data. public LocalAppConfig(XElement src, string baseDirectory) Parameters src XElement XML element containing configuration data baseDirectory string Base directory for resolving relative paths Properties CacheDbPath Gets or sets the cache database path (SQLite database). public string CacheDbPath { get; set; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string) public XElement MakeXmlSource(string baseDirectory, string relFile) Parameters baseDirectory string relFile string Returns XElement" }, - "api/Hi.HiNcKits.PlayerDivConfig.html": { - "href": "api/Hi.HiNcKits.PlayerDivConfig.html", - "title": "Class PlayerDivConfig | HiAPI-C# 2025", - "summary": "Class PlayerDivConfig Namespace Hi.HiNcKits Assembly HiNc.dll Per-user visibility flags for the Player page's divisions (charts and info panels). Mirrors the HiNcRcl PlayerDivConfig + PlayerDivFlag pair, flattened into a single all-boolean config so the webservice (which has no HiNcHost / HiNcUser) can persist the whole layout through UserConfig alone. public class PlayerDivConfig : IMakeXmlSource Inheritance object PlayerDivConfig Implements 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 Defaults are tuned for a first-time user: the two info panels (EnableStepDiv and MessageTable) are ON so the Player page looks populated without having to open the Division Visibility dropdown; every chart toggle starts OFF. Constructors PlayerDivConfig() Default constructor. public PlayerDivConfig() PlayerDivConfig(XElement) Initializes a new instance of the PlayerDivConfig class from XML data. public PlayerDivConfig(XElement src) Parameters src XElement XML element containing player-div data. Properties ColorIndexTimeChart Color-index strip chart (single-strip timeline coloured by arbitrary numeric/bool aspect). public bool ColorIndexTimeChart { get; set; } Property Value bool DynamometerForceCycleLineDiv Cycle-line chart of sensor-measured force from an external dynamometer. public bool DynamometerForceCycleLineDiv { get; set; } Property Value bool EnableDetailDiv0 Developer-only raw step-property dump panel. public bool EnableDetailDiv0 { get; set; } Property Value bool EnableStepDiv Full / condensed step information panel (Selected Step Info). public bool EnableStepDiv { get; set; } Property Value bool EnableStripAvailabilityChart Availability strip chart (per-step timeline coloured by availability aspect). public bool EnableStripAvailabilityChart { get; set; } Property Value bool EnableStripRoughnessChart Surface-roughness strip chart (per-step timeline coloured by surface-roughness aspect). public bool EnableStripRoughnessChart { get; set; } Property Value bool ForceCycleLineDiv Cycle-line chart of cutting force along the step's rotation cycle. public bool ForceCycleLineDiv { get; set; } Property Value bool MessageTable Session messages panel. public bool MessageTable { get; set; } Property Value bool SensorSpindleMomentCycleLineDiv Cycle-line chart of sensor-measured spindle moment (overlay on sim moment). public bool SensorSpindleMomentCycleLineDiv { get; set; } Property Value bool SimSpindleMomentCycleLineDiv Cycle-line chart of simulation-derived spindle moment on spindle-rotation coordinate. public bool SimSpindleMomentCycleLineDiv { get; set; } Property Value bool XName Name for XML IO. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" - }, "api/Hi.HiNcKits.ProxyConfig.html": { "href": "api/Hi.HiNcKits.ProxyConfig.html", "title": "Class ProxyConfig | HiAPI-C# 2025", "summary": "Class ProxyConfig Namespace Hi.HiNcKits Assembly HiNc.dll Configuration for proxy-related settings. public class ProxyConfig : IMakeXmlSource Inheritance object ProxyConfig Implements 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 ProxyConfig() Default constructor public ProxyConfig() ProxyConfig(XElement, string) Initializes a new instance of the ProxyConfig class from XML data. public ProxyConfig(XElement src, string baseDirectory) Parameters src XElement XML element containing configuration data baseDirectory string Base directory for resolving relative paths Properties AdminDirectory Gets or sets the admin directory path. public string AdminDirectory { get; set; } Property Value string XName Name for XML IO. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, - "api/Hi.HiNcKits.UserConfig.html": { - "href": "api/Hi.HiNcKits.UserConfig.html", - "title": "Class UserConfig | HiAPI-C# 2025", - "summary": "Class UserConfig Namespace Hi.HiNcKits Assembly HiNc.dll User Configuration public class UserConfig : IMakeXmlSource Inheritance object UserConfig Implements 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 UserConfig() Default constructor public UserConfig() UserConfig(XElement, string) Initializes a new instance of the UserConfig class from XML data. public UserConfig(XElement src, string baseDirectory) Parameters src XElement XML element containing configuration data baseDirectory string Base directory for resolving relative paths Properties DisplayedStepPresentKeyList Step infomation key list to show. public List DisplayedStepPresentKeyList { get; set; } Property Value List EnableFullControl Enable Full control of the application. Eanble System.Diagnostics.Process in GUI Script Command. Not used yet. public bool EnableFullControl { get; set; } Property Value bool EquipmentWorkpieceSetupDisplayeeConfig Configuration for EquipmentWorkpieceSetupDisplayee public WorkpieceEditorDisplayeeConfig EquipmentWorkpieceSetupDisplayeeConfig { get; set; } Property Value WorkpieceEditorDisplayeeConfig FixtureSetupDisplayeeConfig Configuration for FixtureSetupDisplayee public FixtureEditorDisplayeeConfig FixtureSetupDisplayeeConfig { get; set; } Property Value FixtureEditorDisplayeeConfig GraphicCacheLowerLimitMb Gets or sets the lower limit of graphic cache in megabytes. public double GraphicCacheLowerLimitMb { get; set; } Property Value double GraphicCacheMb Gets or sets the graphic cache size in megabytes. public long GraphicCacheMb { get; set; } Property Value long GraphicCacheUpperLimitMb Gets or sets the upper limit of graphic cache in megabytes. public double GraphicCacheUpperLimitMb { get; set; } Property Value double LanguageCode Gets or sets the language code for the application UI. public string LanguageCode { get; set; } Property Value string PlayerDivConfig Per-user visibility flags for the Player page's divisions (charts and info panels). Used by the webservice Division Visibility dropdown; persisted alongside the rest of this UserConfig so the layout survives a page refresh. public PlayerDivConfig PlayerDivConfig { get; set; } Property Value PlayerDivConfig ShowPhysicsOptions Gets or sets whether to show physics options in the UI. public bool ShowPhysicsOptions { get; set; } Property Value bool XName Name for XML IO. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" - }, - "api/Hi.HiNcKits.UserService.html": { - "href": "api/Hi.HiNcKits.UserService.html", - "title": "Class UserService | HiAPI-C# 2025", - "summary": "Class UserService Namespace Hi.HiNcKits Assembly HiNc.dll User Service. public class UserService : IDisposable Inheritance object UserService Implements 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors UserService(UserConfig, ILogger) Initializes a new instance of the UserService class with the specified configuration. public UserService(UserConfig appConfig, ILogger logger) Parameters appConfig UserConfig The application configuration. logger ILogger The logger instance. UserService(ILogger) Initializes a new instance of the UserService class. public UserService(ILogger logger) Parameters logger ILogger The logger instance. Properties AdditionalStepPresentAccess Gets or sets additional step presentation access configurations. public Dictionary AdditionalStepPresentAccess { get; set; } Property Value Dictionary CandidateStepPresentKeyList Candidate Step Present Key List for display. Read only. public List CandidateStepPresentKeyList { get; } Property Value List DisplayedStepPresentAccessList StepPresentAccessList for display. Read only. public List> DisplayedStepPresentAccessList { get; } Property Value List> EnablePhysics Gets whether physics features are enabled based on configuration and license. public bool EnablePhysics { get; } Property Value bool IsPhysicsLicensed Gets whether advanced physics features are licensed. public bool IsPhysicsLicensed { get; } Property Value bool SelectedItem Gets or sets the currently selected item in the application. public object SelectedItem { get; set; } Property Value object StepPresentAccessDictionary StepPresentAccessDictionary. Read only. public Dictionary StepPresentAccessDictionary { get; } Property Value Dictionary UserConfig Gets or sets the application configuration. public UserConfig UserConfig { get; set; } Property Value UserConfig UserConfigPath Gets or sets the path to the application configuration file. public string UserConfigPath { get; set; } Property Value string Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool LooseSaveUserConfig() Schedules a loose save of the user configuration using a LooseRunner. public void LooseSaveUserConfig() SaveUserConfig() Saves the user configuration to the file specified by UserConfigPath. public void SaveUserConfig()" + "api/Hi.HiNcKits.ResourceSeeder.html": { + "href": "api/Hi.HiNcKits.ResourceSeeder.html", + "title": "Class ResourceSeeder | HiAPI-C# 2025", + "summary": "Class ResourceSeeder Namespace Hi.HiNcKits Assembly HiNc.dll Seeds the shipped default resources (Resource/** from the HiNc-Resource content package, next to the executable) into the admin resource directory, honoring the ResourceDefaultMarker ownership convention: Marked items (X.default.Ext files, Name.default/ folders) are system territory — they are copied in, refreshed when the shipped bytes change, and deleted when no longer shipped. Unmarked items belong to the user and are never touched. A version stamp file at the destination root records the last-seeded HiNc-Resource version; when it matches, the whole pass is skipped, so steady-state startup cost is one small file read. public static class ResourceSeeder Inheritance object ResourceSeeder Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Remarks One-time migration for pre-marker installs: an unmarked twin of a shipped item (same path with the marker stripped) whose bytes equal the shipped bytes is absorbed — deleted so the marked copy replaces it. A twin with different bytes is a user customization and is left alone. Unmarked files in the source tree are ignored entirely; stale additive-only build output therefore never propagates to the admin folder. All failures are logged as warnings — seeding never throws. Fields ResourceAssemblyFileName Assembly file probed (next to the executable) for the shipped resource version. public const string ResourceAssemblyFileName = \"HiNc-Resource.dll\" Field Value string VersionStampFileName Version stamp file name written at the destination resource root. public const string VersionStampFileName = \".hinc-resource-version\" Field Value string Methods Seed(string, ILogger) Seeds the shipped defaults into adminResourceDirectory. Source is Resource/ under BaseDirectory (the process CWD is not stable enough to anchor on). Never throws. public static void Seed(string adminResourceDirectory, ILogger logger) Parameters adminResourceDirectory string Absolute path of the admin Resource root. logger ILogger Sink for the pass summary and warnings." }, "api/Hi.HiNcKits.html": { "href": "api/Hi.HiNcKits.html", "title": "Namespace Hi.HiNcKits | HiAPI-C# 2025", - "summary": "Namespace Hi.HiNcKits Classes HiNcHost Rich HiNC Service. Host class for HiNC functionality that provides project management, path resolution, and DB integration. LocalApp Local application initialization and cleanup utilities. LocalAppConfig Configuration for host-related settings. PlayerDivConfig Per-user visibility flags for the Player page's divisions (charts and info panels). Mirrors the HiNcRcl PlayerDivConfig + PlayerDivFlag pair, flattened into a single all-boolean config so the webservice (which has no HiNcHost / HiNcUser) can persist the whole layout through UserConfig alone. ProxyConfig Configuration for proxy-related settings. UserConfig User Configuration UserService User Service. Enums BasePathEnum Enumeration of base path types used in the HiNC system." + "summary": "Namespace Hi.HiNcKits Classes HiNcHost Rich HiNC Service. Host class for HiNC functionality that provides project management, path resolution, and DB integration. LocalApp Local application initialization and cleanup utilities. LocalAppConfig Configuration for host-related settings. ProxyConfig Configuration for proxy-related settings. ResourceSeeder Seeds the shipped default resources (Resource/** from the HiNc-Resource content package, next to the executable) into the admin resource directory, honoring the ResourceDefaultMarker ownership convention: Marked items (X.default.Ext files, Name.default/ folders) are system territory — they are copied in, refreshed when the shipped bytes change, and deleted when no longer shipped. Unmarked items belong to the user and are never touched. A version stamp file at the destination root records the last-seeded HiNc-Resource version; when it matches, the whole pass is skipped, so steady-state startup cost is one small file read. Enums BasePathEnum Enumeration of base path types used in the HiNC system." }, "api/Hi.Licenses.AuthFeature.html": { "href": "api/Hi.Licenses.AuthFeature.html", "title": "Enum AuthFeature | HiAPI-C# 2025", - "summary": "Enum AuthFeature Namespace Hi.Licenses Assembly HiDisp.dll Internal Use Only. public enum AuthFeature 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 AdvancedPhysics = 19 Advanced physics feature. CollisionDetectionNoLimit = 6 Collision detection with no limit feature. CubeTreeNoLimit = 2 CubeTree with no limit feature. CubeTreeStepLimit = 8 CubeTree with step limit feature. CuttingParameterConversion = 20 Cutting parameter conversion feature. FreeSwept = 13 Free swept feature. HiApi = 1 HiApi feature. HiApiSubstitute = 16 HiApi substitute feature. If no HiApi licensed, HiApiSubstitute takes the same effect. IsoCL = 5 IsoCL feature. IsoNC = 4 IsoNC feature. MillingForceNoLimit = 3 Milling force with no limit feature. MillingForceStepLimit = 17 Milling force with step limit feature. MtBuilder = 12 MtBuilder feature. OptNcNoLimit = 14 OptNc with no limit feature. PostProcessNoLimit = 7 Post process with no limit feature. SuppressDefaultLogo = 21 Suppress default logo feature." + "summary": "Enum AuthFeature Namespace Hi.Licenses Assembly HiDisp.dll Internal Use Only. public enum AuthFeature 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 AdvancedPhysics = 19 Advanced physics feature. CollisionDetectionNoLimit = 6 Collision detection with no limit feature. CubeTreeNoLimit = 2 CubeTree with no limit feature. CubeTreeStepLimit = 8 CubeTree with step limit feature. CuttingParameterConversion = 20 Cutting parameter conversion feature. FreeSwept = 13 Free swept feature. HiApi = 1 HiApi feature. HiApiSubstitute = 16 HiApi substitute feature. If no HiApi licensed, HiApiSubstitute takes the same effect. IsoCL = 5 IsoCL feature. IsoNC = 4 IsoNC feature. MillingForceNoLimit = 3 Milling force with no limit feature. MillingForceStepLimit = 17 Milling force with step limit feature. MtBuilder = 12 MtBuilder feature. NcComposition = 22 NC composition feature: registering external (non-built-in) processing units into the SoftNc pipeline, and executing NC-embedded C# scripts. Without it the built-in dialects run unchanged; external units are skipped with a diagnostic. OptNcNoLimit = 14 OptNc with no limit feature. PostProcessNoLimit = 7 Post process with no limit feature. SuppressDefaultLogo = 21 Suppress default logo feature." }, "api/Hi.Licenses.AuthorizationFailedEventArgs.html": { "href": "api/Hi.Licenses.AuthorizationFailedEventArgs.html", @@ -1827,7 +1877,7 @@ "api/Hi.Machining.FreeformRemover.html": { "href": "api/Hi.Machining.FreeformRemover.html", "title": "Class FreeformRemover | HiAPI-C# 2025", - "summary": "Class FreeformRemover Namespace Hi.Machining Assembly HiMech.dll Represents a freeform cutting tool that can be used in machining operations. This cutter type supports complex geometries for both the noble (upper) part and the shaper (cutting) part. public class FreeformRemover : ICutter, IGetSweptable, IVolumeRemover, IAnchoredDisplayee, IDisplayee, ITopo, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetAnchoredDisplayeeList, IGetFletchBuckle, IMakeXmlSource, IAbstractNote, IAnchoredCollidableStem, IAnchoredCollidableNode, IAnchoredCollidableBased, IExpandToBox3d, IDuplicate, IDisposable, IClearCache, INameNote Inheritance object FreeformRemover Implements ICutter IGetSweptable IVolumeRemover IAnchoredDisplayee IDisplayee ITopo IGetAsmb IGetAnchor IGetTopoIndex IGetAnchoredDisplayeeList IGetFletchBuckle IMakeXmlSource IAbstractNote IAnchoredCollidableStem IAnchoredCollidableNode IAnchoredCollidableBased IExpandToBox3d IDuplicate IDisposable IClearCache INameNote Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) CutterUtil.GetCutterBodyCoolingArea_mm2(ICutter) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The FreeformRemover class provides functionality for: Managing complex cutting tool geometries Supporting both spinning and non-spinning cutting operations Handling collision detection and display Managing tool assembly and anchoring Supporting XML serialization and deserialization Constructors FreeformRemover() Initializes a new instance. public FreeformRemover() Remarks This constructor initializes the cutter with default settings and creates the necessary anchors and topology bricks for both the noble and shaper parts. FreeformRemover(XElement, string, string, IProgress, object[]) Initializes a new instance from XML data. public FreeformRemover(XElement src, string baseDirectory, string relFile, IProgress progress, object[] res) Parameters src XElement The XML element containing the cutter data. baseDirectory string The base directory for resolving relative paths. relFile string The relative file path for resolving references. progress IProgress Progress reporter for diagnostic messages emitted during construction. res object[] Additional resources for initialization. Properties AbstractNote Gets a brief description of the cutter, including its height. public string AbstractNote { get; } Property Value string Remarks The abstract note includes the cutter type and its height dimension, formatted as \"Freeform-H{this.GetBox3d().Dim.Z}\". CollidableName Gets the name used for collision detection purposes. public string CollidableName { get; } Property Value string CutterTip Gets the cutter tip anchor point. On the same location of GeomAnchor. public Anchor CutterTip { get; } Property Value Anchor Remarks The cutter tip represents the reference point for the cutting edge or surface. This point is used for positioning and orientation calculations during machining operations. GeomAnchor StrutGeom and ShaperGeom locate on this anchor. On the same location of CutterTip. public Anchor GeomAnchor { get; } Property Value Anchor GeomToHolderBranch Gets the branch that transforms from GeomAnchor to Hi.Machining.FreeformRemover.HolderBuckle. public Branch GeomToHolderBranch { get; } Property Value Branch GeomToHolderTransformer Gets or sets the transformer from GeomAnchor to Hi.Machining.FreeformRemover.HolderBuckle. public ITransformer GeomToHolderTransformer { get; set; } Property Value ITransformer IsSpinningCutter Gets or sets a value indicating whether this is a spinning cutting tool. public bool IsSpinningCutter { get; set; } Property Value bool Remarks This property affects how the cutter interacts with the workpiece during machining operations. Spinning cutters typically perform rotary cutting operations, while non-spinning cutters may be used for other types of machining. KeepHolderBuckleOnTop When true, automatically translates the holder buckle to be above the highest geometry point. public bool KeepHolderBuckleOnTop { get; set; } Property Value bool Name Name. public string Name { get; set; } Property Value string Note Note. public string Note { get; set; } Property Value string ShaperGeom Gets or sets the shaper (cutting) part geometry of the cutter. public IGetStl ShaperGeom { get; set; } Property Value IGetStl Remarks The shaper geometry represents the cutting portion of the tool that directly interacts with the workpiece during machining operations. ShaperTopoBrick Gets the topology brick representing the shaper (cutting) part of the cutter. public ITopoBrick ShaperTopoBrick { get; } Property Value ITopoBrick StrutGeom Gets or sets the strut (upper) part geometry of the cutter. public IGetStl StrutGeom { get; set; } Property Value IGetStl Remarks The noble geometry represents the non-cutting portion of the tool, typically including the tool holder and shank. This geometry is important for collision checking and visualization. StrutTopoBrick Gets the topology brick representing the upper (noble) part of the cutter. public ITopoBrick StrutTopoBrick { get; } Property Value ITopoBrick XName Name for XML IO. public static string XName { get; } Property Value string Methods ClearCache() Clears all cached data associated with the cutter. public void ClearCache() Remarks This includes clearing the cached sweptable and solid representations of both the noble and shaper parts of the cutter. Display(Bind) Displays the cutter using the provided binding context. public void Display(Bind bind) Parameters bind Bind The binding context for display operations. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) Releases the unmanaged resources and optionally releases the managed resources. protected virtual void Dispose(bool disposing) Parameters disposing bool true to release both managed and unmanaged resources; false to release only unmanaged resources. Duplicate(params object[]) Creates a deep copy of the current instance. public object Duplicate(params object[] res) Parameters res object[] Additional resources for duplication. Returns object A new instance with copied geometry data. ExpandToBox3d(Box3d) Expands the given bounding box to include the cutter's geometry. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The bounding box to expand. GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredCollidableNode() Gets the anchored collidable node associated with this object. public IAnchoredCollidableNode GetAnchoredCollidableNode() Returns IAnchoredCollidableNode The anchored collidable node. GetAnchoredCollidables() Gets the list of anchored collidable nodes contained by this stem. public List GetAnchoredCollidables() Returns List A list of anchored collidable nodes. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetFletchBuckle() Get fletch buckle anchor. the anchor that generally connect to fixed part such as ground and triggering(motor)-side. public Anchor GetFletchBuckle() Returns Anchor buckle anchor GetShaperDisplayee() Gets the shaper displayee for visualization purposes. public IAnchoredDisplayee GetShaperDisplayee() Returns IAnchoredDisplayee An IAnchoredDisplayee representing the shaper (cutting) part of the cutter. Remarks This method creates a display representation of the shaper geometry, which can be either the raw geometry if it implements IDisplayee, or the topology brick representation. GetStrutAnchoredDisplayee() Gets the noble (upper) part displayee for visualization purposes. public AnchoredDisplayee GetStrutAnchoredDisplayee() Returns AnchoredDisplayee An AnchoredDisplayee representing the noble part of the cutter with modified display properties. Remarks This method creates a display representation of the noble geometry with slightly darker coloring to distinguish it from the shaper part during visualization. GetSweptable(double) Gets the sweptable representation of the cutter for swept volume calculations. public Sweptable GetSweptable(double fractionTolerance) Parameters fractionTolerance double The tolerance value for swept volume calculations. Returns Sweptable A Sweptable object representing the cutter's swept volume, or null if the shaper geometry is not available. Remarks The sweptable representation is cached for performance. Use ClearCache to reset the cached data. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class FreeformRemover Namespace Hi.Machining Assembly HiMech.dll Represents a freeform cutting tool that can be used in machining operations. This cutter type supports complex geometries for both the noble (upper) part and the shaper (cutting) part. public class FreeformRemover : ICutter, IGetSweptable, IVolumeRemover, IAnchoredDisplayee, IDisplayee, ITopo, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetAnchoredDisplayeeList, IGetFletchBuckle, IMakeXmlSource, IAbstractNote, IAnchoredCollidableStem, IAnchoredCollidableNode, IAnchoredCollidableBased, IExpandToBox3d, IDuplicate, IDisposable, IClearCache, INameNote Inheritance object FreeformRemover Implements ICutter IGetSweptable IVolumeRemover IAnchoredDisplayee IDisplayee ITopo IGetAsmb IGetAnchor IGetTopoIndex IGetAnchoredDisplayeeList IGetFletchBuckle IMakeXmlSource IAbstractNote IAnchoredCollidableStem IAnchoredCollidableNode IAnchoredCollidableBased IExpandToBox3d IDuplicate IDisposable IClearCache INameNote Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) CutterUtil.GetCutterBodyCoolingArea_mm2(ICutter) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The FreeformRemover class provides functionality for: Managing complex cutting tool geometries Supporting both spinning and non-spinning cutting operations Handling collision detection and display Managing tool assembly and anchoring Supporting XML serialization and deserialization Constructors FreeformRemover() Initializes a new instance. public FreeformRemover() Remarks This constructor initializes the cutter with default settings and creates the necessary anchors and topology bricks for both the noble and shaper parts. FreeformRemover(XElement, string, string, IProgress, object[]) Initializes a new instance from XML data. public FreeformRemover(XElement src, string baseDirectory, string relFile, IProgress progress, object[] res) Parameters src XElement The XML element containing the cutter data. baseDirectory string The base directory for resolving relative paths. relFile string The relative file path for resolving references. progress IProgress Progress reporter for diagnostic messages emitted during construction. res object[] Additional resources for initialization. Properties AbstractNote Gets a brief description of the cutter, including its height. public string AbstractNote { get; } Property Value string Remarks The abstract note includes the cutter type and its height dimension, formatted as \"Freeform-H{this.GetBox3d().Dim.Z}\". CollidableName Gets the name used for collision detection purposes. public string CollidableName { get; } Property Value string CutterTip Gets the cutter tip anchor point. On the same location of GeomAnchor. public Anchor CutterTip { get; } Property Value Anchor Remarks The cutter tip represents the reference point for the cutting edge or surface. This point is used for positioning and orientation calculations during machining operations. GeomAnchor StrutGeom and ShaperGeom locate on this anchor. On the same location of CutterTip. public Anchor GeomAnchor { get; } Property Value Anchor GeomToHolderBranch Gets the branch that transforms from GeomAnchor to Hi.Machining.FreeformRemover.HolderBuckle. public Branch GeomToHolderBranch { get; } Property Value Branch GeomToHolderTransformer Gets or sets the transformer from GeomAnchor to Hi.Machining.FreeformRemover.HolderBuckle. public ITransformer GeomToHolderTransformer { get; set; } Property Value ITransformer IsSpinningCutter Gets or sets a value indicating whether this is a spinning cutting tool. public bool IsSpinningCutter { get; set; } Property Value bool Remarks This property affects how the cutter interacts with the workpiece during machining operations. Spinning cutters typically perform rotary cutting operations, while non-spinning cutters may be used for other types of machining. KeepHolderBuckleOnTop When true, automatically translates the holder buckle to be above the highest geometry point. public bool KeepHolderBuckleOnTop { get; set; } Property Value bool Name Name. public string Name { get; set; } Property Value string Note Note. public string Note { get; set; } Property Value string ShaperGeom Gets or sets the shaper (cutting) part geometry of the cutter. public IGetStl ShaperGeom { get; set; } Property Value IGetStl Remarks The shaper geometry represents the cutting portion of the tool that directly interacts with the workpiece during machining operations. ShaperTopoBrick Gets the topology brick representing the shaper (cutting) part of the cutter. public ITopoBrick ShaperTopoBrick { get; } Property Value ITopoBrick StrutGeom Gets or sets the strut (upper) part geometry of the cutter. public IGetStl StrutGeom { get; set; } Property Value IGetStl Remarks The noble geometry represents the non-cutting portion of the tool, typically including the tool holder and shank. This geometry is important for collision checking and visualization. StrutTopoBrick Gets the topology brick representing the upper (noble) part of the cutter. public ITopoBrick StrutTopoBrick { get; } Property Value ITopoBrick XName Name for XML IO. public static string XName { get; } Property Value string Methods ClearCache() Clears all cached data associated with the cutter. public void ClearCache() Remarks This includes clearing the cached sweptable and solid representations of both the noble and shaper parts of the cutter. Display(Bind) Displays the cutter using the provided binding context. public void Display(Bind bind) Parameters bind Bind The binding context for display operations. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) Releases the unmanaged resources and optionally releases the managed resources. protected virtual void Dispose(bool disposing) Parameters disposing bool true to release both managed and unmanaged resources; false to release only unmanaged resources. Duplicate(params object[]) Creates a deep copy of the current instance. public object Duplicate(params object[] res) Parameters res object[] Additional resources for duplication. Returns object A new instance with copied geometry data. ExpandToBox3d(Box3d) Expands the given bounding box to include the cutter's geometry. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The bounding box to expand. GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredCollidableNode() Gets the anchored collidable node associated with this object. public IAnchoredCollidableNode GetAnchoredCollidableNode() Returns IAnchoredCollidableNode The anchored collidable node. GetAnchoredCollidables() Gets the list of anchored collidable nodes contained by this stem. public List GetAnchoredCollidables() Returns List A list of anchored collidable nodes. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetFletchBuckle() Get fletch buckle anchor. the anchor that generally connect to fixed part such as ground and triggering(motor)-side. public Anchor GetFletchBuckle() Returns Anchor buckle anchor GetShaperDisplayee() Gets the shaper displayee for visualization purposes. public IAnchoredDisplayee GetShaperDisplayee() Returns IAnchoredDisplayee An IAnchoredDisplayee representing the shaper (cutting) part of the cutter. Remarks This method creates a display representation of the shaper geometry, which can be either the raw geometry if it implements IDisplayee, or the topology brick representation. GetStrutAnchoredDisplayee() Gets the noble (upper) part displayee for visualization purposes. public AnchoredDisplayee GetStrutAnchoredDisplayee() Returns AnchoredDisplayee An AnchoredDisplayee representing the noble part of the cutter with modified display properties. Remarks This method creates a display representation of the noble geometry with slightly darker coloring to distinguish it from the shaper part during visualization. GetSweptable(double) Gets the sweptable representation of the cutter for swept volume calculations. public Sweptable GetSweptable(double fractionTolerance) Parameters fractionTolerance double The tolerance value for swept volume calculations. Returns Sweptable A Sweptable object representing the cutter's swept volume, or null if the shaper geometry is not available. Remarks The sweptable representation is cached for performance. Use ClearCache to reset the cached data. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.Machining.ICutter.html": { "href": "api/Hi.Machining.ICutter.html", @@ -1862,22 +1912,22 @@ "api/Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html": { "href": "api/Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html", "title": "Interface IGetMachiningEquipment | HiAPI-C# 2025", - "summary": "Interface IGetMachiningEquipment Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Interface for objects that can provide access to a machining equipment instance. public interface IGetMachiningEquipment 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 GetMillingEquipment() Get MachiningEquipment. MachiningEquipment GetMillingEquipment() Returns MachiningEquipment MachiningEquipment" + "summary": "Interface IGetMachiningEquipment Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Interface for objects that can provide access to a machining equipment instance. public interface IGetMachiningEquipment 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 GetMachiningEquipment() Get MachiningEquipment. MachiningEquipment GetMachiningEquipment() Returns MachiningEquipment MachiningEquipment GetMillingEquipment() Source-compatible delegate for callers written against the pre-rename name; the equipment has been machining-scoped (not milling-only) since MillingEquipment became MachiningEquipment. [Obsolete(\"Renamed to GetMachiningEquipment.\")] MachiningEquipment GetMillingEquipment() Returns MachiningEquipment MachiningEquipment" }, "api/Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html": { "href": "api/Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html", "title": "Interface IMachiningEquipment | HiAPI-C# 2025", - "summary": "Interface IMachiningEquipment Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Machining equipment. public interface IMachiningEquipment : IDisplayee, IExpandToBox3d, IMakeXmlSource, IGetAnchoredDisplayeeList, IGetProgramCl, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetMachiningChain Inherited Members IDisplayee.Display(Bind) IExpandToBox3d.ExpandToBox3d(Box3d) IMakeXmlSource.MakeXmlSource(string, string, bool) IGetAnchoredDisplayeeList.GetAnchoredDisplayeeList() IGetProgramCl.GetProgramCl() IGetAsmb.GetAsmb() IGetAnchor.GetAnchor() IGetMachiningChain.GetMachiningChain() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MachiningEquipmentUtil.AlignWorkpieceProgramZeroToIso(IMachiningEquipment, Vec3d) MachiningEquipmentUtil.GetIsoCoordinatePosition(IMachiningEquipment, Vec3d) MachiningEquipmentUtil.GetMachinePositionAtProgramZero(IMachiningEquipment) MachiningEquipmentUtil.GetMachinePositionAtTableBuckleZero(IMachiningEquipment) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Fixture Fixture of workpiece. Fixture Fixture { get; set; } Property Value Fixture MachiningTool Milling tool. IMachiningTool MachiningTool { get; set; } Property Value IMachiningTool TableToComp Component transformation from table. ITransformer TableToComp { get; set; } Property Value ITransformer Workpiece Workpiece. Workpiece Workpiece { get; set; } Property Value Workpiece WorkpieceDisplayee Displayee for workpiece rendering. Set by the runtime service layer. IDisplayee WorkpieceDisplayee { get; set; } Property Value IDisplayee" + "summary": "Interface IMachiningEquipment Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Machining equipment. public interface IMachiningEquipment : IDisplayee, IExpandToBox3d, IMakeXmlSource, IGetAnchoredDisplayeeList, IGetProgramCl, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetMachiningChain Inherited Members IDisplayee.Display(Bind) IExpandToBox3d.ExpandToBox3d(Box3d) IMakeXmlSource.MakeXmlSource(string, string, bool) IGetAnchoredDisplayeeList.GetAnchoredDisplayeeList() IGetProgramCl.GetProgramCl() IGetAsmb.GetAsmb() IGetAnchor.GetAnchor() IGetMachiningChain.GetMachiningChain() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MachiningEquipmentUtil.AlignWorkpieceProgramZeroToIso(IMachiningEquipment, Vec3d) MachiningEquipmentUtil.GetIsoCoordinatePosition(IMachiningEquipment, Vec3d) MachiningEquipmentUtil.GetMachinePositionAtProgramZero(IMachiningEquipment) MachiningEquipmentUtil.GetMachinePositionAtTableBuckleZero(IMachiningEquipment) MachiningEquipmentUtil.GetProgramToPnMat4d(IMachiningEquipment) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Fixture Fixture of workpiece. Fixture Fixture { get; set; } Property Value Fixture MachiningTool Milling tool. IMachiningTool MachiningTool { get; set; } Property Value IMachiningTool TableToComp Component transformation from table. ITransformer TableToComp { get; set; } Property Value ITransformer Workpiece Workpiece. Workpiece Workpiece { get; set; } Property Value Workpiece WorkpieceDisplayee Displayee for workpiece rendering. Set by the runtime service layer. IDisplayee WorkpieceDisplayee { get; set; } Property Value IDisplayee" }, "api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html": { "href": "api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html", "title": "Class MachiningEquipment | HiAPI-C# 2025", - "summary": "Class MachiningEquipment Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Machining Equipment. Include the machining chain, workpiece, tool and fixture, etc.. public class MachiningEquipment : IMachiningEquipment, IDisplayee, IExpandToBox3d, IMakeXmlSource, IGetAnchoredDisplayeeList, IGetProgramCl, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetMachiningChain, IGetMachiningEquipment Inheritance object MachiningEquipment Implements IMachiningEquipment IDisplayee IExpandToBox3d IMakeXmlSource IGetAnchoredDisplayeeList IGetProgramCl IGetAsmb IGetAnchor IGetTopoIndex IGetMachiningChain IGetMachiningEquipment Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) MachiningEquipmentUtil.AlignWorkpieceProgramZeroToIso(IMachiningEquipment, Vec3d) MachiningEquipmentUtil.GetIsoCoordinatePosition(IMachiningEquipment, Vec3d) MachiningEquipmentUtil.GetMachinePositionAtProgramZero(IMachiningEquipment) MachiningEquipmentUtil.GetMachinePositionAtTableBuckleZero(IMachiningEquipment) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningEquipment() Ctor. public MachiningEquipment() MachiningEquipment(XElement, string, string, IProgress) Initializes a new instance of the MachiningEquipment class from XML data. public MachiningEquipment(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement The XML element containing the equipment configuration. baseDirectory string The base directory for resolving relative file paths. relFile string The relative file path for XML serialization. progress IProgress Progress reporter for diagnostic messages emitted during construction. Properties Asmb Asmb of the entire equipment. public Asmb Asmb { get; } Property Value Asmb BackgroundTemperature_C Gets or sets the background temperature in Celsius. This is a convenience property that converts between Celsius and Kelvin. public double BackgroundTemperature_C { get; set; } Property Value double BackgroundTemperature_K Gets or sets the background temperature in Kelvin. This represents the ambient temperature of the machining environment. public double BackgroundTemperature_K { get; set; } Property Value double CoolantHeatCondition Gets or sets the coolant heat condition settings. This includes coolant temperature and heat transfer coefficients. public CoolantHeatCondition CoolantHeatCondition { get; set; } Property Value CoolantHeatCondition Fixture Fixture. public Fixture Fixture { get; set; } Property Value Fixture MachiningChain Body of the equipment. public IMachiningChain MachiningChain { get; set; } Property Value IMachiningChain MachiningChainFile Gets or sets the file path of the solid machining chain. This is used for XML serialization and file management. public string MachiningChainFile { get; set; } Property Value string MachiningTool Milling tool. public IMachiningTool MachiningTool { get; set; } Property Value IMachiningTool SpindleCapability Gets or sets the spindle capability configuration. This defines the operational capabilities and limits of the spindle. public SpindleCapability SpindleCapability { get; set; } Property Value SpindleCapability SpindleCapabilityFile Gets or sets the file path of the spindle capability configuration. This is used for XML serialization and file management. public string SpindleCapabilityFile { get; set; } Property Value string TableToComp Transformer of the branch from table buckle to workpiece side buckle. Note that the workpiece side buckle links to Fixture if fixture exist; otherwise, it links to Workpiece if workpiece exist. If Workpiece either Fixture do not exist, this property makes no effect. public ITransformer TableToComp { get; set; } Property Value ITransformer Workpiece Workpiece. public Workpiece Workpiece { get; set; } Property Value Workpiece WorkpieceDisplayee Displayee for workpiece rendering. Set by the runtime service layer. public IDisplayee WorkpieceDisplayee { get; set; } Property Value IDisplayee XName Name for XML IO. public static string XName { get; } Property Value string Methods Detect(bool) Performs collision detection. public MechCollisionResult Detect(bool addFluteAndWorkpieceDetection) Parameters addFluteAndWorkpieceDetection bool Whether to include flute and workpiece in detection. Returns MechCollisionResult Significant collision result. Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetMachiningChain() Gets the machining chain instance. public IMachiningChain GetMachiningChain() Returns IMachiningChain The machining chain instance. GetMillingEquipment() Get MachiningEquipment. public MachiningEquipment GetMillingEquipment() Returns MachiningEquipment MachiningEquipment GetProgramCl() Get CL (Cutter Location). Where Point is tool tip position; Normal is tool orientation. public DVec3d GetProgramCl() Returns DVec3d CL GetToolTipXyzOnProgramZero() Get tool tip xyz from workpiece geom anchor. public Vec3d GetToolTipXyzOnProgramZero() Returns Vec3d if no MachiningTool or no Workpiece equiping, return null; otherwise, return the XYZ from workpiece geomanchor to tool tip. GetTransformFromRootToProgramZero() Gets the transform matrix from the root coordinate system to the program zero coordinate system. public Mat4d GetTransformFromRootToProgramZero() Returns Mat4d A 4x4 transformation matrix representing the coordinate system transformation. 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. PrepareCollidableItems() Prepares all collidable items for collision detection. This method should be called before performing collision detection. public void PrepareCollidableItems() Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ResetCollisionFlags() Resets all collision flags to their default states. This should be called after collision detection is complete. public void ResetCollisionFlags() Tooling(int, MachiningToolHouse) Set MachiningTool by toolId and toolHouse. public bool Tooling(int toolId, MachiningToolHouse toolHouse) Parameters toolId int tool ID toolHouse MachiningToolHouse tool house Returns bool true if tool changed; otherwise, false. Exceptions ToolNotFoundException Throw If toolId does not exist on toolHouse." + "summary": "Class MachiningEquipment Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Machining Equipment. Include the machining chain, workpiece, tool and fixture, etc.. public class MachiningEquipment : IMachiningEquipment, IDisplayee, IExpandToBox3d, IMakeXmlSource, IGetAnchoredDisplayeeList, IGetProgramCl, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetMachiningChain, IGetMachiningEquipment Inheritance object MachiningEquipment Implements IMachiningEquipment IDisplayee IExpandToBox3d IMakeXmlSource IGetAnchoredDisplayeeList IGetProgramCl IGetAsmb IGetAnchor IGetTopoIndex IGetMachiningChain IGetMachiningEquipment Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) MachiningEquipmentUtil.AlignWorkpieceProgramZeroToIso(IMachiningEquipment, Vec3d) MachiningEquipmentUtil.GetIsoCoordinatePosition(IMachiningEquipment, Vec3d) MachiningEquipmentUtil.GetMachinePositionAtProgramZero(IMachiningEquipment) MachiningEquipmentUtil.GetMachinePositionAtTableBuckleZero(IMachiningEquipment) MachiningEquipmentUtil.GetProgramToPnMat4d(IMachiningEquipment) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningEquipment() Ctor. public MachiningEquipment() MachiningEquipment(XElement, string, string, IProgress) Initializes a new instance of the MachiningEquipment class from XML data. public MachiningEquipment(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement The XML element containing the equipment configuration. baseDirectory string The base directory for resolving relative file paths. relFile string The relative file path for XML serialization. progress IProgress Progress reporter for diagnostic messages emitted during construction. Properties Asmb Asmb of the entire equipment. public Asmb Asmb { get; } Property Value Asmb BackgroundTemperature_C Gets or sets the background temperature in Celsius. This is a convenience property that converts between Celsius and Kelvin. public double BackgroundTemperature_C { get; set; } Property Value double BackgroundTemperature_K Gets or sets the background temperature in Kelvin. This represents the ambient temperature of the machining environment. public double BackgroundTemperature_K { get; set; } Property Value double CoolantHeatCondition Gets or sets the coolant heat condition settings. This includes coolant temperature and heat transfer coefficients. public CoolantHeatCondition CoolantHeatCondition { get; set; } Property Value CoolantHeatCondition CoolantHeatConditionFile Gets or sets the file path of the coolant heat condition (WorkpieceMaterial pattern: when set, XML IO externalizes CoolantHeatCondition to this side-file; when null the condition serializes inline). public string CoolantHeatConditionFile { get; set; } Property Value string Fixture Fixture. public Fixture Fixture { get; set; } Property Value Fixture MachiningChain Body of the equipment. public IMachiningChain MachiningChain { get; set; } Property Value IMachiningChain MachiningChainFile Gets or sets the file path of the solid machining chain. This is used for XML serialization and file management. public string MachiningChainFile { get; set; } Property Value string MachiningTool Milling tool. public IMachiningTool MachiningTool { get; set; } Property Value IMachiningTool SpindleCapability Gets or sets the spindle capability configuration. This defines the operational capabilities and limits of the spindle. public SpindleCapability SpindleCapability { get; set; } Property Value SpindleCapability SpindleCapabilityFile Gets or sets the file path of the spindle capability configuration. This is used for XML serialization and file management. public string SpindleCapabilityFile { get; set; } Property Value string TableToComp Transformer of the branch from table buckle to workpiece side buckle. Note that the workpiece side buckle links to Fixture if fixture exist; otherwise, it links to Workpiece if workpiece exist. If Workpiece either Fixture do not exist, this property makes no effect. public ITransformer TableToComp { get; set; } Property Value ITransformer Workpiece Workpiece. public Workpiece Workpiece { get; set; } Property Value Workpiece WorkpieceDisplayee Displayee for workpiece rendering. Set by the runtime service layer. public IDisplayee WorkpieceDisplayee { get; set; } Property Value IDisplayee XName Name for XML IO. public static string XName { get; } Property Value string Methods Detect(bool) Performs collision detection. public MechCollisionResult Detect(bool addFluteAndWorkpieceDetection) Parameters addFluteAndWorkpieceDetection bool Whether to include flute and workpiece in detection. Returns MechCollisionResult Significant collision result. Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetMachiningChain() Gets the machining chain instance. public IMachiningChain GetMachiningChain() Returns IMachiningChain The machining chain instance. GetMachiningEquipment() Get MachiningEquipment. public MachiningEquipment GetMachiningEquipment() Returns MachiningEquipment MachiningEquipment GetMillingEquipment() Source-compatible delegate for callers written against the pre-rename name — the interface's default member is not reachable through a concrete-typed reference, so it is restated here. [Obsolete(\"Renamed to GetMachiningEquipment.\")] public MachiningEquipment GetMillingEquipment() Returns MachiningEquipment This equipment. GetProgramCl() Get CL (Cutter Location). Where Point is tool tip position; Normal is tool orientation. public DVec3d GetProgramCl() Returns DVec3d CL GetToolTipXyzOnProgramZero() Get tool tip xyz from workpiece geom anchor. public Vec3d GetToolTipXyzOnProgramZero() Returns Vec3d if no MachiningTool or no Workpiece equiping, return null; otherwise, return the XYZ from workpiece geomanchor to tool tip. GetTransformFromRootToProgramZero() Gets the transform matrix from the root coordinate system to the program zero coordinate system. public Mat4d GetTransformFromRootToProgramZero() Returns Mat4d A 4x4 transformation matrix representing the coordinate system transformation. 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. PrepareCollidableItems() Prepares all collidable items for collision detection. This method should be called before performing collision detection. public void PrepareCollidableItems() Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ResetCollisionFlags() Resets all collision flags to their default states. This should be called after collision detection is complete, and by a runtime reset so no part stays painted red. public void ResetCollisionFlags() Tooling(int, MachiningToolHouse) Set MachiningTool by toolId and toolHouse. public bool Tooling(int toolId, MachiningToolHouse toolHouse) Parameters toolId int tool ID toolHouse MachiningToolHouse tool house Returns bool true if tool changed; otherwise, false. Exceptions ToolNotFoundException Throw If toolId does not exist on toolHouse." }, "api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html": { "href": "api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndex.html", "title": "Class MachiningEquipmentCollisionIndex | HiAPI-C# 2025", - "summary": "Class MachiningEquipmentCollisionIndex Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Represents a collision index for machining equipment components. This class manages collision detection between different parts of the machining equipment. public class MachiningEquipmentCollisionIndex : ICollisionIndex, IGetCollidable, IMakeXmlSource, IToXElement Inheritance object MachiningEquipmentCollisionIndex Implements ICollisionIndex IGetCollidable IMakeXmlSource IToXElement Inherited Members object.Equals(object, object) 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 MachiningEquipmentCollisionIndex(MachiningEquipment, string) Initializes a new instance of the MachiningEquipmentCollisionIndex class with the specified equipment and key. public MachiningEquipmentCollisionIndex(MachiningEquipment equipment, string key) Parameters equipment MachiningEquipment The machining equipment to associate with this collision index. key string The key identifying the component in the collision system. MachiningEquipmentCollisionIndex(string) Initializes a new instance of the MachiningEquipmentCollisionIndex class with the specified key. public MachiningEquipmentCollisionIndex(string key) Parameters key string The key identifying the component in the collision system. MachiningEquipmentCollisionIndex(XElement, IGetMachiningEquipment) Initializes a new instance of the MachiningEquipmentCollisionIndex class from XML data. public MachiningEquipmentCollisionIndex(XElement src, IGetMachiningEquipment equipment) Parameters src XElement The XML element containing the collision index configuration. equipment IGetMachiningEquipment The equipment provider interface. Fields XName Gets the XML element name for serialization. public static string XName Field Value string Properties Anchor Gets the anchor point for the component identified by this index. public Anchor Anchor { get; } Property Value Anchor Remarks The anchor point returned depends on the component key: Workpiece: Geometry anchor Fixture: Geometry anchor ToolHolder: Root anchor of the holder CutterShank: Root anchor of the upper beam topo brick CutterFlute: Root anchor of the shaper topo brick Other: Machine tool component anchor Equipment Gets or sets the machining equipment associated with this collision index. When set, updates the component anchor and collidable based on the equipment's solid machining chain. public IMachiningEquipment Equipment { get; set; } Property Value IMachiningEquipment Key Gets the key identifying the component in the collision system. public string Key { get; } Property Value string WorkpieceRuntimeGeomGetter Getter for runtime geometry of the workpiece. Set by the service layer. public Func WorkpieceRuntimeGeomGetter { get; set; } Property Value Func Methods Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. GetCollidable() Gets the collidable object for the component identified by this index. public ICollidable GetCollidable() Returns ICollidable The collidable object representing the component's geometry. The type of collidable returned depends on the component key: Workpiece: Runtime geometry Fixture: Solid collidable ToolHolder: Cylindroid or freeform holder solid CutterShank: Upper beam topo brick solid CutterFlute: Shaper topo brick solid Other: Machine tool component collidable GetHashCode() Gets a hash code for the current object. public override int GetHashCode() Returns int A hash code for the current object. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToXElement() Get the XElement to represent the object. public XElement ToXElement() Returns XElement XElement to represent the object." + "summary": "Class MachiningEquipmentCollisionIndex Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Represents a collision index for machining equipment components. This class manages collision detection between different parts of the machining equipment. public class MachiningEquipmentCollisionIndex : ICollisionIndex, IGetCollidable, IMakeXmlSource, IToXElement Inheritance object MachiningEquipmentCollisionIndex Implements ICollisionIndex IGetCollidable IMakeXmlSource IToXElement Inherited Members object.Equals(object, object) 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 MachiningEquipmentCollisionIndex(MachiningEquipment, string) Initializes a new instance of the MachiningEquipmentCollisionIndex class with the specified equipment and key. public MachiningEquipmentCollisionIndex(MachiningEquipment equipment, string key) Parameters equipment MachiningEquipment The machining equipment to associate with this collision index. key string The key identifying the component in the collision system. MachiningEquipmentCollisionIndex(string) Initializes a new instance of the MachiningEquipmentCollisionIndex class with the specified key. public MachiningEquipmentCollisionIndex(string key) Parameters key string The key identifying the component in the collision system. MachiningEquipmentCollisionIndex(XElement, IGetMachiningEquipment) Initializes a new instance of the MachiningEquipmentCollisionIndex class from XML data. public MachiningEquipmentCollisionIndex(XElement src, IGetMachiningEquipment equipment) Parameters src XElement The XML element containing the collision index configuration. equipment IGetMachiningEquipment The equipment provider interface. Fields XName Gets the XML element name for serialization. public static string XName Field Value string Properties Anchor Gets the anchor point for the component identified by this index. public Anchor Anchor { get; } Property Value Anchor Remarks The anchor point returned depends on the component key: Workpiece: Geometry anchor Fixture: Geometry anchor ToolHolder: Root anchor of the holder CutterShank: Root anchor of the upper beam topo brick CutterFlute: Root anchor of the shaper topo brick Other: Machine tool component anchor Equipment Gets or sets the machining equipment associated with this collision index. When set, updates the component anchor and collidable based on the equipment's solid machining chain. public IMachiningEquipment Equipment { get; set; } Property Value IMachiningEquipment Key Gets the key identifying the component in the collision system. public string Key { get; } Property Value string WorkpieceMeshedGeomGetter Getter for meshed geometry of the workpiece. Set by the service layer. public Func WorkpieceMeshedGeomGetter { get; set; } Property Value Func Methods Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. GetCollidable() Gets the collidable object for the component identified by this index. public ICollidable GetCollidable() Returns ICollidable The collidable object representing the component's geometry. The type of collidable returned depends on the component key: Workpiece: Meshed geometry Fixture: Solid collidable ToolHolder: Cylindroid or freeform holder solid CutterShank: Upper beam topo brick solid CutterFlute: Shaper topo brick solid Other: Machine tool component collidable GetHashCode() Gets a hash code for the current object. public override int GetHashCode() Returns int A hash code for the current object. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToXElement() Get the XElement to represent the object. public XElement ToXElement() Returns XElement XElement to represent the object." }, "api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource.html": { "href": "api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentCollisionIndexPairsSource.html", @@ -1887,7 +1937,7 @@ "api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html": { "href": "api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html", "title": "Class MachiningEquipmentUtil | HiAPI-C# 2025", - "summary": "Class MachiningEquipmentUtil Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Utility methods for working with machining equipment. public static class MachiningEquipmentUtil Inheritance object MachiningEquipmentUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods AlignWorkpieceProgramZeroToIso(IMachiningEquipment, Vec3d) Places Fixture under the kinematic chain so that ProgramZeroAnchor coincides with the world position the spindle reaches when the machine coordinate equals isoOffset (a G54/G55/… entry). Other anchors (FixtureBuckle, ProgramZeroAnchor, WorkpieceBuckle) must already be at their intended geometric positions (typically via the buckle “general rule”: bottom/top centers of geom). Only GeomToTableTransformer is mutated. Returns the assigned translation, or null when workpiece / fixture / Xyzabc machine tool is missing. public static Vec3d AlignWorkpieceProgramZeroToIso(this IMachiningEquipment equipment, Vec3d isoOffset) Parameters equipment IMachiningEquipment isoOffset Vec3d Returns Vec3d GetIsoCoordinatePosition(IMachiningEquipment, Vec3d) Get ISO coordinate position from the g54seriesOffset. public static Vec3d GetIsoCoordinatePosition(this IMachiningEquipment equipment, Vec3d g54seriesOffset) Parameters equipment IMachiningEquipment g54seriesOffset Vec3d Returns Vec3d GetMachinePositionAtProgramZero(IMachiningEquipment) Gets the machine coordinate when the attacher is at program zero. The machine coordinate are all assumed to be zero. public static Vec3d GetMachinePositionAtProgramZero(this IMachiningEquipment equipment) Parameters equipment IMachiningEquipment The machining equipment. Returns Vec3d The machine coordinate vector. GetMachinePositionAtTableBuckleZero(IMachiningEquipment) Gets the machine coordinate when the attacher is at table buckle zero. public static Vec3d GetMachinePositionAtTableBuckleZero(this IMachiningEquipment equipment) Parameters equipment IMachiningEquipment The machining equipment. Returns Vec3d The machine coordinate vector." + "summary": "Class MachiningEquipmentUtil Namespace Hi.Machining.MachiningEquipmentUtils Assembly HiMech.dll Utility methods for working with machining equipment. public static class MachiningEquipmentUtil Inheritance object MachiningEquipmentUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods AlignWorkpieceProgramZeroToIso(IMachiningEquipment, Vec3d) Places Fixture under the kinematic chain so that ProgramZeroAnchor coincides with the world position the spindle reaches when the machine coordinate equals isoOffset (a G54/G55/… entry). Other anchors (FixtureBuckle, ProgramZeroAnchor, WorkpieceBuckle) must already be at their intended geometric positions (typically via the buckle “general rule”: bottom/top centers of geom). Only GeomToTableTransformer is mutated. Returns the assigned translation, or null when workpiece / fixture / Xyzabc machine tool is missing. The alignment is computed in the machine-coordinate (MC) zero state: the assembly is reflected and every IDynamicRegular axis is set to Step = 0 before querying displacements. The live equipment may have its axes moved, which would otherwise distort the ToolBuckle -> FixtureTableBuckle leg (it crosses the X/Y/Z/A/B/C axes) and break the vector-chain assumption that the legs share a common orientation — isoOffset is itself an MC-zero quantity. public static Vec3d AlignWorkpieceProgramZeroToIso(this IMachiningEquipment equipment, Vec3d isoOffset) Parameters equipment IMachiningEquipment isoOffset Vec3d Returns Vec3d GetIsoCoordinatePosition(IMachiningEquipment, Vec3d) Get ISO coordinate position from the g54seriesOffset. public static Vec3d GetIsoCoordinatePosition(this IMachiningEquipment equipment, Vec3d g54seriesOffset) Parameters equipment IMachiningEquipment g54seriesOffset Vec3d Returns Vec3d GetMachinePositionAtProgramZero(IMachiningEquipment) Gets the machine coordinate when the attacher is at program zero. The machine coordinate are all assumed to be zero. public static Vec3d GetMachinePositionAtProgramZero(this IMachiningEquipment equipment) Parameters equipment IMachiningEquipment The machining equipment. Returns Vec3d The machine coordinate vector. GetMachinePositionAtTableBuckleZero(IMachiningEquipment) Gets the machine coordinate when the attacher is at table buckle zero. public static Vec3d GetMachinePositionAtTableBuckleZero(this IMachiningEquipment equipment) Parameters equipment IMachiningEquipment The machining equipment. Returns Vec3d The machine coordinate vector. GetProgramToPnMat4d(IMachiningEquipment) Gets the rigid transform that maps a point in program (workpiece) coordinates — the ProgramZeroAnchor frame — into the kinematic Pn frame (the chain's table-buckle anchor frame that XyzabcSolver solves in). Both anchors live on the same rigid table-side subtree (the table-buckle→fixture→workpiece leg crosses no machine axis), so the transform is pose-independent and is queried on the live assembly — no MC-zero reflection needed (this runs per parsed motion block; a whole-assembly TopoReflection clone here would dominate large-file parse time). Falls back to identity (program frame ≡ table-buckle frame) when the workpiece has no ProgramZeroAnchor; returns null when the chain has no table buckle. public static Mat4d GetProgramToPnMat4d(this IMachiningEquipment equipment) Parameters equipment IMachiningEquipment The machining equipment. Returns Mat4d The program→Pn transform, or null." }, "api/Hi.Machining.MachiningEquipmentUtils.html": { "href": "api/Hi.Machining.MachiningEquipmentUtils.html", @@ -1897,7 +1947,7 @@ "api/Hi.Machining.MachiningToolHouse.html": { "href": "api/Hi.Machining.MachiningToolHouse.html", "title": "Class MachiningToolHouse | HiAPI-C# 2025", - "summary": "Class MachiningToolHouse Namespace Hi.Machining Assembly HiMech.dll Tool House. public class MachiningToolHouse : Dictionary, IDictionary, ICollection>, IReadOnlyDictionary, IReadOnlyCollection>, IEnumerable>, IDictionary, ICollection, IEnumerable, IDeserializationCallback, ISerializable, INcDependency, IMakeXmlSource Inheritance object Dictionary MachiningToolHouse Implements IDictionary ICollection> IReadOnlyDictionary IReadOnlyCollection> IEnumerable> IDictionary ICollection IEnumerable IDeserializationCallback ISerializable INcDependency IMakeXmlSource Inherited Members Dictionary.Add(object, IMachiningTool) Dictionary.Clear() Dictionary.ContainsKey(object) Dictionary.ContainsValue(IMachiningTool) Dictionary.EnsureCapacity(int) Dictionary.GetAlternateLookup() Dictionary.GetEnumerator() Dictionary.OnDeserialization(object) Dictionary.Remove(object) Dictionary.Remove(object, out IMachiningTool) Dictionary.TrimExcess() Dictionary.TrimExcess(int) Dictionary.TryAdd(object, IMachiningTool) Dictionary.TryGetAlternateLookup(out Dictionary.AlternateLookup) Dictionary.TryGetValue(object, out IMachiningTool) Dictionary.Comparer Dictionary.Count Dictionary.Capacity Dictionary.this[object] Dictionary.Keys Dictionary.Values 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) DictionaryUtil.Retrieve(Dictionary, K, out V, bool) DictionaryUtil.GetOrCreate(IDictionary, TKey, TValue) DictionaryUtil.GetOrCreate(IDictionary, TKey, Func) DictionaryUtil.TryGetValueByKeys(IDictionary, IEnumerable, out TValue) StringUtil.ToDotSplitedString(IEnumerable) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningToolHouse() Ctor. public MachiningToolHouse() MachiningToolHouse(XElement, string, string, IProgress) Ctor. public MachiningToolHouse(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement XML baseDirectory string Base directory path for resolving relative paths relFile string Relative file path progress IProgress The progress reporter. Properties XName Name for XML IO. public static string XName { get; } Property Value string Methods CreateStickMillingTool() Create a new Tool for UI. The tool ID is 1 if no tool existed; otherwise, the tool ID is the max tool ID plus 1. public KeyValuePair CreateStickMillingTool() Returns KeyValuePair the generated tool id and the generated tool 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetToolId(object, IMachiningTool) the function Typically used if the tool has already in the tool house. public void SetToolId(object toolId, IMachiningTool millingTool) Parameters toolId object millingTool IMachiningTool Exceptions ArgumentException throw if toolId has already existed." + "summary": "Class MachiningToolHouse Namespace Hi.Machining Assembly HiMech.dll Tool House. public class MachiningToolHouse : Dictionary, IDictionary, ICollection>, IReadOnlyDictionary, IReadOnlyCollection>, IEnumerable>, IDictionary, ICollection, IEnumerable, IDeserializationCallback, ISerializable, INcDependency, IMakeXmlSource Inheritance object Dictionary MachiningToolHouse Implements IDictionary ICollection> IReadOnlyDictionary IReadOnlyCollection> IEnumerable> IDictionary ICollection IEnumerable IDeserializationCallback ISerializable INcDependency IMakeXmlSource Inherited Members Dictionary.Add(int, IMachiningTool) Dictionary.Clear() Dictionary.ContainsKey(int) Dictionary.ContainsValue(IMachiningTool) Dictionary.EnsureCapacity(int) Dictionary.GetAlternateLookup() Dictionary.GetEnumerator() Dictionary.OnDeserialization(object) Dictionary.Remove(int) Dictionary.Remove(int, out IMachiningTool) Dictionary.TrimExcess() Dictionary.TrimExcess(int) Dictionary.TryAdd(int, IMachiningTool) Dictionary.TryGetAlternateLookup(out Dictionary.AlternateLookup) Dictionary.TryGetValue(int, out IMachiningTool) Dictionary.Comparer Dictionary.Count Dictionary.Capacity Dictionary.this[int] Dictionary.Keys Dictionary.Values 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) DictionaryUtil.Retrieve(Dictionary, K, out V, bool) DictionaryUtil.GetOrCreate(IDictionary, TKey, TValue) DictionaryUtil.GetOrCreate(IDictionary, TKey, Func) DictionaryUtil.TryGetValueByKeys(IDictionary, IEnumerable, out TValue) StringUtil.ToDotSplitedString(IEnumerable) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningToolHouse() Ctor. public MachiningToolHouse() MachiningToolHouse(XElement, string, string, IProgress) Ctor. public MachiningToolHouse(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement XML baseDirectory string Base directory path for resolving relative paths relFile string Relative file path progress IProgress The progress reporter. Properties XName Name for XML IO. public static string XName { get; } Property Value string Methods CreateStickMillingTool() Create a new Tool for UI. The tool ID is 1 if no tool existed; otherwise, the tool ID is the max tool ID plus 1. public KeyValuePair CreateStickMillingTool() Returns KeyValuePair the generated tool id and the generated tool 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetToolId(int, IMachiningTool) the function Typically used if the tool has already in the tool house. public void SetToolId(int toolId, IMachiningTool millingTool) Parameters toolId int millingTool IMachiningTool Exceptions ArgumentException throw if toolId has already existed." }, "api/Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html": { "href": "api/Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html", @@ -1927,12 +1977,12 @@ "api/Hi.Machining.Sweptable.html": { "href": "api/Hi.Machining.Sweptable.html", "title": "Class Sweptable | HiAPI-C# 2025", - "summary": "Class Sweptable Namespace Hi.Machining Assembly HiCbtr.dll Sweptable geometry. public class Sweptable : IGetSweptable, IVolumeRemover, IExpandToBox3d, IDisposable Inheritance object Sweptable Implements IGetSweptable IVolumeRemover IExpandToBox3d 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Sweptable(Stl, double) Ctor. public Sweptable(Stl stl, double nativeTopoStlFractionTolerance) Parameters stl Stl stl nativeTopoStlFractionTolerance double Fraction tolerance for native topology STL. Properties NativeStl Get geometry. public NativeStl NativeStl { get; } Property Value NativeStl geoemtry NativeTopoStl Get geometry. public NativeTopoStld NativeTopoStl { get; } Property Value NativeTopoStld geoemtry NativeTopoStlfr Gets the native topology STL with fraction tolerance. public NativeTopoStlfr NativeTopoStlfr { get; } Property Value NativeTopoStlfr Stl Gets the STL geometry. public Stl Stl { get; } Property Value Stl Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetSweptable(double) Get Sweptable. public Sweptable GetSweptable(double fractionTolerance) Parameters fractionTolerance double The fraction tolerance for the sweptable. Returns Sweptable Sweptable Sweep(Mat4d, Mat4d) Get swept geometry. public CachedTris Sweep(Mat4d pre, Mat4d cur) Parameters pre Mat4d previous transform matrix cur Mat4d current transform matrix Returns CachedTris Swept geometry Sweep(Mat4d, double) Sweep. only available for the geometry that does not contains near point or points on the same line on the same plane. public CachedTris Sweep(Mat4d cur, double fractionTolerance) Parameters cur Mat4d Current transform matrix fractionTolerance double Fraction tolerance for the operation Returns CachedTris Swept geometry as cached triangles" + "summary": "Class Sweptable Namespace Hi.Machining Assembly HiCbtr.dll Sweptable geometry. public class Sweptable : IGetSweptable, IVolumeRemover, IExpandToBox3d, IDisposable Inheritance object Sweptable Implements IGetSweptable IVolumeRemover IExpandToBox3d 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors Sweptable(Stl, double) Ctor. public Sweptable(Stl stl, double nativeTopoStlFractionTolerance) Parameters stl Stl stl nativeTopoStlFractionTolerance double Fraction tolerance for native topology STL. Properties NativeStl Get geometry. public NativeStl NativeStl { get; } Property Value NativeStl geoemtry NativeTopoStl3d Get geometry. public NativeTopoStl3d NativeTopoStl3d { get; } Property Value NativeTopoStl3d geoemtry NativeTopoStl3wfr Gets the native topology STL with fraction tolerance. public NativeTopoStl3wfr NativeTopoStl3wfr { get; } Property Value NativeTopoStl3wfr Stl Gets the STL geometry. public Stl Stl { get; } Property Value Stl Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetSweptable(double) Get Sweptable. public Sweptable GetSweptable(double fractionTolerance) Parameters fractionTolerance double The fraction tolerance for the sweptable. Returns Sweptable Sweptable Sweep(Mat4d, Mat4d) Get swept geometry. public CachedTris Sweep(Mat4d pre, Mat4d cur) Parameters pre Mat4d previous transform matrix cur Mat4d current transform matrix Returns CachedTris Swept geometry Sweep(Mat4d, double) Sweep. only available for the geometry that does not contains near point or points on the same line on the same plane. public CachedTris Sweep(Mat4d cur, double fractionTolerance) Parameters cur Mat4d Current transform matrix fractionTolerance double Fraction tolerance for the operation Returns CachedTris Swept geometry as cached triangles" }, "api/Hi.Machining.SweptableUtil.html": { "href": "api/Hi.Machining.SweptableUtil.html", "title": "Class SweptableUtil | HiAPI-C# 2025", - "summary": "Class SweptableUtil Namespace Hi.Machining Assembly HiCbtr.dll Util for Sweptable. public static class SweptableUtil Inheritance object SweptableUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods RemoveBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool) Remove volume by sweeping volume. public static UnmanagedSubstraction RemoveBySweepingVolume(this CubeTree cubeTree, IGetSweptable sweptable, Mat4d beginMat, Mat4d endMat, double preferredCubeWidth = 0, double fractionTolerance = 0, bool enableBuildingContactContours = false, bool isAggressiveCut = false) Parameters cubeTree CubeTree geom to be volume-removed sweptable IGetSweptable swaptable beginMat Mat4d previous transformation matrix in sequence endMat Mat4d current transformation matrix in sequence preferredCubeWidth double preferred cube width for the operation, defaults to cubeTree's resolution if 0 fractionTolerance double fraction tolerance for the sweptable, defaults to preferredCubeWidth * 1e-4 if 0 enableBuildingContactContours bool enable building contact contours isAggressiveCut bool whether to use aggressive cutting mode Returns UnmanagedSubstraction Removal" + "summary": "Class SweptableUtil Namespace Hi.Machining Assembly HiCbtr.dll Util for Sweptable. public static class SweptableUtil Inheritance object SweptableUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods AddBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool) Add volume by sweeping volume — the boolean-union dual of RemoveBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool). Deposits the swept solid into the geometry (additive manufacturing: weld / cladding / FDM bead), rather than removing it. public static UnmanagedAddition AddBySweepingVolume(this CubeTree cubeTree, IGetSweptable sweptable, Mat4d beginMat, Mat4d endMat, double preferredCubeWidth = 0, double fractionTolerance = 0, bool enableBuildingContactContours = false, bool isAggressiveAdd = false) Parameters cubeTree CubeTree geom to be volume-added sweptable IGetSweptable swaptable beginMat Mat4d previous transformation matrix in sequence endMat Mat4d current transformation matrix in sequence preferredCubeWidth double preferred cube width for the operation, defaults to cubeTree's resolution if 0 fractionTolerance double fraction tolerance for the sweptable, defaults to preferredCubeWidth * 1e-4 if 0 enableBuildingContactContours bool enable building contours of the newly created surface isAggressiveAdd bool whether to use aggressive adding mode Returns UnmanagedAddition Addition RemoveBySweepingVolume(CubeTree, IGetSweptable, Mat4d, Mat4d, double, double, bool, bool) Remove volume by sweeping volume. public static UnmanagedSubstraction RemoveBySweepingVolume(this CubeTree cubeTree, IGetSweptable sweptable, Mat4d beginMat, Mat4d endMat, double preferredCubeWidth = 0, double fractionTolerance = 0, bool enableBuildingContactContours = false, bool isAggressiveCut = false) Parameters cubeTree CubeTree geom to be volume-removed sweptable IGetSweptable swaptable beginMat Mat4d previous transformation matrix in sequence endMat Mat4d current transformation matrix in sequence preferredCubeWidth double preferred cube width for the operation, defaults to cubeTree's resolution if 0 fractionTolerance double fraction tolerance for the sweptable, defaults to preferredCubeWidth * 1e-4 if 0 enableBuildingContactContours bool enable building contact contours isAggressiveCut bool whether to use aggressive cutting mode Returns UnmanagedSubstraction Removal" }, "api/Hi.Machining.ToolNotFoundException.html": { "href": "api/Hi.Machining.ToolNotFoundException.html", @@ -1944,6 +1994,21 @@ "title": "Namespace Hi.Machining | HiAPI-C# 2025", "summary": "Namespace Hi.Machining Classes FreeformRemover Represents a freeform cutting tool that can be used in machining operations. This cutter type supports complex geometries for both the noble (upper) part and the shaper (cutting) part. MachiningToolHouse Tool House. MachiningVolumeRemovalProc Handles the machining volume removal process and related operations. MachiningVolumeRemovalProc.StepMotionSnapshot Represents a snapshot of the machining motion state. MatInterpolationKit Provides functionality for interpolating between two transformation matrices. MatRelationUtil Utility methods for determining relationships between matrices. Sweptable Sweptable geometry. SweptableUtil Util for Sweptable. ToolNotFoundException Exception thrown when a tool with the specified ID is not found. Interfaces ICutter Interface of cutter. ICutterAnchorable IGetAnchor of cutter. IGetSweptable Interface of Get Sweptable. IMachiningTool Interface for machining tools that combine a holder and a cutter. IVolumeRemover Only inherit from IGetInitStickConvex and IGetSweptable. Enums MatRelation Defines the relationship between two matrices." }, + "api/Hi.MachiningProcs.AllowNoActiveSessionAttribute.html": { + "href": "api/Hi.MachiningProcs.AllowNoActiveSessionAttribute.html", + "title": "Class AllowNoActiveSessionAttribute | HiAPI-C# 2025", + "summary": "Class AllowNoActiveSessionAttribute Namespace Hi.MachiningProcs Assembly HiNc.dll Marks a session-scoped controller action as callable without an active session, exempting it from RequireActiveSessionAttribute. Use on the session lifecycle entry points (BeginSession / EndSession), which by definition run when no session exists yet. [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public sealed class AllowNoActiveSessionAttribute : Attribute Inheritance object Attribute AllowNoActiveSessionAttribute Inherited Members Attribute.Equals(object) Attribute.GetCustomAttribute(Assembly, Type) Attribute.GetCustomAttribute(Assembly, Type, bool) Attribute.GetCustomAttribute(MemberInfo, Type) Attribute.GetCustomAttribute(MemberInfo, Type, bool) Attribute.GetCustomAttribute(Module, Type) Attribute.GetCustomAttribute(Module, Type, bool) Attribute.GetCustomAttribute(ParameterInfo, Type) Attribute.GetCustomAttribute(ParameterInfo, Type, bool) Attribute.GetCustomAttributes(Assembly) Attribute.GetCustomAttributes(Assembly, bool) Attribute.GetCustomAttributes(Assembly, Type) Attribute.GetCustomAttributes(Assembly, Type, bool) Attribute.GetCustomAttributes(MemberInfo) Attribute.GetCustomAttributes(MemberInfo, bool) Attribute.GetCustomAttributes(MemberInfo, Type) Attribute.GetCustomAttributes(MemberInfo, Type, bool) Attribute.GetCustomAttributes(Module) Attribute.GetCustomAttributes(Module, bool) Attribute.GetCustomAttributes(Module, Type) Attribute.GetCustomAttributes(Module, Type, bool) Attribute.GetCustomAttributes(ParameterInfo) Attribute.GetCustomAttributes(ParameterInfo, bool) Attribute.GetCustomAttributes(ParameterInfo, Type) Attribute.GetCustomAttributes(ParameterInfo, Type, bool) Attribute.GetHashCode() Attribute.IsDefaultAttribute() Attribute.IsDefined(Assembly, Type) Attribute.IsDefined(Assembly, Type, bool) Attribute.IsDefined(MemberInfo, Type) Attribute.IsDefined(MemberInfo, Type, bool) Attribute.IsDefined(Module, Type) Attribute.IsDefined(Module, Type, bool) Attribute.IsDefined(ParameterInfo, Type) Attribute.IsDefined(ParameterInfo, Type, bool) Attribute.Match(object) Attribute.TypeId object.Equals(object, object) 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)" + }, + "api/Hi.MachiningProcs.AllowNoLoadedProjectAttribute.html": { + "href": "api/Hi.MachiningProcs.AllowNoLoadedProjectAttribute.html", + "title": "Class AllowNoLoadedProjectAttribute | HiAPI-C# 2025", + "summary": "Class AllowNoLoadedProjectAttribute Namespace Hi.MachiningProcs Assembly HiNc.dll Marks a project-level controller action as callable without a loaded project, exempting it from RequireLoadedProjectAttribute. Use on the endpoints that create or load a project (which by definition run when no project is open yet). [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] public sealed class AllowNoLoadedProjectAttribute : Attribute Inheritance object Attribute AllowNoLoadedProjectAttribute Inherited Members Attribute.Equals(object) Attribute.GetCustomAttribute(Assembly, Type) Attribute.GetCustomAttribute(Assembly, Type, bool) Attribute.GetCustomAttribute(MemberInfo, Type) Attribute.GetCustomAttribute(MemberInfo, Type, bool) Attribute.GetCustomAttribute(Module, Type) Attribute.GetCustomAttribute(Module, Type, bool) Attribute.GetCustomAttribute(ParameterInfo, Type) Attribute.GetCustomAttribute(ParameterInfo, Type, bool) Attribute.GetCustomAttributes(Assembly) Attribute.GetCustomAttributes(Assembly, bool) Attribute.GetCustomAttributes(Assembly, Type) Attribute.GetCustomAttributes(Assembly, Type, bool) Attribute.GetCustomAttributes(MemberInfo) Attribute.GetCustomAttributes(MemberInfo, bool) Attribute.GetCustomAttributes(MemberInfo, Type) Attribute.GetCustomAttributes(MemberInfo, Type, bool) Attribute.GetCustomAttributes(Module) Attribute.GetCustomAttributes(Module, bool) Attribute.GetCustomAttributes(Module, Type) Attribute.GetCustomAttributes(Module, Type, bool) Attribute.GetCustomAttributes(ParameterInfo) Attribute.GetCustomAttributes(ParameterInfo, bool) Attribute.GetCustomAttributes(ParameterInfo, Type) Attribute.GetCustomAttributes(ParameterInfo, Type, bool) Attribute.GetHashCode() Attribute.IsDefaultAttribute() Attribute.IsDefined(Assembly, Type) Attribute.IsDefined(Assembly, Type, bool) Attribute.IsDefined(MemberInfo, Type) Attribute.IsDefined(MemberInfo, Type, bool) Attribute.IsDefined(Module, Type) Attribute.IsDefined(Module, Type, bool) Attribute.IsDefined(ParameterInfo, Type) Attribute.IsDefined(ParameterInfo, Type, bool) Attribute.Match(object) Attribute.TypeId object.Equals(object, object) 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)" + }, + "api/Hi.MachiningProcs.ApiActionResult.html": { + "href": "api/Hi.MachiningProcs.ApiActionResult.html", + "title": "Class ApiActionResult | HiAPI-C# 2025", + "summary": "Class ApiActionResult Namespace Hi.MachiningProcs Assembly HiNc.dll The shared outcome envelope for a web-API action: whether it succeeded and the messages it reported, in order. Returned by the project-level surface (LocalProjectServiceController) and, on the no-active-session boundary, by the session-scoped surface (SessionShellController via RequireActiveSessionAttribute). A REST / AI caller therefore reads the progress / success / error notifications inline in the HTTP response instead of only out-of-band via the SignalR sinks, and can branch on Success without parsing severities. public record ApiActionResult : IEquatable Inheritance object ApiActionResult 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 ApiActionResult(bool, IReadOnlyList) The shared outcome envelope for a web-API action: whether it succeeded and the messages it reported, in order. Returned by the project-level surface (LocalProjectServiceController) and, on the no-active-session boundary, by the session-scoped surface (SessionShellController via RequireActiveSessionAttribute). A REST / AI caller therefore reads the progress / success / error notifications inline in the HTTP response instead of only out-of-band via the SignalR sinks, and can branch on Success without parsing severities. public ApiActionResult(bool Success, IReadOnlyList Messages) Parameters Success bool False when any reported message is an error; true otherwise. Messages IReadOnlyList The messages reported during the call, in arrival order. Properties Messages The messages reported during the call, in arrival order. public IReadOnlyList Messages { get; init; } Property Value IReadOnlyList Success False when any reported message is an error; true otherwise. public bool Success { get; init; } Property Value bool Methods FromCollector(MessageCollector, bool?) Builds a result from a per-call MessageCollector. Success is inferred as “no error-severity message was reported” unless success overrides it. public static ApiActionResult FromCollector(MessageCollector collector, bool? success = null) Parameters collector MessageCollector The per-call sink whose messages to flatten. success bool? Explicit success flag, or null to infer from the messages. Returns ApiActionResult The outcome envelope. NoActiveSession() The canonical “no active session” result: a single configuration error telling the caller to start a session first. Returned (with HTTP 409) by RequireActiveSessionAttribute when a session-scoped endpoint is invoked outside a session. public static ApiActionResult NoActiveSession() Returns ApiActionResult An unsuccessful envelope carrying the guidance message. NoProjectLoaded() The canonical “no project loaded” result: a single configuration error telling the caller to create or load a project first. Returned (with HTTP 409) by RequireLoadedProjectAttribute when a project-level endpoint is invoked before any project is open. public static ApiActionResult NoProjectLoaded() Returns ApiActionResult An unsuccessful envelope carrying the guidance message." + }, "api/Hi.MachiningProcs.ConfigStepFunc.html": { "href": "api/Hi.MachiningProcs.ConfigStepFunc.html", "title": "Delegate ConfigStepFunc | HiAPI-C# 2025", @@ -1967,7 +2032,12 @@ "api/Hi.MachiningProcs.LocalProjectService.html": { "href": "api/Hi.MachiningProcs.LocalProjectService.html", "title": "Class LocalProjectService | HiAPI-C# 2025", - "summary": "Class LocalProjectService Namespace Hi.MachiningProcs Assembly HiNc.dll Root(Local) project service. Apply absolute file path. public class LocalProjectService : IProjectService, IMachiningProjectGetter, IMachiningService, IGetMachiningEquipment, IDisposable Inheritance object LocalProjectService Implements IProjectService IMachiningProjectGetter IMachiningService IGetMachiningEquipment 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks LocalProjectService handles the runtime data and cache generally not requires configuration IO. Compare to MachiningProject, LocalProjectService also handles events that does not reset on the MachiningProject been reloaded. Constructors LocalProjectService(UserService, ILogger) Initializes a new instance. public LocalProjectService(UserService userService, ILogger logger) Parameters userService UserService The application service. logger ILogger The logger instance. LocalProjectService(ILogger) Ctor. public LocalProjectService(ILogger logger = null) Parameters logger ILogger Optional logger instance. Properties ActiveNcRunner Gets the active NC runner based on EnableSoftNcRunner. public IControlRunner ActiveNcRunner { get; } Property Value IControlRunner BoundSelectorHost Gets the bound selector host for managing selection boundaries. public BoundSelectorHost BoundSelectorHost { get; } Property Value BoundSelectorHost ClStrip Gets the cutter location strip containing the machining steps. public ClStrip ClStrip { get; } Property Value ClStrip DictionaryColorGuide Gets the color guide for dictionary-based coloring. public DictionaryColorGuide DictionaryColorGuide { get; } Property Value DictionaryColorGuide EnableCollisionDetection Gets or sets whether collision detection is enabled. When set to true, initializes collision detection mechanism. public bool EnableCollisionDetection { get; set; } Property Value bool EnablePauseOnFailure Gets or sets whether to pause execution on failure. public bool EnablePauseOnFailure { get; set; } Property Value bool EnableSoftNcRunner Workaround flag to switch between SoftNcRunner and HardNcRunner. When true and SoftNcRunner is available, uses SoftNcRunner. Will be removed when HardNcRunner is fully replaced. public bool EnableSoftNcRunner { get; set; } Property Value bool EnableStrokeLimitCheck Gets or sets whether stroke limit checking is enabled. public bool EnableStrokeLimitCheck { get; set; } Property Value bool Fixture Gets or sets the fixture. public Fixture Fixture { get; set; } Property Value Fixture Global global variable for SessionShell. Not save on XML. public Dictionary Global { get; set; } Property Value Dictionary InspectingKey Gets or sets the current inspecting key for visualization. When set, updates the inspecting quantity function. public string InspectingKey { get; set; } Property Value string InspectingQuantityFunc Gets the function that retrieves the quantity value for the current inspecting key. public Func InspectingQuantityFunc { get; } Property Value Func Logger Gets the logger instance for this service. public ILogger Logger { get; } Property Value ILogger MachiningActRunner Gets the machining act runner responsible for executing machining operations. public MachiningActRunner MachiningActRunner { get; } Property Value MachiningActRunner MachiningChain Gets or sets the machining chain. public IMachiningChain MachiningChain { get; set; } Property Value IMachiningChain MachiningChainFile Gets or sets the file path of the solid machining chain. This is used for XML serialization and file management. public string MachiningChainFile { get; set; } Property Value string MachiningEquipment Gets or sets the machining equipment used for milling. Updates related components when changed. public MachiningEquipment MachiningEquipment { get; set; } Property Value MachiningEquipment MachiningProject Gets or sets the machining project instance. public MachiningProject MachiningProject { get; set; } Property Value MachiningProject MachiningProjectPath public string MachiningProjectPath { get; set; } Property Value string MachiningSession Gets the current machining session. public MachiningSession MachiningSession { get; set; } Property Value MachiningSession MachiningTool Gets or sets the machining tool. public IMachiningTool MachiningTool { get; set; } Property Value IMachiningTool MachiningToolHouse Gets or sets the machining tool house containing tool configurations. public MachiningToolHouse MachiningToolHouse { get; set; } Property Value MachiningToolHouse MachiningToolHouseFile Gets or sets the file path to the milling tool house configuration. public string MachiningToolHouseFile { get; set; } Property Value string MillingStepLuggageReader Gets the reader for accessing milling step luggage data. public ParallelBulkReader MillingStepLuggageReader { get; } Property Value ParallelBulkReader NcOptProc Gets the NC optimization processor for optimizing NC programs. public NcOptProc NcOptProc { get; } Property Value NcOptProc NcRunner Gets the legacy NC runner. public HardNcRunner NcRunner { get; } Property Value HardNcRunner PacePlayer Gets the pace player for controlling execution pace of milling operations. public PacePlayer PacePlayer { get; } Property Value PacePlayer ProjectDirectory Gets the directory containing the machining project. public string ProjectDirectory { get; } Property Value string SessionProgress Gets the message host for displaying messages, warnings, and errors. public SessionProgress SessionProgress { get; } Property Value SessionProgress SessionShell Gets the shell API for interacting with this machining process. public SessionShell SessionShell { get; } Property Value SessionShell StepPropertyAccessDictionary Gets the dictionary mapping property keys to their access methods. public ConcurrentDictionary> StepPropertyAccessDictionary { get; } Property Value ConcurrentDictionary> TimeMapping Gets or sets the time mapping for synchronizing different time-based data streams. public TimeMapping TimeMapping { get; set; } Property Value TimeMapping UserService Gets the application service instance. public UserService UserService { get; } Property Value UserService Workpiece Gets or sets the workpiece to be machined. Ensures proper initialization of workpiece properties. public Workpiece Workpiece { get; set; } Property Value Workpiece WorkpieceService Gets the workpiece runtime service. public WorkpieceService WorkpieceService { get; } Property Value WorkpieceService Methods Act(IAct, IGetSentence, CancellationToken?) Executes an act and collects all results. public void Act(IAct act, IGetSentence sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct The act to execute. sourceCommand IGetSentence The source command that triggered the act. cancellationToken CancellationToken? Cancellation token to cancel the operation. BeginSession() Initiate a simulation session. Clear the state from previous session (if existed). public void BeginSession() CloseProject() Closes the current project. public void CloseProject() Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool EndSession() Ends the current machining session and releases associated resources. public void EndSession() GetInspectingKeyPresentName(StringLocalizer) Gets the localized presentation name for the current inspecting key. public string GetInspectingKeyPresentName(StringLocalizer stringLocalizer) Parameters stringLocalizer StringLocalizer The string localizer to use for localization Returns string The localized presentation name GetLocalProjectService() Get Local Project Service as base-service. public LocalProjectService GetLocalProjectService() Returns LocalProjectService Local Project Service GetMachiningProject() Gets the MachiningProject instance. public MachiningProject GetMachiningProject() Returns MachiningProject The MachiningProject instance. GetMillingEquipment() Get MachiningEquipment. public MachiningEquipment GetMillingEquipment() Returns MachiningEquipment MachiningEquipment GetSessionShell() Returns the session shell that exposes the runtime surface of the active machining session. public ISessionShell GetSessionShell() Returns ISessionShell LoadProject(string) Loads a project by file path relative to the admin directory. public void LoadProject(string projectPath) Parameters projectPath string The absolute file path NewProject(string) Creates a new project by file path. public void NewProject(string projectPath) Parameters projectPath string The absolute file path PlayCsvFile(string, string) Plays a CSV file from the specified path. public void PlayCsvFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths. relFilePath string Relative path to the CSV file. PlayNc(string, string) Plays NC commands from raw text with pace control. public void PlayNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string The NC command text to execute fileNameAlternative string Alternative name to associate with the NC program PlayNcFile(string, string) Plays an NC file from the specified path with pace control. public void PlayNcFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths relFilePath string Relative path to the NC file PowerReset() Performs a controller power reset, modelling a power-off / power-on cycle: Every IPowerResettable dependency clears its volatile subset. Persistent dependency state (controller parameters, Fanuc #500-#999, etc.) is left intact. The active MachiningSession's NcRunnerSessionState is reset so the per-layer SyntaxPiece dataflow — including Vars.Volatile, modal carries, and the init seed — is dropped. The next RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) call re-initialises everything from scratch. Without the second step, calling PowerReset while a project is loaded would leave volatile commons alive across the supposed power cycle (they live in the SyntaxPiece JSON dataflow rather than in any IPowerResettable dependency). public void PowerReset() ProcAct(IAct, IGetSentence, CancellationToken?) Processes an act and returns the results. public IEnumerable ProcAct(IAct act, IGetSentence sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct The act to process. sourceCommand IGetSentence The source command that triggered the act. cancellationToken CancellationToken? Cancellation token to cancel the operation. Returns IEnumerable Enumerable of results from processing the act. ReTrainMillingPara(SampleFlag, double, string, CancellationToken) Train Milling Parameter. public void ReTrainMillingPara(SampleFlag sampleFlags, double outlierRatio, string dstRelFile, CancellationToken cancellationToken) Parameters sampleFlags SampleFlag outlierRatio double dstRelFile string cancellationToken CancellationToken RefreshDrawing() Refreshes the visual display of the milling course. public void RefreshDrawing() Reg(XFactory) Bootstraps XML-factory registration for the simulation pipeline. Entry points must call this once at startup before any project XML is deserialized. Pass a custom XFactory for test isolation, or null to populate Default. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ReloadProject() Reloads the current project. public void ReloadProject() ResetRuntime() Reset the runtime states including: runtime geometry, collision flags, machine tool position, CL strips, message buffer and etc.. public void ResetRuntime() RunCsvFile(string, string) Runs a CSV file from the specified path. public IEnumerable RunCsvFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths. relFilePath string Relative path to the CSV file. Returns IEnumerable An enumerable of actions to be executed. RunNc(string, string) Runs NC commands from raw text. public IEnumerable RunNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string The NC command text to execute fileNameAlternative string Alternative name to associate with the NC program Returns IEnumerable An enumerable of actions to be executed RunNcFile(string, string) Runs an NC file from the specified path. public IEnumerable RunNcFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths. If the value is null, BaseDirectory substitutes the value. relFilePath string Relative path to the NC file. Returns IEnumerable An enumerable of actions to be executed. RunToLineEnd() Advances the player by one NC/CSV line and pauses. public void RunToLineEnd() SaveAsProject(string) Saves the current project to a specified relative file path. public void SaveAsProject(string projectPath) Parameters projectPath string The absolute file path SaveProject() Save project by project path. public void SaveProject() TrainMillingPara(SampleFlag, bool, double, string, CancellationToken, ICuttingPara) Train Milling Parameter. public void TrainMillingPara(SampleFlag sampleFlags, bool enableFzOnlyDuringDrilling, double outlierRatio, string dstRelFile, CancellationToken cancellationToken, ICuttingPara paraTemplate) Parameters sampleFlags SampleFlag enableFzOnlyDuringDrilling bool outlierRatio double dstRelFile string cancellationToken CancellationToken paraTemplate ICuttingPara UpdateByMachiningChain() Updates components when the machining chain changes. public void UpdateByMachiningChain() UpdateByMachiningEquipment() Call on MachiningEquipment Or MachiningChainChanged. i.e. Update By MachiningEquipment Or MachiningChain. The function is called on MachiningEquipment and its delegate property changed. If the changing is raised outer from THIS service, this updating function should be manual called. public void UpdateByMachiningEquipment() UpdateIdealMillingToolOffsetTableByToolHouse() Updates the ideal milling tool offset table based on the current tool house configuration. public void UpdateIdealMillingToolOffsetTableByToolHouse() WriteShotFile(TimeSpan, string) Writes time-based shot data to a file with the specified sampling period. public void WriteShotFile(TimeSpan samplingPeriod, string relFileTemplate = \"Output/[NcName].shot.csv\") Parameters samplingPeriod TimeSpan The time period between samples relFileTemplate string Template for the output file path, can include [NcName] placeholder WriteStepFile(string) Writes step-based data to a file. public void WriteStepFile(string relFileTemplate = \"Output/[NcName].step.csv\") Parameters relFileTemplate string Template for the output file path, can include [NcName] placeholder Events MachiningProjectChanged Event raised when the machining project changes. public event LocalProjectService.MachiningProjectChangedDelegate MachiningProjectChanged Event Type LocalProjectService.MachiningProjectChangedDelegate MachiningStepBuilt event to configure steps. The first parameter is the previous step; the second parameter is the current step. The previous step is null if no previous step exists. public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate OnNcFileRan Event triggered after an NC file is executed. public event Action OnNcFileRan Event Type Action OnSourcedActEntry App-lifetime event triggered for each SourcedActEntry produced during NC/CSV execution. public event Action OnSourcedActEntry Event Type Action OnSyntaxPieceRan Raised after each SyntaxPiece has been run during NC execution (app lifetime). public event Action OnSyntaxPieceRan Event Type Action OnUpdatedInspectingQuantityFunc Event triggered when the inspecting quantity function is updated. public event Action OnUpdatedInspectingQuantityFunc Event Type Action WorkpieceChanged Event that is raised when the workpiece is changed. public event Action> WorkpieceChanged Event Type Action> Remarks This event is triggered whenever the workpiece property is modified. Subscribers can use this event to respond to changes in the workpiece configuration, such as updating visualizations or recalculating machining parameters. The event provides both the previous and new workpiece values through a SeqPair." + "summary": "Class LocalProjectService Namespace Hi.MachiningProcs Assembly HiNc.dll Root(Local) project service. Apply absolute file path. public class LocalProjectService : IProjectService, IMachiningProjectGetter, IMachiningService, IGetMachiningEquipment, IStepPropertyAccessHost, IDisposable Inheritance object LocalProjectService Implements IProjectService IMachiningProjectGetter IMachiningService IGetMachiningEquipment IStepPropertyAccessHost 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks LocalProjectService handles the runtime data and cache generally not requires configuration IO. Compare to MachiningProject, LocalProjectService also handles events that does not reset on the MachiningProject been reloaded. Constructors LocalProjectService(ILogger) Ctor. public LocalProjectService(ILogger logger = null) Parameters logger ILogger Optional logger instance. Properties ActiveNcRunner Gets the active NC runner based on EnableSoftNcRunner. public INcRunner ActiveNcRunner { get; } Property Value INcRunner BaseDirectory Gets the project base directory (relative-path root). public string BaseDirectory { get; } Property Value string BoundSelectorHost Gets the bound selector host for managing selection boundaries. public BoundSelectorHost BoundSelectorHost { get; } Property Value BoundSelectorHost ClRunner Gets the NX-CL (CLSF) runner of the project (NxClRunner); null when there is no project. public INcRunner ClRunner { get; } Property Value INcRunner ClStrip Gets the cutter location strip containing the machining steps. public ClStrip ClStrip { get; } Property Value ClStrip CsvRunner Gets the CSV runner — the CSV suit's pipeline (GeneralCsvRunner); null when there is no project. public INcRunner CsvRunner { get; } Property Value INcRunner DictionaryColorGuide Gets the color guide for dictionary-based coloring. public DictionaryColorGuide DictionaryColorGuide { get; } Property Value DictionaryColorGuide EnablePauseOnFailure Gets or sets whether to pause execution on failure. public bool EnablePauseOnFailure { get; set; } Property Value bool EnableSoftNcRunner Switches between SoftNcRunner and the legacy HardNcRunner. Default true (2026-07-17): SoftNcRunner is the flagship NC pipeline; set false to fall back to HardNcRunner for the features that still depend on it (e.g. Hi.NcOpt.NcOptProc optimization reads NcLines). Will be removed when HardNcRunner is fully replaced. public bool EnableSoftNcRunner { get; set; } Property Value bool EnableStrokeLimitCheck Gets or sets whether stroke limit checking is enabled. public bool EnableStrokeLimitCheck { get; set; } Property Value bool Fixture Gets or sets the fixture. public Fixture Fixture { get; set; } Property Value Fixture Global global variable for SessionShell. Not save on XML. public Dictionary Global { get; set; } Property Value Dictionary InspectingKey Gets or sets the current inspecting key for visualization. When set, updates the inspecting quantity function. public string InspectingKey { get; set; } Property Value string InspectingQuantityFunc Gets the function that retrieves the quantity value for the current inspecting key. public Func InspectingQuantityFunc { get; } Property Value Func IsCollisionDetectionEnabled Gets whether collision detection is currently enabled. public bool IsCollisionDetectionEnabled { get; } Property Value bool LastMillingParaTrainResult Snapshot of the most recent TrainMillingPara(SampleFlag, bool, double, string, CancellationToken, ICuttingPara, IProgress) / ReTrainMillingPara(SampleFlag, double, string, CancellationToken, IProgress) outcome — sampleFlags, correlation R, filtered sample count, output file and the built parameter's XML — so a caller (e.g. the webservice) can read the training result without re-opening the output .mp file. Service lifetime, last-wins; null until the first training call completes. Deliberately not cleared by ResetRuntime(IProgress) so the result stays readable after a post-run reset. public MillingParaTrainResult LastMillingParaTrainResult { get; } Property Value MillingParaTrainResult Logger Gets the logger instance for this service. public ILogger Logger { get; } Property Value ILogger MachiningActRunner Gets the machining act runner responsible for executing machining operations. public MachiningActRunner MachiningActRunner { get; } Property Value MachiningActRunner MachiningChain Gets or sets the machining chain. public IMachiningChain MachiningChain { get; set; } Property Value IMachiningChain MachiningChainFile Gets or sets the file path of the solid machining chain. This is used for XML serialization and file management. public string MachiningChainFile { get; set; } Property Value string MachiningEquipment Gets or sets the machining equipment used for milling. Updates related components when changed. public MachiningEquipment MachiningEquipment { get; set; } Property Value MachiningEquipment MachiningMotionResolution Gets or sets the machining motion resolution strategy (project-level; backed by MachiningActRunner). public IMachiningMotionResolution MachiningMotionResolution { get; set; } Property Value IMachiningMotionResolution MachiningProject Gets or sets the machining project. The setter runs the full change lifecycle (teardown of the outgoing project, then Hi.MachiningProcs.LocalProjectService.OnMachiningProjectChanged()), so external assignment — e.g. through MachiningProject or a desktop host — can no longer bypass the hooks and leave the runner config un-wired (equipment-split P2). public MachiningProject MachiningProject { get; set; } Property Value MachiningProject MachiningProjectPath public string MachiningProjectPath { get; set; } Property Value string MachiningResolution_mm Gets the machining resolution (mm) — the act-runner value, or the workpiece bottom resolution when unset. Set via SetMachiningResolution_mm(double, IProgress) (have-both: the caller injects the message host). Seeded from InitResolution when a project is loaded/assigned; an explicit setting then survives ResetRuntime(IProgress) and workpiece swaps. public double MachiningResolution_mm { get; } Property Value double MachiningSession Gets the current machining session. public MachiningSession MachiningSession { get; set; } Property Value MachiningSession MachiningTool Gets or sets the machining tool. public IMachiningTool MachiningTool { get; set; } Property Value IMachiningTool MachiningToolHouse Gets or sets the machining tool house containing tool configurations. public MachiningToolHouse MachiningToolHouse { get; set; } Property Value MachiningToolHouse MachiningToolHouseFile Gets or sets the file path to the milling tool house configuration. public string MachiningToolHouseFile { get; set; } Property Value string MillingStepLuggageReader Gets the reader for accessing milling step luggage data. public ParallelBulkReader MillingStepLuggageReader { get; } Property Value ParallelBulkReader NcDiagnosticProgress NC-pipeline diagnostic sink on the IMessage channel — sibling of StepDiagnosticProgress. Stable for the service lifetime (created in the ctor, only Cleared on reset, never swapped per session). public NcDiagnosticProgress NcDiagnosticProgress { get; } Property Value NcDiagnosticProgress NcManipulationDiagnosticProgress Gets the NC-manipulation diagnostic sink — the second diagnostic home, for operations that rework an already-played NC/CL program (writeback conversion, NC optimization) as opposed to the play-time pipeline diagnostics in NcDiagnosticProgress. Keeping the two scenarios in separate homes lets a play reset clear run diagnostics without discarding manipulation results, and vice versa; each manipulation run clears this home at its start so it always holds the latest run. public NcDiagnosticProgress NcManipulationDiagnosticProgress { get; } Property Value NcDiagnosticProgress NcOptProc Gets the NC optimization processor for optimizing NC programs. public NcOptProc NcOptProc { get; } Property Value NcOptProc NcRunner Gets the legacy NC runner. public HardNcRunner NcRunner { get; } Property Value HardNcRunner PacePlayer Gets the pace player for controlling execution pace of milling operations. public PacePlayer PacePlayer { get; } Property Value PacePlayer ProjectDirectory Gets the directory containing the machining project. public string ProjectDirectory { get; } Property Value string ScriptOptions Project-level Roslyn script options for session script execution. Initialized from DefaultScriptOptions. public ScriptOptions ScriptOptions { get; set; } Property Value ScriptOptions SessionShell Gets the shell API for the active session. Created at BeginSession(), nulled at EndSession(); null outside a session — its lifetime is unified with MachiningSession, so a non-null instance always implies an active session. public SessionShell SessionShell { get; } Property Value SessionShell ShellProgress Session-level routine / lifecycle message sink on the IMessage channel (cache reset, file progress, …). Owned by MachiningSession (truly session-scoped); null outside a session. Use null-safely. public ShellProgress ShellProgress { get; } Property Value ShellProgress SoftNcRunner Facade over the active suit's NC pipeline (MachiningProject.NcRunnerSuit.SoftNcRunner). The getter is null-safe (returns null when there is no project/suit). The setter is the single rewiring entry point: it assigns the suit's runner and re-binds everything that depends on it (proxy hosts, kinematics provider, session script dictionaries, and the per-session NcRunnerSessionState). public SoftNcRunner SoftNcRunner { get; set; } Property Value SoftNcRunner StepDiagnosticProgress Step-anchored message sink on the IMessage channel, threaded through the runner / act-processing chain. public StepDiagnosticProgress StepDiagnosticProgress { get; } Property Value StepDiagnosticProgress StepPropertyAccessDictionary Gets the dictionary mapping property keys to their access methods. public ConcurrentDictionary> StepPropertyAccessDictionary { get; } Property Value ConcurrentDictionary> TimeMapping Gets or sets the time mapping for synchronizing different time-based data streams. public TimeMapping TimeMapping { get; set; } Property Value TimeMapping Workpiece Gets or sets the workpiece to be machined. Ensures proper initialization of workpiece properties. public Workpiece Workpiece { get; set; } Property Value Workpiece WorkpieceService Gets the workpiece runtime service. public WorkpieceService WorkpieceService { get; } Property Value WorkpieceService XyzabcSolver Gets the shared kinematics solver — the third topology entity of the equipment split, owned by the service (runtime side) rather than the persisted project graph. Rebuilt by Hi.MachiningProcs.LocalProjectService.BuildCoordinateConverter() whenever the machine chain changes. public XyzabcSolver XyzabcSolver { get; } Property Value XyzabcSolver Methods Act(IAct, ISentenceCarrier, CancellationToken?) Executes an act and collects all results. public void Act(IAct act, ISentenceCarrier sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct The act to execute. sourceCommand ISentenceCarrier The source command that triggered the act. cancellationToken CancellationToken? Cancellation token to cancel the operation. BeginNcRunner() Prepares the NC runner for a play session by initializing the workpiece meshed geometry (when not already initialized), reporting progress through ShellProgress. public void BeginNcRunner() BeginSession() Initiate a simulation session. Clear the state from previous session (if existed). public void BeginSession() CheckStrokeLimitOnStep() Checks stroke limit at the current MC position. Uses IStrokeLimitConfig when EnableSoftNcRunner is active, otherwise falls back to CheckStrokeLimit(DVec3d, IProgress). public bool CheckStrokeLimitOnStep() Returns bool True if within limits or no limits configured. CloseProject() Closes the current project. public void CloseProject() ConvertClToNcFiles(string, IProgress) Converts the CLSF play of the current session into Fanuc NC files (writeback synthesis — MSYS tilt becomes G68.2, RTCP becomes G43.4). Play a CL file on an XYZABC machine chain first, then convert; see ConvertClToNcFiles(string, string, IProgress). public IReadOnlyList ConvertClToNcFiles(string relNcFileTemplate = \"Output/[NcName].nc\", IProgress messageProgress = null) Parameters relNcFileTemplate string Output path template; [NcName] is replaced by the source file name. messageProgress IProgress Optional message sink for lifecycle reporting. Returns IReadOnlyList Written NC file paths, relative to the project base directory. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool EnableCollisionDetection(bool, IProgress) Enables or disables collision detection. When enabling, prepares the collidable items; when disabling, resets collision flags. Progress is reported to the injected messageProgress. public void EnableCollisionDetection(bool value, IProgress messageProgress = null) Parameters value bool Whether collision detection should be enabled. messageProgress IProgress Sink-agnostic message host for progress reporting. EndSession() Ends the current machining session and releases associated resources. public void EndSession() FixedPace(double, double) Creates a fixed machining motion resolution with the specified linear (mm) and rotary (deg) resolutions. public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters. rotaryResolution_deg double Rotary resolution in degrees. Returns FixedMachiningMotionResolution GetInspectingKeyPresentName(StringLocalizer) Gets the localized presentation name for the current inspecting key. public string GetInspectingKeyPresentName(StringLocalizer stringLocalizer) Parameters stringLocalizer StringLocalizer The string localizer to use for localization Returns string The localized presentation name GetLocalProjectService() Get Local Project Service as base-service. public LocalProjectService GetLocalProjectService() Returns LocalProjectService Local Project Service GetMachiningEquipment() Get MachiningEquipment. public MachiningEquipment GetMachiningEquipment() Returns MachiningEquipment MachiningEquipment GetMachiningProject() Gets the MachiningProject instance. public MachiningProject GetMachiningProject() Returns MachiningProject The MachiningProject instance. GetMillingEquipment() Source-compatible delegate for callers written against the pre-rename name — the interface's default member is not reachable through a concrete-typed reference, so it is restated here. [Obsolete(\"Renamed to GetMachiningEquipment.\")] public MachiningEquipment GetMillingEquipment() Returns MachiningEquipment The loaded project's equipment, or null when none is loaded. GetSessionShell() Returns the session shell that exposes the runtime surface of the active machining session. public ISessionShell GetSessionShell() Returns ISessionShell LoadProject(string) Loads a project by file path relative to the admin directory. public void LoadProject(string projectPath) Parameters projectPath string The absolute file path NewProject(string) Creates a new project by file path. public void NewProject(string projectPath) Parameters projectPath string The absolute file path PlayBrandNcFile(string, string) Plays a famous-brand NC code file from the specified path with pace control (no kind dispatch — always the brand runner). public void PlayBrandNcFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths relFilePath string Relative path to the NC file PlayClFile(string, string) Plays an NX-CL (CLSF) file from the specified path. public void PlayClFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths. relFilePath string Relative path to the CLSF file. PlayCsvFile(string, string) Plays a CSV file from the specified path. public void PlayCsvFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths. relFilePath string Relative path to the CSV file. PlayNc(string, string) Plays NC commands from raw text with pace control. public void PlayNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string The NC command text to execute fileNameAlternative string Alternative name to associate with the NC program PlayNcFile(string, string, NcKind) Plays an NC program file from the specified path, the runner picked by kind (Auto = by file extension: known CL/CSV extensions map to those runners, anything else plays as brand NC). public void PlayNcFile(string baseDirectory, string relFilePath, NcKind kind = NcKind.Auto) Parameters baseDirectory string Base directory for resolving relative paths. relFilePath string Relative path to the NC program file. kind NcKind Which runner plays the file; Auto detects by extension. PowerReset() Performs a controller power reset, modelling a power-off / power-on cycle: Every IPowerResettable dependency clears its volatile subset. Persistent dependency state (controller parameters, Fanuc #500-#999, etc.) is left intact. The active MachiningSession's NcRunnerSessionState is reset so the per-layer SyntaxPiece dataflow — including Vars.Volatile, modal carries, and the init seed — is dropped. The next RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) call re-initialises everything from scratch. Without the second step, calling PowerReset while a project is loaded would leave volatile commons alive across the supposed power cycle (they live in the SyntaxPiece JSON dataflow rather than in any IPowerResettable dependency). public void PowerReset() ProcAct(IAct, ISentenceCarrier, CancellationToken?) Processes an act and returns the results. public IEnumerable ProcAct(IAct act, ISentenceCarrier sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct The act to process. sourceCommand ISentenceCarrier The source command that triggered the act. cancellationToken CancellationToken? Cancellation token to cancel the operation. Returns IEnumerable Enumerable of results from processing the act. ReTrainMillingPara(SampleFlag, double, string, CancellationToken, IProgress) Train Milling Parameter. public void ReTrainMillingPara(SampleFlag sampleFlags, double outlierRatio, string dstRelFile, CancellationToken cancellationToken, IProgress messageProgress = null) Parameters sampleFlags SampleFlag outlierRatio double dstRelFile string cancellationToken CancellationToken messageProgress IProgress ReadNcRunnerSuit(string) Reads an NcRunnerSuit from relFile (project relative) and makes it the active suit — switching the active parser (NC or CSV) — then re-binds every host hookup (see Hi.MachiningProcs.LocalProjectService.RewireForActiveSuit()). Refused while an NC program is playing: the runner's per-session layers are mid-enumeration and cannot be safely reset (an IProgress error is reported instead). public void ReadNcRunnerSuit(string relFile) Parameters relFile string RefreshDrawing() Refreshes the visual display of the milling course. public void RefreshDrawing() Reg(XFactory) Bootstraps XML-factory registration for the simulation pipeline. Entry points must call this once at startup before any project XML is deserialized. Pass a custom XFactory for test isolation, or null to populate Default. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory RegisterStepVariable(string, string, string, string, Func) Registers a step variable so downstream components (strip charts, CSV exports, scripting) can read it from MachiningStep. Idempotent on key. public void RegisterStepVariable(string key, string name, string unit, string formatString, Func variableFunc = null) Parameters key string Unique key. name string Human-readable name; may equal key. unit string Physical unit name (PhysicsUnit); nullable. formatString string Display format string; nullable. variableFunc Func Optional value extractor; nullable when the value comes from the step's flex dictionary. ReloadProject() Reloads the current project. public void ReloadProject() ResetRuntime(IProgress) Reset the runtime states including: meshed geometry, collision flags, machine tool position, CL strips, message buffer and etc.. MachiningResolution_mm is deliberately left untouched so an explicit setting survives resets; it is seeded from InitResolution only when a project is loaded/assigned. public void ResetRuntime(IProgress messageProgress = null) Parameters messageProgress IProgress RunBrandNcFile(string, string) Runs a famous-brand NC code file from the specified path (no kind dispatch — always the brand runner). public IEnumerable RunBrandNcFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths. If the value is null, BaseDirectory substitutes the value. relFilePath string Relative path to the NC file. Returns IEnumerable An enumerable of actions to be executed. RunClFile(string, string) Runs an NX-CL (CLSF) file from the specified path. public IEnumerable RunClFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths. relFilePath string Relative path to the CLSF file. Returns IEnumerable An enumerable of actions to be executed. RunCsvFile(string, string) Runs a CSV file from the specified path. public IEnumerable RunCsvFile(string baseDirectory, string relFilePath) Parameters baseDirectory string Base directory for resolving relative paths. relFilePath string Relative path to the CSV file. Returns IEnumerable An enumerable of actions to be executed. RunNc(string, string) Runs NC commands from raw text. public IEnumerable RunNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string The NC command text to execute fileNameAlternative string Alternative name to associate with the NC program Returns IEnumerable An enumerable of actions to be executed RunNcFile(string, string, NcKind) Runs an NC program file from the specified path, the runner picked by kind (Auto = by file extension: known CL/CSV extensions map to those runners, anything else runs as brand NC). public IEnumerable RunNcFile(string baseDirectory, string relFilePath, NcKind kind = NcKind.Auto) Parameters baseDirectory string Base directory for resolving relative paths. relFilePath string Relative path to the NC program file. kind NcKind Which runner runs the file; Auto detects by extension. Returns IEnumerable An enumerable of actions to be executed. RunToLineEnd() Advances the player by one NC/CSV line and pauses. public void RunToLineEnd() SaveAsProject(string) Saves the current project to a specified relative file path. public void SaveAsProject(string projectPath) Parameters projectPath string The absolute file path SaveProject() Save project by project path. public void SaveProject() SetMachiningResolution_mm(double, IProgress) Sets the machining resolution (mm). Progress is reported to the injected messageProgress. public void SetMachiningResolution_mm(double value, IProgress messageProgress = null) Parameters value double The machining resolution in millimeters. messageProgress IProgress Sink-agnostic message host for progress reporting. TrainMillingPara(SampleFlag, bool, double, string, CancellationToken, ICuttingPara, IProgress) Train Milling Parameter. public void TrainMillingPara(SampleFlag sampleFlags, bool enableFzOnlyDuringDrilling, double outlierRatio, string dstRelFile, CancellationToken cancellationToken, ICuttingPara paraTemplate, IProgress messageProgress = null) Parameters sampleFlags SampleFlag enableFzOnlyDuringDrilling bool outlierRatio double dstRelFile string cancellationToken CancellationToken paraTemplate ICuttingPara messageProgress IProgress UpdateByMachiningChain() Updates components when the machining chain changes. public void UpdateByMachiningChain() UpdateByMachiningEquipment() Call on MachiningEquipment Or MachiningChainChanged. i.e. Update By MachiningEquipment Or MachiningChain. The function is called on MachiningEquipment and its delegate property changed. If the changing is raised outer from THIS service, this updating function should be manual called. public void UpdateByMachiningEquipment() UpdateIdealMillingToolOffsetTableByToolHouse() Updates the ideal milling tool offset table based on the current tool house configuration. public void UpdateIdealMillingToolOffsetTableByToolHouse() WriteNcRunnerSuit(string) Writes the active NcRunnerSuit to relFile (project relative). Pure file IO — does not update any in-memory pointer. public void WriteNcRunnerSuit(string relFile) Parameters relFile string WriteShotFile(TimeSpan, string, IProgress) Writes time-based shot data to a file with the specified sampling period. public void WriteShotFile(TimeSpan samplingPeriod, string relFileTemplate = \"Output/[NcName].shot.csv\", IProgress messageProgress = null) Parameters samplingPeriod TimeSpan The time period between samples relFileTemplate string Template for the output file path, can include [NcName] placeholder messageProgress IProgress Optional caller-supplied progress sink for start/finish messages. WriteStepFile(string, IProgress) Writes step-based data to a file. public void WriteStepFile(string relFileTemplate = \"Output/[NcName].step.csv\", IProgress messageProgress = null) Parameters relFileTemplate string Template for the output file path, can include [NcName] placeholder messageProgress IProgress Optional caller-supplied progress sink for start/finish messages. Events MachiningProjectChanged Event raised when the machining project changes. public event LocalProjectService.MachiningProjectChangedDelegate MachiningProjectChanged Event Type LocalProjectService.MachiningProjectChangedDelegate MachiningStepBuilt event to configure steps. The first parameter is the previous step; the second parameter is the current step. The previous step is null if no previous step exists. public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate OnNcFileRan Event triggered after an NC file is executed. public event Action OnNcFileRan Event Type Action OnShellMessageAdded App-lifetime bridge for ShellProgress appends. Because ShellProgress is session-scoped (recreated at BeginSession(), null outside a session), a consumer that wants every session's shell messages subscribes here once instead of chasing the swapping instance — BeginSession() re-wires the bridge to the new sink each session, the same way OnSourcedActEntry is bridged. Carries the append index and the message. public event Action OnShellMessageAdded Event Type Action OnShellMessageCleared App-lifetime bridge for ShellProgress clears (see OnShellMessageAdded). public event Action OnShellMessageCleared Event Type Action OnSourcedActEntry App-lifetime event triggered for each SourcedActEntry produced during NC/CSV execution. public event Action OnSourcedActEntry Event Type Action OnSyntaxPieceRan Raised after each SyntaxPiece has been run during NC execution (app lifetime). public event Action OnSyntaxPieceRan Event Type Action OnUpdatedInspectingQuantityFunc Event triggered when the inspecting quantity function is updated. public event Action OnUpdatedInspectingQuantityFunc Event Type Action WorkpieceChanged Event that is raised when the workpiece is changed. public event Action> WorkpieceChanged Event Type Action> Remarks This event is triggered whenever the workpiece property is modified. Subscribers can use this event to respond to changes in the workpiece configuration, such as updating visualizations or recalculating machining parameters. The event provides both the previous and new workpiece values through a SeqPair." + }, + "api/Hi.MachiningProcs.LocalProjectServiceController.html": { + "href": "api/Hi.MachiningProcs.LocalProjectServiceController.html", + "title": "Class LocalProjectServiceController | HiAPI-C# 2025", + "summary": "Class LocalProjectServiceController Namespace Hi.MachiningProcs Assembly HiNc.dll HTTP controller exposing the project-level (session-independent) operations of Hi.MachiningProcs.LocalProjectServiceController.LocalProjectService — the lean API-user surface, parallel to SessionShellController (which mirrors the session-scoped SessionShell). A controller mirrors exactly one body; project-level settings belong here, not bolted onto the session controller. [ApiController] [Route(\"api/[controller]/[action]\")] [ProducesResponseType(typeof(ApiActionResult), 409)] public class LocalProjectServiceController : ControllerBase Inheritance object ControllerBase LocalProjectServiceController Inherited Members ControllerBase.StatusCode(int) ControllerBase.StatusCode(int, object) ControllerBase.Content(string) ControllerBase.Content(string, string) ControllerBase.Content(string, string, Encoding) ControllerBase.Content(string, MediaTypeHeaderValue) ControllerBase.NoContent() ControllerBase.Ok() ControllerBase.Ok(object) ControllerBase.Redirect(string) ControllerBase.RedirectPermanent(string) ControllerBase.RedirectPreserveMethod(string) ControllerBase.RedirectPermanentPreserveMethod(string) ControllerBase.LocalRedirect(string) ControllerBase.LocalRedirectPermanent(string) ControllerBase.LocalRedirectPreserveMethod(string) ControllerBase.LocalRedirectPermanentPreserveMethod(string) ControllerBase.RedirectToAction() ControllerBase.RedirectToAction(string) ControllerBase.RedirectToAction(string, object) ControllerBase.RedirectToAction(string, string) ControllerBase.RedirectToAction(string, string, object) ControllerBase.RedirectToAction(string, string, string) ControllerBase.RedirectToAction(string, string, object, string) ControllerBase.RedirectToActionPreserveMethod(string, string, object, string) ControllerBase.RedirectToActionPermanent(string) ControllerBase.RedirectToActionPermanent(string, object) ControllerBase.RedirectToActionPermanent(string, string) ControllerBase.RedirectToActionPermanent(string, string, string) ControllerBase.RedirectToActionPermanent(string, string, object) ControllerBase.RedirectToActionPermanent(string, string, object, string) ControllerBase.RedirectToActionPermanentPreserveMethod(string, string, object, string) ControllerBase.RedirectToRoute(string) ControllerBase.RedirectToRoute(object) ControllerBase.RedirectToRoute(string, object) ControllerBase.RedirectToRoute(string, string) ControllerBase.RedirectToRoute(string, object, string) ControllerBase.RedirectToRoutePreserveMethod(string, object, string) ControllerBase.RedirectToRoutePermanent(string) ControllerBase.RedirectToRoutePermanent(object) ControllerBase.RedirectToRoutePermanent(string, object) ControllerBase.RedirectToRoutePermanent(string, string) ControllerBase.RedirectToRoutePermanent(string, object, string) ControllerBase.RedirectToRoutePermanentPreserveMethod(string, object, string) ControllerBase.RedirectToPage(string) ControllerBase.RedirectToPage(string, object) ControllerBase.RedirectToPage(string, string) ControllerBase.RedirectToPage(string, string, object) ControllerBase.RedirectToPage(string, string, string) ControllerBase.RedirectToPage(string, string, object, string) ControllerBase.RedirectToPagePermanent(string) ControllerBase.RedirectToPagePermanent(string, object) ControllerBase.RedirectToPagePermanent(string, string) ControllerBase.RedirectToPagePermanent(string, string, string) ControllerBase.RedirectToPagePermanent(string, string, object, string) ControllerBase.RedirectToPagePreserveMethod(string, string, object, string) ControllerBase.RedirectToPagePermanentPreserveMethod(string, string, object, string) ControllerBase.File(byte[], string) ControllerBase.File(byte[], string, bool) ControllerBase.File(byte[], string, string) ControllerBase.File(byte[], string, string, bool) ControllerBase.File(byte[], string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(byte[], string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(byte[], string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(byte[], string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(Stream, string) ControllerBase.File(Stream, string, bool) ControllerBase.File(Stream, string, string) ControllerBase.File(Stream, string, string, bool) ControllerBase.File(Stream, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(Stream, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(Stream, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(Stream, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(string, string) ControllerBase.File(string, string, bool) ControllerBase.File(string, string, string) ControllerBase.File(string, string, string, bool) ControllerBase.File(string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(string, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(string, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.PhysicalFile(string, string) ControllerBase.PhysicalFile(string, string, bool) ControllerBase.PhysicalFile(string, string, string) ControllerBase.PhysicalFile(string, string, string, bool) ControllerBase.PhysicalFile(string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.PhysicalFile(string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.PhysicalFile(string, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.PhysicalFile(string, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.Unauthorized() ControllerBase.Unauthorized(object) ControllerBase.NotFound() ControllerBase.NotFound(object) ControllerBase.BadRequest() ControllerBase.BadRequest(object) ControllerBase.BadRequest(ModelStateDictionary) ControllerBase.UnprocessableEntity() ControllerBase.UnprocessableEntity(object) ControllerBase.UnprocessableEntity(ModelStateDictionary) ControllerBase.Conflict() ControllerBase.Conflict(object) ControllerBase.Conflict(ModelStateDictionary) ControllerBase.Problem(string, string, int?, string, string) ControllerBase.Problem(string, string, int?, string, string, IDictionary) ControllerBase.ValidationProblem(ValidationProblemDetails) ControllerBase.ValidationProblem(ModelStateDictionary) ControllerBase.ValidationProblem() ControllerBase.ValidationProblem(string, string, int?, string, string, ModelStateDictionary) ControllerBase.ValidationProblem(string, string, int?, string, string, ModelStateDictionary, IDictionary) ControllerBase.Created() ControllerBase.Created(string, object) ControllerBase.Created(Uri, object) ControllerBase.CreatedAtAction(string, object) ControllerBase.CreatedAtAction(string, object, object) ControllerBase.CreatedAtAction(string, string, object, object) ControllerBase.CreatedAtRoute(string, object) ControllerBase.CreatedAtRoute(object, object) ControllerBase.CreatedAtRoute(string, object, object) ControllerBase.Accepted() ControllerBase.Accepted(object) ControllerBase.Accepted(Uri) ControllerBase.Accepted(string) ControllerBase.Accepted(string, object) ControllerBase.Accepted(Uri, object) ControllerBase.AcceptedAtAction(string) ControllerBase.AcceptedAtAction(string, string) ControllerBase.AcceptedAtAction(string, object) ControllerBase.AcceptedAtAction(string, string, object) ControllerBase.AcceptedAtAction(string, object, object) ControllerBase.AcceptedAtAction(string, string, object, object) ControllerBase.AcceptedAtRoute(object) ControllerBase.AcceptedAtRoute(string) ControllerBase.AcceptedAtRoute(string, object) ControllerBase.AcceptedAtRoute(object, object) ControllerBase.AcceptedAtRoute(string, object, object) ControllerBase.Challenge() ControllerBase.Challenge(params string[]) ControllerBase.Challenge(AuthenticationProperties) ControllerBase.Challenge(AuthenticationProperties, params string[]) ControllerBase.Forbid() ControllerBase.Forbid(params string[]) ControllerBase.Forbid(AuthenticationProperties) ControllerBase.Forbid(AuthenticationProperties, params string[]) ControllerBase.SignIn(ClaimsPrincipal) ControllerBase.SignIn(ClaimsPrincipal, string) ControllerBase.SignIn(ClaimsPrincipal, AuthenticationProperties) ControllerBase.SignIn(ClaimsPrincipal, AuthenticationProperties, string) ControllerBase.SignOut() ControllerBase.SignOut(AuthenticationProperties) ControllerBase.SignOut(params string[]) ControllerBase.SignOut(AuthenticationProperties, params string[]) ControllerBase.TryUpdateModelAsync(TModel) ControllerBase.TryUpdateModelAsync(TModel, string) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider) ControllerBase.TryUpdateModelAsync(TModel, string, params Expression>[]) ControllerBase.TryUpdateModelAsync(TModel, string, Func) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider, params Expression>[]) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider, Func) ControllerBase.TryUpdateModelAsync(object, Type, string) ControllerBase.TryUpdateModelAsync(object, Type, string, IValueProvider, Func) ControllerBase.TryValidateModel(object) ControllerBase.TryValidateModel(object, string) ControllerBase.HttpContext ControllerBase.Request ControllerBase.Response ControllerBase.RouteData ControllerBase.ModelState ControllerBase.ControllerContext ControllerBase.MetadataProvider ControllerBase.ModelBinderFactory ControllerBase.Url ControllerBase.ObjectValidator ControllerBase.ProblemDetailsFactory ControllerBase.User ControllerBase.Empty 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 This controller also demonstrates the per-request message-return pattern: each mutating action injects a fresh MessageCollector into the have-both project-level function (one taking IProgress messageProgress) and returns the collected IMessage items in its HTTP response. A REST / AI caller therefore sees the progress / success / error notifications inline in the response, rather than only out-of-band via the SignalR broadcast. The shared ApiActionResult envelope is also used by the session-scoped surface: RequireActiveSessionAttribute returns it (with HTTP 409) to answer a “no active session” call, rather than throwing a null-reference 500. Constructors LocalProjectServiceController(LocalProjectService) Initializes a new instance. Hi.MachiningProcs.LocalProjectServiceController.LocalProjectService is a DI singleton. public LocalProjectServiceController(LocalProjectService projectService) Parameters projectService LocalProjectService Methods EnableCollisionDetection(bool) Enables or disables collision detection and returns the messages reported during the call (e.g. the “preparing collision items” progress / done notifications). [HttpPost] public ApiActionResult EnableCollisionDetection(bool value) Parameters value bool Whether collision detection should be enabled. Returns ApiActionResult IsCollisionDetectionEnabled() Gets whether collision detection is currently enabled (project-level read; no session needed). [HttpGet] public bool IsCollisionDetectionEnabled() Returns bool SetMachiningResolution_mm(double) Sets the machining resolution (mm) and returns the messages reported during the call. [HttpPost] public ApiActionResult SetMachiningResolution_mm(double value) Parameters value double The machining resolution in millimeters. Returns ApiActionResult" }, "api/Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html": { "href": "api/Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html", @@ -1977,12 +2047,12 @@ "api/Hi.MachiningProcs.MachiningActRunner.html": { "href": "api/Hi.MachiningProcs.MachiningActRunner.html", "title": "Class MachiningActRunner | HiAPI-C# 2025", - "summary": "Class MachiningActRunner Namespace Hi.MachiningProcs Assembly HiMech.dll Represents a runner for machining actions that manages milling steps, tool paths, and collision detection. public class MachiningActRunner : IDisposable Inheritance object MachiningActRunner Implements 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningActRunner(SessionProgress, Action>, Func, Func, Func, Action) Initializes a new instance. public MachiningActRunner(SessionProgress sessionProgress, Action> stepStorageWriter, Func machiningToolHouseGetter, Func machiningEquipmentGetter, Func workpieceServiceGetter, Action resetMillingStepLuggageDbAction) Parameters sessionProgress SessionProgress The milling message host. stepStorageWriter Action> The action to write milling step luggages to storage. machiningToolHouseGetter Func The getter function for the machining tool house. machiningEquipmentGetter Func The getter function for the machining equipment. workpieceServiceGetter Func The getter function for the workpiece runtime service. resetMillingStepLuggageDbAction Action Action to reset the milling step luggage database. Fields InternalMachiningStepBuilt Internal callback fired when a step is built (same timing as MachiningStepBuilt); used by host services before UI subscribers. public MachiningActRunner.MachiningStepBuiltDelegate InternalMachiningStepBuilt Field Value MachiningActRunner.MachiningStepBuiltDelegate Properties ClStrip Gets the cutter location strip. public ClStrip ClStrip { get; } Property Value ClStrip Config Gets or sets the runner configuration. public MachiningActRunnerConfig Config { get; set; } Property Value MachiningActRunnerConfig EnableMotionDependentMachiningResolution EnableMotionDependentMachiningResolution. It works on feed per cycle and feed per tooth motion resolution. MachiningResolution_mm changed by the LinearResolution_mm. public bool EnableMotionDependentMachiningResolution { get; set; } Property Value bool EnableSweeping Gets whether sweeping is enabled based on the motion resolution type. public bool EnableSweeping { get; } Property Value bool GrpcPostStepAction Gets or sets the action to be performed after each step for GRPC service. This is for internal use only. public static Action GrpcPostStepAction { get; set; } Property Value Action MachiningMotionResolution Gets or sets the machining motion resolution. public IMachiningMotionResolution MachiningMotionResolution { get; set; } Property Value IMachiningMotionResolution MachiningResolution_mm Gets or sets the preferred cube width for steps. public double MachiningResolution_mm { get; set; } Property Value double MachiningToolHouse Gets or sets the machining tool house. public MachiningToolHouse MachiningToolHouse { get; } Property Value MachiningToolHouse MachiningVolumeRemovalProc Gets the machining volume removal processor. public MachiningVolumeRemovalProc MachiningVolumeRemovalProc { get; } Property Value MachiningVolumeRemovalProc SessionProgress Gets or sets the milling message host. public SessionProgress SessionProgress { get; set; } Property Value SessionProgress StateActRunner Gets the state act runner. This property is provided as a member value getter and should not be modified. public StateActRunner StateActRunner { get; } Property Value StateActRunner XyzabcChain Gets the XYZABC kinematic chain if the current machining chain supports it; otherwise null. public IXyzabcChain XyzabcChain { get; } Property Value IXyzabcChain Methods AdjustAptCutterStlResolutionByNcResolutionAndWorkpieceResolution() Adjusts the APT cutter STL resolution based on NC resolution and workpiece resolution. public void AdjustAptCutterStlResolutionByNcResolutionAndWorkpieceResolution() Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToActMcStep(IAct) Expands an act into machine control steps. public IEnumerable ExpandToActMcStep(IAct act) Parameters act IAct The act to expand. Returns IEnumerable A sequence of machine control steps. GetMillingActRunner() Gets the current milling act runner instance. public MachiningActRunner GetMillingActRunner() Returns MachiningActRunner The current milling act runner instance. ProcAct(IAct, MachiningSession, IMachiningService, IGetSentence, CancellationToken) Processes an act with the given parameters. public IEnumerable ProcAct(IAct act, MachiningSession machiningSession, IMachiningService host, IGetSentence sourceCommand, CancellationToken cancellationToken) Parameters act IAct The act to process. machiningSession MachiningSession The milling session. host IMachiningService The milling step host. sourceCommand IGetSentence The source command. cancellationToken CancellationToken The cancellation token. Returns IEnumerable A sequence of processed objects. ResetMillingStepLuggageDb() Resets the milling step luggage database. public void ResetMillingStepLuggageDb() ResetStateAndClStrip() Resets the state and cutter location strip. public void ResetStateAndClStrip() UpdateByMachiningChain() Update By MachiningChain. Internal Use Only. public void UpdateByMachiningChain() UpdateByMachiningEquipment() Update By Hi.MachiningProcs.MachiningActRunner.MachiningEquipment. Internal Use Only. public void UpdateByMachiningEquipment() WaitAll() Waits for all pending operations to complete. public void WaitAll() WarnIfCurrentToolFluteMaterialMissing(MachiningSession, int?) Emit a one-shot session warning if the currently equipped Hi.MachiningProcs.MachiningActRunner.MachiningEquipment.MachiningTool is a MillingCutter without a FluteMaterial. Gated by EnablePhysics; deduped per tool reference via WarnedFluteMaterialMissingTools so each offending tool is mentioned at most once per session. Pass toolId when known (e.g. from an IActTooling) and the warning will name the ID; omit it (the BeginSession path) and the warning falls back to “the currently equipped tool” — the equipped tool may have been set externally and not appear in MachiningToolHouse, so reverse-looking up an ID is unreliable and reference equality is the right unit of dedup anyway. public void WarnIfCurrentToolFluteMaterialMissing(MachiningSession machiningSession, int? toolId = null) Parameters machiningSession MachiningSession toolId int? Events MachiningStepBuilt event to configure steps. The first parameter is the previous step; the second parameter is the current step. The previous step is null if no previous step exists. public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate UiPostStepAction Event raised after each step for UI updates. This is for internal use only. public event Action UiPostStepAction Event Type Action" + "summary": "Class MachiningActRunner Namespace Hi.MachiningProcs Assembly HiMech.dll Represents a runner for machining actions that manages milling steps, tool paths, and collision detection. public class MachiningActRunner : IDisposable Inheritance object MachiningActRunner Implements 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningActRunner(Action, Action>, Func, Func, Func, Action) Initializes a new instance. public MachiningActRunner(Action reportException, Action> stepStorageWriter, Func machiningToolHouseGetter, Func machiningEquipmentGetter, Func workpieceServiceGetter, Action resetMillingStepLuggageDbAction) Parameters reportException Action Error sink for the runner's background infrastructure tasks (bulk writer flush, attachment-memory loose runner) which run outside any single call. Request-scoped progress is passed by method argument, not held here. stepStorageWriter Action> The action to write milling step luggages to storage. machiningToolHouseGetter Func The getter function for the machining tool house. machiningEquipmentGetter Func The getter function for the machining equipment. workpieceServiceGetter Func The getter function for the workpiece runtime service. resetMillingStepLuggageDbAction Action Action to reset the milling step luggage database. Fields InternalMachiningStepBuilt Internal callback fired when a step is built (same timing as MachiningStepBuilt); used by host services before UI subscribers. public MachiningActRunner.MachiningStepBuiltDelegate InternalMachiningStepBuilt Field Value MachiningActRunner.MachiningStepBuiltDelegate Properties ClStrip Gets the cutter location strip. public ClStrip ClStrip { get; } Property Value ClStrip Config Gets or sets the runner configuration. public MachiningActRunnerConfig Config { get; set; } Property Value MachiningActRunnerConfig EnableMotionDependentMachiningResolution EnableMotionDependentMachiningResolution. It works on feed per cycle and feed per tooth motion resolution. MachiningResolution_mm changed by the LinearResolution_mm. public bool EnableMotionDependentMachiningResolution { get; set; } Property Value bool EnableSweeping Gets whether sweeping is enabled based on the motion resolution type. public bool EnableSweeping { get; } Property Value bool GrpcPostStepAction Gets or sets the action to be performed after each step for GRPC service. This is for internal use only. public static Action GrpcPostStepAction { get; set; } Property Value Action MachiningMotionResolution Gets or sets the machining motion resolution. public IMachiningMotionResolution MachiningMotionResolution { get; set; } Property Value IMachiningMotionResolution MachiningResolution_mm Gets or sets the preferred cube width for steps. public double MachiningResolution_mm { get; set; } Property Value double MachiningToolHouse Gets or sets the machining tool house. public MachiningToolHouse MachiningToolHouse { get; } Property Value MachiningToolHouse MachiningVolumeRemovalProc Gets the machining volume removal processor. public MachiningVolumeRemovalProc MachiningVolumeRemovalProc { get; } Property Value MachiningVolumeRemovalProc ShellThreadStepIndex The motion-step index currently managed on the shell session main thread — the index the next ClStripPos will receive, read straight from StripPosesCount (the strip is the single source of truth). Decoupled from the parallel-physics StepTaskBundle.StepIndex, which tracks a different (emit-thread) progress and may diverge. Use this to anchor a StepDiagnostic to its motion step. public int ShellThreadStepIndex { get; } Property Value int StateActRunner Gets the state act runner. This property is provided as a member value getter and should not be modified. public StateActRunner StateActRunner { get; } Property Value StateActRunner XyzabcChain Gets the XYZABC kinematic chain if the current machining chain supports it; otherwise null. public IXyzabcChain XyzabcChain { get; } Property Value IXyzabcChain Methods AdjustAptCutterStlResolutionByNcResolutionAndWorkpieceResolution() Adjusts the APT cutter STL resolution based on NC resolution and workpiece resolution. public void AdjustAptCutterStlResolutionByNcResolutionAndWorkpieceResolution() Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToActMcStep(IAct, StepDiagnosticProgress) Expands an act into machine control steps. public IEnumerable ExpandToActMcStep(IAct act, StepDiagnosticProgress stepDiagnosticProgress) Parameters act IAct The act to expand. stepDiagnosticProgress StepDiagnosticProgress Progress sink for cutter-location strip / per-step updates. Returns IEnumerable A sequence of machine control steps. GetMillingActRunner() Gets the current milling act runner instance. public MachiningActRunner GetMillingActRunner() Returns MachiningActRunner The current milling act runner instance. ProcAct(IAct, MachiningSession, IMachiningService, ISentenceCarrier, CancellationToken, StepDiagnosticProgress) Processes an act with the given parameters. public IEnumerable ProcAct(IAct act, MachiningSession machiningSession, IMachiningService host, ISentenceCarrier sourceCommand, CancellationToken cancellationToken, StepDiagnosticProgress stepDiagnosticProgress) Parameters act IAct The act to process. machiningSession MachiningSession The milling session. host IMachiningService The milling step host. sourceCommand ISentenceCarrier The source command. cancellationToken CancellationToken The cancellation token. stepDiagnosticProgress StepDiagnosticProgress Progress sink for cutter-location strip / per-step updates. Returns IEnumerable A sequence of processed objects. ResetMillingStepLuggageDb(StepDiagnosticProgress, IProgress) Resets the milling step luggage database. public void ResetMillingStepLuggageDb(StepDiagnosticProgress stepDiagnosticProgress, IProgress messageHost) Parameters stepDiagnosticProgress StepDiagnosticProgress The step-aligned IMessage-channel sink. messageHost IProgress Sink-agnostic IMessage host; injected by the caller, may be null outside a session. ResetStateAndClStrip(StepDiagnosticProgress, IProgress) Resets the state and cutter location strip. public void ResetStateAndClStrip(StepDiagnosticProgress stepDiagnosticProgress, IProgress messageHost) Parameters stepDiagnosticProgress StepDiagnosticProgress The step-aligned IMessage-channel sink. messageHost IProgress Sink-agnostic IMessage host; injected by the caller, may be null outside a session. UpdateByMachiningChain() Update By MachiningChain. Internal Use Only. public void UpdateByMachiningChain() UpdateByMachiningEquipment() Update By Hi.MachiningProcs.MachiningActRunner.MachiningEquipment. Internal Use Only. public void UpdateByMachiningEquipment() WaitAll() Waits for all pending operations to complete. public void WaitAll() WarnIfCurrentToolCutterGeometryUnreasonable(MachiningSession, StepDiagnosticProgress, int?) Emit one-shot session ConfigurationErrors naming the root cause when the currently equipped tool's MillingCutter has an unreasonable upper-beam / shank geometry (see GetUpperBeamGeometryIssues()) — e.g. an ExtendedCylinder beam whose FullLength sits below the flute height. Before this check, such a setting surfaced only as a per-step NullReferenceException cascade inside the thermal physics, with nothing naming the beam. Additionally emits a Cutter-Shank–ThermalModelUnavailable ConfigurationWarning when the shank thermal model cannot be built for a reason no geometry issue names (e.g. no beam configured at all) — this is the once-per-tool announcement of the silent per-step fallback in MillingTemperatureUtil.GetStepTemperature, which is deliberately quiet at the fallback site to avoid per-step message flooding. Gated by EnablePhysics; deduped per tool reference via WarnedCutterGeometryTools, mirroring WarnIfCurrentToolFluteMaterialMissing(MachiningSession, StepDiagnosticProgress, int?) (same two emission points: each IActTooling and BeginSession). public void WarnIfCurrentToolCutterGeometryUnreasonable(MachiningSession machiningSession, StepDiagnosticProgress stepDiagnosticProgress, int? toolId = null) Parameters machiningSession MachiningSession stepDiagnosticProgress StepDiagnosticProgress toolId int? WarnIfCurrentToolFluteCountZero(MachiningSession, StepDiagnosticProgress, int?) Emit a one-shot session warning if the currently equipped Hi.MachiningProcs.MachiningActRunner.MachiningEquipment.MachiningTool is a MillingCutter whose flute count resolves to zero (a null or empty Fluting). A zero flute count silently poisons the physics chain with nothing naming the tool: feed-per-tooth divides by zero, the force side fills Vec3d.NaN for every rotation division and the thermal side returns null. Gated by EnablePhysics; deduped per tool reference via WarnedFluteCountZeroTools, mirroring WarnIfCurrentToolFluteMaterialMissing(MachiningSession, StepDiagnosticProgress, int?) (same two emission points: each IActTooling and BeginSession). public void WarnIfCurrentToolFluteCountZero(MachiningSession machiningSession, StepDiagnosticProgress stepDiagnosticProgress, int? toolId = null) Parameters machiningSession MachiningSession stepDiagnosticProgress StepDiagnosticProgress toolId int? WarnIfCurrentToolFluteMaterialMissing(MachiningSession, StepDiagnosticProgress, int?) Emit a one-shot session warning if the currently equipped Hi.MachiningProcs.MachiningActRunner.MachiningEquipment.MachiningTool is a MillingCutter without a FluteMaterial. Gated by EnablePhysics; deduped per tool reference via WarnedFluteMaterialMissingTools so each offending tool is mentioned at most once per session. Pass toolId when known (e.g. from an IActTooling) and the warning will name the ID; omit it (the BeginSession path) and the warning falls back to “the currently equipped tool” — the equipped tool may have been set externally and not appear in MachiningToolHouse, so reverse-looking up an ID is unreliable and reference equality is the right unit of dedup anyway. public void WarnIfCurrentToolFluteMaterialMissing(MachiningSession machiningSession, StepDiagnosticProgress stepDiagnosticProgress, int? toolId = null) Parameters machiningSession MachiningSession stepDiagnosticProgress StepDiagnosticProgress toolId int? Events MachiningStepBuilt event to configure steps. The first parameter is the previous step; the second parameter is the current step. The previous step is null if no previous step exists. public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate UiPostStepAction Event raised after each step for UI updates. This is for internal use only. public event Action UiPostStepAction Event Type Action" }, "api/Hi.MachiningProcs.MachiningActRunnerConfig.html": { "href": "api/Hi.MachiningProcs.MachiningActRunnerConfig.html", "title": "Class MachiningActRunnerConfig | HiAPI-C# 2025", - "summary": "Class MachiningActRunnerConfig Namespace Hi.MachiningProcs Assembly HiMech.dll Represents the configuration for a milling act runner. Provides settings for physics simulation, evaluation, and temperature control. public class MachiningActRunnerConfig : IMakeXmlSource Inheritance object MachiningActRunnerConfig Implements 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 MachiningActRunnerConfig() Initializes a new instance. public MachiningActRunnerConfig() MachiningActRunnerConfig(XElement, string, IProgress) Initializes a new instance of the MachiningActRunnerConfig class from XML. public MachiningActRunnerConfig(XElement src, string baseDirectory, IProgress progress) Parameters src XElement The source XML element. baseDirectory string The base directory for resolving relative paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. Properties EnableCollisionDetection Gets or sets whether collision detection is enabled. public bool EnableCollisionDetection { get; set; } Property Value bool EnableDeflectionTransformation Gets or sets whether deflection transformation is enabled. Note: This feature is pending testing. public bool EnableDeflectionTransformation { get; set; } Property Value bool EnablePauseOnFailure Enable Pause On Failure Detected. Only take effect if the EnableStrokeLimitCheck or EnableCollisionDetection is enabled. public bool EnablePauseOnFailure { get; set; } Property Value bool EnablePhysics Gets or sets whether milling force evaluation is enabled. public bool EnablePhysics { get; set; } Property Value bool EnableStrokeLimitCheck Gets or sets whether stroke limit checking is enabled. public bool EnableStrokeLimitCheck { get; set; } Property Value bool EnableWearEffect Gets or sets whether to enable coating wear effects. Note: This function is not fully prepared yet. Only affects further wear by the wear coefficient of inner material. public bool EnableWearEffect { get; set; } Property Value bool InitSpindleTemperature_C Gets or sets the initial spindle temperature in Celsius. public double InitSpindleTemperature_C { get; set; } Property Value double InitSpindleTemperature_K Gets or sets the initial spindle temperature in Kelvin. The temperature is initialized when a working session is restarted or a new session is started. public double InitSpindleTemperature_K { get; set; } Property Value double IsIdealOffsetDependentOnToolHouse Gets or sets whether the ideal tool offset is automatically populated from the tool house geometry before simulation. public bool IsIdealOffsetDependentOnToolHouse { get; set; } Property Value bool XName Gets the XML element name for serialization. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class MachiningActRunnerConfig Namespace Hi.MachiningProcs Assembly HiMech.dll Represents the configuration for a milling act runner. Provides settings for physics simulation, evaluation, and temperature control. public class MachiningActRunnerConfig : IMakeXmlSource Inheritance object MachiningActRunnerConfig Implements 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 MachiningActRunnerConfig() Initializes a new instance. public MachiningActRunnerConfig() MachiningActRunnerConfig(XElement, string, IProgress) Initializes a new instance of the MachiningActRunnerConfig class from XML. public MachiningActRunnerConfig(XElement src, string baseDirectory, IProgress progress) Parameters src XElement The source XML element. baseDirectory string The base directory for resolving relative paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. Properties EnableCollisionDetection Gets or sets whether collision detection is enabled. public bool EnableCollisionDetection { get; set; } Property Value bool EnableDeflectionTransformation Gets or sets whether deflection transformation is enabled. Note: This feature is pending testing. public bool EnableDeflectionTransformation { get; set; } Property Value bool EnableNativeMillingPhysics Gets or sets whether the per-step physics runs on the native (core.dll) kernels. Default is true, and in shipping builds the native kernel is the only physics implementation: setting this to false requires the managed reference implementation (the non-shipping HiMech.PhysicsRef assembly, registered at startup by dev/test hosts) and throws without it. Both implementations produce the same results. Runtime-only (not persisted to project XML), in the EnableSoftNcRunner progressive-switch convention. Delegates to the kernel-level switch on EnableNativeMillingPhysics, which is process-global like RotationDivisionNum. public bool EnableNativeMillingPhysics { get; set; } Property Value bool EnablePauseOnFailure Enable Pause On Failure Detected. Only take effect if the EnableStrokeLimitCheck or EnableCollisionDetection is enabled. public bool EnablePauseOnFailure { get; set; } Property Value bool EnablePhysics Gets or sets whether milling force evaluation is enabled. public bool EnablePhysics { get; set; } Property Value bool EnableStrokeLimitCheck Gets or sets whether stroke limit checking is enabled. public bool EnableStrokeLimitCheck { get; set; } Property Value bool EnableWearEffect Gets or sets whether to enable coating wear effects. Note: This function is not fully prepared yet. Only affects further wear by the wear coefficient of inner material. public bool EnableWearEffect { get; set; } Property Value bool InitSpindleTemperature_C Gets or sets the initial spindle temperature in Celsius. public double InitSpindleTemperature_C { get; set; } Property Value double InitSpindleTemperature_K Gets or sets the initial spindle temperature in Kelvin. The temperature is initialized when a working session is restarted or a new session is started. public double InitSpindleTemperature_K { get; set; } Property Value double IsIdealOffsetDependentOnToolHouse Gets or sets whether the ideal tool offset is automatically populated from the tool house geometry before simulation. public bool IsIdealOffsetDependentOnToolHouse { get; set; } Property Value bool XName Gets the XML element name for serialization. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle.html": { "href": "api/Hi.MachiningProcs.MachiningParallelProc.StepTaskBundle.html", @@ -2002,27 +2072,42 @@ "api/Hi.MachiningProcs.MachiningProject.html": { "href": "api/Hi.MachiningProcs.MachiningProject.html", "title": "Class MachiningProject | HiAPI-C# 2025", - "summary": "Class MachiningProject Namespace Hi.MachiningProcs Assembly HiNc.dll Represents a milling project that manages the execution, simulation, and analysis of NC programs. public class MachiningProject : IDisposable, IMakeXmlSource, IMachiningProjectGetter Inheritance object MachiningProject Implements IDisposable IMakeXmlSource IMachiningProjectGetter 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 MachiningProject(string) Initializes a new instance with the specified directory. public MachiningProject(string baseDirectory) Parameters baseDirectory string Base directory for file operations MachiningProject(XElement, string, IProgress) Initializes a new instance from XML data. public MachiningProject(XElement src, string baseDirectory, IProgress progress) Parameters src XElement XML element containing configuration data baseDirectory string Base directory for resolving relative paths progress IProgress Progress reporter for XML deserialization. Properties ApiVersion Gets the API version from the HiNc assembly (where MachiningProject is defined). public static Version ApiVersion { get; } Property Value Version BaseDirectory Gets the base directory where project files are located. public string BaseDirectory { get; } Property Value string DictionaryColorGuide public DictionaryColorGuide DictionaryColorGuide { get; } Property Value DictionaryColorGuide MachiningActRunnerConfig Gets or sets the configuration for the milling act runner. public MachiningActRunnerConfig MachiningActRunnerConfig { get; set; } Property Value MachiningActRunnerConfig MachiningToolHouse Gets or sets the machining tool house containing tool configurations. public MachiningToolHouse MachiningToolHouse { get; set; } Property Value MachiningToolHouse MachiningToolHouseFile Gets or sets the file path to the milling tool house configuration. public string MachiningToolHouseFile { get; set; } Property Value string MillingGuide Gets or sets the milling guide containing visualization and analysis configurations. public MillingGuide MillingGuide { get; set; } Property Value MillingGuide NcEnv Gets or sets the NC environment settings. public HardNcEnv NcEnv { get; set; } Property Value HardNcEnv PlayerCommand Gets the command to execute when playing the machining project. public ISessionCommand PlayerCommand { get; set; } Property Value ISessionCommand SoftNcRunner Gets or sets the configurable NC runner. When set, replaces the legacy HardNcRunner. public SoftNcRunner SoftNcRunner { get; set; } Property Value SoftNcRunner SoftNcRunnerFile Gets or sets the project-relative file path of the SoftNcRunner XML. When non-null, MakeXmlSource(string, string, bool) writes the runner to this side file and embeds a file reference in the project XML; when null the runner is inlined. Mirrors MachiningChainFile. public string SoftNcRunnerFile { get; set; } Property Value string TimeMapping Gets or sets the time mapping for synchronizing different time-based data streams. public TimeMapping TimeMapping { get; set; } Property Value TimeMapping XName Name for XML IO. public static string XName { get; } Property Value string Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool GetMachiningProject() Gets the MachiningProject instance. public MachiningProject GetMachiningProject() Returns MachiningProject The MachiningProject instance. GetMillingEquipment() public MachiningEquipment GetMillingEquipment() Returns MachiningEquipment LoadFile(string, IProgress) Loads a machining project from the specified file path. public static MachiningProject LoadFile(string projectFilePath, IProgress progress) Parameters projectFilePath string Path to the project file to load progress IProgress Progress reporter for XML deserialization. Returns MachiningProject A new machining project instance loaded from the file 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. Reg(XFactory) Registers this type's deserializer (and its legacy aliases) with the given XFactory (or Default when factory is null), and chains Reg(factory) on dependents so the registration graph is observable. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" - }, - "api/Hi.MachiningProcs.MachiningProjectDisplayee.html": { - "href": "api/Hi.MachiningProcs.MachiningProjectDisplayee.html", - "title": "Class MachiningProjectDisplayee | HiAPI-C# 2025", - "summary": "Class MachiningProjectDisplayee Namespace Hi.MachiningProcs Assembly HiNc.dll Represents a displayable wrapper for a machining project. public class MachiningProjectDisplayee : IDisplayee, IExpandToBox3d, IGetAnchor, IGetTopoIndex Inheritance object MachiningProjectDisplayee Implements IDisplayee IExpandToBox3d IGetAnchor IGetTopoIndex 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 MachiningProjectDisplayee(LocalProjectService) Initializes a new instance of the MachiningProjectDisplayee class with default rendering flags. public MachiningProjectDisplayee(LocalProjectService localProjectService) Parameters localProjectService LocalProjectService Properties HeidenhainCoordinateEntryDisplayee Gets the Heidenhain coordinate entry displayee for Heidenhain-based coordinate systems. public HeidenhainCoordinateEntryDisplayee HeidenhainCoordinateEntryDisplayee { get; } Property Value HeidenhainCoordinateEntryDisplayee IsoCoordinateEntryDisplayee Gets the ISO coordinate entry displayee for ISO-based coordinate systems. public IsoCoordinateEntryDisplayee IsoCoordinateEntryDisplayee { get; } Property Value IsoCoordinateEntryDisplayee LocalProjectService Gets or sets the function that provides the machining project. public LocalProjectService LocalProjectService { get; set; } Property Value LocalProjectService MachiningProject Gets the current milling course from the host function. public MachiningProject MachiningProject { get; } Property Value MachiningProject RenderingFlagBitArray Gets or sets the bit array that controls which elements are rendered. public BitArray RenderingFlagBitArray { get; set; } Property Value BitArray Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor" + "summary": "Class MachiningProject Namespace Hi.MachiningProcs Assembly HiNc.dll Represents a milling project that manages the execution, simulation, and analysis of NC programs. public class MachiningProject : IDisposable, IMakeXmlSource, IMachiningProjectGetter Inheritance object MachiningProject Implements IDisposable IMakeXmlSource IMachiningProjectGetter 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 MachiningProject(string) Initializes a new instance with the specified directory. public MachiningProject(string baseDirectory) Parameters baseDirectory string Base directory for file operations MachiningProject(XElement, string, IProgress) Initializes a new instance from XML data. public MachiningProject(XElement src, string baseDirectory, IProgress progress) Parameters src XElement XML element containing configuration data baseDirectory string Base directory for resolving relative paths progress IProgress Progress reporter for XML deserialization. Properties ApiVersion Gets the API version from the HiNc assembly (where MachiningProject is defined). public static Version ApiVersion { get; } Property Value Version BaseDirectory Gets the base directory where project files are located. public string BaseDirectory { get; } Property Value string ClsfRunnerSuit A third runner suit dedicated to the NX-CL (CLSF) pipeline (NxClRunner), held alongside the NC NcRunnerSuit and the CsvRunnerSuit. Backs LocalProjectService.ClRunner. public NcRunnerSuit ClsfRunnerSuit { get; set; } Property Value NcRunnerSuit CsvRunnerSuit A second runner suit dedicated to the CSV pipeline (the flagship GeneralCsvRunner), held alongside the NC NcRunnerSuit. Backs LocalProjectService.CsvRunner; the suit owns the CSV column config (replacing the former flat CsvRunnerConfig project member). public NcRunnerSuit CsvRunnerSuit { get; set; } Property Value NcRunnerSuit DictionaryColorGuide public DictionaryColorGuide DictionaryColorGuide { get; } Property Value DictionaryColorGuide MachiningActRunnerConfig Gets or sets the configuration for the milling act runner. public MachiningActRunnerConfig MachiningActRunnerConfig { get; set; } Property Value MachiningActRunnerConfig MachiningToolHouse Gets or sets the machining tool house containing tool configurations. public MachiningToolHouse MachiningToolHouse { get; set; } Property Value MachiningToolHouse MachiningToolHouseFile Gets or sets the file path to the milling tool house configuration. public string MachiningToolHouseFile { get; set; } Property Value string MillingGuide Gets or sets the milling guide containing visualization and analysis configurations. public MillingGuide MillingGuide { get; set; } Property Value MillingGuide NcEnv Gets or sets the NC environment settings. public HardNcEnv NcEnv { get; set; } Property Value HardNcEnv NcRunnerSuit The active runner suit — the per-machine SoftNcRunner (plus its optional side-file path) bundled with the per-workpiece PerCaseNcDependencyList its proxies resolve against. The suit is the proxies' INcDependencyListHost; swap the whole suit (e.g. via LocalProjectService.ReadNcRunnerSuit) to switch the active parser within a session. The project XML serializes the suit's two members flat for back-compat. public NcRunnerSuit NcRunnerSuit { get; set; } Property Value NcRunnerSuit PlayerCommand Gets the command to execute when playing the machining project. public ISessionCommand PlayerCommand { get; set; } Property Value ISessionCommand TimeMapping Gets or sets the time mapping for synchronizing different time-based data streams. public TimeMapping TimeMapping { get; set; } Property Value TimeMapping XName Name for XML IO. public static string XName { get; } Property Value string Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool GetMachiningEquipment() public MachiningEquipment GetMachiningEquipment() Returns MachiningEquipment GetMachiningProject() Gets the MachiningProject instance. public MachiningProject GetMachiningProject() Returns MachiningProject The MachiningProject instance. GetMillingEquipment() Source-compatible delegate for callers written against the pre-rename name. [Obsolete(\"Renamed to GetMachiningEquipment.\")] public MachiningEquipment GetMillingEquipment() Returns MachiningEquipment The project's equipment. LoadFile(string, IProgress) Loads a machining project from the specified file path. public static MachiningProject LoadFile(string projectFilePath, IProgress progress) Parameters projectFilePath string Path to the project file to load progress IProgress Progress reporter for XML deserialization. Returns MachiningProject A new machining project instance loaded from the file 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. Reg(XFactory) Registers this type's deserializer (and its legacy aliases) with the given XFactory (or Default when factory is null), and chains Reg(factory) on dependents so the registration graph is observable. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.MachiningProcs.MachiningSession.html": { "href": "api/Hi.MachiningProcs.MachiningSession.html", "title": "Class MachiningSession | HiAPI-C# 2025", - "summary": "Class MachiningSession Namespace Hi.MachiningProcs Assembly HiMech.dll Represents a machining session that manages the execution and optimization of machining operations. Provides functionality for controlling the machining process, handling optimization options, and managing session state. Implements IDisposable to clean up SessionWriters on session end. public class MachiningSession : IDisposable Inheritance object MachiningSession Implements 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties CurrentSourceCommand Gets or sets the current source command being processed. public IIndexedFileLine CurrentSourceCommand { get; set; } Property Value IIndexedFileLine FileIndexOnRunCommand File index counter, auto-incremented per RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) call within this session. Legacy use only. Read and incremented by HardNcRunner and CsvRunner. SoftNcRunner no longer touches this field — it allocates file indices through FileIndexCounterDependency, which both the runner and inlined-subprogram syntaxes (SubProgramCallSyntax) share so every loaded file (top-level program plus every M98 / M198 inline, including each L repetition) gets a distinct index. Do not introduce new readers; the field will be removed once the legacy runners retire. public int FileIndexOnRunCommand { get; set; } Property Value int IsNcOptOptionListUpdatedByStep Internal Use Only. public bool IsNcOptOptionListUpdatedByStep { get; set; } Property Value bool NcOptOption Gets or sets the NC optimization options for UI operations. public NcOptOption NcOptOption { get; set; } Property Value NcOptOption NcRunnerSessionState Per-session NC pipeline state shared across RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) calls. Holds lazy-initialized NcDiagnosticProgress and the per-layer LazyLinkedList chain used for cross-file modal continuity. public NcRunnerSessionState NcRunnerSessionState { get; } Property Value NcRunnerSessionState PacePlayee Internal set only. public PacePlayee PacePlayee { get; set; } Property Value PacePlayee PostBlockScripts Per-line scripts injected externally (without modifying NC files). Key: FileLineIndex of the NC block. Value: C# script text to execute after the NC block. Consumed by CsScriptEndSemantic. public Dictionary PostBlockScripts { get; } Property Value Dictionary PreBlockScripts Per-line scripts injected externally (without modifying NC files). Key: FileLineIndex of the NC block. Value: C# script text to execute before the NC block. Consumed by CsScriptBeginSemantic. public Dictionary PreBlockScripts { get; } Property Value Dictionary SessionWriters StreamWriters registered during the session (e.g. by diagnostic output methods). Key: relative output file path. Disposed automatically when the session ends. public Dictionary SessionWriters { get; } Property Value Dictionary StepIndexToNcOptOptionSortedList Gets or sets the mapping of step indices to NC optimization options. For internal use only. Takes effect during internal optimization process. public SortedList StepIndexToNcOptOptionSortedList { get; set; } Property Value SortedList StepTaskBundle Gets or sets the current step task bundle. public MachiningParallelProc.StepTaskBundle StepTaskBundle { get; set; } Property Value MachiningParallelProc.StepTaskBundle WarnedFluteMaterialMissingTools Tools already surfaced via “FluteMaterial not set” warning. Keyed by IMachiningTool reference so the dedup is stable across the two emission points: ProcAct(IAct, MachiningSession, IMachiningService, IGetSentence, CancellationToken) at each IActTooling, and BeginSession for the tool that may already be equipped before the session begins (which has no tool ID to dedup with). Reference equality is more precise than tool ID — the same tool object equipped twice should warn once, regardless of how it was reached. public HashSet WarnedFluteMaterialMissingTools { get; } Property Value HashSet Methods BeginPreserve() Begins a preserve section in the optimization process. public void BeginPreserve() Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() EndPreserve() Ends a preserve section in the optimization process. public void EndPreserve() Preserve() Preserves one line of NC code in the optimization process. public void Preserve() RunMachiningStepBuilt(MachiningStep, MachiningStep) Internal use only. Invokes MachiningStepBuilt. public void RunMachiningStepBuilt(MachiningStep preStep, MachiningStep curStep) Parameters preStep MachiningStep curStep MachiningStep RunMachiningStepSelected(MachiningStep) Internal use only. Invokes MachiningStepSelected. public void RunMachiningStepSelected(MachiningStep machiningStep) Parameters machiningStep MachiningStep RunSourcedActEntry(SourcedActEntry) Internal use only. Invokes SourcedActEntry. public void RunSourcedActEntry(SourcedActEntry entry) Parameters entry SourcedActEntry RunSyntaxPieceRan(SyntaxPiece) Internal use only. Invokes SyntaxPieceRan. public void RunSyntaxPieceRan(SyntaxPiece syntaxPiece) Parameters syntaxPiece SyntaxPiece UpdateNcOptOptionMapIfNeeded(int) Updates the NC optimization option map if needed. Internal use only. public bool UpdateNcOptOptionMapIfNeeded(int stepIndex) Parameters stepIndex int The index of the step to update. Returns bool True if the map was updated; otherwise, false. Events MachiningStepBuilt Event triggered when a machining step is built. public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate MachiningStepSelected Event triggered when a machining step is selected. public event Action MachiningStepSelected Event Type Action OnCurrentLineEnd Event raised when the current line ends. The event buffer is cleared on every line change. public event Action OnCurrentLineEnd Event Type Action SourcedActEntry Event triggered for each SourcedActEntry produced during NC/CSV execution. public event Action SourcedActEntry Event Type Action SyntaxPieceRan Event triggered when a syntax piece has been executed. public event Action SyntaxPieceRan Event Type Action" + "summary": "Class MachiningSession Namespace Hi.MachiningProcs Assembly HiMech.dll Represents a machining session that manages the execution and optimization of machining operations. Provides functionality for controlling the machining process, handling optimization options, and managing session state. Implements IDisposable to clean up SessionWriters on session end. public class MachiningSession : IDisposable Inheritance object MachiningSession Implements 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningSession(IMachiningService) Creates a machining session bound to its hosting IMachiningService. public MachiningSession(IMachiningService host) Parameters host IMachiningService Properties CurrentSourceCommand Gets or sets the current source command being processed. public IIndexedFileLine CurrentSourceCommand { get; set; } Property Value IIndexedFileLine FileIndexOnRunCommand File index counter, auto-incremented per RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) call within this session. Legacy use only. Read and incremented by HardNcRunner and CsvRunner. SoftNcRunner no longer touches this field — it allocates file indices through FileIndexCounterDependency, which both the runner and inlined-subprogram syntaxes (SubProgramCallSyntax) share so every loaded file (top-level program plus every M98 / M198 inline, including each L repetition) gets a distinct index. Do not introduce new readers; the field will be removed once the legacy runners retire. public int FileIndexOnRunCommand { get; set; } Property Value int Host The project-level service hosting this session — injected so the session can reach project-level resources (act runner, NC runners, player, sinks, base directory, …) it needs to run NC program lines. public IMachiningService Host { get; } Property Value IMachiningService IsNcOptOptionListUpdatedByStep Internal Use Only. public bool IsNcOptOptionListUpdatedByStep { get; set; } Property Value bool IsRunningNcLines True while an NC program file is actively being played through the runner (the paced PlayNcFile(string, string, NcKind) loop). A runner-suit switch must not run while this is true: the runner's RunNcLines iterator is mid-enumeration and holds this session's SyntaxPieceLayers, so resetting NcRunnerSessionState underneath it would corrupt the in-flight walk. The switch entry point checks this and refuses otherwise. public bool IsRunningNcLines { get; } Property Value bool IsSteppingSentence True while the player is stepping sentence-by-sentence (pauses at each source-command boundary). Session-run state. public bool IsSteppingSentence { get; set; } Property Value bool NcConversions Writeback conversions retained from the latest ConvertClToNcFiles(string, string, IProgress) run (one per written NC file, in written order): the destination SyntaxPiece streams plus the src↔dst Hi.NcParsers.NcWriteback.NcPieceMaps. This is the hook point for GUI cross-navigation (click a source line ↔ jump to its converted lines). Cleared at the start of each conversion run. public List NcConversions { get; } Property Value List NcOptOption Gets or sets the NC optimization options for UI operations. public NcOptOption NcOptOption { get; set; } Property Value NcOptOption NcOptimizations Writeback conversions retained from the latest OptimizeNcFiles(string, string, ICuttingPara, IProgress, CancellationToken, Func, Action) run (one per written optimized NC file, in written order): the destination SyntaxPiece streams plus the src↔dst Hi.NcParsers.NcWriteback.NcPieceMaps, for GUI cross-navigation. Deliberately separate from NcConversions so a conversion run and an optimization run do not clear each other's results. Cleared at the start of each optimization run. public List NcOptimizations { get; } Property Value List NcRunnerSessionState Per-session NC pipeline state shared across RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) calls. Holds lazy-initialized NcDiagnosticProgress and the per-layer LazyLinkedList chain used for cross-file modal continuity. public NcRunnerSessionState NcRunnerSessionState { get; } Property Value NcRunnerSessionState PacePlayee Internal set only. public PacePlayee PacePlayee { get; set; } Property Value PacePlayee PostBlockScripts Per-line scripts injected externally (without modifying NC files). Key: FileLineIndex of the NC block. Value: C# script text to execute after the NC block. Consumed by CsScriptEndSemantic. public Dictionary PostBlockScripts { get; } Property Value Dictionary PreBlockScripts Per-line scripts injected externally (without modifying NC files). Key: FileLineIndex of the NC block. Value: C# script text to execute before the NC block. Consumed by CsScriptBeginSemantic. public Dictionary PreBlockScripts { get; } Property Value Dictionary SessionWriters StreamWriters registered during the session (e.g. by diagnostic output methods). Key: relative output file path. Disposed automatically when the session ends. public Dictionary SessionWriters { get; } Property Value Dictionary ShellProgress Session-level routine / lifecycle message sink on the IMessage channel (cache reset, file progress, session start/done). Owned here so it is truly session-scoped — created with the session, released at EndSession. public ShellProgress ShellProgress { get; } Property Value ShellProgress StepIndexToNcOptOptionSortedList Gets or sets the mapping of step indices to NC optimization options. For internal use only. Takes effect during internal optimization process. public SortedList StepIndexToNcOptOptionSortedList { get; set; } Property Value SortedList StepTaskBundle Gets or sets the current step task bundle. public MachiningParallelProc.StepTaskBundle StepTaskBundle { get; set; } Property Value MachiningParallelProc.StepTaskBundle WarnedCutterGeometryTools Tools already surfaced via an unreasonable cutter-geometry ConfigurationError (see WarnIfCurrentToolCutterGeometryUnreasonable(MachiningSession, StepDiagnosticProgress, int?)). Same keying and emission-point rationale as WarnedFluteMaterialMissingTools. public HashSet WarnedCutterGeometryTools { get; } Property Value HashSet WarnedFluteCountZeroTools Tools already surfaced via a zero-flute-count ConfigurationWarning (see WarnIfCurrentToolFluteCountZero(MachiningSession, StepDiagnosticProgress, int?)). Same keying and emission-point rationale as WarnedFluteMaterialMissingTools. public HashSet WarnedFluteCountZeroTools { get; } Property Value HashSet WarnedFluteMaterialMissingTools Tools already surfaced via “FluteMaterial not set” warning. Keyed by IMachiningTool reference so the dedup is stable across the two emission points: ProcAct(IAct, MachiningSession, IMachiningService, ISentenceCarrier, CancellationToken, StepDiagnosticProgress) at each IActTooling, and BeginSession for the tool that may already be equipped before the session begins (which has no tool ID to dedup with). Reference equality is more precise than tool ID — the same tool object equipped twice should warn once, regardless of how it was reached. public HashSet WarnedFluteMaterialMissingTools { get; } Property Value HashSet Methods BeginPreserve() Begins a preserve section in the optimization process. public void BeginPreserve() ConvertClToNcFiles(string, string, IProgress) Converts the CLSF play of this session into Fanuc NC files — writeback synthesis mode, two stages (Hi.NcParsers.NcWriteback.NcSynthesisConverter over Hi.NcParsers.NcWriteback.FanucNcSentenceComposer): walks the final SyntaxPieceLayers layer, groups pieces per source file, converts each group into a destination piece stream with the src↔dst map (stage one; retained in NcConversions), and serializes the destination stream to text (stage two, ToLines(IEnumerable)). The synthesis re-serializes the brand-neutral sections into Fanuc vocabulary (MSYS tilt → G68.2, RTCP → G43.4, motions → G00/G01/G02/G03 with rotary words). Requires a prior play (e.g. PlayClFile(string, string)) on an XYZABC machine chain — a pure-CL milling device leaves no machine-solved sections to serialize. Conversion diagnostics go to the manipulation home (NcManipulationDiagnosticProgress, cleared at run start) — not to the play-time NcDiagnosticProgress. GUI consumers observe that home directly (webservice: NC Manipulation message tab); messageProgress carries only the lifecycle messages. public IReadOnlyList ConvertClToNcFiles(string baseDirectory, string relNcFileTemplate = \"Output/[NcName].nc\", IProgress messageProgress = null) Parameters baseDirectory string Project root; null falls back to BaseDirectory. relNcFileTemplate string Output path template; [NcName] is replaced by the source file name, [NcFile] by its slash-flattened relative path. messageProgress IProgress Optional message sink for lifecycle reporting; session callers inject the shell sink, out-of-session callers pass their own (or null). Returns IReadOnlyList Written NC file paths, relative to baseDirectory. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() EndPreserve() Ends a preserve section in the optimization process. public void EndPreserve() GetToolPhysicsPack(int) Gets the frozen physics pack for a tool id — building it on first access — or null when the id is not in the tool house. The para-dependent members are keyed to the current workpiece cutting para. Safe to call from parallel step tasks: the pack is immutable and published atomically, and a concurrent rebuild computes identical content. public MillingToolPhysicsPack GetToolPhysicsPack(int toolId) Parameters toolId int The tool-house id of the tool. Returns MillingToolPhysicsPack The frozen pack, or null for an unknown tool id. InvalidateToolPhysicsPacks() Drops every cached physics pack so the next access rebuilds from the live objects. Called by the paths that know the tool/cutter/para state may have changed: every run-op start (RunNcLines(INcRunner, string, IEnumerable, CancellationToken), so edits made between plays always take effect) and the tool-change act. An editor that must take effect in the middle of a running play calls this explicitly — otherwise a mid-play edit lands on the next play, which is also the only mode with a deterministic outcome. public void InvalidateToolPhysicsPacks() OptimizeNcFiles(string, string, ICuttingPara, IProgress, CancellationToken, Func, Action) Optimizes the NC program played in this session (SoftNc pipeline) and writes the optimized NC files: classifies the final SyntaxPieceLayers layer, solves the per-step feed adjustments from milling physics, patches the F words onto the verbatim source text and writes one output file per source NC file by relNcFileTemplate. Conversions are retained in NcOptimizations; piece-anchored diagnostics go to the manipulation home (NcManipulationDiagnosticProgress, cleared at run start). Requires a prior play and a logged-in OptNcNoLimit license. public List OptimizeNcFiles(string baseDirectory, string relNcFileTemplate, ICuttingPara millingPara, IProgress messageProgress, CancellationToken cancellationToken, Func luggageGetter = null, Action clearLuggageCache = null) Parameters baseDirectory string Project root; null falls back to BaseDirectory. relNcFileTemplate string Output path template; [NcName] is replaced by the source file name, [NcFile] by its slash-flattened relative path. millingPara ICuttingPara The cutting parameters; null disables physics-computable optimization. messageProgress IProgress Optional message sink for lifecycle / progress reporting. cancellationToken CancellationToken Cancellation token to cancel the operation. luggageGetter Func Optional thread-safe map from step index to MillingStepLuggage; defaults to MillingStepLuggageReader. clearLuggageCache Action Optional end-of-run cache clear hook; defaults to the luggage reader's cache clear. Returns List Written NC file paths, relative to baseDirectory. PlayBrandNcFile(string, string) Plays a famous-brand NC code file with pace control (no kind dispatch — always ActiveNcRunner). public void PlayBrandNcFile(string baseDirectory, string relFilePath) Parameters baseDirectory string relFilePath string PlayClFile(string, string) Plays an NX-CL (CLSF) file with pace control. public void PlayClFile(string baseDirectory, string relFilePath) Parameters baseDirectory string relFilePath string PlayCsvFile(string, string) Plays a CSV file with pace control. public void PlayCsvFile(string baseDirectory, string relFilePath) Parameters baseDirectory string relFilePath string PlayNc(string, string) Plays NC text with pace control. public void PlayNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string fileNameAlternative string PlayNcFile(string, string, NcKind) Plays an NC program file with pace control, the runner picked by kind (Auto = by file extension, see DetectByPath(string)). public void PlayNcFile(string baseDirectory, string relFilePath, NcKind kind = NcKind.Auto) Parameters baseDirectory string relFilePath string kind NcKind Preserve() Preserves one line of NC code in the optimization process. public void Preserve() RunBrandNcFile(string, string) Runs a famous-brand NC code file (no pacing, no kind dispatch — always ActiveNcRunner); returns the player actions. public IEnumerable RunBrandNcFile(string baseDirectory, string relFilePath) Parameters baseDirectory string relFilePath string Returns IEnumerable RunClFile(string, string) Runs an NX-CL (CLSF) file (no pacing); returns the player actions. public IEnumerable RunClFile(string baseDirectory, string relFilePath) Parameters baseDirectory string relFilePath string Returns IEnumerable RunCsvFile(string, string) Runs a CSV file (no pacing); returns the player actions. public IEnumerable RunCsvFile(string baseDirectory, string relFilePath) Parameters baseDirectory string relFilePath string Returns IEnumerable RunMachiningStepBuilt(MachiningStep, MachiningStep) Internal use only. Invokes MachiningStepBuilt. public void RunMachiningStepBuilt(MachiningStep preStep, MachiningStep curStep) Parameters preStep MachiningStep curStep MachiningStep RunMachiningStepSelected(MachiningStep) Internal use only. Invokes MachiningStepSelected. public void RunMachiningStepSelected(MachiningStep machiningStep) Parameters machiningStep MachiningStep RunNc(string, string) Runs NC text (no pacing); returns the player actions. public IEnumerable RunNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string fileNameAlternative string Returns IEnumerable RunNcFile(string, string, NcKind) Runs an NC program file (no pacing), the runner picked by kind (Auto = by file extension, see DetectByPath(string)); returns the player actions. public IEnumerable RunNcFile(string baseDirectory, string relFilePath, NcKind kind = NcKind.Auto) Parameters baseDirectory string relFilePath string kind NcKind Returns IEnumerable RunNcFileRan() Internal use only. Invokes NcFileRan. public void RunNcFileRan() RunNcLines(INcRunner, string, IEnumerable, CancellationToken) Runs the NC program lines through ncRunner, producing the player actions. Session-scoped run loop; reaches project-level resources via Host. public IEnumerable RunNcLines(INcRunner ncRunner, string relNcFilePath, IEnumerable lines, CancellationToken cancellationToken) Parameters ncRunner INcRunner The NC runner that parses and runs the lines. relNcFilePath string Name/path associated with the program. lines IEnumerable The NC/CSV lines to run. cancellationToken CancellationToken Cancellation token. Returns IEnumerable The sequence of player actions. RunSourcedActEntry(SourcedActEntry) Internal use only. Invokes SourcedActEntry. public void RunSourcedActEntry(SourcedActEntry entry) Parameters entry SourcedActEntry RunSyntaxPieceRan(SyntaxPiece) Internal use only. Invokes SyntaxPieceRan. public void RunSyntaxPieceRan(SyntaxPiece syntaxPiece) Parameters syntaxPiece SyntaxPiece UpdateNcOptOptionMapIfNeeded(int) Records the current NcOptOption at stepIndex when it differs from the most recently recorded one, so the map stays a sparse list of change points — which is what its readers expect: they resolve a step's option by GetFloor (see UpdateNcOptOption(Action) and the optimization procs), so an unchanged stretch needs no entries at all. Internal use only. public bool UpdateNcOptOptionMapIfNeeded(int stepIndex) Parameters stepIndex int The index of the step to update. Returns bool True if the map was updated; otherwise, false. Events MachiningStepBuilt Event triggered when a machining step is built. public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate MachiningStepSelected Event triggered when a machining step is selected. public event Action MachiningStepSelected Event Type Action NcFileRan Event triggered after an NC/CSV file finishes running (session-scoped). Bridged to the app-lifetime LocalProjectService.OnNcFileRan in BeginSession. public event Action NcFileRan Event Type Action OnCurrentLineEnd Event raised when the current line ends. The event buffer is cleared on every line change. public event Action OnCurrentLineEnd Event Type Action SourcedActEntry Event triggered for each SourcedActEntry produced during NC/CSV execution. public event Action SourcedActEntry Event Type Action SyntaxPieceRan Event triggered when a syntax piece has been executed. public event Action SyntaxPieceRan Event Type Action" + }, + "api/Hi.MachiningProcs.MessageDto.html": { + "href": "api/Hi.MachiningProcs.MessageDto.html", + "title": "Class MessageDto | HiAPI-C# 2025", + "summary": "Class MessageDto Namespace Hi.MachiningProcs Assembly HiNc.dll One reported IMessage, flattened for JSON transport. public record MessageDto : IEquatable Inheritance object MessageDto 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 MessageDto(string, string, string, string) One reported IMessage, flattened for JSON transport. public MessageDto(string Severity, string Category, string Id, string Notification) Parameters Severity string The importance level (Message / Success / Progress / Warning / Error). Category string The classification (System / Unsupported / Validation / Configuration). Id string The structured id used for filtering / suppression; may be null. Notification string The end-user friendly text. Properties Category The classification (System / Unsupported / Validation / Configuration). public string Category { get; init; } Property Value string Id The structured id used for filtering / suppression; may be null. public string Id { get; init; } Property Value string Notification The end-user friendly text. public string Notification { get; init; } Property Value string Severity The importance level (Message / Success / Progress / Warning / Error). public string Severity { get; init; } Property Value string Methods From(IMessage) Flattens one IMessage into a transport DTO. public static MessageDto From(IMessage message) Parameters message IMessage The message to flatten. Returns MessageDto The flattened DTO." }, "api/Hi.MachiningProcs.MillingUtil.html": { "href": "api/Hi.MachiningProcs.MillingUtil.html", "title": "Class MillingUtil | HiAPI-C# 2025", "summary": "Class MillingUtil Namespace Hi.MachiningProcs Assembly HiMech.dll Provides utility methods for milling calculations and operations. public static class MillingUtil Inheritance object MillingUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetFeedPerCycle_mm(double, double) Calculates the feed per cycle in millimeters. public static double GetFeedPerCycle_mm(double feedrate_mmds, double spindleSpeed_radds) Parameters feedrate_mmds double The feed rate in millimeters per second. spindleSpeed_radds double The spindle speed in radians per second. Returns double The feed per cycle in millimeters. GetFeedPerTooth_mm(double, double, int) Calculates the feed per tooth in millimeters. public static double GetFeedPerTooth_mm(double feedrate_mmds, double spindleSpeed_radds, int fluteNum) Parameters feedrate_mmds double The feed rate in millimeters per second. spindleSpeed_radds double The spindle speed in radians per second. fluteNum int The number of flutes on the tool. Returns double The feed per tooth in millimeters. GetFeedrate_mmds(double, double, int) Calculates the feed rate in millimeters per second. public static double GetFeedrate_mmds(double feedPerTooth_mmdrev, double spindleSpeed_radds, int fluteNum) Parameters feedPerTooth_mmdrev double The feed per tooth in millimeters per revolution. spindleSpeed_radds double The spindle speed in radians per second. fluteNum int The number of flutes on the tool. Returns double The feed rate in millimeters per second. GetFluteZToDzListByGapResolutionSwitch(SortedList, double, Box3d, List) Gets a list of Z coordinates and their corresponding delta Z values for flute engagement, with resolution switching based on chip height. public static SortedList GetFluteZToDzListByGapResolutionSwitch(SortedList fluteZToDzListByWorkpieceResolution, double workpieceResolution, Box3d boundingBoxOnToolRunningCoordinate, List fluteZAscendentZrContour) Parameters fluteZToDzListByWorkpieceResolution SortedList The initial list of Z coordinates and delta Z values based on workpiece resolution. workpieceResolution double The resolution of the workpiece. boundingBoxOnToolRunningCoordinate Box3d The bounding box of the tool path in tool running coordinates. fluteZAscendentZrContour List The ascending Z coordinates of the flute contour. Returns SortedList A sorted list of Z coordinates and their corresponding delta Z values." }, + "api/Hi.MachiningProcs.NcKind.html": { + "href": "api/Hi.MachiningProcs.NcKind.html", + "title": "Enum NcKind | HiAPI-C# 2025", + "summary": "Enum NcKind Namespace Hi.MachiningProcs Assembly HiMech.dll Kind of an NC program file — selects which of the session's runners plays it (ActiveNcRunner / ClRunner / CsvRunner). public enum NcKind 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 Auto = 0 Detect from the file extension — see DetectByPath(string). BrandNc = 1 Famous-brand controller code (G-code dialects) — the catch-all default. Cl = 2 NX-CL (CLSF) cutter-location file. Csv = 3 CSV control table. Remarks Vocabulary note: Nc is the umbrella term for any machine-readable program the session can play (brand controller code, CL, CSV — matching INcRunner / RunNcFile); BrandNc is the narrow term for the famous-brand controller dialects (Fanuc / Siemens / Heidenhain G-code families)." + }, + "api/Hi.MachiningProcs.NcKindUtil.html": { + "href": "api/Hi.MachiningProcs.NcKindUtil.html", + "title": "Class NcKindUtil | HiAPI-C# 2025", + "summary": "Class NcKindUtil Namespace Hi.MachiningProcs Assembly HiMech.dll NcKind helpers. public static class NcKindUtil Inheritance object NcKindUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods DetectByPath(string) Detects an NC program file's NcKind from its extension. CL (.cl / .cls / .clsf) and CSV (.csv) are closed extension sets; everything else — the open world of brand controller extensions (.nc, .ptp, .tap, .h, …) — maps to BrandNc, so an exotic brand extension can never be misrouted. public static NcKind DetectByPath(string filePath) Parameters filePath string Returns NcKind" + }, "api/Hi.MachiningProcs.NcRunnerSessionState.html": { "href": "api/Hi.MachiningProcs.NcRunnerSessionState.html", "title": "Class NcRunnerSessionState | HiAPI-C# 2025", - "summary": "Class NcRunnerSessionState Namespace Hi.MachiningProcs Assembly HiMech.dll NC pipeline state held on a MachiningSession and shared across multiple RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) calls within that session. The per-layer SyntaxPieceLayers are extended via AppendSource(IEnumerable) for each subsequent file so that Previous/Next connectivity (and thus ModalCarrySyntax deep-clone) crosses file boundaries. public sealed class NcRunnerSessionState : IDisposable Inheritance object NcRunnerSessionState Implements IDisposable 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) Properties IsInitialized True after the first call has built the layered pipeline. public bool IsInitialized { get; } Property Value bool NcDiagnosticProgress Session-shared diagnostic sink. Built lazily on the first RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) call. public NcDiagnosticProgress NcDiagnosticProgress { get; set; } Property Value NcDiagnosticProgress SyntaxPieceLayers One LazyLinkedList per pipeline layer. Index 0 is the source layer (init seed + sentence-derived pieces); indices 1..NcSyntaxList.Count are the post-NcSyntax layers. Subsequent RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) calls extend each layer in place via AppendSource(IEnumerable). public List> SyntaxPieceLayers { get; set; } Property Value List> Methods Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Reset() Drops the per-layer pipeline state and the cached diagnostic sink so the next RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) call re-builds from scratch. Use this for a controller power reset (where in-flight SyntaxPiece JSON dataflow — including Vars.Volatile, modal carries, and the init seed — must vanish) without disposing the owning MachiningSession itself. Idempotent and reusable: after Reset() the object is in the same lazy-uninitialised state as a freshly constructed instance, so the first subsequent RunControlLines hits the !IsInitialized branch and re-creates everything. public void Reset()" + "summary": "Class NcRunnerSessionState Namespace Hi.MachiningProcs Assembly HiMech.dll NC pipeline state held on a MachiningSession and shared across multiple RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) calls within that session. The per-layer SyntaxPieceLayers are extended via AppendSource(IEnumerable) for each subsequent file so that Previous/Next connectivity (and thus ModalCarrySyntax deep-clone) crosses file boundaries. public sealed class NcRunnerSessionState : IDisposable Inheritance object NcRunnerSessionState Implements IDisposable 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) Properties EffectiveNcDependencyList Proxy-resolved dependency list — output of GetEffectiveNcDependencyList(), computed once on the first RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) call and reused for every file and pipeline stage in the session so each INcDependencyProxy resolves to one stable instance. Set only by RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) (and cleared by Reset()); readable for inspection. public List EffectiveNcDependencyList { get; } Property Value List EffectiveNcInitializationList Session-scoped initializer list used to seed the init SyntaxPiece — gated like EffectiveNcSyntaxList. public List EffectiveNcInitializationList { get; } Property Value List EffectiveNcSemanticList Session-scoped semantic list actually driven over the final syntax layer — gated like EffectiveNcSyntaxList. public List EffectiveNcSemanticList { get; } Property Value List EffectiveNcSyntaxList Session-scoped syntax list actually driven by the layer pipeline — stamped at session initialization by ResolveEffectivePipeline(SoftNcRunner, NcRunnerSessionState, NcDiagnosticProgress). Same reference as NcSyntaxList unless the composition gate skipped external units for this session; the runner's persisted list is never mutated. public List EffectiveNcSyntaxList { get; } Property Value List EffectiveSegmenter Session-scoped segmenter actually used to split NC text — the runner's own Segmenter, or the built-in fallback when the composition gate rejected an external one. public ISegmenter EffectiveSegmenter { get; } Property Value ISegmenter FreezeExecutedPieces Whether executed SyntaxPieces are frozen to their compact UTF-8 form (Freeze()) once they leave the executing window. Default true — a session retains every executed piece for its whole lifetime, and the live JsonObject graph costs ~13× the frozen bytes (multi-million-line programs OOM a client machine without this). Set false only for A/B measurement or when a custom post-play consumer must mutate executed pieces in place. public bool FreezeExecutedPieces { get; set; } Property Value bool InitializedByNcRunner The runner whose first RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) call built the pipeline. The layer count and the cached EffectiveNcDependencyList are sized/bound to THIS runner, so a subsequent call from a DIFFERENT runner (e.g. a CSV play after a brand-NC play in the same session) must be refused — it would index past the layer list or silently run with the wrong dependency list. Cleared by Reset(). public INcRunner InitializedByNcRunner { get; } Property Value INcRunner IsInitialized True after the first call has built the layered pipeline. public bool IsInitialized { get; } Property Value bool SyntaxPieceLayers One LazyLinkedList per pipeline layer. Index 0 is the source layer (init seed + sentence-derived pieces); indices 1..NcSyntaxList.Count are the post-NcSyntax layers. Subsequent RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) calls extend each layer in place via AppendSource(IEnumerable). public List> SyntaxPieceLayers { get; set; } Property Value List> Methods DeferFreeze(SyntaxPiece) Hands an executed piece to the deferred-freeze window: it stays live for the next Hi.MachiningProcs.NcRunnerSessionState.FreezeLagPieceCount piece boundaries, then freezes. No-op when FreezeExecutedPieces is false or piece is null. Called by RunNcLines(INcRunner, string, IEnumerable, CancellationToken) at each source-command boundary — the point where the previous piece's syntax builds and semantics have all completed. public void DeferFreeze(SyntaxPiece piece) Parameters piece SyntaxPiece Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() FlushDeferredFreezes() Freezes everything still in the deferred-freeze window. Called at the end-of-play action (after the act runner's WaitAll) so a finished play retains only frozen pieces; when FreezeExecutedPieces is false the window is just dropped. public void FlushDeferredFreezes() Reset() Drops the per-layer pipeline state so the next RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) call re-builds from scratch. Use this for a controller power reset (where in-flight SyntaxPiece JSON dataflow — including Vars.Volatile, modal carries, and the init seed — must vanish) without disposing the owning MachiningSession itself. Idempotent and reusable: after Reset() the object is in the same lazy-uninitialised state as a freshly constructed instance, so the first subsequent RunNcLines hits the !IsInitialized branch and re-creates everything. public void Reset()" + }, + "api/Hi.MachiningProcs.ProjectFileBusyException.html": { + "href": "api/Hi.MachiningProcs.ProjectFileBusyException.html", + "title": "Class ProjectFileBusyException | HiAPI-C# 2025", + "summary": "Class ProjectFileBusyException Namespace Hi.MachiningProcs Assembly HiNc.dll Thrown when a project-file operation (New / Load / Save / SaveAs / Reload) is requested while another one is already in progress. The newcomer is cancelled rather than queued; controllers surface this as HTTP 409 Conflict. public sealed class ProjectFileBusyException : Exception, ISerializable Inheritance object Exception ProjectFileBusyException Implements ISerializable Inherited Members Exception.GetBaseException() Exception.GetType() Exception.ToString() Exception.Data Exception.HelpLink Exception.HResult Exception.InnerException Exception.Message Exception.Source Exception.StackTrace Exception.TargetSite object.Equals(object) object.Equals(object, object) object.GetHashCode() 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 ProjectFileBusyException() Initializes a new instance with the default busy message. public ProjectFileBusyException()" }, "api/Hi.MachiningProcs.ProxyProjectService.html": { "href": "api/Hi.MachiningProcs.ProxyProjectService.html", @@ -2034,50 +2119,65 @@ "title": "Enum RenderingFlag | HiAPI-C# 2025", "summary": "Enum RenderingFlag Namespace Hi.MachiningProcs Assembly HiNc.dll Flags that control which elements are rendered in the visualization. public enum RenderingFlag 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 ClStrip = 1 Cutter location strip rendering flag. ColorScaleBar = 10 Color scale bar rendering flag. Category: Foreground. DimensionBar = 9 Dimension bar rendering flag. Category: Foreground. Dummy = 0 Dummy placeholder flag. Fixture = 4 Fixture rendering flag. Category: Solid. HeidenhainCoordinate = 8 Heidenhain Coordinate rendering flag. Category: Anchor (Coordinate Mark). IsoCoordinate = 7 Iso Coordinate rendering flag. Category: Anchor (Coordinate Mark). Mech = 5 Mechanical components rendering flag. This flag covers the flags WorkpieceGeom, Tool and Fixture. Category: Solid. ProgramZero = 6 Program Zero rendering flag. Category: Anchor (Coordinate Mark). Tool = 3 Tool rendering flag. Category: Solid. WorkpieceGeom = 2 Workpiece geometry rendering flag. Category: Solid." }, - "api/Hi.MachiningProcs.SessionMessage.html": { - "href": "api/Hi.MachiningProcs.SessionMessage.html", - "title": "Class SessionMessage | HiAPI-C# 2025", - "summary": "Class SessionMessage Namespace Hi.MachiningProcs Assembly HiMech.dll Represents a message in the machining process that can contain various types of data such as source commands, machining steps, exceptions, and tagged messages. public class SessionMessage Inheritance object SessionMessage 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 SessionMessage(int, object) Initializes a new instance of the SessionMessage class. public SessionMessage(int index, object src) Parameters index int The index of the message. src object The source data. Properties ClStripPos Gets or sets the cutter location strip position. gets null if the Data is not ClStripPos. public ClStripPos ClStripPos { get; set; } Property Value ClStripPos Data Gets or sets the data contained in the message. public object Data { get; set; } Property Value object DirectInstantSourceCommand Gets or sets the direct source command from the data. gets null if the Data is not IIndexedFileLine. public IIndexedFileLine DirectInstantSourceCommand { get; set; } Property Value IIndexedFileLine Exception Gets or sets the exception. gets null if the Data is not Exception. public Exception Exception { get; set; } Property Value Exception Index Gets or sets the index of the message. The UI name is 'Serial.'. [Present(\"Message Index\", \"M.I.\", PhysicsUnit.None, \"G\")] public int Index { get; set; } Property Value int InstantSourceCommand Gets the source command, either directly or from the associated milling step. gets null if both DirectInstantSourceCommand and the SourceCommand from ClStripPos's State are null. public IIndexedFileLine InstantSourceCommand { get; } Property Value IIndexedFileLine MachiningStep Gets the milling step from the cutter location strip position. gets null if ClStripPos is null or its State is not a MachiningStep. public MachiningStep MachiningStep { get; } Property Value MachiningStep Message Gets the message text from either the multi-tag message or exception. gets null if both MultiTagMessage and Exception are null, or if MultiTagMessage.Message is null. [Present(\"Message\", \"Msg\", PhysicsUnit.None, \"G\")] public string Message { get; } Property Value string MessageOrNcText Gets the message text or NC code text. gets null if all sources (InstantSourceCommand, MultiTagMessage, Exception, and Data) are null or cannot provide text. [Present(\"Message/NC\", \"Msg/NC\", PhysicsUnit.None, \"G\")] public string MessageOrNcText { get; } Property Value string MessageRoleText Gets the message type text for UI display. [Present(\"Role\", \"Role\", PhysicsUnit.None, \"G\")] public string MessageRoleText { get; } Property Value string MultiTagMessage Gets or sets the multi-tag message. gets null if the Data is not MultiTagMessage. public MultiTagMessage MultiTagMessage { get; set; } Property Value MultiTagMessage Tags Gets the tags associated with the message. public HashSet Tags { get; } Property Value HashSet Remarks Different from MultiTagMessage.Tags, the Tags here includes the infomation of the Data. Methods ToString() Returns a string representation of the message data. public override string ToString() Returns string A string representation of the message data." + "api/Hi.MachiningProcs.RequireActiveSessionAttribute.html": { + "href": "api/Hi.MachiningProcs.RequireActiveSessionAttribute.html", + "title": "Class RequireActiveSessionAttribute | HiAPI-C# 2025", + "summary": "Class RequireActiveSessionAttribute Namespace Hi.MachiningProcs Assembly HiNc.dll Action filter for the session-scoped web-API surface: before a guarded action runs, verifies a machining session is active (SessionShell is non-null). When none is active it short-circuits with HTTP 409 and an NoActiveSession() envelope, so a REST / AI caller gets a helpful “call BeginSession() first” notice instead of a null-reference 500. Apply at the controller level; exempt the session lifecycle entry points (BeginSession / EndSession) with AllowNoActiveSessionAttribute. [AttributeUsage(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = false)] public sealed class RequireActiveSessionAttribute : Attribute, IActionFilter, IFilterMetadata Inheritance object Attribute RequireActiveSessionAttribute Implements IActionFilter IFilterMetadata Inherited Members Attribute.Equals(object) Attribute.GetCustomAttribute(Assembly, Type) Attribute.GetCustomAttribute(Assembly, Type, bool) Attribute.GetCustomAttribute(MemberInfo, Type) Attribute.GetCustomAttribute(MemberInfo, Type, bool) Attribute.GetCustomAttribute(Module, Type) Attribute.GetCustomAttribute(Module, Type, bool) Attribute.GetCustomAttribute(ParameterInfo, Type) Attribute.GetCustomAttribute(ParameterInfo, Type, bool) Attribute.GetCustomAttributes(Assembly) Attribute.GetCustomAttributes(Assembly, bool) Attribute.GetCustomAttributes(Assembly, Type) Attribute.GetCustomAttributes(Assembly, Type, bool) Attribute.GetCustomAttributes(MemberInfo) Attribute.GetCustomAttributes(MemberInfo, bool) Attribute.GetCustomAttributes(MemberInfo, Type) Attribute.GetCustomAttributes(MemberInfo, Type, bool) Attribute.GetCustomAttributes(Module) Attribute.GetCustomAttributes(Module, bool) Attribute.GetCustomAttributes(Module, Type) Attribute.GetCustomAttributes(Module, Type, bool) Attribute.GetCustomAttributes(ParameterInfo) Attribute.GetCustomAttributes(ParameterInfo, bool) Attribute.GetCustomAttributes(ParameterInfo, Type) Attribute.GetCustomAttributes(ParameterInfo, Type, bool) Attribute.GetHashCode() Attribute.IsDefaultAttribute() Attribute.IsDefined(Assembly, Type) Attribute.IsDefined(Assembly, Type, bool) Attribute.IsDefined(MemberInfo, Type) Attribute.IsDefined(MemberInfo, Type, bool) Attribute.IsDefined(Module, Type) Attribute.IsDefined(Module, Type, bool) Attribute.IsDefined(ParameterInfo, Type) Attribute.IsDefined(ParameterInfo, Type, bool) Attribute.Match(object) Attribute.TypeId object.Equals(object, object) 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 OnActionExecuted(ActionExecutedContext) Called after the action executes, before the action result. public void OnActionExecuted(ActionExecutedContext context) Parameters context ActionExecutedContext The ActionExecutedContext. OnActionExecuting(ActionExecutingContext) Called before the action executes, after model binding is complete. public void OnActionExecuting(ActionExecutingContext context) Parameters context ActionExecutingContext The ActionExecutingContext." }, - "api/Hi.MachiningProcs.SessionMessagePack.html": { - "href": "api/Hi.MachiningProcs.SessionMessagePack.html", - "title": "Class SessionMessagePack | HiAPI-C# 2025", - "summary": "Class SessionMessagePack Namespace Hi.MachiningProcs Assembly HiMech.dll Represents a package containing a machining message and its associated context. public class SessionMessagePack Inheritance object SessionMessagePack 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 SessionMessagePack(SessionProgress, SessionMessage) Initializes a new instance of the SessionMessagePack class. public SessionMessagePack(SessionProgress host, SessionMessage msg) Parameters host SessionProgress The session message host. msg SessionMessage The machining message. Properties Host Gets the host that contains this message pack. public SessionProgress Host { get; } Property Value SessionProgress Index Gets the index of the message in the collection. public int Index { get; } Property Value int Message Gets the message text. public string Message { get; } Property Value string SessionMessage Gets the machining message contained in this pack. public SessionMessage SessionMessage { get; } Property Value SessionMessage SourceCommand Gets the source command that generated this message. public IIndexedFileLine SourceCommand { get; } Property Value IIndexedFileLine Tags Gets the tags associated with the message. public HashSet Tags { get; } Property Value HashSet" - }, - "api/Hi.MachiningProcs.SessionProgress.FilterFlag.html": { - "href": "api/Hi.MachiningProcs.SessionProgress.FilterFlag.html", - "title": "Enum SessionProgress.FilterFlag | HiAPI-C# 2025", - "summary": "Enum SessionProgress.FilterFlag Namespace Hi.MachiningProcs Assembly HiMech.dll Filtering flags for querying messages. [Flags] public enum SessionProgress.FilterFlag 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 Error = 8 Include error, warning, or exception messages. NC = 2 Include NC text messages. Progress = 4 Include progress messages. Step = 1 Include machining step messages." - }, - "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) 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.RequireLoadedProjectAttribute.html": { + "href": "api/Hi.MachiningProcs.RequireLoadedProjectAttribute.html", + "title": "Class RequireLoadedProjectAttribute | HiAPI-C# 2025", + "summary": "Class RequireLoadedProjectAttribute Namespace Hi.MachiningProcs Assembly HiNc.dll Action filter for the project-level web-API surface: before a guarded action runs, verifies a project is loaded (MachiningProject is non-null). When none is loaded it short-circuits with HTTP 409 and an NoProjectLoaded() envelope, so a REST / AI caller gets a helpful “create or load a project first” notice instead of a null-reference 500 (the project-level members — MachiningActRunner.Config, workpiece, runners — are null until a project is open). Apply at the controller level; exempt the endpoints that create or load a project with AllowNoLoadedProjectAttribute. [AttributeUsage(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = false)] public sealed class RequireLoadedProjectAttribute : Attribute, IActionFilter, IFilterMetadata Inheritance object Attribute RequireLoadedProjectAttribute Implements IActionFilter IFilterMetadata Inherited Members Attribute.Equals(object) Attribute.GetCustomAttribute(Assembly, Type) Attribute.GetCustomAttribute(Assembly, Type, bool) Attribute.GetCustomAttribute(MemberInfo, Type) Attribute.GetCustomAttribute(MemberInfo, Type, bool) Attribute.GetCustomAttribute(Module, Type) Attribute.GetCustomAttribute(Module, Type, bool) Attribute.GetCustomAttribute(ParameterInfo, Type) Attribute.GetCustomAttribute(ParameterInfo, Type, bool) Attribute.GetCustomAttributes(Assembly) Attribute.GetCustomAttributes(Assembly, bool) Attribute.GetCustomAttributes(Assembly, Type) Attribute.GetCustomAttributes(Assembly, Type, bool) Attribute.GetCustomAttributes(MemberInfo) Attribute.GetCustomAttributes(MemberInfo, bool) Attribute.GetCustomAttributes(MemberInfo, Type) Attribute.GetCustomAttributes(MemberInfo, Type, bool) Attribute.GetCustomAttributes(Module) Attribute.GetCustomAttributes(Module, bool) Attribute.GetCustomAttributes(Module, Type) Attribute.GetCustomAttributes(Module, Type, bool) Attribute.GetCustomAttributes(ParameterInfo) Attribute.GetCustomAttributes(ParameterInfo, bool) Attribute.GetCustomAttributes(ParameterInfo, Type) Attribute.GetCustomAttributes(ParameterInfo, Type, bool) Attribute.GetHashCode() Attribute.IsDefaultAttribute() Attribute.IsDefined(Assembly, Type) Attribute.IsDefined(Assembly, Type, bool) Attribute.IsDefined(MemberInfo, Type) Attribute.IsDefined(MemberInfo, Type, bool) Attribute.IsDefined(Module, Type) Attribute.IsDefined(Module, Type, bool) Attribute.IsDefined(ParameterInfo, Type) Attribute.IsDefined(ParameterInfo, Type, bool) Attribute.Match(object) Attribute.TypeId object.Equals(object, object) 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 OnActionExecuted(ActionExecutedContext) Called after the action executes, before the action result. public void OnActionExecuted(ActionExecutedContext context) Parameters context ActionExecutedContext The ActionExecutedContext. OnActionExecuting(ActionExecutingContext) Called before the action executes, after model binding is complete. public void OnActionExecuting(ActionExecutingContext context) Parameters context ActionExecutingContext The ActionExecutingContext." }, "api/Hi.MachiningProcs.SessionShell.html": { "href": "api/Hi.MachiningProcs.SessionShell.html", "title": "Class SessionShell | HiAPI-C# 2025", - "summary": "Class SessionShell Namespace Hi.MachiningProcs Assembly HiNc.dll End-user-facing facade for a machining session: aggregates session lifecycle, NC playback, optimization, geometry I/O, and scripting infrastructure into a single delegation surface. Used as the C# script globals object and as the concrete target of ISessionCommand implementations. public class SessionShell : ISessionShell Inheritance object SessionShell Implements ISessionShell 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 DefaultParaTemplateDimension Gets or sets the parameter template dimension (2D or 3D). [JsAce] public int DefaultParaTemplateDimension { get; set; } Property Value int DiffVisualRadius_mm Gets or sets the visual radius in millimeters for difference visualization. Controls the radius used for highlighting differences between workpiece states. [JsAce] public double DiffVisualRadius_mm { get; set; } Property Value double DispCacheMb Gets or sets the display cache size in megabytes. [Obsolete] public long DispCacheMb { get; set; } Property Value long DispCache_Mb Gets or sets the display cache size in megabytes. [JsAce] public long DispCache_Mb { get; set; } Property Value long EmbeddedLogMode Gets or sets the embedded log mode for NC optimization. [JsAce] public static NcOptimizationEmbeddedLogMode EmbeddedLogMode { get; set; } Property Value NcOptimizationEmbeddedLogMode EnableCollisionDetection Gets or sets whether collision detection is enabled. [JsAce(DocContentHtml = \"Enable Collision Detection.\")] public bool EnableCollisionDetection { get; set; } Property Value bool EnableIndividualStepAdjustmentLog Gets or sets whether to enable individual step adjustment logging. [JsAce] public static bool EnableIndividualStepAdjustmentLog { get; set; } Property Value bool EnableMapOnSelectionEnd Gets or sets whether to automatically map selections when they end. [JsAce] public bool EnableMapOnSelectionEnd { get; set; } Property Value bool EnableMotionDependentMachiningResolution Gets or sets whether motion-dependent machining resolution is enabled. [JsAce] public bool EnableMotionDependentMachiningResolution { get; set; } Property Value bool EnableMzLeverWeightingOnTraining Gets or sets whether Mz lever weighting is enabled on training. [Obsolete] public bool EnableMzLeverWeightingOnTraining { get; set; } Property Value bool EnablePauseOnCollision Gets or sets whether to pause execution when a collision is detected. This property only has an effect if collision detection is enabled. [Obsolete] public bool EnablePauseOnCollision { get; set; } Property Value bool EnablePauseOnFailure Gets or sets whether to pause on failure during execution. [JsAce(DocContentHtml = \"Enable Pause On Failure.\")] public bool EnablePauseOnFailure { get; set; } Property Value bool EnablePhysics Gets or sets whether milling force evaluation is enabled. [JsAce(DocContentHtml = \"Enable milling force evaluation.\")] public bool EnablePhysics { get; set; } Property Value bool EnableSampleNormalization [Obsolete] public bool EnableSampleNormalization { get; set; } Property Value bool Remarks The input normalization deminish the quantity effect. The R-value decrease from 99% to 70% in moment training case from NKUST\\nkust2024-milling-para-training-plan\\workingx.hincproj Don't apply this option. EnableSoftNcRunner Workaround flag to use SoftNcRunner instead of HardNcRunner. Will be removed when HardNcRunner is fully replaced. [JsAce(DocContentHtml = \"Enable SoftNcRunner instead of legacy HardNcRunner.\")] public bool EnableSoftNcRunner { get; set; } Property Value bool EnableWearEffect Gets or sets whether tool wear effects are enabled in simulation. [JsAce] public bool EnableWearEffect { get; set; } Property Value bool FeedPerCycle Gets a new feed per cycle machining motion resolution instance. [JsAce] public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; } Property Value FeedPerCycleMachiningMotionResolution FeedPerTooth Gets a new feed per tooth machining motion resolution instance. [JsAce] public FeedPerToothMachiningMotionResolution FeedPerTooth { get; } Property Value FeedPerToothMachiningMotionResolution Fixture Gets or sets the fixture. [JsAce] public Fixture Fixture { get; set; } Property Value Fixture Global [JsAce(\"Global[$1key]\")] public Dictionary Global { get; } Property Value Dictionary InitSpindleTemperature_C Gets or sets the initial spindle temperature in degrees Celsius. [JsAce(DocContentHtml = \"Spindle Temperature on initialization.\")] public double InitSpindleTemperature_C { get; set; } Property Value double JsAceCompletionProfileJsonArray Internal used. public static JsonArray JsAceCompletionProfileJsonArray { get; } Property Value JsonArray MachiningMotionResolution Gets or sets the machining motion resolution. [JsAce] public IMachiningMotionResolution MachiningMotionResolution { get; set; } Property Value IMachiningMotionResolution MachiningResolution Gets or sets the machining resolution in millimeters. [JsAce] [Obsolete(\"Use MachiningResolution_mm instead.\")] public double MachiningResolution { get; set; } Property Value double MachiningResolution_mm Gets or sets the machining resolution in millimeters. [JsAce] public double MachiningResolution_mm { get; set; } Property Value double MachiningSession public MachiningSession MachiningSession { get; } Property Value MachiningSession MapTask Task tracking the status of mapping operations. public Task MapTask { get; set; } Property Value Task MillingCycleDivisionNum Gets or sets the number of divisions per cycle for milling force calculation. This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used. [JsAce] public static int MillingCycleDivisionNum { get; set; } Property Value int MillingForceCycleDivisionNum Gets or sets the number of divisions per cycle for milling force calculation. This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used. [JsAce(DocContentHtml = \"Obsoleted. Use MillingCycleDivisionNum instead.\")] [Obsolete(\"Use MillingCycleDivisionNum instead.\")] public static int MillingForceCycleDivisionNum { get; set; } Property Value int NcOptOption Gets or sets the NC optimization options. [JsAce] public NcOptOption NcOptOption { get; set; } Property Value NcOptOption OptEnableDepthCompensation Enables or disables depth compensation during optimization. [JsAce] public bool OptEnableDepthCompensation { get; set; } Property Value bool OptEnableFeedrate Gets or sets whether to enable feed rate optimization in NC optimization. [JsAce] public bool OptEnableFeedrate { get; set; } Property Value bool OptEnableForwardCompensation Enables or disables forward compensation during optimization. [JsAce] public bool OptEnableForwardCompensation { get; set; } Property Value bool OptEnableInterpolation Enables or disables reinterpolation for optimization. [JsAce] public bool OptEnableInterpolation { get; set; } Property Value bool OptEnableSideCompensation Enables or disables side compensation during optimization. [JsAce] public bool OptEnableSideCompensation { get; set; } Property Value bool OptExtendedPostDistance_mm Gets or sets the extended post-distance in millimeters for NC optimization. This is the distance after the current segment that will be considered for optimization. [JsAce] public double OptExtendedPostDistance_mm { get; set; } Property Value double OptExtendedPreDistance_mm Gets or sets the extended pre-distance in millimeters for NC optimization. This is the distance before the current segment that will be considered for optimization. [JsAce] public double OptExtendedPreDistance_mm { get; set; } Property Value double OptFeedrateAssignmentRatio Gets or sets the feedrate assignment ratio for optimization. If the feedrate change exceeds this ratio, the feedrate in the NC line will be updated. [JsAce] public double OptFeedrateAssignmentRatio { get; set; } Property Value double OptMaxAcceleration_mmds2 Maximum acceleration in mm/s² during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxAcceleration_mmds2 { get; set; } Property Value double OptMaxFeedPerTooth_mm Gets or sets the maximum feed per tooth in millimeters for optimization. [JsAce] public double OptMaxFeedPerTooth_mm { get; set; } Property Value double OptMaxFeedrate_mmdmin Maximum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMaxFeedrate_mmdmin { get; set; } Property Value double OptMaxJerk_mmds3 Maximum jerk in mm/s³ during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxJerk_mmds3 { get; set; } Property Value double OptMinFeedPerTooth_mm Gets or sets the minimum feed per tooth in millimeters for optimization. [JsAce] public double OptMinFeedPerTooth_mm { get; set; } Property Value double OptMinFeedrate_mmdmin Minimum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMinFeedrate_mmdmin { get; set; } Property Value double OptPreferedForce_N Preferred force in N for optimization. [JsAce] public double OptPreferedForce_N { get; set; } Property Value double OptRapidFeed_mmdmin Rapid feed rate in mm/min for non-cutting movements during optimization. [JsAce] public double OptRapidFeed_mmdmin { get; set; } Property Value double OptSpindlePowerSafetyFactor Safety factor for MAX spindle power during optimization. [JsAce] public double OptSpindlePowerSafetyFactor { get; set; } Property Value double OptSpindlePowerUtilizationFactor Utilization factor for MAX spindle power during optimization. It is the reciprocal of the spindle power safety factor. [JsAce] public double OptSpindlePowerUtilizationFactor { get; set; } Property Value double OptSpindleTorqueSafetyFactor Gets or sets the MAX spindle torque safety factor for NC optimization. [JsAce] public double OptSpindleTorqueSafetyFactor { get; set; } Property Value double OptSpindleTorqueUtilizationFactor Utilization factor for MAX spindle torque during optimization. It is the reciprocal of the spindle torque safety factor. [JsAce] public double OptSpindleTorqueUtilizationFactor { get; set; } Property Value double OptThermalYieldSafetyFactor Safety factor for spindle torque during optimization. [JsAce] public double OptThermalYieldSafetyFactor { get; set; } Property Value double OptThermalYieldUtilizationFactor Utilization factor for thermal yield during optimization. It is the reciprocal of the thermal yield safety factor. [JsAce] public double OptThermalYieldUtilizationFactor { get; set; } Property Value double OptYieldingSafetyFactor Safety factor for yielding during optimization. [JsAce] public double OptYieldingSafetyFactor { get; set; } Property Value double OptYieldingUtilizationFactor Utilization factor for yielding during optimization. It is the reciprocal of the yielding safety factor. [JsAce] public double OptYieldingUtilizationFactor { get; set; } Property Value double ScriptOptions ScriptOptions. public ScriptOptions ScriptOptions { get; set; } Property Value ScriptOptions SessionMessageHost Obsolete alias for SessionProgress (session-scoped progress and messages). [JsAce] [Obsolete(\"Use SessionProgress instead.\")] public SessionProgress SessionMessageHost { get; } Property Value SessionProgress SessionProgress Gets the session message host for displaying messages. [JsAce] public SessionProgress SessionProgress { get; } Property Value SessionProgress StepCount Gets the total number of milling steps. [JsAce] public int StepCount { get; } Property Value int Workpiece Gets or sets the workpiece. [JsAce] public Workpiece Workpiece { get; set; } Property Value Workpiece Methods AddTimeDataByFile(string, string, double, double) Adds time-based data from a file to the time mapping dictionary with specified time bounds in seconds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] public bool AddTimeDataByFile(string key, string relFile, double beginTime, double endTime) Parameters key string Key to identify the data relFile string Relative path to the data file beginTime double Beginning time in seconds endTime double Ending time in seconds Returns bool True if the data was successfully added, false otherwise AddTimeDataByFile(string, string, string, string) Adds time-based data from a file to the time mapping dictionary with specified time bounds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] public bool AddTimeDataByFile(string key, string relFile, string beginTimeText, string endTimeText) Parameters key string Key to identify the data relFile string Relative path to the data file beginTimeText string Beginning time as text (seconds or TimeSpan format) endTimeText string Ending time as text (seconds or TimeSpan format) Returns bool True if the data was successfully added, false otherwise AdjustedFeedPerCycle(double, double) Gets a new feed per cycle machining motion resolution instance with adjusted scale and minimum linear resolution. [JsAce(\"AdjustedFeedPerCycle($1scale,$2minLinearResolution_mm)\")] public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale, double minLinearResolution_mm = 0) Parameters scale double The scale factor for the resolution. minLinearResolution_mm double The minimum linear resolution in millimeters. Default is 0. Returns FeedPerCycleMachiningMotionResolution A new FeedPerCycleMachiningMotionResolution instance with the specified parameters. AlignWorkpieceProgramZeroToIso(string) Places workpiece + fixture so that ProgramZeroAnchor coincides with the world position the spindle reaches when the machine coordinate equals isoCoordId's entry (G54/G55/...). The buckle anchors must already be set per the general rule (typically by the project XML): FixtureBuckle at the bottom center of the workpiece geom, WorkpieceBuckle at the top center of the fixture geom, ProgramZeroAnchor at the workpiece-geom top center (or any chosen tip). Only GeomToTableTransformer is mutated. Delegates topology math to AlignWorkpieceProgramZeroToIso(IMachiningEquipment, Vec3d). [JsAce] public void AlignWorkpieceProgramZeroToIso(string isoCoordId) Parameters isoCoordId string ID into the IsoCoordinateTable, e.g. “G54”. AppendMessagesToFile(string, params string[]) Appends messages to a file, optionally filtered by tags. [JsAce(\"AppendMessagesToFile(\\\"dstRelFile\\\",flags)\")] public void AppendMessagesToFile(string dstRelFile, params string[] flags) Parameters dstRelFile string Destination relative file path flags string[] Optional flags to filter messages by tags BeginPreserve() Begin Preserve section in optimzation process. [JsAce(\"BeginPreserve()\")] public void BeginPreserve() BeginSelection(string, AnchorMode, IStepShift) Begin mark on current line. milling step() has not triggered yet. public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBegin, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the beginning of selection shift IStepShift Step shift to apply BeginSession() Begins a new machining session. Not for end user. public void BeginSession() ClearDefectDisplayee() Clears the defect displayee from the workpiece. [JsAce] public void ClearDefectDisplayee() ClearTimeMappingData() Clears all time mapping data. [JsAce] public void ClearTimeMappingData() Diff(double) Performs a difference analysis on the workpiece geometry to detect variations. [JsAce(\"Diff($1detectionRadius_mm)\")] public void Diff(double detectionRadius_mm) Parameters detectionRadius_mm double Radius for detecting differences EndPreserve() End Preserve section in optimzation process. [JsAce(\"EndPreserve()\")] public void EndPreserve() EndSelection(string, AnchorMode, IStepShift) End mark on current line for selection. public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the end of selection shift IStepShift Step shift to apply EndSession() Ends the current machining session. Not for end user. public void EndSession() ErrorMessage(string) Displays an error message in the message host. [JsAce(\"ErrorMessage($1message)\")] public void ErrorMessage(string message) Parameters message string The error message to display FixedPace(double, double) Creates a fixed machining motion resolution with specified parameters. [JsAce(\"FixedPace($1linearResolution_mm, $2rotaryResolution_deg)\")] public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters rotaryResolution_deg double Rotary resolution in degrees Returns FixedMachiningMotionResolution A new fixed machining motion resolution instance GetMillingStep(int) Retrieves a milling step at the specified index. [JsAce(Snippet = \"GetMillingStep($1\\\"stepIndex\\\")\")] public MachiningStep GetMillingStep(int stepIndex) Parameters stepIndex int Index of the milling step to retrieve Returns MachiningStep The milling step at the specified index GetStickMachiningToolObservationHeight_mm(int) Gets the observation height in millimeters for the specified stick machining tool. [JsAce(\"GetStickMachiningToolObservationHeight_mm($1toolId)\")] public double GetStickMachiningToolObservationHeight_mm(int toolId) Parameters toolId int The ID of the tool Returns double The observation height in millimeters GetUniformContourTrayShiftAngle_deg(int) Gets the shift angle in degrees for the uniform contour tray of the specified tool. [JsAce(\"GetUniformContourTrayShiftAngle_deg($1toolId)\")] public double GetUniformContourTrayShiftAngle_deg(int toolId) Parameters toolId int The ID of the tool Returns double The shift angle in degrees LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift) Create a line selection from begin to end mark. public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.LineBegin, IStepShift beginShift = null, AnchorMode endAnchorMode = AnchorMode.LineEnd, IStepShift endShift = null) Parameters key string Identifier key for the selection beginAnchorMode AnchorMode Mode for anchoring the beginning of selection beginShift IStepShift Step shift to apply at beginning endAnchorMode AnchorMode Mode for anchoring the end of selection endShift IStepShift Step shift to apply at end LoadCuttingParaByFile(string) Loads cutting parameters from a file. [JsAce(\"LoadCuttingParaByFile($1\\\"relFile\\\")\")] public void LoadCuttingParaByFile(string relFile) Parameters relFile string File path relative to BaseDirectory. Map(string, FileTimeSection, CycleSamplingMode?) Maps selection data to time section. public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShotUtil.CycleSamplingMode? cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters key string Identifier key for the selection fileTimeSection FileTimeSection File time section, or null to use the one associated with the key cycleSamplingMode StepTimeShotUtil.CycleSamplingMode? Cycle sampling mode Returns Task Task representing the asynchronous mapping operation MapByActualTime(string, CycleSamplingMode) Maps machining steps by actual time from a time shot file. [Obsolete] public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters timeShotRelFile string Relative path to the time shot file. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode. MapSeriesByCsvFile(string, CycleSamplingMode) Maps machining steps by actual time from a time shot csv file. [JsAce(\"MapSeriesByCsvFile($1timeShotRelFile)\")] public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters timeShotRelFile string Relative path to the time shot file. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode. MapSingleByCsvFile(string) Reads a CSV file and performs time-based interpolation to map data to milling steps. It is one (step) - one (embedded-data) mapping. [JsAce(Snippet = \"MapSingleByCsvFile($1\\\"csvFile\\\")\")] public void MapSingleByCsvFile(string csvFile) Parameters csvFile string Path to the CSV file relative to the base directory Message(string) Displays a message in the message host. [JsAce(\"Message($1message)\")] public void Message(string message) Parameters message string The message to display OptCallPreferFuncIndexDictionary() Gets the dictionary of preferred function index for NC optimization. [JsAce(\"OptCallPreferFuncIndexDictionary()\")] public Dictionary, double> OptCallPreferFuncIndexDictionary() Returns Dictionary, double> Dictionary mapping functions to their preference indexes. OptimizeToFiles(string) Optimizes NC files and saves results using the specified file template. [JsAce(Snippet = \"OptimizeToFiles(\\\"Output/Opt-[NcName]\\\")\", DocContentHtml = \"Optimize To Files by substitude template keywoard \\\"[NcName]\\\"\")] public void OptimizeToFiles(string relFileTemplate = \"Output/Opt-[NcName]\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder Pace() A pausable mark for the playing process. The function enables Pause() to take effect. [JsAce(\"Pace();\")] public void Pace() Remarks Waits for the player to signal the next pace. Pause() Pause Player [JsAce(DocContentHtml = \"Pause Player\")] public void Pause() PlayAct(IAct, IGetSentence, CancellationToken?) Plays an act with pacing control. [JsAce] public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct The act to play. sourceCommand IGetSentence The source command. cancellationToken CancellationToken? Cancellation token. PlayClTeleport(double, double, double, double, double, double) Plays a CL (cutter location) teleport operation. [JsAce] public void PlayClTeleport(double x, double y, double z, double i, double j, double k) Parameters x double X coordinate. y double Y coordinate. z double Z coordinate. i double I vector component. j double J vector component. k double K vector component. PlayCsvFile(string) Plays an Csv file with the specified relative path. [JsAce(\"PlayCsvFile($1\\\"csvFile\\\");\")] public void PlayCsvFile(string relFilePath) Parameters relFilePath string Relative path to the CSV file PlayNc(string, string) Plays NC code directly from a string, executing each action and pacing between them. [JsAce(Snippet = \"PlayNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Play NC. second parameter is the file name alternative shows in the log.\")] public void PlayNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs PlayNcFile(string) Plays an NC file with the specified relative path. [JsAce(\"PlayNcFile($1\\\"ncFile\\\");\")] public void PlayNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file PlayToolingTeleport(int) Plays a tooling teleport operation. [JsAce] public void PlayToolingTeleport(int toolId) Parameters toolId int The tool ID to teleport. PowerReset() Performs a controller power reset: every IPowerResettable dependency in the active NcDependencyList clears its volatile subset (e.g. Fanuc common volatile macro variables #100-#499). Persistent state is left intact. [JsAce(\"PowerReset();\")] public void PowerReset() Preserve() Preserve one line NC code in optimzation process. [JsAce(\"Preserve()\")] public void Preserve() ProgressMessage(string) Displays a progress message in the message host. [JsAce(\"ProgressMessage($1message)\")] public void ProgressMessage(string message) Parameters message string The progress message to display ReTrainMillingPara(SampleFlag, string, double) Re-trains milling parameters using the specified sample flag. [JsAce(\"ReTrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 0.1) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering ReadCsvByTimeInterpolation(string) Reads a CSV file and performs time-based interpolation to map data to milling steps. It is one (step) - one (embedded-data) mapping. [Obsolete] public void ReadCsvByTimeInterpolation(string csvFile) Parameters csvFile string Path to the CSV file relative to the base directory ReadRuntimeGeom(string) Reads runtime geometry from a file. [JsAce(\"ReadRuntimeGeom($1\\\"srcFile\\\")\")] public void ReadRuntimeGeom(string relFile) Parameters relFile string Relative path to the input file RegisterStepVariable(string, string, string, string, Func) Registers a step variable for tracking during execution. [JsAce(Snippet = \"RegisterStepVariable(\\\"$1key\\\",\\\"$2name\\\",\\\"$3unit\\\",\\\"$4formatString\\\",\\\"$5variableFunc\\\")\", DocContentHtml = \"

    Register Step Variable.

    \\\"unit\\\" is nullable

    \\\"formatString\\\" is nullable

    \")] public void RegisterStepVariable(string key, string name, string unit, string formatString, Func variableFunc = null) Parameters key string Unique key to identify the variable name string Human-readable name of the variable unit string Physical unit of the variable (can be null) formatString string Format string for displaying the variable (can be null) variableFunc Func Function to compute the variable value from a milling step (can be null) RegisterWriteSyntaxPieces(string) Registers a text writer so each executed SyntaxPiece is appended to relOutputFile under the machining project base directory for debugging. [JsAce(Snippet = \"RegisterWriteSyntaxPieces($1\\\"Cache/syntax-pieces-output.txt\\\")\")] public void RegisterWriteSyntaxPieces(string relOutputFile) Parameters relOutputFile string Relative path for the output log file. RegisterWriteSyntaxPiecesWithActs(string) Registers a writer that outputs each SyntaxPiece once, followed by its associated IAct entries (one-to-many). [JsAce(Snippet = \"RegisterWriteSyntaxPiecesWithActs($1\\\"Cache/syntax-pieces-acts-output.txt\\\")\")] public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile) Parameters relOutputFile string Output file path relative to BaseDirectory. RemoveFlyPiece() Removes any disconnected or “flying” pieces from the workpiece geometry. [JsAce] public void RemoveFlyPiece() Reset() Reset Player [JsAce(DocContentHtml = \"Reset Player\")] public void Reset() ResetRuntime() Clears internal buffers. [JsAce] public void ResetRuntime() RunNc(string, string) Runs NC code directly from a string. Not for end user with no programing skill. [JsAce(Snippet = \"RunNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Run NC. second parameter is the file name alternative shows in the log.\")] public IEnumerable RunNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs Returns IEnumerable Enumerable sequence of actions to be executed RunNcFile(string) Runs an NC file with the specified relative path. Not for end user with no programing skill. [JsAce(\"RunNcFile($1\\\"ncFile\\\");\")] public IEnumerable RunNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file Returns IEnumerable Enumerable sequence of actions to be executed ScaledFeedPerCycle(double) Gets a new feed per cycle machining motion resolution instance with the specified scale. [JsAce(\"ScaledFeedPerCycle($1scale)\")] public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale) Parameters scale double The scale factor for the resolution. Returns FeedPerCycleMachiningMotionResolution A new FeedPerCycleMachiningMotionResolution instance with the specified scale. ScanRuntimeGeomInfDefect() Scans the runtime geometry for defects. After scanning, the scanned defects will render in the workpiece. [JsAce] public bool? ScanRuntimeGeomInfDefect() Returns bool? True if defects are found, false otherwise, or null if the operation cannot be performed. SetAllSnapshotSyntaxEnabled(bool) Sets IsEnabled on every SnapshotSyntax reachable from the active SoftNcRunner's NcSyntaxList (top-level slots and inside BundleSyntax). No-op when SoftNcRunner is not the active runner. [JsAce(DocContentHtml = \"Enable or disable every SnapshotSyntax in the active SoftNcRunner pipeline at once.\")] public void SetAllSnapshotSyntaxEnabled(bool isEnabled) Parameters isEnabled bool SetNcResolutionFeedPerCycle() Sets NC resolution to feed per cycle mode. public void SetNcResolutionFeedPerCycle() SetNcResolutionFeedPerTooth() Sets NC resolution to feed per tooth mode. public void SetNcResolutionFeedPerTooth() SetNcResolutionFixed(double, double) Sets NC resolution to fixed mode with specified resolution values. public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters. rotaryResolution_deg double Rotary resolution in degrees. SetStickMachiningToolObservationHeight_mm(int, double) Sets the observation height in millimeters for the specified stick machining tool. [JsAce(\"SetStickMachiningToolObservationHeight_mm($1toolId,$2height_mm)\")] public void SetStickMachiningToolObservationHeight_mm(int toolId, double height) Parameters toolId int The ID of the tool height double The observation height in millimeters to set SetUniformContourTrayShiftAngle_deg(int, double) Sets the shift angle in degrees for the uniform contour tray of the specified tool. [JsAce(\"SetUniformContourTrayShiftAngle_deg($1toolId,$2angle_deg)\")] public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg) Parameters toolId int The ID of the tool angle_deg double The shift angle in degrees to set ShiftDistance_mm(double) Creates a distance shift object representing the specified distance in millimeters. public DistanceShift ShiftDistance_mm(double distanceShift_mm) Parameters distanceShift_mm double Distance shift in millimeters Returns DistanceShift Distance shift object ShiftTime_s(double) Creates a time shift object representing the specified time in seconds. public TimeShift ShiftTime_s(double seconds) Parameters seconds double Time in seconds Returns TimeShift Time shift object TrainMillingPara(SampleFlag, string, double, ICuttingPara) Trains milling parameters using the specified sample flag. [JsAce(\"TrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 0.1, ICuttingPara paraTemplate = null) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering paraTemplate ICuttingPara Optional parameter template for cutting operations. WarningMessage(string) Displays a warning message in the message host. [JsAce(\"WarningMessage($1message)\")] public void WarningMessage(string message) Parameters message string The warning message to display WriteRuntimeGeom(string) Writes the current runtime geometry to a file. [JsAce(\"WriteRuntimeGeom($1\\\"dstFile\\\")\")] public void WriteRuntimeGeom(string relFile) Parameters relFile string Relative path to the output file WriteRuntimeGeomToObj(string, double) Writes the current runtime geometry to a Wavefront OBJ file with per-vertex RGB. [JsAce(\"WriteRuntimeGeomToObj($1\\\"dstFile\\\",$2resolution_mm)\")] public void WriteRuntimeGeomToObj(string relFile, double resolution_mm = 0) Parameters relFile string Relative path to the output OBJ file resolution_mm double Resolution in millimeters (0 for default) WriteRuntimeGeomToPly(string, double) Writes the current runtime geometry to a binary PLY file with per-vertex RGB. [JsAce(\"WriteRuntimeGeomToPly($1\\\"dstFile\\\",$2resolution_mm)\")] public void WriteRuntimeGeomToPly(string relFile, double resolution_mm = 0) Parameters relFile string Relative path to the output PLY file resolution_mm double Resolution in millimeters (0 for default) WriteRuntimeGeomToStl(string, double) Writes the current runtime geometry to an STL file. [JsAce(\"WriteRuntimeGeomToStl($1\\\"dstFile\\\",$2resolution_mm)\")] public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0) Parameters relFile string Relative path to the output STL file resolution_mm double Resolution in millimeters (0 for default) WriteShotFiles(double, string) Writes time-series data to shot files with the specified resolution period (alternative parameter order). public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate) Parameters resolutionPeroid_ms double Resolution period in milliseconds relFileTemplate string Template for output file path, can include [NcName] placeholder WriteShotFiles(string, double) Writes time-series data to shot files with the specified resolution period. [JsAce(Snippet = \"WriteShotFiles(\\\"Output/[NcName].shot.csv\\\",resolutionPeroid_ms)\", DocContentHtml = \"Write time series data by resolutionPeroid_ms\")] public void WriteShotFiles(string relFileTemplate = \"Output/[NcName].shot.csv\", double resolutionPeroid_ms = 1) Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder resolutionPeroid_ms double Resolution period in milliseconds WriteStepFiles(string) Writes step-series data to files with the specified file template. [JsAce(Snippet = \"WriteStepFiles(\\\"Output/[NcName].step.csv\\\")\", DocContentHtml = \"Write step series data.\")] public void WriteStepFiles(string relFileTemplate = \"Output/[NcName].step.csv\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder Events MachiningStepBuilt Session-scoped event triggered when a machining step is built. Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). For app-lifetime event, use MachiningStepBuilt instead. [Obsolete(\"Use SessionStepBuilt instead.\")] public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate MachiningStepSelected Session-scoped event triggered when a machining step is selected. Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). [Obsolete(\"Use SessionStepSelected instead.\")] public event Action MachiningStepSelected Event Type Action SessionSourcedActEntry Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution. Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). [JsAce(Snippet = \"SessionSourcedActEntry+=($1entry)=>{$2Command};\", DocContentHtml = \"Session-scoped event triggered for each SourcedActEntry. entry.SentenceSource is the source sentence; entry.Act is the associated act (may be null).\")] public event Action SessionSourcedActEntry Event Type Action SessionStepBuilt Session-scoped event triggered when a machining step is built. Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). For app-lifetime event, use MachiningStepBuilt instead. [JsAce(Snippet = \"SessionStepBuilt+=($1preStep,$2curStep)=>{$3Command};\", DocContentHtml = \"Session-scoped step built event. preStep is the Previous Milling Step; curStep is the Current Milling Step. preStep is null if no previous step existed.\")] public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate SessionStepSelected Session-scoped event triggered when a machining step is selected. Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). [JsAce(Snippet = \"SessionStepSelected+=($1millingStep)=>{$2Command};\")] public event Action SessionStepSelected Event Type Action SessionSyntaxPieceRan Session-scoped event triggered when a syntax piece has been executed. Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). [JsAce(Snippet = \"SessionSyntaxPieceRan+=($1syntaxPiece)=>{$2Command};\", DocContentHtml = \"Session-scoped event triggered after each SyntaxPiece is executed. syntaxPiece may be null if the source command is not a SyntaxPiece.\")] public event Action SessionSyntaxPieceRan Event Type Action SyntaxPieceRan Session-scoped event triggered when a syntax piece has been executed. Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). [Obsolete(\"Use SessionSyntaxPieceRan instead.\")] public event Action SyntaxPieceRan Event Type Action" + "summary": "Class SessionShell Namespace Hi.MachiningProcs Assembly HiNc.dll End-user-facing facade for a machining session: aggregates session lifecycle, NC playback, optimization, geometry I/O, and scripting infrastructure into a single delegation surface. Used as the C# script globals object and as the concrete target of ISessionCommand implementations. public class SessionShell : ISessionShell Inheritance object SessionShell Implements ISessionShell 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 DefaultScriptOptions The default Roslyn ScriptOptions for session scripts — references the SessionShell-domain assemblies and imports. Used as the initial value of the project-level ScriptOptions. public static readonly ScriptOptions DefaultScriptOptions Field Value ScriptOptions Properties DefaultParaTemplateDimension Gets or sets the parameter template dimension (2D or 3D). [JsAce] public int DefaultParaTemplateDimension { get; set; } Property Value int DiffVisualRadius_mm Gets or sets the visual radius in millimeters for difference visualization. Controls the radius used for highlighting differences between workpiece states. [JsAce] public double DiffVisualRadius_mm { get; set; } Property Value double DispCacheMb Gets or sets the display cache size in megabytes. [Obsolete] public long DispCacheMb { get; set; } Property Value long DispCache_Mb Gets or sets the display cache size in megabytes. [JsAce] public long DispCache_Mb { get; set; } Property Value long EmbeddedLogMode Gets or sets the embedded log mode for NC optimization. [JsAce] public static NcOptimizationEmbeddedLogMode EmbeddedLogMode { get; set; } Property Value NcOptimizationEmbeddedLogMode EnableCollisionDetection Gets or sets whether collision detection is enabled. [JsAce(DocContentHtml = \"Enable Collision Detection.\")] public bool EnableCollisionDetection { get; set; } Property Value bool EnableIndividualStepAdjustmentLog Gets or sets whether to enable individual step adjustment logging. The setter drives both optimization pipelines: the legacy HardNc Hi.NcOpt.NcOptProc.EnableIndividualStepAdjustmentLog and the SoftNc Hi.NcOpt.StepFeedSolver.EnableStepAdjustmentLog statics are assigned together; the getter reads the legacy static (the pair only diverges when a static is assigned directly, bypassing this proxy). [JsAce] public static bool EnableIndividualStepAdjustmentLog { get; set; } Property Value bool EnableMapOnSelectionEnd Gets or sets whether to automatically map selections when they end. [JsAce] public bool EnableMapOnSelectionEnd { get; set; } Property Value bool EnableMotionDependentMachiningResolution Gets or sets whether motion-dependent machining resolution is enabled. [JsAce] public bool EnableMotionDependentMachiningResolution { get; set; } Property Value bool EnableMzLeverWeightingOnTraining Gets or sets whether Mz lever weighting is enabled on training. [Obsolete] public bool EnableMzLeverWeightingOnTraining { get; set; } Property Value bool EnableNativeMillingPhysics Gets or sets whether the physics runs on the native (core.dll) kernels. Default is true, and in shipping builds the native kernel is the only physics implementation — setting this to false throws unless the non-shipping managed reference assembly is registered (dev/test hosts only). [JsAce(DocContentHtml = \"Run the physics on the native kernels (the only implementation in shipping builds).\")] public bool EnableNativeMillingPhysics { get; set; } Property Value bool EnablePauseOnCollision Gets or sets whether to pause execution when a collision is detected. This property only has an effect if collision detection is enabled. [Obsolete] public bool EnablePauseOnCollision { get; set; } Property Value bool EnablePauseOnFailure Gets or sets whether to pause on failure during execution. [JsAce(DocContentHtml = \"Enable Pause On Failure.\")] public bool EnablePauseOnFailure { get; set; } Property Value bool EnablePhysics Gets or sets whether milling force evaluation is enabled. [JsAce(DocContentHtml = \"Enable milling force evaluation.\")] public bool EnablePhysics { get; set; } Property Value bool EnableSampleNormalization [Obsolete] public bool EnableSampleNormalization { get; set; } Property Value bool Remarks The input normalization deminish the quantity effect. The R-value decrease from 99% to 70% in moment training case from NKUST\\nkust2024-milling-para-training-plan\\workingx.hincproj Don't apply this option. EnableSoftNcRunner Switches between SoftNcRunner and the legacy HardNcRunner. Default true; set false to fall back to the legacy runner (e.g. for NC optimization, which still reads NcLines). Will be removed when HardNcRunner is fully replaced. [JsAce(DocContentHtml = \"Enable SoftNcRunner (default) instead of legacy HardNcRunner.\")] public bool EnableSoftNcRunner { get; set; } Property Value bool EnableWearEffect Gets or sets whether tool wear effects are enabled in simulation. [JsAce] public bool EnableWearEffect { get; set; } Property Value bool FeedPerCycle Gets a new feed per cycle machining motion resolution instance. [JsAce] public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; } Property Value FeedPerCycleMachiningMotionResolution FeedPerTooth Gets a new feed per tooth machining motion resolution instance. [JsAce] public FeedPerToothMachiningMotionResolution FeedPerTooth { get; } Property Value FeedPerToothMachiningMotionResolution Fixture Gets or sets the fixture. [JsAce] public Fixture Fixture { get; set; } Property Value Fixture Global [JsAce(\"Global[$1key]\")] public Dictionary Global { get; } Property Value Dictionary InitSpindleTemperature_C Gets or sets the initial spindle temperature in degrees Celsius. [JsAce(DocContentHtml = \"Spindle Temperature on initialization.\")] public double InitSpindleTemperature_C { get; set; } Property Value double JsAceCompletionProfileJsonArray Internal used. public static JsonArray JsAceCompletionProfileJsonArray { get; } Property Value JsonArray MachiningMotionResolution Gets or sets the machining motion resolution. [JsAce] public IMachiningMotionResolution MachiningMotionResolution { get; set; } Property Value IMachiningMotionResolution MachiningResolution Gets or sets the machining resolution in millimeters. [JsAce] [Obsolete(\"Use MachiningResolution_mm instead.\")] public double MachiningResolution { get; set; } Property Value double MachiningResolution_mm Gets or sets the machining resolution in millimeters. [JsAce] public double MachiningResolution_mm { get; set; } Property Value double MachiningSession public MachiningSession MachiningSession { get; } Property Value MachiningSession MapTask Task tracking the status of mapping operations. public Task MapTask { get; set; } Property Value Task MappingAnchorDateTime Project-scoped anchor that converts an absolute-time mapping window / sensor stream into a relative timecode. Delegates to MappingAnchorDateTime; auto-set from the first controller instant on PlayCsvFile(string), or set here. [JsAce] public DateTime? MappingAnchorDateTime { get; set; } Property Value DateTime? MillingCycleDivisionNum Gets or sets the number of angular divisions per spindle revolution for milling force calculation. The default (36) is intended for normal simulation — a finer division does not improve force playback and only slows it down. Only TrainMillingPara(SampleFlag, string, double, ICuttingPara) benefits from a finer division (e.g. 180): set it in the training script before the simulation run the training consumes. The value is process-wide (backed by RotationDivisionNum): it is not saved into the project and survives ResetRuntime() and project switches, so set it back (or restart the instance) after training to keep normal simulation fast. [JsAce] public static int MillingCycleDivisionNum { get; set; } Property Value int MillingForceCycleDivisionNum Gets or sets the number of divisions per cycle for milling force calculation. This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double, ICuttingPara) is intended to be used. [JsAce(DocContentHtml = \"Obsoleted. Use MillingCycleDivisionNum instead.\")] [Obsolete(\"Use MillingCycleDivisionNum instead.\")] public static int MillingForceCycleDivisionNum { get; set; } Property Value int NcOptOption Gets or sets the NC optimization options. [JsAce] public NcOptOption NcOptOption { get; set; } Property Value NcOptOption OptEnableDepthCompensation Enables or disables depth compensation during optimization. [JsAce] public bool OptEnableDepthCompensation { get; set; } Property Value bool OptEnableFeedrate Gets or sets whether to enable feed rate optimization in NC optimization. [JsAce] public bool OptEnableFeedrate { get; set; } Property Value bool OptEnableForwardCompensation Enables or disables forward compensation during optimization. [JsAce] public bool OptEnableForwardCompensation { get; set; } Property Value bool OptEnableInterpolation Enables or disables reinterpolation for optimization. [JsAce] public bool OptEnableInterpolation { get; set; } Property Value bool OptEnableSideCompensation Enables or disables side compensation during optimization. [JsAce] public bool OptEnableSideCompensation { get; set; } Property Value bool OptExtendedPostDistance_mm Gets or sets the extended post-distance in millimeters for NC optimization. This is the distance after the current segment that will be considered for optimization. [JsAce] public double OptExtendedPostDistance_mm { get; set; } Property Value double OptExtendedPreDistance_mm Gets or sets the extended pre-distance in millimeters for NC optimization. This is the distance before the current segment that will be considered for optimization. [JsAce] public double OptExtendedPreDistance_mm { get; set; } Property Value double OptFeedrateAssignmentRatio Gets or sets the feedrate assignment ratio for optimization. If the feedrate change exceeds this ratio, the feedrate in the NC line will be updated. [JsAce] public double OptFeedrateAssignmentRatio { get; set; } Property Value double OptMaxAcceleration_mmds2 Maximum acceleration in mm/s² during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxAcceleration_mmds2 { get; set; } Property Value double OptMaxFeedPerTooth_mm Gets or sets the maximum feed per tooth in millimeters for optimization. [JsAce] public double OptMaxFeedPerTooth_mm { get; set; } Property Value double OptMaxFeedrate_mmdmin Maximum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMaxFeedrate_mmdmin { get; set; } Property Value double OptMaxJerk_mmds3 Maximum jerk in mm/s³ during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxJerk_mmds3 { get; set; } Property Value double OptMinFeedPerTooth_mm Gets or sets the minimum feed per tooth in millimeters for optimization. [JsAce] public double OptMinFeedPerTooth_mm { get; set; } Property Value double OptMinFeedrate_mmdmin Minimum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMinFeedrate_mmdmin { get; set; } Property Value double OptPreferedForce_N Preferred force in N for optimization. [JsAce] public double OptPreferedForce_N { get; set; } Property Value double OptRapidFeed_mmdmin Rapid feed rate in mm/min for non-cutting movements during optimization. [JsAce] public double OptRapidFeed_mmdmin { get; set; } Property Value double OptSpindlePowerSafetyFactor Safety factor for MAX spindle power during optimization. [JsAce] public double OptSpindlePowerSafetyFactor { get; set; } Property Value double OptSpindlePowerUtilizationFactor Utilization factor for MAX spindle power during optimization. It is the reciprocal of the spindle power safety factor. [JsAce] public double OptSpindlePowerUtilizationFactor { get; set; } Property Value double OptSpindleTorqueSafetyFactor Gets or sets the MAX spindle torque safety factor for NC optimization. [JsAce] public double OptSpindleTorqueSafetyFactor { get; set; } Property Value double OptSpindleTorqueUtilizationFactor Utilization factor for MAX spindle torque during optimization. It is the reciprocal of the spindle torque safety factor. [JsAce] public double OptSpindleTorqueUtilizationFactor { get; set; } Property Value double OptThermalYieldSafetyFactor Safety factor for spindle torque during optimization. [JsAce] public double OptThermalYieldSafetyFactor { get; set; } Property Value double OptThermalYieldUtilizationFactor Utilization factor for thermal yield during optimization. It is the reciprocal of the thermal yield safety factor. [JsAce] public double OptThermalYieldUtilizationFactor { get; set; } Property Value double OptYieldingSafetyFactor Safety factor for yielding during optimization. [JsAce] public double OptYieldingSafetyFactor { get; set; } Property Value double OptYieldingUtilizationFactor Utilization factor for yielding during optimization. It is the reciprocal of the yielding safety factor. [JsAce] public double OptYieldingUtilizationFactor { get; set; } Property Value double ScriptOptions ScriptOptions. public ScriptOptions ScriptOptions { get; set; } Property Value ScriptOptions ShellProgress Session-level routine / lifecycle message sink on the IMessage channel (cache reset, file progress, session start/done). Owned by MachiningSession (truly session-scoped); exposed here for scripts and the session facade. [JsAce] public ShellProgress ShellProgress { get; } Property Value ShellProgress StepCount Gets the total number of milling steps. [JsAce] public int StepCount { get; } Property Value int StepDiagnosticProgress Step-anchored message sink on the IMessage channel (see StepDiagnosticProgress). [JsAce] public StepDiagnosticProgress StepDiagnosticProgress { get; } Property Value StepDiagnosticProgress Workpiece Gets or sets the workpiece. [JsAce] public Workpiece Workpiece { get; set; } Property Value Workpiece Methods AddTimeDataByFile(string, string, double, double) Adds time-based data from a file to the time mapping dictionary with specified time bounds in seconds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] public bool AddTimeDataByFile(string key, string relFile, double beginTime, double endTime) Parameters key string Key to identify the data relFile string Relative path to the data file beginTime double Beginning time in seconds endTime double Ending time in seconds Returns bool True if the data was successfully added, false otherwise AddTimeDataByFile(string, string, string, string) Adds time-based data from a file to the time mapping dictionary with specified time bounds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] public bool AddTimeDataByFile(string key, string relFile, string beginTimeText, string endTimeText) Parameters key string Key to identify the data relFile string Relative path to the data file beginTimeText string Beginning time as text (seconds or TimeSpan format) endTimeText string Ending time as text (seconds or TimeSpan format) Returns bool True if the data was successfully added, false otherwise AdjustedFeedPerCycle(double, double) Gets a new feed per cycle machining motion resolution instance with adjusted scale and minimum linear resolution. [JsAce(\"AdjustedFeedPerCycle($1scale,$2minLinearResolution_mm)\")] public FeedPerCycleMachiningMotionResolution AdjustedFeedPerCycle(double scale, double minLinearResolution_mm = 0) Parameters scale double The scale factor for the resolution. minLinearResolution_mm double The minimum linear resolution in millimeters. Default is 0. Returns FeedPerCycleMachiningMotionResolution A new FeedPerCycleMachiningMotionResolution instance with the specified parameters. AlignWorkpieceProgramZeroToIso(string) Places workpiece + fixture so that ProgramZeroAnchor coincides with the world position the spindle reaches when the machine coordinate equals isoCoordId's entry (G54/G55/...). The buckle anchors must already be set per the general rule (typically by the project XML): FixtureBuckle at the bottom center of the workpiece geom, WorkpieceBuckle at the top center of the fixture geom, ProgramZeroAnchor at the workpiece-geom top center (or any chosen tip). Only GeomToTableTransformer is mutated. Delegates topology math to AlignWorkpieceProgramZeroToIso(IMachiningEquipment, Vec3d). [JsAce] public void AlignWorkpieceProgramZeroToIso(string isoCoordId) Parameters isoCoordId string ID into the IsoCoordinateTable, e.g. “G54”. AppendMessagesToFile(string, params string[]) Appends messages to a file, optionally filtered by tags. [JsAce(\"AppendMessagesToFile(\\\"dstRelFile\\\",flags)\")] public void AppendMessagesToFile(string dstRelFile, params string[] flags) Parameters dstRelFile string Destination relative file path flags string[] Optional flags to filter messages by tags BeginPreserve() Begin Preserve section in optimzation process. [JsAce(\"BeginPreserve()\")] public void BeginPreserve() BeginSelection(string, AnchorMode, IStepShift) Begin mark on current line. milling step() has not triggered yet. public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBegin, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the beginning of selection shift IStepShift Step shift to apply BeginSession() Begins a new machining session. Not for end user. public void BeginSession() ClearDefectDisplayee() Clears the defect displayee from the workpiece. [JsAce] public void ClearDefectDisplayee() ClearTimeMappingData() Clears all time mapping data. [JsAce] public void ClearTimeMappingData() ConvertClToNcFiles(string) Converts the CLSF play of the current session into Fanuc NC files (writeback synthesis): the MSYS frame becomes a G68.2 tilted working plane, tool posture becomes G43.4 RTCP with rotary words, motions become G00/G01/G02/G03. Play the CL file on an XYZABC machine chain first, then convert. [JsAce(Snippet = \"ConvertClToNcFiles(\\\"Output/[NcName].nc\\\")\", DocContentHtml = \"Convert the played CLSF into Fanuc NC files by substitute template keyword \\\"[NcName]\\\"\")] public void ConvertClToNcFiles(string relNcFileTemplate = \"Output/[NcName].nc\") Parameters relNcFileTemplate string Output path template; [NcName] is replaced by the source file name. Diff(double) Performs a difference analysis on the workpiece geometry to detect variations. [JsAce(\"Diff($1detectionRadius_mm)\")] public void Diff(double detectionRadius_mm) Parameters detectionRadius_mm double Radius for detecting differences EndPreserve() End Preserve section in optimzation process. [JsAce(\"EndPreserve()\")] public void EndPreserve() EndSelection(string, AnchorMode, IStepShift) End mark on current line for selection. public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the end of selection shift IStepShift Step shift to apply EndSession() Ends the current machining session. Not for end user. public void EndSession() ErrorMessage(string) Displays an error message in the message host. [JsAce(\"ErrorMessage($1message)\")] public void ErrorMessage(string message) Parameters message string The error message to display ExportMeshedGeomToObj(string, double) Exports the current meshed geometry to a Wavefront OBJ file with per-vertex RGB. [JsAce(\"ExportMeshedGeomToObj($1\\\"dstFile\\\",$2resolution_mm)\")] public void ExportMeshedGeomToObj(string relFile, double resolution_mm = 0) Parameters relFile string Relative path to the output OBJ file resolution_mm double Resolution in millimeters (0 for default) ExportMeshedGeomToPly(string, double) Exports the current meshed geometry to a binary PLY file with per-vertex RGB. [JsAce(\"ExportMeshedGeomToPly($1\\\"dstFile\\\",$2resolution_mm)\")] public void ExportMeshedGeomToPly(string relFile, double resolution_mm = 0) Parameters relFile string Relative path to the output PLY file resolution_mm double Resolution in millimeters (0 for default) ExportMeshedGeomToStl(string, double) Exports the current meshed geometry to an STL file. [JsAce(\"ExportMeshedGeomToStl($1\\\"dstFile\\\",$2resolution_mm)\")] public void ExportMeshedGeomToStl(string relFile, double resolution_mm = 0) Parameters relFile string Relative path to the output STL file resolution_mm double Resolution in millimeters (0 for default) ExportRuntimeGeomToObj(string, double) Legacy script alias of ExportMeshedGeomToObj(string, double); kept so old player scripts keep working. [Obsolete(\"Legacy alias; use ExportMeshedGeomToObj instead.\")] public void ExportRuntimeGeomToObj(string relFile, double resolution_mm = 0) Parameters relFile string resolution_mm double ExportRuntimeGeomToPly(string, double) Legacy script alias of ExportMeshedGeomToPly(string, double); kept so old player scripts keep working. [Obsolete(\"Legacy alias; use ExportMeshedGeomToPly instead.\")] public void ExportRuntimeGeomToPly(string relFile, double resolution_mm = 0) Parameters relFile string resolution_mm double ExportRuntimeGeomToStl(string, double) Legacy script alias of ExportMeshedGeomToStl(string, double); kept so old player scripts keep working. [Obsolete(\"Legacy alias; use ExportMeshedGeomToStl instead.\")] public void ExportRuntimeGeomToStl(string relFile, double resolution_mm = 0) Parameters relFile string resolution_mm double FixedPace(double, double) Creates a fixed machining motion resolution with specified parameters. [JsAce(\"FixedPace($1linearResolution_mm, $2rotaryResolution_deg)\")] public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters rotaryResolution_deg double Rotary resolution in degrees Returns FixedMachiningMotionResolution A new fixed machining motion resolution instance GetMillingStep(int) Retrieves a milling step at the specified index. [JsAce(Snippet = \"GetMillingStep($1\\\"stepIndex\\\")\")] public MachiningStep GetMillingStep(int stepIndex) Parameters stepIndex int Index of the milling step to retrieve Returns MachiningStep The milling step at the specified index GetStickMachiningToolObservationHeight_mm(int) Gets the observation height in millimeters for the specified stick machining tool. [JsAce(\"GetStickMachiningToolObservationHeight_mm($1toolId)\")] public double GetStickMachiningToolObservationHeight_mm(int toolId) Parameters toolId int The ID of the tool Returns double The observation height in millimeters GetUniformFlutingShiftAngle_deg(int) Gets the shift angle in degrees for the uniform fluting of the specified tool, that is, for a cutter whose flutes all share one baseline flute contour. [JsAce(\"GetUniformFlutingShiftAngle_deg($1toolId)\")] public double GetUniformFlutingShiftAngle_deg(int toolId) Parameters toolId int The ID of the tool Returns double The shift angle in degrees LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift) Create a line selection from begin to end mark. public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.LineBegin, IStepShift beginShift = null, AnchorMode endAnchorMode = AnchorMode.LineEnd, IStepShift endShift = null) Parameters key string Identifier key for the selection beginAnchorMode AnchorMode Mode for anchoring the beginning of selection beginShift IStepShift Step shift to apply at beginning endAnchorMode AnchorMode Mode for anchoring the end of selection endShift IStepShift Step shift to apply at end LoadCuttingParaByFile(string) Loads cutting parameters from a file. [JsAce(\"LoadCuttingParaByFile($1\\\"relFile\\\")\")] public void LoadCuttingParaByFile(string relFile) Parameters relFile string File path relative to BaseDirectory. Map(string, IFileTimeSection, CycleSamplingMode?) Maps selection data to time section. public Task Map(string key, IFileTimeSection fileTimeSection = null, StepTimeShotUtil.CycleSamplingMode? cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters key string Identifier key for the selection fileTimeSection IFileTimeSection File time section, or null to use the one associated with the key cycleSamplingMode StepTimeShotUtil.CycleSamplingMode? Cycle sampling mode Returns Task Task representing the asynchronous mapping operation MapByActualTime(string, CycleSamplingMode) Maps machining steps by actual time from a time shot file. [Obsolete] public void MapByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters timeShotRelFile string Relative path to the time shot file. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode. MapSeriesByCsvFile(string, CycleSamplingMode) Maps machining steps by actual time from a time shot csv file. [JsAce(\"MapSeriesByCsvFile($1timeShotRelFile)\")] public void MapSeriesByCsvFile(string timeShotRelFile, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters timeShotRelFile string Relative path to the time shot file. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode. Remarks cycleSamplingMode sets how much sensor data each step is paired with. The window is anchored at the step's end time and runs forward for one cycle period, so a step is always regressed against samples its neighbours produced. While the cut is steady that costs nothing: a neighbour cutting the same arc at the same chip load produces, at a given rotation angle, the force this step would have produced, so the borrowed rows are extra samples rather than extra error. The pairing turns into a systematic bias only where the cutter-workpiece engagement changes across the window — cutter entry, pass exit, corners, depth changes. Restricting training to the steady part of the cut is therefore the largest single accuracy lever, and once the transient is out the window choice stops mattering: on the D8 2-flute Al6061-T6 case the two modes differ by 2.2 percentage points over the whole path (Fc error at feed-per-tooth 0.2: −9.3 % for SpindleCycle versus −7.1 % for FluteCycle) but by 0.06 over the steady part alone, where both reach −3.3 % / −3.2 % at R 98.5 %. Keep the default and its larger sample count; on a single-flute cutter the two modes coincide anyway. Gaps in the data (an acquisition dropout, or rows carved out to keep the steady section only) are handled: a step whose window contains no measured row is excluded from the mapping, and one Map-ShotGap--StepsSkipped warning carries the count. A window-edge row is only interpolated when its bracketing rows span at most two spindle revolutions — farther rows sit across a gap and no edge row is fabricated from them. MapSingleByCsvFile(string) Reads a CSV file and performs time-based interpolation to map data to milling steps. It is one (step) - one (embedded-data) mapping. [JsAce(Snippet = \"MapSingleByCsvFile($1\\\"csvFile\\\")\")] public void MapSingleByCsvFile(string csvFile) Parameters csvFile string Path to the CSV file relative to the base directory Message(string) Displays a message in the message host. [JsAce(\"Message($1message)\")] public void Message(string message) Parameters message string The message to display OptCallPreferFuncIndexDictionary() Gets the dictionary of preferred function index for NC optimization. [JsAce(\"OptCallPreferFuncIndexDictionary()\")] public Dictionary, double> OptCallPreferFuncIndexDictionary() Returns Dictionary, double> Dictionary mapping functions to their preference indexes. OptimizeToFiles(string) Optimizes NC files and saves results using the specified file template. Routing rule: when EnableSoftNcRunner is on and the session holds played SoftNc SyntaxPieceLayers (non-empty), the SoftNc pipeline (OptimizeNcFiles(string, string, ICuttingPara, IProgress, CancellationToken, Func, Action) / Hi.NcOpt.SoftNcOptProc) is used; otherwise the legacy HardNc OptimizeToFiles(ICuttingPara, MachiningSession, LinkedList, HardNcEnv, MachiningToolHouse, ClStrip, string, IProgress, CancellationToken, string) path runs unchanged. Both paths first clear every cutter's MillingCutterOptLimit cache. [JsAce(Snippet = \"OptimizeToFiles(\\\"Output/Opt-[NcName]\\\")\", DocContentHtml = \"Optimize To Files by substitude template keywoard \\\"[NcName]\\\"\")] public void OptimizeToFiles(string relFileTemplate = \"Output/Opt-[NcName]\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder Pace() A pausable mark for the playing process. The function enables Pause() to take effect. [JsAce(\"Pace();\")] public void Pace() Remarks Waits for the player to signal the next pace. Pause() Pause Player [JsAce(DocContentHtml = \"Pause Player\")] public void Pause() PlayAct(IAct, ISentenceCarrier, CancellationToken?) Plays an act with pacing control. [JsAce] public void PlayAct(IAct act, ISentenceCarrier sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct The act to play. sourceCommand ISentenceCarrier The source command. cancellationToken CancellationToken? Cancellation token. PlayBrandNcFile(string) Plays a famous-brand NC code file with the specified relative path (no kind dispatch — always the brand runner). [JsAce(\"PlayBrandNcFile($1\\\"ncFile\\\");\")] public void PlayBrandNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file PlayClFile(string) Plays an NX-CL (CLSF) file with the specified relative path. [JsAce(\"PlayClFile($1\\\"clFile\\\");\")] public void PlayClFile(string relFilePath) Parameters relFilePath string Relative path to the CLSF file PlayClTeleport(double, double, double, double, double, double) Plays a CL (cutter location) teleport operation. [JsAce] public void PlayClTeleport(double x, double y, double z, double i, double j, double k) Parameters x double X coordinate. y double Y coordinate. z double Z coordinate. i double I vector component. j double J vector component. k double K vector component. PlayCsvFile(string) Plays an Csv file with the specified relative path. [JsAce(\"PlayCsvFile($1\\\"csvFile\\\");\")] public void PlayCsvFile(string relFilePath) Parameters relFilePath string Relative path to the CSV file PlayNc(string, string) Plays NC code directly from a string, executing each action and pacing between them. [JsAce(Snippet = \"PlayNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Play NC. second parameter is the file name alternative shows in the log.\")] public void PlayNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs PlayNcFile(string, NcKind) Plays an NC program file with the specified relative path, the runner picked by kind (Auto = by file extension: .cl/.cls/.clsf play as CL, .csv as CSV, anything else as brand NC — so existing scripts keep their behavior). [JsAce(\"PlayNcFile($1\\\"ncFile\\\");\")] public void PlayNcFile(string relNcFilePath, NcKind kind = NcKind.Auto) Parameters relNcFilePath string Relative path to the NC program file kind NcKind Which runner plays the file; Auto detects by extension. PlayToolingTeleport(int) Plays a tooling teleport operation. [JsAce] public void PlayToolingTeleport(int toolId) Parameters toolId int The tool ID to teleport. PowerReset() Performs a controller power reset: every IPowerResettable dependency in the active NcDependencyList clears its volatile subset (e.g. Fanuc common volatile macro variables #100-#499). Persistent state is left intact. [JsAce(\"PowerReset();\")] public void PowerReset() Preserve() Preserve one line NC code in optimzation process. [JsAce(\"Preserve()\")] public void Preserve() ProgressMessage(string) Displays a progress message in the message host. [JsAce(\"ProgressMessage($1message)\")] public void ProgressMessage(string message) Parameters message string The progress message to display ReTrainMillingPara(SampleFlag, string, double) Re-trains milling parameters using the specified sample flag. [JsAce(\"ReTrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 0.1) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering ReadCsvByTimeInterpolation(string) Reads a CSV file and performs time-based interpolation to map data to milling steps. It is one (step) - one (embedded-data) mapping. [Obsolete] public void ReadCsvByTimeInterpolation(string csvFile) Parameters csvFile string Path to the CSV file relative to the base directory ReadMeshedGeom(string) Reads meshed geometry from a file. [JsAce(\"ReadMeshedGeom($1\\\"srcFile\\\")\")] public void ReadMeshedGeom(string relFile) Parameters relFile string Relative path to the input file ReadRuntimeGeom(string) Legacy script alias of ReadMeshedGeom(string); kept so old player scripts keep working. [Obsolete(\"Legacy alias; use ReadMeshedGeom instead.\")] public void ReadRuntimeGeom(string relFile) Parameters relFile string RegisterStepVariable(string, string, string, string, Func) Registers a step variable for tracking during execution. [JsAce(Snippet = \"RegisterStepVariable(\\\"$1key\\\",\\\"$2name\\\",\\\"$3unit\\\",\\\"$4formatString\\\",\\\"$5variableFunc\\\")\", DocContentHtml = \"

    Register Step Variable.

    \\\"unit\\\" is nullable

    \\\"formatString\\\" is nullable

    \")] public void RegisterStepVariable(string key, string name, string unit, string formatString, Func variableFunc = null) Parameters key string Unique key to identify the variable name string Human-readable name of the variable unit string Physical unit of the variable (can be null) formatString string Format string for displaying the variable (can be null) variableFunc Func Function to compute the variable value from a milling step (can be null) RegisterWriteSyntaxPieces(string) Registers a text writer so each executed SyntaxPiece is appended to relOutputFile under the machining project base directory for debugging. [JsAce(Snippet = \"RegisterWriteSyntaxPieces($1\\\"Cache/syntax-pieces-output.txt\\\")\")] public void RegisterWriteSyntaxPieces(string relOutputFile) Parameters relOutputFile string Relative path for the output log file. RegisterWriteSyntaxPiecesWithActs(string) Registers a writer that outputs each SyntaxPiece once, followed by its associated IAct entries (one-to-many). [JsAce(Snippet = \"RegisterWriteSyntaxPiecesWithActs($1\\\"Cache/syntax-pieces-acts-output.txt\\\")\")] public void RegisterWriteSyntaxPiecesWithActs(string relOutputFile) Parameters relOutputFile string Output file path relative to BaseDirectory. RemoveFlyPiece() Removes any disconnected or “flying” pieces from the workpiece geometry. [JsAce] public void RemoveFlyPiece() Reset() Reset Player [JsAce(DocContentHtml = \"Reset Player\")] public void Reset() ResetRuntime() Clears internal buffers. [JsAce] public void ResetRuntime() RunBrandNcFile(string) Runs a famous-brand NC code file with the specified relative path (no kind dispatch — always the brand runner). Not for end user with no programing skill. [JsAce(\"RunBrandNcFile($1\\\"ncFile\\\");\")] public IEnumerable RunBrandNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file Returns IEnumerable Enumerable sequence of actions to be executed RunNc(string, string) Runs NC code directly from a string. Not for end user with no programing skill. [JsAce(Snippet = \"RunNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Run NC. second parameter is the file name alternative shows in the log.\")] public IEnumerable RunNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs Returns IEnumerable Enumerable sequence of actions to be executed RunNcFile(string, NcKind) Runs an NC program file with the specified relative path, the runner picked by kind (Auto = by file extension: .cl/.cls/.clsf run as CL, .csv as CSV, anything else as brand NC — so existing scripts keep their behavior). Not for end user with no programing skill. [JsAce(\"RunNcFile($1\\\"ncFile\\\");\")] public IEnumerable RunNcFile(string relNcFilePath, NcKind kind = NcKind.Auto) Parameters relNcFilePath string Relative path to the NC program file kind NcKind Which runner runs the file; Auto detects by extension. Returns IEnumerable Enumerable sequence of actions to be executed ScaledFeedPerCycle(double) Gets a new feed per cycle machining motion resolution instance with the specified scale. [JsAce(\"ScaledFeedPerCycle($1scale)\")] public FeedPerCycleMachiningMotionResolution ScaledFeedPerCycle(double scale) Parameters scale double The scale factor for the resolution. Returns FeedPerCycleMachiningMotionResolution A new FeedPerCycleMachiningMotionResolution instance with the specified scale. ScanMeshedGeomInfDefect() Scans the meshed geometry for defects. After scanning, the scanned defects will render in the workpiece. [JsAce] public bool? ScanMeshedGeomInfDefect() Returns bool? True if defects are found, false otherwise, or null if the operation cannot be performed. ScanRuntimeGeomInfDefect() Legacy script alias of ScanMeshedGeomInfDefect(); kept so old player scripts keep working. [Obsolete(\"Legacy alias; use ScanMeshedGeomInfDefect instead.\")] public bool? ScanRuntimeGeomInfDefect() Returns bool? SetAllSnapshotSyntaxEnabled(bool) Sets IsEnabled on every SnapshotSyntax reachable from the active SoftNcRunner's NcSyntaxList (top-level slots and inside BundleSyntax). No-op when SoftNcRunner is not the active runner. [JsAce(DocContentHtml = \"Enable or disable every SnapshotSyntax in the active SoftNcRunner pipeline at once.\")] public void SetAllSnapshotSyntaxEnabled(bool isEnabled) Parameters isEnabled bool SetNcResolutionFeedPerCycle() Sets NC resolution to feed per cycle mode. public void SetNcResolutionFeedPerCycle() SetNcResolutionFeedPerTooth() Sets NC resolution to feed per tooth mode. public void SetNcResolutionFeedPerTooth() SetNcResolutionFixed(double, double) Sets NC resolution to fixed mode with specified resolution values. public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters. rotaryResolution_deg double Rotary resolution in degrees. SetStickMachiningToolObservationHeight_mm(int, double) Sets the observation height in millimeters for the specified stick machining tool. [JsAce(\"SetStickMachiningToolObservationHeight_mm($1toolId,$2height_mm)\")] public void SetStickMachiningToolObservationHeight_mm(int toolId, double height) Parameters toolId int The ID of the tool height double The observation height in millimeters to set SetUniformFlutingShiftAngle_deg(int, double) Sets the shift angle in degrees for the uniform fluting of the specified tool, that is, for a cutter whose flutes all share one baseline flute contour. [JsAce(\"SetUniformFlutingShiftAngle_deg($1toolId,$2angle_deg)\")] public void SetUniformFlutingShiftAngle_deg(int toolId, double angle_deg) Parameters toolId int The ID of the tool angle_deg double The shift angle in degrees to set ShiftDistance_mm(double) Creates a distance shift object representing the specified distance in millimeters. public DistanceShift ShiftDistance_mm(double distanceShift_mm) Parameters distanceShift_mm double Distance shift in millimeters Returns DistanceShift Distance shift object ShiftTime_s(double) Creates a time shift object representing the specified time in seconds. public TimeShift ShiftTime_s(double seconds) Parameters seconds double Time in seconds Returns TimeShift Time shift object TrainMillingPara(SampleFlag, string, double, ICuttingPara) Trains milling parameters using the specified sample flag. [JsAce(\"TrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 0.1, ICuttingPara paraTemplate = null) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering paraTemplate ICuttingPara Optional parameter template for cutting operations. WarningMessage(string) Displays a warning message in the message host. [JsAce(\"WarningMessage($1message)\")] public void WarningMessage(string message) Parameters message string The warning message to display WriteMeshedGeom(string) Writes the current meshed geometry to a file. [JsAce(\"WriteMeshedGeom($1\\\"dstFile\\\")\")] public void WriteMeshedGeom(string relFile) Parameters relFile string Relative path to the output file WriteRuntimeGeom(string) Legacy script alias of WriteMeshedGeom(string); kept so old player scripts keep working. [Obsolete(\"Legacy alias; use WriteMeshedGeom instead.\")] public void WriteRuntimeGeom(string relFile) Parameters relFile string WriteShotFiles(double, string) Writes time-series data to shot files with the specified resolution period (alternative parameter order). public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate) Parameters resolutionPeroid_ms double Resolution period in milliseconds relFileTemplate string Template for output file path, can include [NcName] placeholder WriteShotFiles(string, double) Writes time-series (shot) data to files at the given sampling period. [JsAce(Snippet = \"WriteShotFiles(\\\"Output/[NcName].shot.csv\\\",resolutionPeroid_ms)\", DocContentHtml = \"Write time series data by resolutionPeroid_ms\")] public void WriteShotFiles(string relFileTemplate = \"Output/[NcName].shot.csv\", double resolutionPeroid_ms = 1) Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder resolutionPeroid_ms double Sampling period in milliseconds Remarks Each row is interpolated from the per-division force waveform, so the information carried per spindle revolution is min(MillingCycleDivisionNum, 60000 / (rpm * resolutionPeroid_ms)). When the written file is fed back into TrainMillingPara(SampleFlag, string, double, ICuttingPara), this period — not MillingCycleDivisionNum and not the machining resolution — sets the accuracy ceiling: sampling coarser than the division period throws away waveform detail that a finer angular grid cannot recover. Choose it at or below 60000 / (rpm * MillingCycleDivisionNum) ms, and when the result is compared against a physical measurement, match the real DAQ rate so both sides carry the same information density. Fine periods produce large files (a 6-cut program: 13 MB at 1 ms, 128 MB at 0.1 ms). WriteStepFiles(string) Writes step-series data to files with the specified file template. [JsAce(Snippet = \"WriteStepFiles(\\\"Output/[NcName].step.csv\\\")\", DocContentHtml = \"Write step series data.\")] public void WriteStepFiles(string relFileTemplate = \"Output/[NcName].step.csv\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder Events MachiningStepBuilt Session-scoped event triggered when a machining step is built. Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). For app-lifetime event, use MachiningStepBuilt instead. [Obsolete(\"Use SessionStepBuilt instead.\")] public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate MachiningStepSelected Session-scoped event triggered when a machining step is selected. Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). [Obsolete(\"Use SessionStepSelected instead.\")] public event Action MachiningStepSelected Event Type Action SessionSourcedActEntry Session-scoped event triggered for each SourcedActEntry produced during NC/CSV execution. Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). [JsAce(Snippet = \"SessionSourcedActEntry+=($1entry)=>{$2Command};\", DocContentHtml = \"Session-scoped event triggered for each SourcedActEntry. entry.SentenceSource is the source sentence; entry.Act is the associated act (may be null).\")] public event Action SessionSourcedActEntry Event Type Action SessionStepBuilt Session-scoped event triggered when a machining step is built. Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). For app-lifetime event, use MachiningStepBuilt instead. [JsAce(Snippet = \"SessionStepBuilt+=($1preStep,$2curStep)=>{$3Command};\", DocContentHtml = \"Session-scoped step built event. preStep is the Previous Milling Step; curStep is the Current Milling Step. preStep is null if no previous step existed.\")] public event MachiningActRunner.MachiningStepBuiltDelegate SessionStepBuilt Event Type MachiningActRunner.MachiningStepBuiltDelegate SessionStepSelected Session-scoped event triggered when a machining step is selected. Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). [JsAce(Snippet = \"SessionStepSelected+=($1millingStep)=>{$2Command};\")] public event Action SessionStepSelected Event Type Action SessionSyntaxPieceRan Session-scoped event triggered when a syntax piece has been executed. Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). [JsAce(Snippet = \"SessionSyntaxPieceRan+=($1syntaxPiece)=>{$2Command};\", DocContentHtml = \"Session-scoped event triggered after each SyntaxPiece is executed. syntaxPiece may be null if the source command is not a SyntaxPiece.\")] public event Action SessionSyntaxPieceRan Event Type Action SyntaxPieceRan Session-scoped event triggered when a syntax piece has been executed. Lifetime is bound to MachiningSession: created by BeginSession(), released by EndSession(). [Obsolete(\"Use SessionSyntaxPieceRan instead.\")] public event Action SyntaxPieceRan Event Type Action" }, "api/Hi.MachiningProcs.SessionShellController.html": { "href": "api/Hi.MachiningProcs.SessionShellController.html", "title": "Class SessionShellController | HiAPI-C# 2025", - "summary": "Class SessionShellController Namespace Hi.MachiningProcs Assembly HiNc.dll HTTP controller exposing SessionShell over the web API. Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService. [ApiController] [Route(\"api/[controller]/[action]\")] public class SessionShellController : ControllerBase Inheritance object ControllerBase SessionShellController Inherited Members ControllerBase.StatusCode(int) ControllerBase.StatusCode(int, object) ControllerBase.Content(string) ControllerBase.Content(string, string) ControllerBase.Content(string, string, Encoding) ControllerBase.Content(string, MediaTypeHeaderValue) ControllerBase.NoContent() ControllerBase.Ok() ControllerBase.Ok(object) ControllerBase.Redirect(string) ControllerBase.RedirectPermanent(string) ControllerBase.RedirectPreserveMethod(string) ControllerBase.RedirectPermanentPreserveMethod(string) ControllerBase.LocalRedirect(string) ControllerBase.LocalRedirectPermanent(string) ControllerBase.LocalRedirectPreserveMethod(string) ControllerBase.LocalRedirectPermanentPreserveMethod(string) ControllerBase.RedirectToAction() ControllerBase.RedirectToAction(string) ControllerBase.RedirectToAction(string, object) ControllerBase.RedirectToAction(string, string) ControllerBase.RedirectToAction(string, string, object) ControllerBase.RedirectToAction(string, string, string) ControllerBase.RedirectToAction(string, string, object, string) ControllerBase.RedirectToActionPreserveMethod(string, string, object, string) ControllerBase.RedirectToActionPermanent(string) ControllerBase.RedirectToActionPermanent(string, object) ControllerBase.RedirectToActionPermanent(string, string) ControllerBase.RedirectToActionPermanent(string, string, string) ControllerBase.RedirectToActionPermanent(string, string, object) ControllerBase.RedirectToActionPermanent(string, string, object, string) ControllerBase.RedirectToActionPermanentPreserveMethod(string, string, object, string) ControllerBase.RedirectToRoute(string) ControllerBase.RedirectToRoute(object) ControllerBase.RedirectToRoute(string, object) ControllerBase.RedirectToRoute(string, string) ControllerBase.RedirectToRoute(string, object, string) ControllerBase.RedirectToRoutePreserveMethod(string, object, string) ControllerBase.RedirectToRoutePermanent(string) ControllerBase.RedirectToRoutePermanent(object) ControllerBase.RedirectToRoutePermanent(string, object) ControllerBase.RedirectToRoutePermanent(string, string) ControllerBase.RedirectToRoutePermanent(string, object, string) ControllerBase.RedirectToRoutePermanentPreserveMethod(string, object, string) ControllerBase.RedirectToPage(string) ControllerBase.RedirectToPage(string, object) ControllerBase.RedirectToPage(string, string) ControllerBase.RedirectToPage(string, string, object) ControllerBase.RedirectToPage(string, string, string) ControllerBase.RedirectToPage(string, string, object, string) ControllerBase.RedirectToPagePermanent(string) ControllerBase.RedirectToPagePermanent(string, object) ControllerBase.RedirectToPagePermanent(string, string) ControllerBase.RedirectToPagePermanent(string, string, string) ControllerBase.RedirectToPagePermanent(string, string, object, string) ControllerBase.RedirectToPagePreserveMethod(string, string, object, string) ControllerBase.RedirectToPagePermanentPreserveMethod(string, string, object, string) ControllerBase.File(byte[], string) ControllerBase.File(byte[], string, bool) ControllerBase.File(byte[], string, string) ControllerBase.File(byte[], string, string, bool) ControllerBase.File(byte[], string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(byte[], string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(byte[], string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(byte[], string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(Stream, string) ControllerBase.File(Stream, string, bool) ControllerBase.File(Stream, string, string) ControllerBase.File(Stream, string, string, bool) ControllerBase.File(Stream, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(Stream, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(Stream, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(Stream, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(string, string) ControllerBase.File(string, string, bool) ControllerBase.File(string, string, string) ControllerBase.File(string, string, string, bool) ControllerBase.File(string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(string, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(string, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.PhysicalFile(string, string) ControllerBase.PhysicalFile(string, string, bool) ControllerBase.PhysicalFile(string, string, string) ControllerBase.PhysicalFile(string, string, string, bool) ControllerBase.PhysicalFile(string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.PhysicalFile(string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.PhysicalFile(string, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.PhysicalFile(string, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.Unauthorized() ControllerBase.Unauthorized(object) ControllerBase.NotFound() ControllerBase.NotFound(object) ControllerBase.BadRequest() ControllerBase.BadRequest(object) ControllerBase.BadRequest(ModelStateDictionary) ControllerBase.UnprocessableEntity() ControllerBase.UnprocessableEntity(object) ControllerBase.UnprocessableEntity(ModelStateDictionary) ControllerBase.Conflict() ControllerBase.Conflict(object) ControllerBase.Conflict(ModelStateDictionary) ControllerBase.Problem(string, string, int?, string, string) ControllerBase.Problem(string, string, int?, string, string, IDictionary) ControllerBase.ValidationProblem(ValidationProblemDetails) ControllerBase.ValidationProblem(ModelStateDictionary) ControllerBase.ValidationProblem() ControllerBase.ValidationProblem(string, string, int?, string, string, ModelStateDictionary) ControllerBase.ValidationProblem(string, string, int?, string, string, ModelStateDictionary, IDictionary) ControllerBase.Created() ControllerBase.Created(string, object) ControllerBase.Created(Uri, object) ControllerBase.CreatedAtAction(string, object) ControllerBase.CreatedAtAction(string, object, object) ControllerBase.CreatedAtAction(string, string, object, object) ControllerBase.CreatedAtRoute(string, object) ControllerBase.CreatedAtRoute(object, object) ControllerBase.CreatedAtRoute(string, object, object) ControllerBase.Accepted() ControllerBase.Accepted(object) ControllerBase.Accepted(Uri) ControllerBase.Accepted(string) ControllerBase.Accepted(string, object) ControllerBase.Accepted(Uri, object) ControllerBase.AcceptedAtAction(string) ControllerBase.AcceptedAtAction(string, string) ControllerBase.AcceptedAtAction(string, object) ControllerBase.AcceptedAtAction(string, string, object) ControllerBase.AcceptedAtAction(string, object, object) ControllerBase.AcceptedAtAction(string, string, object, object) ControllerBase.AcceptedAtRoute(object) ControllerBase.AcceptedAtRoute(string) ControllerBase.AcceptedAtRoute(string, object) ControllerBase.AcceptedAtRoute(object, object) ControllerBase.AcceptedAtRoute(string, object, object) ControllerBase.Challenge() ControllerBase.Challenge(params string[]) ControllerBase.Challenge(AuthenticationProperties) ControllerBase.Challenge(AuthenticationProperties, params string[]) ControllerBase.Forbid() ControllerBase.Forbid(params string[]) ControllerBase.Forbid(AuthenticationProperties) ControllerBase.Forbid(AuthenticationProperties, params string[]) ControllerBase.SignIn(ClaimsPrincipal) ControllerBase.SignIn(ClaimsPrincipal, string) ControllerBase.SignIn(ClaimsPrincipal, AuthenticationProperties) ControllerBase.SignIn(ClaimsPrincipal, AuthenticationProperties, string) ControllerBase.SignOut() ControllerBase.SignOut(AuthenticationProperties) ControllerBase.SignOut(params string[]) ControllerBase.SignOut(AuthenticationProperties, params string[]) ControllerBase.TryUpdateModelAsync(TModel) ControllerBase.TryUpdateModelAsync(TModel, string) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider) ControllerBase.TryUpdateModelAsync(TModel, string, params Expression>[]) ControllerBase.TryUpdateModelAsync(TModel, string, Func) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider, params Expression>[]) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider, Func) ControllerBase.TryUpdateModelAsync(object, Type, string) ControllerBase.TryUpdateModelAsync(object, Type, string, IValueProvider, Func) ControllerBase.TryValidateModel(object) ControllerBase.TryValidateModel(object, string) ControllerBase.HttpContext ControllerBase.Request ControllerBase.Response ControllerBase.RouteData ControllerBase.ModelState ControllerBase.ControllerContext ControllerBase.MetadataProvider ControllerBase.ModelBinderFactory ControllerBase.Url ControllerBase.ObjectValidator ControllerBase.ProblemDetailsFactory ControllerBase.User ControllerBase.Empty 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 SessionShellController(LocalProjectService) Initializes a new instance. public SessionShellController(LocalProjectService projectService) Parameters projectService LocalProjectService Properties DefaultParaTemplateDimension DefaultParaTemplateDimension [JsAce] public int DefaultParaTemplateDimension { get; set; } Property Value int DiffVisualRadius_mm Gets or sets the visual radius in millimeters for difference visualization. Controls the radius used for highlighting differences between workpiece states. [JsAce] public double DiffVisualRadius_mm { get; set; } Property Value double DispCacheMb Gets or sets the display cache size in megabytes. [Obsolete] public long DispCacheMb { get; set; } Property Value long DispCache_Mb Gets or sets the display cache size in megabytes. [JsAce] public long DispCache_Mb { get; set; } Property Value long EnableAutoMapOnSelectionEnd Gets or sets whether to automatically map selections when they end. [JsAce] public bool EnableAutoMapOnSelectionEnd { get; set; } Property Value bool EnableCollisionDetection Gets or sets whether collision detection is enabled. [JsAce(DocContentHtml = \"Enable Collision Detection.\")] public bool EnableCollisionDetection { get; set; } Property Value bool EnablePauseOnFailure EnablePauseOnFailure [JsAce(DocContentHtml = \"Enable Pause On Failure.\")] public bool EnablePauseOnFailure { get; set; } Property Value bool EnablePhysics Gets or sets whether milling force evaluation is enabled. [JsAce(DocContentHtml = \"Enable milling force evaluation.\")] public bool EnablePhysics { get; set; } Property Value bool EnableWearEffect Gets or sets whether tool wear effects are enabled in simulation. [JsAce] public bool EnableWearEffect { get; set; } Property Value bool FeedPerCycle Gets a new feed per cycle machining motion resolution instance. [JsAce] public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; } Property Value FeedPerCycleMachiningMotionResolution FeedPerTooth Gets a new feed per tooth machining motion resolution instance. [JsAce] public FeedPerToothMachiningMotionResolution FeedPerTooth { get; } Property Value FeedPerToothMachiningMotionResolution Global [JsAce(\"Global[$1key]\")] public Dictionary Global { get; } Property Value Dictionary InitSpindleTemperature_C Gets or sets the initial spindle temperature in degrees Celsius. [JsAce(DocContentHtml = \"Spindle Temperature on initialization.\")] public double InitSpindleTemperature_C { get; set; } Property Value double JsAceCompletionProfileJsonArray Internal used. public static JsonArray JsAceCompletionProfileJsonArray { get; } Property Value JsonArray MachiningMotionResolution Gets or sets the machining motion resolution. [JsAce] public IMachiningMotionResolution MachiningMotionResolution { get; set; } Property Value IMachiningMotionResolution MachiningResolution Gets or sets the machining resolution in millimeters. For legacy compatable. [JsAce] [Obsolete] public double MachiningResolution { get; set; } Property Value double MachiningResolution_mm Gets or sets the machining resolution in millimeters. [JsAce] public double MachiningResolution_mm { get; set; } Property Value double MachiningSession public MachiningSession MachiningSession { get; } Property Value MachiningSession MapTask Task tracking the status of mapping operations. public Task MapTask { get; set; } Property Value Task MillingCycleDivisionNum Gets or sets the number of divisions per cycle for milling force calculation. This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used. [JsAce] public static int MillingCycleDivisionNum { get; set; } Property Value int MillingForceCycleDivisionNum Gets or sets the number of divisions per cycle for milling force calculation. This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used. [JsAce] [Obsolete] public static int MillingForceCycleDivisionNum { get; set; } Property Value int NcOptOption NcOptOption [JsAce] public NcOptOption NcOptOption { get; set; } Property Value NcOptOption OptEnableDepthCompensation Enables or disables depth compensation during optimization. [JsAce] public bool OptEnableDepthCompensation { get; set; } Property Value bool OptEnableFeedrate Gets or sets whether to enable feed rate optimization in NC optimization. [JsAce] public bool OptEnableFeedrate { get; set; } Property Value bool OptEnableForwardCompensation Enables or disables forward compensation during optimization. [JsAce] public bool OptEnableForwardCompensation { get; set; } Property Value bool OptEnableInterpolation Enables or disables reinterpolation for optimization. [JsAce] public bool OptEnableInterpolation { get; set; } Property Value bool OptEnableSideCompensation Enables or disables side compensation during optimization. [JsAce] public bool OptEnableSideCompensation { get; set; } Property Value bool OptExtendedPostDistance_mm Gets or sets the extended post-distance in millimeters for NC optimization. This is the distance after the current segment that will be considered for optimization. [JsAce] public double OptExtendedPostDistance_mm { get; set; } Property Value double OptExtendedPreDistance_mm Gets or sets the extended pre-distance in millimeters for NC optimization. This is the distance before the current segment that will be considered for optimization. [JsAce] public double OptExtendedPreDistance_mm { get; set; } Property Value double OptFeedrateAssignmentRatio Gets or sets the feedrate assignment ratio for optimization. If the feedrate change exceeds this ratio, the feedrate in the NC line will be updated. [JsAce] public double OptFeedrateAssignmentRatio { get; set; } Property Value double OptMaxAcceleration_mmds2 Maximum acceleration in mm/s² during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxAcceleration_mmds2 { get; set; } Property Value double OptMaxFeedPerTooth_mm Gets or sets the maximum feed per tooth in millimeters for optimization. [JsAce] public double OptMaxFeedPerTooth_mm { get; set; } Property Value double OptMaxFeedrate_mmdmin Maximum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMaxFeedrate_mmdmin { get; set; } Property Value double OptMaxJerk_mmds3 Maximum jerk in mm/s³ during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxJerk_mmds3 { get; set; } Property Value double OptMinFeedPerTooth_mm Gets or sets the minimum feed per tooth in millimeters for optimization. [JsAce] public double OptMinFeedPerTooth_mm { get; set; } Property Value double OptMinFeedrate_mmdmin Minimum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMinFeedrate_mmdmin { get; set; } Property Value double OptPreferedForce_N Preferred force in N for optimization. [JsAce] public double OptPreferedForce_N { get; set; } Property Value double OptRapidFeed_mmdmin Rapid feed rate in mm/min for non-cutting movements during optimization. [JsAce] public double OptRapidFeed_mmdmin { get; set; } Property Value double OptSpindlePowerSafetyFactor Safety factor for spindle power during optimization. [JsAce] public double OptSpindlePowerSafetyFactor { get; set; } Property Value double OptSpindlePowerUtilizationFactor Utilization factor for spindle power during optimization. It is the reciprocal of the spindle power safety factor. [JsAce] public double OptSpindlePowerUtilizationFactor { get; set; } Property Value double OptSpindleTorqueSafetyFactor Safety factor for spindle torque during optimization. [JsAce] public double OptSpindleTorqueSafetyFactor { get; set; } Property Value double OptSpindleTorqueUtilizationFactor Utilization factor for spindle torque during optimization. It is the reciprocal of the spindle torque safety factor. [JsAce] public double OptSpindleTorqueUtilizationFactor { get; set; } Property Value double OptThermalYieldSafetyFactor Safety factor for thermal yield during optimization. [JsAce] public double OptThermalYieldSafetyFactor { get; set; } Property Value double OptThermalYieldUtilizationFactor Utilization factor for thermal yield during optimization. It is the reciprocal of the thermal yield safety factor. [JsAce] public double OptThermalYieldUtilizationFactor { get; set; } Property Value double OptYieldingSafetyFactor Safety factor for yielding during optimization. [JsAce] public double OptYieldingSafetyFactor { get; set; } Property Value double OptYieldingUtilizationFactor Utilization factor for yielding during optimization. It is the reciprocal of the yielding safety factor. [JsAce] public double OptYieldingUtilizationFactor { get; set; } Property Value double ScriptOptions public ScriptOptions ScriptOptions { get; set; } Property Value ScriptOptions SessionMessageHost SessionProgress [JsAce] public SessionProgress SessionMessageHost { get; } Property Value SessionProgress SessionShell Gets the underlying SessionShell instance. public SessionShell SessionShell { get; } Property Value SessionShell StepCount Gets the total number of milling steps. [JsAce] public int StepCount { get; } Property Value int Methods AddTimeDataByFile(string, string, double, double) Adds time-based data from a file to the time mapping dictionary with specified time bounds in seconds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] [NonAction] public bool AddTimeDataByFile(string key, string relFile, double beginTime, double endTime) Parameters key string Key to identify the data relFile string Relative path to the data file beginTime double Beginning time in seconds endTime double Ending time in seconds Returns bool True if the data was successfully added, false otherwise AddTimeDataByFile(string, string, string, string) Adds time-based data from a file to the time mapping dictionary with specified time bounds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] [HttpPost] public bool AddTimeDataByFile(string key, string relFile, string beginTimeText, string endTimeText) Parameters key string Key to identify the data relFile string Relative path to the data file beginTimeText string Beginning time as text (seconds or TimeSpan format) endTimeText string Ending time as text (seconds or TimeSpan format) Returns bool True if the data was successfully added, false otherwise AppendMessagesToFile(string, params string[]) Appends messages to a file, optionally filtered by tags. [JsAce(\"AppendMessagesToFile(\\\"dstRelFile\\\",flags)\")] [HttpPost] public void AppendMessagesToFile(string dstRelFile, params string[] flags) Parameters dstRelFile string Destination relative file path flags string[] Optional flags to filter messages by tags BeginPreserve() Begin Preserve section in optimzation process. [JsAce(\"BeginPreserve()\")] [HttpPost] public void BeginPreserve() BeginSelection(string, AnchorMode, IStepShift) Begin mark on current line. milling step() has not triggered yet. [NonAction] public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBegin, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the beginning of selection shift IStepShift Step shift to apply BeginSession() BeginSession() [HttpPost] public void BeginSession() ClearTimeMappingData() Clears all time mapping data. [JsAce] [HttpPost] public void ClearTimeMappingData() Diff(double) Performs a difference analysis on the workpiece geometry to detect variations. [JsAce(\"Diff($1detectionRadius_mm)\")] [HttpPost] public void Diff(double detectionRadius_mm) Parameters detectionRadius_mm double Radius for detecting differences EmbedSingleDataPerStepByCsvFile(string) Reads a CSV file and performs time-based interpolation to map data to milling steps. It is one (step) - one (embedded-data) mapping. [JsAce(Snippet = \"EmbedSingleDataPerStepByCsvFile($1\\\"csvFile\\\")\")] [HttpPost] public void EmbedSingleDataPerStepByCsvFile(string csvFile) Parameters csvFile string Path to the CSV file relative to the base directory EndPreserve() End Preserve section in optimzation process. [JsAce(\"EndPreserve()\")] [HttpPost] public void EndPreserve() EndSelection(string, AnchorMode, IStepShift) End mark on current line for selection. [NonAction] public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the end of selection shift IStepShift Step shift to apply EndSession() EndSession() [HttpPost] public void EndSession() ErrorMessage(string) Displays an error message in the message host. [JsAce(\"ErrorMessage($1message)\")] [HttpPost] public void ErrorMessage(string message) Parameters message string The error message to display FixedPace(double, double) Creates a fixed machining motion resolution with specified parameters. [JsAce(\"FixedPace($1linearResolution_mm, $2rotaryResolution_deg)\")] [NonAction] public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters rotaryResolution_deg double Rotary resolution in degrees Returns FixedMachiningMotionResolution A new fixed machining motion resolution instance GetMillingStep(int) Retrieves a milling step at the specified index. [JsAce(Snippet = \"GetMillingStep($1\\\"stepIndex\\\")\")] [NonAction] public MachiningStep GetMillingStep(int stepIndex) Parameters stepIndex int Index of the milling step to retrieve Returns MachiningStep The milling step at the specified index GetStickMachiningToolObservationHeight_mm(int) Gets the observation height in millimeters for the specified stick machining tool. [JsAce(\"GetStickMachiningToolObservationHeight_mm($1toolId)\")] [HttpGet] public double GetStickMachiningToolObservationHeight_mm(int toolId) Parameters toolId int The ID of the tool Returns double The observation height in millimeters GetUniformContourTrayShiftAngle_deg(int) Gets the shift angle in degrees for the uniform contour tray of the specified tool. [JsAce(\"GetUniformContourTrayShiftAngle_deg($1toolId)\")] [HttpGet] public double GetUniformContourTrayShiftAngle_deg(int toolId) Parameters toolId int The ID of the tool Returns double The shift angle in degrees LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift) Create a line selection from begin to end mark. [NonAction] public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.LineBegin, IStepShift beginShift = null, AnchorMode endAnchorMode = AnchorMode.LineEnd, IStepShift endShift = null) Parameters key string Identifier key for the selection beginAnchorMode AnchorMode Mode for anchoring the beginning of selection beginShift IStepShift Step shift to apply at beginning endAnchorMode AnchorMode Mode for anchoring the end of selection endShift IStepShift Step shift to apply at end Map(string, FileTimeSection, CycleSamplingMode?) Maps selection data to time section. [HttpPost] public Task Map(string key, FileTimeSection fileTimeSection = null, StepTimeShotUtil.CycleSamplingMode? cycleSamplingMode = CycleSamplingMode.SpindleCycle) Parameters key string Identifier key for the selection fileTimeSection FileTimeSection File time section, or null to use the one associated with the key cycleSamplingMode StepTimeShotUtil.CycleSamplingMode? Cycle sampling mode Returns Task Task representing the asynchronous mapping operation Message(string) Displays a message in the message host. [JsAce(\"Message($1message)\")] [HttpPost] public void Message(string message) Parameters message string The message to display OptimizeToFiles(string) Optimizes NC files and saves results using the specified file template. [JsAce(Snippet = \"OptimizeToFiles(\\\"Output/Opt-[NcName]\\\")\", DocContentHtml = \"Optimize To Files by substitude template keywoard \\\"[NcName]\\\"\")] [HttpPost] public void OptimizeToFiles(string relFileTemplate = \"Output/Opt-[NcName]\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder Pace() Controls the pace of machining operations during execution. [JsAce(\"Pace();\")] [HttpPost] public void Pace() Pause() Pause Player [JsAce(DocContentHtml = \"Pause Player\")] [HttpPost] public void Pause() PlayAct(IAct, IGetSentence, CancellationToken?) PlayAct(IAct, IGetSentence, CancellationToken?) [JsAce] [NonAction] public void PlayAct(IAct act, IGetSentence sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct sourceCommand IGetSentence cancellationToken CancellationToken? PlayClTeleport(double, double, double, double, double, double) PlayClTeleport(double, double, double, double, double, double) [JsAce] [HttpPost] public void PlayClTeleport(double x, double y, double z, double i, double j, double k) Parameters x double y double z double i double j double k double PlayCsvFile(string) Plays an CSV file with the specified relative path. [JsAce(\"PlayCsvFile($1\\\"csvFile\\\");\")] [HttpPost] public void PlayCsvFile(string relFilePath) Parameters relFilePath string Relative path to the CSV file PlayNc(string, string) Plays NC code directly from a string, executing each action and pacing between them. [JsAce(Snippet = \"PlayNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Play NC. second parameter is the file name alternative shows in the log.\")] [HttpPost] public void PlayNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs PlayNcFile(string) Plays an NC file with the specified relative path. [JsAce(\"PlayNcFile($1\\\"ncFile\\\");\")] [HttpPost] public void PlayNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file PlayToolingTeleport(int) PlayToolingTeleport(int) [JsAce] [HttpPost] public void PlayToolingTeleport(int toolId) Parameters toolId int Preserve() Preserve one line NC code in optimzation process. [JsAce(\"Preserve()\")] [HttpPost] public void Preserve() ProgressMessage(string) Displays a progress message in the message host. [JsAce(\"ProgressMessage($1message)\")] [HttpPost] public void ProgressMessage(string message) Parameters message string The progress message to display ReTrainMillingPara(SampleFlag, string, double) Re-trains milling parameters using the specified sample flag. [JsAce(\"ReTrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] [HttpPost] public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 2) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering ReadRuntimeGeom(string) Reads runtime geometry from a file. [JsAce(\"ReadRuntimeGeom($1\\\"srcFile\\\")\")] [HttpPost] public void ReadRuntimeGeom(string relFile) Parameters relFile string Relative path to the input file RegisterStepVariable(string, string, string, string, Func) Registers a step variable for tracking during execution. [JsAce(Snippet = \"RegisterStepVariable(\\\"$1key\\\",\\\"$2name\\\",\\\"$3unit\\\",\\\"$4formatString\\\",\\\"$5variableFunc\\\")\", DocContentHtml = \"

    Register Step Variable.

    \\\"unit\\\" is nullable

    \\\"formatString\\\" is nullable

    \")] [NonAction] public void RegisterStepVariable(string key, string name, string unit, string formatString, Func variableFunc = null) Parameters key string Unique key to identify the variable name string Human-readable name of the variable unit string Physical unit of the variable (can be null) formatString string Format string for displaying the variable (can be null) variableFunc Func Function to compute the variable value from a milling step (can be null) RemoveFlyPiece() Removes any disconnected or “flying” pieces from the workpiece geometry. [JsAce] [HttpPost] public void RemoveFlyPiece() Reset() Reset Player [JsAce(DocContentHtml = \"Reset Player\")] [HttpPost] public void Reset() ResetRuntime() Clears internal buffers. [JsAce] [HttpPost] public void ResetRuntime() RunNc(string, string) Runs NC code directly from a string. [JsAce(Snippet = \"RunNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Run NC. second parameter is the file name alternative shows in the log.\")] [NonAction] public IEnumerable RunNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs Returns IEnumerable Enumerable sequence of actions to be executed RunNcFile(string) Runs an NC file with the specified relative path. [JsAce(\"RunNcFile($1\\\"ncFile\\\");\")] [NonAction] public IEnumerable RunNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file Returns IEnumerable Enumerable sequence of actions to be executed SetNcResolutionFeedPerCycle() Sets NC resolution to feed per cycle mode. [HttpPost] public void SetNcResolutionFeedPerCycle() SetNcResolutionFeedPerTooth() Sets NC resolution to feed per tooth mode. [HttpPost] public void SetNcResolutionFeedPerTooth() SetNcResolutionFixed(double, double) Sets NC resolution to fixed mode with specified resolution values. [HttpPost] public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters. rotaryResolution_deg double Rotary resolution in degrees. SetStickMachiningToolObservationHeight_mm(int, double) Sets the observation height in millimeters for the specified stick machining tool. [JsAce(\"SetStickMachiningToolObservationHeight_mm($1toolId,$2height_mm)\")] [HttpPost] public void SetStickMachiningToolObservationHeight_mm(int toolId, double height) Parameters toolId int The ID of the tool height double The observation height in millimeters to set SetUniformContourTrayShiftAngle_deg(int, double) Sets the shift angle in degrees for the uniform contour tray of the specified tool. [JsAce(\"SetUniformContourTrayShiftAngle_deg($1toolId,$2angle_deg)\")] [HttpPost] public void SetUniformContourTrayShiftAngle_deg(int toolId, double angle_deg) Parameters toolId int The ID of the tool angle_deg double The shift angle in degrees to set ShiftDistance_mm(double) Creates a distance shift object representing the specified distance in millimeters. [NonAction] public DistanceShift ShiftDistance_mm(double distanceShift_mm) Parameters distanceShift_mm double Distance shift in millimeters Returns DistanceShift Distance shift object ShiftTime_s(double) Creates a time shift object representing the specified time in seconds. [NonAction] public TimeShift ShiftTime_s(double seconds) Parameters seconds double Time in seconds Returns TimeShift Time shift object TrainMillingPara(SampleFlag, string, double) Trains milling parameters using the specified sample flag. [JsAce(\"TrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] [HttpPost] public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 2) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering WarningMessage(string) Displays a warning message in the message host. [JsAce(\"WarningMessage($1message)\")] [HttpPost] public void WarningMessage(string message) Parameters message string The warning message to display WriteRuntimeGeom(string) Writes the current runtime geometry to a file. [JsAce(\"WriteRuntimeGeom($1\\\"dstFile\\\")\")] [HttpPost] public void WriteRuntimeGeom(string relFile) Parameters relFile string Relative path to the output file WriteRuntimeGeomToStl(string, double) Writes the current runtime geometry to an STL file. [JsAce(\"WriteRuntimeGeomToStl($1\\\"dstFile\\\",$2resolution_mm)\")] [HttpPost] public void WriteRuntimeGeomToStl(string relFile, double resolution_mm = 0) Parameters relFile string Relative path to the output STL file resolution_mm double Resolution in millimeters (0 for default) WriteShotFiles(double, string) Writes time-series data to shot files with the specified resolution period (alternative parameter order). [NonAction] public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate) Parameters resolutionPeroid_ms double Resolution period in milliseconds relFileTemplate string Template for output file path, can include [NcName] placeholder WriteShotFiles(string, double) Writes time-series data to shot files with the specified resolution period. [JsAce(Snippet = \"WriteShotFiles(\\\"Output/[NcName].shot.csv\\\",resolutionPeroid_ms)\", DocContentHtml = \"Write time series data by resolutionPeroid_ms\")] [HttpPost] public void WriteShotFiles(string relFileTemplate = \"Output/[NcName].shot.csv\", double resolutionPeroid_ms = 1) Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder resolutionPeroid_ms double Resolution period in milliseconds WriteStepFiles(string) Writes step-series data to files with the specified file template. [JsAce(Snippet = \"WriteStepFiles(\\\"Output/[NcName].step.csv\\\")\", DocContentHtml = \"Write step series data.\")] [HttpPost] public void WriteStepFiles(string relFileTemplate = \"Output/[NcName].step.csv\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder" + "summary": "Class SessionShellController Namespace Hi.MachiningProcs Assembly HiNc.dll HTTP controller exposing SessionShell over the web API. Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService. [ApiController] [Route(\"api/[controller]/[action]\")] [ProducesResponseType(typeof(ApiActionResult), 409)] public class SessionShellController : ControllerBase Inheritance object ControllerBase SessionShellController Inherited Members ControllerBase.StatusCode(int) ControllerBase.StatusCode(int, object) ControllerBase.Content(string) ControllerBase.Content(string, string) ControllerBase.Content(string, string, Encoding) ControllerBase.Content(string, MediaTypeHeaderValue) ControllerBase.NoContent() ControllerBase.Ok() ControllerBase.Ok(object) ControllerBase.Redirect(string) ControllerBase.RedirectPermanent(string) ControllerBase.RedirectPreserveMethod(string) ControllerBase.RedirectPermanentPreserveMethod(string) ControllerBase.LocalRedirect(string) ControllerBase.LocalRedirectPermanent(string) ControllerBase.LocalRedirectPreserveMethod(string) ControllerBase.LocalRedirectPermanentPreserveMethod(string) ControllerBase.RedirectToAction() ControllerBase.RedirectToAction(string) ControllerBase.RedirectToAction(string, object) ControllerBase.RedirectToAction(string, string) ControllerBase.RedirectToAction(string, string, object) ControllerBase.RedirectToAction(string, string, string) ControllerBase.RedirectToAction(string, string, object, string) ControllerBase.RedirectToActionPreserveMethod(string, string, object, string) ControllerBase.RedirectToActionPermanent(string) ControllerBase.RedirectToActionPermanent(string, object) ControllerBase.RedirectToActionPermanent(string, string) ControllerBase.RedirectToActionPermanent(string, string, string) ControllerBase.RedirectToActionPermanent(string, string, object) ControllerBase.RedirectToActionPermanent(string, string, object, string) ControllerBase.RedirectToActionPermanentPreserveMethod(string, string, object, string) ControllerBase.RedirectToRoute(string) ControllerBase.RedirectToRoute(object) ControllerBase.RedirectToRoute(string, object) ControllerBase.RedirectToRoute(string, string) ControllerBase.RedirectToRoute(string, object, string) ControllerBase.RedirectToRoutePreserveMethod(string, object, string) ControllerBase.RedirectToRoutePermanent(string) ControllerBase.RedirectToRoutePermanent(object) ControllerBase.RedirectToRoutePermanent(string, object) ControllerBase.RedirectToRoutePermanent(string, string) ControllerBase.RedirectToRoutePermanent(string, object, string) ControllerBase.RedirectToRoutePermanentPreserveMethod(string, object, string) ControllerBase.RedirectToPage(string) ControllerBase.RedirectToPage(string, object) ControllerBase.RedirectToPage(string, string) ControllerBase.RedirectToPage(string, string, object) ControllerBase.RedirectToPage(string, string, string) ControllerBase.RedirectToPage(string, string, object, string) ControllerBase.RedirectToPagePermanent(string) ControllerBase.RedirectToPagePermanent(string, object) ControllerBase.RedirectToPagePermanent(string, string) ControllerBase.RedirectToPagePermanent(string, string, string) ControllerBase.RedirectToPagePermanent(string, string, object, string) ControllerBase.RedirectToPagePreserveMethod(string, string, object, string) ControllerBase.RedirectToPagePermanentPreserveMethod(string, string, object, string) ControllerBase.File(byte[], string) ControllerBase.File(byte[], string, bool) ControllerBase.File(byte[], string, string) ControllerBase.File(byte[], string, string, bool) ControllerBase.File(byte[], string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(byte[], string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(byte[], string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(byte[], string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(Stream, string) ControllerBase.File(Stream, string, bool) ControllerBase.File(Stream, string, string) ControllerBase.File(Stream, string, string, bool) ControllerBase.File(Stream, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(Stream, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(Stream, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(Stream, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(string, string) ControllerBase.File(string, string, bool) ControllerBase.File(string, string, string) ControllerBase.File(string, string, string, bool) ControllerBase.File(string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(string, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(string, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.PhysicalFile(string, string) ControllerBase.PhysicalFile(string, string, bool) ControllerBase.PhysicalFile(string, string, string) ControllerBase.PhysicalFile(string, string, string, bool) ControllerBase.PhysicalFile(string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.PhysicalFile(string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.PhysicalFile(string, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.PhysicalFile(string, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.Unauthorized() ControllerBase.Unauthorized(object) ControllerBase.NotFound() ControllerBase.NotFound(object) ControllerBase.BadRequest() ControllerBase.BadRequest(object) ControllerBase.BadRequest(ModelStateDictionary) ControllerBase.UnprocessableEntity() ControllerBase.UnprocessableEntity(object) ControllerBase.UnprocessableEntity(ModelStateDictionary) ControllerBase.Conflict() ControllerBase.Conflict(object) ControllerBase.Conflict(ModelStateDictionary) ControllerBase.Problem(string, string, int?, string, string) ControllerBase.Problem(string, string, int?, string, string, IDictionary) ControllerBase.ValidationProblem(ValidationProblemDetails) ControllerBase.ValidationProblem(ModelStateDictionary) ControllerBase.ValidationProblem() ControllerBase.ValidationProblem(string, string, int?, string, string, ModelStateDictionary) ControllerBase.ValidationProblem(string, string, int?, string, string, ModelStateDictionary, IDictionary) ControllerBase.Created() ControllerBase.Created(string, object) ControllerBase.Created(Uri, object) ControllerBase.CreatedAtAction(string, object) ControllerBase.CreatedAtAction(string, object, object) ControllerBase.CreatedAtAction(string, string, object, object) ControllerBase.CreatedAtRoute(string, object) ControllerBase.CreatedAtRoute(object, object) ControllerBase.CreatedAtRoute(string, object, object) ControllerBase.Accepted() ControllerBase.Accepted(object) ControllerBase.Accepted(Uri) ControllerBase.Accepted(string) ControllerBase.Accepted(string, object) ControllerBase.Accepted(Uri, object) ControllerBase.AcceptedAtAction(string) ControllerBase.AcceptedAtAction(string, string) ControllerBase.AcceptedAtAction(string, object) ControllerBase.AcceptedAtAction(string, string, object) ControllerBase.AcceptedAtAction(string, object, object) ControllerBase.AcceptedAtAction(string, string, object, object) ControllerBase.AcceptedAtRoute(object) ControllerBase.AcceptedAtRoute(string) ControllerBase.AcceptedAtRoute(string, object) ControllerBase.AcceptedAtRoute(object, object) ControllerBase.AcceptedAtRoute(string, object, object) ControllerBase.Challenge() ControllerBase.Challenge(params string[]) ControllerBase.Challenge(AuthenticationProperties) ControllerBase.Challenge(AuthenticationProperties, params string[]) ControllerBase.Forbid() ControllerBase.Forbid(params string[]) ControllerBase.Forbid(AuthenticationProperties) ControllerBase.Forbid(AuthenticationProperties, params string[]) ControllerBase.SignIn(ClaimsPrincipal) ControllerBase.SignIn(ClaimsPrincipal, string) ControllerBase.SignIn(ClaimsPrincipal, AuthenticationProperties) ControllerBase.SignIn(ClaimsPrincipal, AuthenticationProperties, string) ControllerBase.SignOut() ControllerBase.SignOut(AuthenticationProperties) ControllerBase.SignOut(params string[]) ControllerBase.SignOut(AuthenticationProperties, params string[]) ControllerBase.TryUpdateModelAsync(TModel) ControllerBase.TryUpdateModelAsync(TModel, string) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider) ControllerBase.TryUpdateModelAsync(TModel, string, params Expression>[]) ControllerBase.TryUpdateModelAsync(TModel, string, Func) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider, params Expression>[]) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider, Func) ControllerBase.TryUpdateModelAsync(object, Type, string) ControllerBase.TryUpdateModelAsync(object, Type, string, IValueProvider, Func) ControllerBase.TryValidateModel(object) ControllerBase.TryValidateModel(object, string) ControllerBase.HttpContext ControllerBase.Request ControllerBase.Response ControllerBase.RouteData ControllerBase.ModelState ControllerBase.ControllerContext ControllerBase.MetadataProvider ControllerBase.ModelBinderFactory ControllerBase.Url ControllerBase.ObjectValidator ControllerBase.ProblemDetailsFactory ControllerBase.User ControllerBase.Empty 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 SessionShellController(LocalProjectService) Initializes a new instance. public SessionShellController(LocalProjectService projectService) Parameters projectService LocalProjectService Properties DefaultParaTemplateDimension DefaultParaTemplateDimension [JsAce] public int DefaultParaTemplateDimension { get; set; } Property Value int DiffVisualRadius_mm Gets or sets the visual radius in millimeters for difference visualization. Controls the radius used for highlighting differences between workpiece states. [JsAce] public double DiffVisualRadius_mm { get; set; } Property Value double DispCacheMb Gets or sets the display cache size in megabytes. [Obsolete] public long DispCacheMb { get; set; } Property Value long DispCache_Mb Gets or sets the display cache size in megabytes. [JsAce] public long DispCache_Mb { get; set; } Property Value long EnableAutoMapOnSelectionEnd Gets or sets whether to automatically map selections when they end. [JsAce] public bool EnableAutoMapOnSelectionEnd { get; set; } Property Value bool EnableCollisionDetection Gets or sets whether collision detection is enabled. [JsAce(DocContentHtml = \"Enable Collision Detection.\")] public bool EnableCollisionDetection { get; set; } Property Value bool EnablePauseOnFailure EnablePauseOnFailure [JsAce(DocContentHtml = \"Enable Pause On Failure.\")] public bool EnablePauseOnFailure { get; set; } Property Value bool EnablePhysics Gets or sets whether milling force evaluation is enabled. [JsAce(DocContentHtml = \"Enable milling force evaluation.\")] public bool EnablePhysics { get; set; } Property Value bool EnableWearEffect Gets or sets whether tool wear effects are enabled in simulation. [JsAce] public bool EnableWearEffect { get; set; } Property Value bool FeedPerCycle Gets a new feed per cycle machining motion resolution instance. [JsAce] public FeedPerCycleMachiningMotionResolution FeedPerCycle { get; } Property Value FeedPerCycleMachiningMotionResolution FeedPerTooth Gets a new feed per tooth machining motion resolution instance. [JsAce] public FeedPerToothMachiningMotionResolution FeedPerTooth { get; } Property Value FeedPerToothMachiningMotionResolution Global [JsAce(\"Global[$1key]\")] public Dictionary Global { get; } Property Value Dictionary InitSpindleTemperature_C Gets or sets the initial spindle temperature in degrees Celsius. [JsAce(DocContentHtml = \"Spindle Temperature on initialization.\")] public double InitSpindleTemperature_C { get; set; } Property Value double JsAceCompletionProfileJsonArray Internal used. public static JsonArray JsAceCompletionProfileJsonArray { get; } Property Value JsonArray MachiningMotionResolution Gets or sets the machining motion resolution. [JsAce] public IMachiningMotionResolution MachiningMotionResolution { get; set; } Property Value IMachiningMotionResolution MachiningResolution Gets or sets the machining resolution in millimeters. For legacy compatable. [JsAce] [Obsolete] public double MachiningResolution { get; set; } Property Value double MachiningResolution_mm Gets or sets the machining resolution in millimeters. [JsAce] public double MachiningResolution_mm { get; set; } Property Value double MachiningSession public MachiningSession MachiningSession { get; } Property Value MachiningSession MapTask Task tracking the status of mapping operations. public Task MapTask { get; set; } Property Value Task MillingCycleDivisionNum Gets or sets the number of divisions per cycle for milling force calculation. This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used. [JsAce] public static int MillingCycleDivisionNum { get; set; } Property Value int MillingForceCycleDivisionNum Gets or sets the number of divisions per cycle for milling force calculation. This property should be set before milling force evaluation if TrainMillingPara(SampleFlag, string, double) is intended to be used. [JsAce] [Obsolete] public static int MillingForceCycleDivisionNum { get; set; } Property Value int NcOptOption NcOptOption [JsAce] public NcOptOption NcOptOption { get; set; } Property Value NcOptOption OptEnableDepthCompensation Enables or disables depth compensation during optimization. [JsAce] public bool OptEnableDepthCompensation { get; set; } Property Value bool OptEnableFeedrate Gets or sets whether to enable feed rate optimization in NC optimization. [JsAce] public bool OptEnableFeedrate { get; set; } Property Value bool OptEnableForwardCompensation Enables or disables forward compensation during optimization. [JsAce] public bool OptEnableForwardCompensation { get; set; } Property Value bool OptEnableInterpolation Enables or disables reinterpolation for optimization. [JsAce] public bool OptEnableInterpolation { get; set; } Property Value bool OptEnableSideCompensation Enables or disables side compensation during optimization. [JsAce] public bool OptEnableSideCompensation { get; set; } Property Value bool OptExtendedPostDistance_mm Gets or sets the extended post-distance in millimeters for NC optimization. This is the distance after the current segment that will be considered for optimization. [JsAce] public double OptExtendedPostDistance_mm { get; set; } Property Value double OptExtendedPreDistance_mm Gets or sets the extended pre-distance in millimeters for NC optimization. This is the distance before the current segment that will be considered for optimization. [JsAce] public double OptExtendedPreDistance_mm { get; set; } Property Value double OptFeedrateAssignmentRatio Gets or sets the feedrate assignment ratio for optimization. If the feedrate change exceeds this ratio, the feedrate in the NC line will be updated. [JsAce] public double OptFeedrateAssignmentRatio { get; set; } Property Value double OptMaxAcceleration_mmds2 Maximum acceleration in mm/s² during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxAcceleration_mmds2 { get; set; } Property Value double OptMaxFeedPerTooth_mm Gets or sets the maximum feed per tooth in millimeters for optimization. [JsAce] public double OptMaxFeedPerTooth_mm { get; set; } Property Value double OptMaxFeedrate_mmdmin Maximum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMaxFeedrate_mmdmin { get; set; } Property Value double OptMaxJerk_mmds3 Maximum jerk in mm/s³ during optimization. Only takes effect on reinterpolated section. [JsAce(DocContentHtml = \"Only take effect on reinterpolated section.\")] public double OptMaxJerk_mmds3 { get; set; } Property Value double OptMinFeedPerTooth_mm Gets or sets the minimum feed per tooth in millimeters for optimization. [JsAce] public double OptMinFeedPerTooth_mm { get; set; } Property Value double OptMinFeedrate_mmdmin Minimum feed rate in mm/min for cutting movements during optimization. [JsAce] public double OptMinFeedrate_mmdmin { get; set; } Property Value double OptPreferedForce_N Preferred force in N for optimization. [JsAce] public double OptPreferedForce_N { get; set; } Property Value double OptRapidFeed_mmdmin Rapid feed rate in mm/min for non-cutting movements during optimization. [JsAce] public double OptRapidFeed_mmdmin { get; set; } Property Value double OptSpindlePowerSafetyFactor Safety factor for spindle power during optimization. [JsAce] public double OptSpindlePowerSafetyFactor { get; set; } Property Value double OptSpindlePowerUtilizationFactor Utilization factor for spindle power during optimization. It is the reciprocal of the spindle power safety factor. [JsAce] public double OptSpindlePowerUtilizationFactor { get; set; } Property Value double OptSpindleTorqueSafetyFactor Safety factor for spindle torque during optimization. [JsAce] public double OptSpindleTorqueSafetyFactor { get; set; } Property Value double OptSpindleTorqueUtilizationFactor Utilization factor for spindle torque during optimization. It is the reciprocal of the spindle torque safety factor. [JsAce] public double OptSpindleTorqueUtilizationFactor { get; set; } Property Value double OptThermalYieldSafetyFactor Safety factor for thermal yield during optimization. [JsAce] public double OptThermalYieldSafetyFactor { get; set; } Property Value double OptThermalYieldUtilizationFactor Utilization factor for thermal yield during optimization. It is the reciprocal of the thermal yield safety factor. [JsAce] public double OptThermalYieldUtilizationFactor { get; set; } Property Value double OptYieldingSafetyFactor Safety factor for yielding during optimization. [JsAce] public double OptYieldingSafetyFactor { get; set; } Property Value double OptYieldingUtilizationFactor Utilization factor for yielding during optimization. It is the reciprocal of the yielding safety factor. [JsAce] public double OptYieldingUtilizationFactor { get; set; } Property Value double ScriptOptions public ScriptOptions ScriptOptions { get; set; } Property Value ScriptOptions SessionShell Gets the underlying SessionShell instance. public SessionShell SessionShell { get; } Property Value SessionShell StepCount Gets the total number of milling steps. [JsAce] public int StepCount { get; } Property Value int Methods AddTimeDataByFile(string, string, double, double) Adds time-based data from a file to the time mapping dictionary with specified time bounds in seconds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] [NonAction] public bool AddTimeDataByFile(string key, string relFile, double beginTime, double endTime) Parameters key string Key to identify the data relFile string Relative path to the data file beginTime double Beginning time in seconds endTime double Ending time in seconds Returns bool True if the data was successfully added, false otherwise AddTimeDataByFile(string, string, string, string) Adds time-based data from a file to the time mapping dictionary with specified time bounds. [JsAce(\"AddTimeDataByFile($1key, $2relFile, $3beginTime, $4endTime)\")] [HttpPost] public bool AddTimeDataByFile(string key, string relFile, string beginTimeText, string endTimeText) Parameters key string Key to identify the data relFile string Relative path to the data file beginTimeText string Beginning time as text (seconds or TimeSpan format) endTimeText string Ending time as text (seconds or TimeSpan format) Returns bool True if the data was successfully added, false otherwise AppendMessagesToFile(string, params string[]) Appends messages to a file, optionally filtered by tags. [JsAce(\"AppendMessagesToFile(\\\"dstRelFile\\\",flags)\")] [HttpPost] public void AppendMessagesToFile(string dstRelFile, params string[] flags) Parameters dstRelFile string Destination relative file path flags string[] Optional flags to filter messages by tags BeginPreserve() Begin Preserve section in optimzation process. [JsAce(\"BeginPreserve()\")] [HttpPost] public void BeginPreserve() BeginSelection(string, AnchorMode, IStepShift) Begin mark on current line. milling step() has not triggered yet. [NonAction] public void BeginSelection(string key, AnchorMode anchorMode = AnchorMode.LineBegin, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the beginning of selection shift IStepShift Step shift to apply BeginSession() BeginSession(). Callable without an active session (it is how a session is started) but still requires a loaded project; routes straight to Hi.MachiningProcs.SessionShellController.LocalProjectService so it does not touch the null session-scoped facade. [HttpPost] public void BeginSession() ClearTimeMappingData() Clears all time mapping data. [JsAce] [HttpPost] public void ClearTimeMappingData() ConvertClToNcFiles(string) Converts the CLSF play of the current session into Fanuc NC files (writeback synthesis — MSYS tilt becomes G68.2, tool posture becomes G43.4 RTCP with rotary words). [JsAce(Snippet = \"ConvertClToNcFiles(\\\"Output/[NcName].nc\\\")\", DocContentHtml = \"Convert the played CLSF into Fanuc NC files by substitute template keyword \\\"[NcName]\\\"\")] [HttpPost] public IReadOnlyList ConvertClToNcFiles(string relNcFileTemplate = \"Output/[NcName].nc\") Parameters relNcFileTemplate string Output path template; [NcName] is replaced by the source file name. Returns IReadOnlyList Diff(double) Performs a difference analysis on the workpiece geometry to detect variations. [JsAce(\"Diff($1detectionRadius_mm)\")] [HttpPost] public void Diff(double detectionRadius_mm) Parameters detectionRadius_mm double Radius for detecting differences EmbedSingleDataPerStepByCsvFile(string) Reads a CSV file and performs time-based interpolation to map data to milling steps. It is one (step) - one (embedded-data) mapping. [JsAce(Snippet = \"EmbedSingleDataPerStepByCsvFile($1\\\"csvFile\\\")\")] [HttpPost] public void EmbedSingleDataPerStepByCsvFile(string csvFile) Parameters csvFile string Path to the CSV file relative to the base directory EndPreserve() End Preserve section in optimzation process. [JsAce(\"EndPreserve()\")] [HttpPost] public void EndPreserve() EndSelection(string, AnchorMode, IStepShift) End mark on current line for selection. [NonAction] public void EndSelection(string key, AnchorMode anchorMode = AnchorMode.LineEnd, IStepShift shift = null) Parameters key string Identifier key for the selection anchorMode AnchorMode Mode for anchoring the end of selection shift IStepShift Step shift to apply EndSession() EndSession(). Callable without an active session (a no-op when none is active); routes straight to Hi.MachiningProcs.SessionShellController.LocalProjectService. [HttpPost] public void EndSession() ErrorMessage(string) Displays an error message in the message host. [JsAce(\"ErrorMessage($1message)\")] [HttpPost] public void ErrorMessage(string message) Parameters message string The error message to display ExportMeshedGeomToStl(string, double) Exports the current meshed geometry to an STL file. [JsAce(\"ExportMeshedGeomToStl($1\\\"dstFile\\\",$2resolution_mm)\")] [HttpPost] public void ExportMeshedGeomToStl(string relFile, double resolution_mm = 0) Parameters relFile string Relative path to the output STL file resolution_mm double Resolution in millimeters (0 for default) ExportRuntimeGeomToStl(string, double) Legacy script alias of ExportMeshedGeomToStl(string, double); kept so old player scripts keep working. [Obsolete(\"Legacy alias; use ExportMeshedGeomToStl instead.\")] [HttpPost] public void ExportRuntimeGeomToStl(string relFile, double resolution_mm = 0) Parameters relFile string resolution_mm double FixedPace(double, double) Creates a fixed machining motion resolution with specified parameters. [JsAce(\"FixedPace($1linearResolution_mm, $2rotaryResolution_deg)\")] [NonAction] public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters rotaryResolution_deg double Rotary resolution in degrees Returns FixedMachiningMotionResolution A new fixed machining motion resolution instance GetMillingStep(int) Retrieves a milling step at the specified index. [JsAce(Snippet = \"GetMillingStep($1\\\"stepIndex\\\")\")] [NonAction] public MachiningStep GetMillingStep(int stepIndex) Parameters stepIndex int Index of the milling step to retrieve Returns MachiningStep The milling step at the specified index GetStickMachiningToolObservationHeight_mm(int) Gets the observation height in millimeters for the specified stick machining tool. [JsAce(\"GetStickMachiningToolObservationHeight_mm($1toolId)\")] [HttpGet] public double GetStickMachiningToolObservationHeight_mm(int toolId) Parameters toolId int The ID of the tool Returns double The observation height in millimeters GetUniformFlutingShiftAngle_deg(int) Gets the shift angle in degrees for the uniform fluting of the specified tool, that is, for a cutter whose flutes all share one baseline flute contour. [JsAce(\"GetUniformFlutingShiftAngle_deg($1toolId)\")] [HttpGet] public double GetUniformFlutingShiftAngle_deg(int toolId) Parameters toolId int The ID of the tool Returns double The shift angle in degrees LineSelection(string, AnchorMode, IStepShift, AnchorMode, IStepShift) Create a line selection from begin to end mark. [NonAction] public void LineSelection(string key, AnchorMode beginAnchorMode = AnchorMode.LineBegin, IStepShift beginShift = null, AnchorMode endAnchorMode = AnchorMode.LineEnd, IStepShift endShift = null) Parameters key string Identifier key for the selection beginAnchorMode AnchorMode Mode for anchoring the beginning of selection beginShift IStepShift Step shift to apply at beginning endAnchorMode AnchorMode Mode for anchoring the end of selection endShift IStepShift Step shift to apply at end Map(string, IFileTimeSection, CycleSamplingMode?) Maps selection data to time section. [HttpPost] public Task Map(string key, IFileTimeSection fileTimeSection = null, StepTimeShotUtil.CycleSamplingMode? cycleSamplingMode = null) Parameters key string Identifier key for the selection fileTimeSection IFileTimeSection File time section, or null to use the one associated with the key cycleSamplingMode StepTimeShotUtil.CycleSamplingMode? Cycle sampling mode Returns Task Task representing the asynchronous mapping operation Message(string) Displays a message in the message host. [JsAce(\"Message($1message)\")] [HttpPost] public void Message(string message) Parameters message string The message to display OptimizeToFiles(string) Optimizes NC files and saves results using the specified file template. [JsAce(Snippet = \"OptimizeToFiles(\\\"Output/Opt-[NcName]\\\")\", DocContentHtml = \"Optimize To Files by substitude template keywoard \\\"[NcName]\\\"\")] [HttpPost] public void OptimizeToFiles(string relFileTemplate = \"Output/Opt-[NcName]\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder Pace() Controls the pace of machining operations during execution. [JsAce(\"Pace();\")] [HttpPost] public void Pace() Pause() Pause Player [JsAce(DocContentHtml = \"Pause Player\")] [HttpPost] public void Pause() PlayAct(IAct, ISentenceCarrier, CancellationToken?) PlayAct(IAct, ISentenceCarrier, CancellationToken?) [JsAce] [NonAction] public void PlayAct(IAct act, ISentenceCarrier sourceCommand = null, CancellationToken? cancellationToken = null) Parameters act IAct sourceCommand ISentenceCarrier cancellationToken CancellationToken? PlayBrandNcFile(string) Plays a famous-brand NC code file with the specified relative path (no kind dispatch — always the brand runner). [JsAce(\"PlayBrandNcFile($1\\\"ncFile\\\");\")] [HttpPost] public void PlayBrandNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file PlayClFile(string) Plays an NX-CL (CLSF) file with the specified relative path. [JsAce(\"PlayClFile($1\\\"clFile\\\");\")] [HttpPost] public void PlayClFile(string relFilePath) Parameters relFilePath string Relative path to the CLSF file PlayClTeleport(double, double, double, double, double, double) PlayClTeleport(double, double, double, double, double, double) [JsAce] [HttpPost] public void PlayClTeleport(double x, double y, double z, double i, double j, double k) Parameters x double y double z double i double j double k double PlayCsvFile(string) Plays an CSV file with the specified relative path. [JsAce(\"PlayCsvFile($1\\\"csvFile\\\");\")] [HttpPost] public void PlayCsvFile(string relFilePath) Parameters relFilePath string Relative path to the CSV file PlayNc(string, string) Plays NC code directly from a string, executing each action and pacing between them. [JsAce(Snippet = \"PlayNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Play NC. second parameter is the file name alternative shows in the log.\")] [HttpPost] public void PlayNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs PlayNcFile(string, NcKind) Plays an NC program file with the specified relative path, the runner picked by kind (Auto = by file extension: .cl/.cls/.clsf play as CL, .csv as CSV, anything else as brand NC). [JsAce(\"PlayNcFile($1\\\"ncFile\\\");\")] [HttpPost] public void PlayNcFile(string relNcFilePath, NcKind kind = NcKind.Auto) Parameters relNcFilePath string Relative path to the NC program file kind NcKind Which runner plays the file; Auto detects by extension. PlayToolingTeleport(int) PlayToolingTeleport(int) [JsAce] [HttpPost] public void PlayToolingTeleport(int toolId) Parameters toolId int Preserve() Preserve one line NC code in optimzation process. [JsAce(\"Preserve()\")] [HttpPost] public void Preserve() ProgressMessage(string) Displays a progress message in the message host. [JsAce(\"ProgressMessage($1message)\")] [HttpPost] public void ProgressMessage(string message) Parameters message string The progress message to display ReTrainMillingPara(SampleFlag, string, double) Re-trains milling parameters using the specified sample flag. [JsAce(\"ReTrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] [HttpPost] public void ReTrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 2) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering ReadMeshedGeom(string) Reads meshed geometry from a file. [JsAce(\"ReadMeshedGeom($1\\\"srcFile\\\")\")] [HttpPost] public void ReadMeshedGeom(string relFile) Parameters relFile string Relative path to the input file ReadRuntimeGeom(string) Legacy script alias of ReadMeshedGeom(string); kept so old player scripts keep working. [Obsolete(\"Legacy alias; use ReadMeshedGeom instead.\")] [HttpPost] public void ReadRuntimeGeom(string relFile) Parameters relFile string RegisterStepVariable(string, string, string, string, Func) Registers a step variable for tracking during execution. [JsAce(Snippet = \"RegisterStepVariable(\\\"$1key\\\",\\\"$2name\\\",\\\"$3unit\\\",\\\"$4formatString\\\",\\\"$5variableFunc\\\")\", DocContentHtml = \"

    Register Step Variable.

    \\\"unit\\\" is nullable

    \\\"formatString\\\" is nullable

    \")] [NonAction] public void RegisterStepVariable(string key, string name, string unit, string formatString, Func variableFunc = null) Parameters key string Unique key to identify the variable name string Human-readable name of the variable unit string Physical unit of the variable (can be null) formatString string Format string for displaying the variable (can be null) variableFunc Func Function to compute the variable value from a milling step (can be null) RemoveFlyPiece() Removes any disconnected or “flying” pieces from the workpiece geometry. [JsAce] [HttpPost] public void RemoveFlyPiece() Reset() Reset Player [JsAce(DocContentHtml = \"Reset Player\")] [HttpPost] public void Reset() ResetRuntime() Clears internal buffers. [JsAce] [HttpPost] public void ResetRuntime() RunBrandNcFile(string) Runs a famous-brand NC code file with the specified relative path (no kind dispatch — always the brand runner). [JsAce(\"RunBrandNcFile($1\\\"ncFile\\\");\")] [NonAction] public IEnumerable RunBrandNcFile(string relNcFilePath) Parameters relNcFilePath string Relative path to the NC file Returns IEnumerable Enumerable sequence of actions to be executed RunNc(string, string) Runs NC code directly from a string. [JsAce(Snippet = \"RunNc($1\\\"ncCommand\\\",$2\\\"\\\"(Direct Command)\\\"\\\");\", DocContentHtml = \"Run NC. second parameter is the file name alternative shows in the log.\")] [NonAction] public IEnumerable RunNc(string ncText, string fileNameAlternative = \"--\") Parameters ncText string NC code as a string fileNameAlternative string Alternative name to display in logs Returns IEnumerable Enumerable sequence of actions to be executed RunNcFile(string, NcKind) Runs an NC program file with the specified relative path, the runner picked by kind (Auto = by file extension). [JsAce(\"RunNcFile($1\\\"ncFile\\\");\")] [NonAction] public IEnumerable RunNcFile(string relNcFilePath, NcKind kind = NcKind.Auto) Parameters relNcFilePath string Relative path to the NC program file kind NcKind Which runner runs the file; Auto detects by extension. Returns IEnumerable Enumerable sequence of actions to be executed SetNcResolutionFeedPerCycle() Sets NC resolution to feed per cycle mode. [HttpPost] public void SetNcResolutionFeedPerCycle() SetNcResolutionFeedPerTooth() Sets NC resolution to feed per tooth mode. [HttpPost] public void SetNcResolutionFeedPerTooth() SetNcResolutionFixed(double, double) Sets NC resolution to fixed mode with specified resolution values. [HttpPost] public void SetNcResolutionFixed(double linearResolution_mm, double rotaryResolution_deg) Parameters linearResolution_mm double Linear resolution in millimeters. rotaryResolution_deg double Rotary resolution in degrees. SetStickMachiningToolObservationHeight_mm(int, double) Sets the observation height in millimeters for the specified stick machining tool. [JsAce(\"SetStickMachiningToolObservationHeight_mm($1toolId,$2height_mm)\")] [HttpPost] public void SetStickMachiningToolObservationHeight_mm(int toolId, double height) Parameters toolId int The ID of the tool height double The observation height in millimeters to set SetUniformFlutingShiftAngle_deg(int, double) Sets the shift angle in degrees for the uniform fluting of the specified tool, that is, for a cutter whose flutes all share one baseline flute contour. [JsAce(\"SetUniformFlutingShiftAngle_deg($1toolId,$2angle_deg)\")] [HttpPost] public void SetUniformFlutingShiftAngle_deg(int toolId, double angle_deg) Parameters toolId int The ID of the tool angle_deg double The shift angle in degrees to set ShiftDistance_mm(double) Creates a distance shift object representing the specified distance in millimeters. [NonAction] public DistanceShift ShiftDistance_mm(double distanceShift_mm) Parameters distanceShift_mm double Distance shift in millimeters Returns DistanceShift Distance shift object ShiftTime_s(double) Creates a time shift object representing the specified time in seconds. [NonAction] public TimeShift ShiftTime_s(double seconds) Parameters seconds double Time in seconds Returns TimeShift Time shift object TrainMillingPara(SampleFlag, string, double) Trains milling parameters using the specified sample flag. [JsAce(\"TrainMillingPara(Fx|Fy|Fz, $1dstFile)\")] [HttpPost] public void TrainMillingPara(SampleFlag sampleFlag, string dstRelFile, double outlierRatio = 2) Parameters sampleFlag SampleFlag Sample flag indicating which components to train dstRelFile string Destination relative file path outlierRatio double Outlier ratio for data filtering WarningMessage(string) Displays a warning message in the message host. [JsAce(\"WarningMessage($1message)\")] [HttpPost] public void WarningMessage(string message) Parameters message string The warning message to display WriteMeshedGeom(string) Writes the current meshed geometry to a file. [JsAce(\"WriteMeshedGeom($1\\\"dstFile\\\")\")] [HttpPost] public void WriteMeshedGeom(string relFile) Parameters relFile string Relative path to the output file WriteRuntimeGeom(string) Legacy script alias of WriteMeshedGeom(string); kept so old player scripts keep working. [Obsolete(\"Legacy alias; use WriteMeshedGeom instead.\")] [HttpPost] public void WriteRuntimeGeom(string relFile) Parameters relFile string WriteShotFiles(double, string) Writes time-series data to shot files with the specified resolution period (alternative parameter order). [NonAction] public void WriteShotFiles(double resolutionPeroid_ms, string relFileTemplate) Parameters resolutionPeroid_ms double Resolution period in milliseconds relFileTemplate string Template for output file path, can include [NcName] placeholder WriteShotFiles(string, double) Writes time-series data to shot files with the specified resolution period. [JsAce(Snippet = \"WriteShotFiles(\\\"Output/[NcName].shot.csv\\\",resolutionPeroid_ms)\", DocContentHtml = \"Write time series data by resolutionPeroid_ms\")] [HttpPost] public void WriteShotFiles(string relFileTemplate = \"Output/[NcName].shot.csv\", double resolutionPeroid_ms = 1) Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder resolutionPeroid_ms double Resolution period in milliseconds WriteStepFiles(string) Writes step-series data to files with the specified file template. [JsAce(Snippet = \"WriteStepFiles(\\\"Output/[NcName].step.csv\\\")\", DocContentHtml = \"Write step series data.\")] [HttpPost] public void WriteStepFiles(string relFileTemplate = \"Output/[NcName].step.csv\") Parameters relFileTemplate string Template for output file path, can include [NcName] placeholder" }, "api/Hi.MachiningProcs.SetupController.html": { "href": "api/Hi.MachiningProcs.SetupController.html", "title": "Class SetupController | HiAPI-C# 2025", "summary": "Class SetupController Namespace Hi.MachiningProcs Assembly HiNc.dll Controller for setup operations of machining projects. [ApiController] [Route(\"api/[controller]/[action]\")] public class SetupController : ControllerBase Inheritance object ControllerBase SetupController Inherited Members ControllerBase.StatusCode(int) ControllerBase.StatusCode(int, object) ControllerBase.Content(string) ControllerBase.Content(string, string) ControllerBase.Content(string, string, Encoding) ControllerBase.Content(string, MediaTypeHeaderValue) ControllerBase.NoContent() ControllerBase.Ok() ControllerBase.Ok(object) ControllerBase.Redirect(string) ControllerBase.RedirectPermanent(string) ControllerBase.RedirectPreserveMethod(string) ControllerBase.RedirectPermanentPreserveMethod(string) ControllerBase.LocalRedirect(string) ControllerBase.LocalRedirectPermanent(string) ControllerBase.LocalRedirectPreserveMethod(string) ControllerBase.LocalRedirectPermanentPreserveMethod(string) ControllerBase.RedirectToAction() ControllerBase.RedirectToAction(string) ControllerBase.RedirectToAction(string, object) ControllerBase.RedirectToAction(string, string) ControllerBase.RedirectToAction(string, string, object) ControllerBase.RedirectToAction(string, string, string) ControllerBase.RedirectToAction(string, string, object, string) ControllerBase.RedirectToActionPreserveMethod(string, string, object, string) ControllerBase.RedirectToActionPermanent(string) ControllerBase.RedirectToActionPermanent(string, object) ControllerBase.RedirectToActionPermanent(string, string) ControllerBase.RedirectToActionPermanent(string, string, string) ControllerBase.RedirectToActionPermanent(string, string, object) ControllerBase.RedirectToActionPermanent(string, string, object, string) ControllerBase.RedirectToActionPermanentPreserveMethod(string, string, object, string) ControllerBase.RedirectToRoute(string) ControllerBase.RedirectToRoute(object) ControllerBase.RedirectToRoute(string, object) ControllerBase.RedirectToRoute(string, string) ControllerBase.RedirectToRoute(string, object, string) ControllerBase.RedirectToRoutePreserveMethod(string, object, string) ControllerBase.RedirectToRoutePermanent(string) ControllerBase.RedirectToRoutePermanent(object) ControllerBase.RedirectToRoutePermanent(string, object) ControllerBase.RedirectToRoutePermanent(string, string) ControllerBase.RedirectToRoutePermanent(string, object, string) ControllerBase.RedirectToRoutePermanentPreserveMethod(string, object, string) ControllerBase.RedirectToPage(string) ControllerBase.RedirectToPage(string, object) ControllerBase.RedirectToPage(string, string) ControllerBase.RedirectToPage(string, string, object) ControllerBase.RedirectToPage(string, string, string) ControllerBase.RedirectToPage(string, string, object, string) ControllerBase.RedirectToPagePermanent(string) ControllerBase.RedirectToPagePermanent(string, object) ControllerBase.RedirectToPagePermanent(string, string) ControllerBase.RedirectToPagePermanent(string, string, string) ControllerBase.RedirectToPagePermanent(string, string, object, string) ControllerBase.RedirectToPagePreserveMethod(string, string, object, string) ControllerBase.RedirectToPagePermanentPreserveMethod(string, string, object, string) ControllerBase.File(byte[], string) ControllerBase.File(byte[], string, bool) ControllerBase.File(byte[], string, string) ControllerBase.File(byte[], string, string, bool) ControllerBase.File(byte[], string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(byte[], string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(byte[], string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(byte[], string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(Stream, string) ControllerBase.File(Stream, string, bool) ControllerBase.File(Stream, string, string) ControllerBase.File(Stream, string, string, bool) ControllerBase.File(Stream, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(Stream, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(Stream, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(Stream, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(string, string) ControllerBase.File(string, string, bool) ControllerBase.File(string, string, string) ControllerBase.File(string, string, string, bool) ControllerBase.File(string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.File(string, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.File(string, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.PhysicalFile(string, string) ControllerBase.PhysicalFile(string, string, bool) ControllerBase.PhysicalFile(string, string, string) ControllerBase.PhysicalFile(string, string, string, bool) ControllerBase.PhysicalFile(string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.PhysicalFile(string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.PhysicalFile(string, string, string, DateTimeOffset?, EntityTagHeaderValue) ControllerBase.PhysicalFile(string, string, string, DateTimeOffset?, EntityTagHeaderValue, bool) ControllerBase.Unauthorized() ControllerBase.Unauthorized(object) ControllerBase.NotFound() ControllerBase.NotFound(object) ControllerBase.BadRequest() ControllerBase.BadRequest(object) ControllerBase.BadRequest(ModelStateDictionary) ControllerBase.UnprocessableEntity() ControllerBase.UnprocessableEntity(object) ControllerBase.UnprocessableEntity(ModelStateDictionary) ControllerBase.Conflict() ControllerBase.Conflict(object) ControllerBase.Conflict(ModelStateDictionary) ControllerBase.Problem(string, string, int?, string, string) ControllerBase.Problem(string, string, int?, string, string, IDictionary) ControllerBase.ValidationProblem(ValidationProblemDetails) ControllerBase.ValidationProblem(ModelStateDictionary) ControllerBase.ValidationProblem() ControllerBase.ValidationProblem(string, string, int?, string, string, ModelStateDictionary) ControllerBase.ValidationProblem(string, string, int?, string, string, ModelStateDictionary, IDictionary) ControllerBase.Created() ControllerBase.Created(string, object) ControllerBase.Created(Uri, object) ControllerBase.CreatedAtAction(string, object) ControllerBase.CreatedAtAction(string, object, object) ControllerBase.CreatedAtAction(string, string, object, object) ControllerBase.CreatedAtRoute(string, object) ControllerBase.CreatedAtRoute(object, object) ControllerBase.CreatedAtRoute(string, object, object) ControllerBase.Accepted() ControllerBase.Accepted(object) ControllerBase.Accepted(Uri) ControllerBase.Accepted(string) ControllerBase.Accepted(string, object) ControllerBase.Accepted(Uri, object) ControllerBase.AcceptedAtAction(string) ControllerBase.AcceptedAtAction(string, string) ControllerBase.AcceptedAtAction(string, object) ControllerBase.AcceptedAtAction(string, string, object) ControllerBase.AcceptedAtAction(string, object, object) ControllerBase.AcceptedAtAction(string, string, object, object) ControllerBase.AcceptedAtRoute(object) ControllerBase.AcceptedAtRoute(string) ControllerBase.AcceptedAtRoute(string, object) ControllerBase.AcceptedAtRoute(object, object) ControllerBase.AcceptedAtRoute(string, object, object) ControllerBase.Challenge() ControllerBase.Challenge(params string[]) ControllerBase.Challenge(AuthenticationProperties) ControllerBase.Challenge(AuthenticationProperties, params string[]) ControllerBase.Forbid() ControllerBase.Forbid(params string[]) ControllerBase.Forbid(AuthenticationProperties) ControllerBase.Forbid(AuthenticationProperties, params string[]) ControllerBase.SignIn(ClaimsPrincipal) ControllerBase.SignIn(ClaimsPrincipal, string) ControllerBase.SignIn(ClaimsPrincipal, AuthenticationProperties) ControllerBase.SignIn(ClaimsPrincipal, AuthenticationProperties, string) ControllerBase.SignOut() ControllerBase.SignOut(AuthenticationProperties) ControllerBase.SignOut(params string[]) ControllerBase.SignOut(AuthenticationProperties, params string[]) ControllerBase.TryUpdateModelAsync(TModel) ControllerBase.TryUpdateModelAsync(TModel, string) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider) ControllerBase.TryUpdateModelAsync(TModel, string, params Expression>[]) ControllerBase.TryUpdateModelAsync(TModel, string, Func) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider, params Expression>[]) ControllerBase.TryUpdateModelAsync(TModel, string, IValueProvider, Func) ControllerBase.TryUpdateModelAsync(object, Type, string) ControllerBase.TryUpdateModelAsync(object, Type, string, IValueProvider, Func) ControllerBase.TryValidateModel(object) ControllerBase.TryValidateModel(object, string) ControllerBase.HttpContext ControllerBase.Request ControllerBase.Response ControllerBase.RouteData ControllerBase.ModelState ControllerBase.ControllerContext ControllerBase.MetadataProvider ControllerBase.ModelBinderFactory ControllerBase.Url ControllerBase.ObjectValidator ControllerBase.ProblemDetailsFactory ControllerBase.User ControllerBase.Empty 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 SetupController(LocalProjectService, ILogger) Initializes a new instance. public SetupController(LocalProjectService projectService, ILogger logger) Parameters projectService LocalProjectService logger ILogger Properties InitResolution_mm InitResolution_mm. public double InitResolution_mm { get; set; } Property Value double Methods ApplyClMillingDevice() Applies a CL milling device to the machining equipment. [HttpPost] public void ApplyClMillingDevice() LoadFixture(string) Loads a fixture from the specified XML file path. [HttpPost] public void LoadFixture(string fixtureXmlFilePath) Parameters fixtureXmlFilePath string The XML file path of the fixture to load. LoadProject(string) Loads a machining project from the specified file path. [HttpPost] public void LoadProject(string filePath) Parameters filePath string The file path to load the project from. SaveProject() Saves the current machining project. [HttpPost] public void SaveProject()" }, + "api/Hi.MachiningProcs.ShellProgress.html": { + "href": "api/Hi.MachiningProcs.ShellProgress.html", + "title": "Class ShellProgress | HiAPI-C# 2025", + "summary": "Class ShellProgress Namespace Hi.MachiningProcs Assembly HiMech.dll Append-only, thread-safe sink for session-level routine / lifecycle messages on the IMessage channel — one of the partitioned message homes. This is partitioned by message kind, orthogonal to the other sinks: plain SimpleMessage notices that belong to the session as a whole (cache reset, file load / save progress, session start/done) live here; messages tied to a particular machining step live in StepDiagnosticProgress; NC-pipeline diagnostics live in NcDiagnosticProgress. Append-only: session-routine messages are emitted sequentially, so report order already is execution order — there is no per-step anchor and no stable-index bookkeeping. public class ShellProgress : IProgress Inheritance object ShellProgress 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) StepDiagnosticAnchorUtil.AnchoredToStep(IProgress, int, ISentenceCarrier) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Messages All reported messages, in append (report) order. Thread-safe for concurrent appends. public SynList Messages { get; } Property Value SynList Methods Clear() Removes all messages (e.g. on session reset). public void Clear() Report(IMessage) Reports a progress update. public void Report(IMessage value) Parameters value IMessage The value of the updated progress. Events Cleared Raised after Clear() empties the collection. public event Action Cleared Event Type Action MessageAdded Raised after a message has been appended. Carries the index it landed at in Messages and the appended message, so a consumer can place it and reach nearby items by indexing into Messages. public event Action MessageAdded Event Type Action" + }, "api/Hi.MachiningProcs.SpindleSpeedCache.html": { "href": "api/Hi.MachiningProcs.SpindleSpeedCache.html", "title": "Class SpindleSpeedCache | HiAPI-C# 2025", "summary": "Class SpindleSpeedCache Namespace Hi.MachiningProcs Assembly HiMech.dll Represents cached spindle speed information. public class SpindleSpeedCache Inheritance object SpindleSpeedCache 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 SpindleSpeedCache(SpindleSpeedCache) Initializes a new instance by copying from another instance. public SpindleSpeedCache(SpindleSpeedCache src) Parameters src SpindleSpeedCache The source instance to copy from. SpindleSpeedCache(double, double, double, double, double, double, double, double) Initializes a new instance. public SpindleSpeedCache(double spindleSpeed_cycleDs, double infInsistentRatioSpindleTorqueBoundary_Nm, double infInsistentRatioSpindlePowerBoundary_W, double minInsistentRatioSpindleTorqueBoundary_Nm, double minInsistentRatioSpindlePowerBoundary_W, double heatCapacity_JdK, double convectionPara_WdK, double dryRunPower_W) Parameters spindleSpeed_cycleDs double The spindle speed in cycles per second. infInsistentRatioSpindleTorqueBoundary_Nm double The infinite insistent ratio spindle torque boundary in Newton-meters. infInsistentRatioSpindlePowerBoundary_W double The infinite insistent ratio spindle power boundary in watts. minInsistentRatioSpindleTorqueBoundary_Nm double The minimum insistent ratio spindle torque boundary in Newton-meters. minInsistentRatioSpindlePowerBoundary_W double The minimum insistent ratio spindle power boundary in watts. heatCapacity_JdK double The heat capacity in joules per Kelvin. convectionPara_WdK double The convection parameter in watts per Kelvin. dryRunPower_W double The dry run power in watts. Properties ConvectionPara_WdK Gets or sets the convection parameter in watts per Kelvin. public double ConvectionPara_WdK { get; set; } Property Value double DryRunPower_W Gets or sets the dry run power in watts. public double DryRunPower_W { get; set; } Property Value double HeatCapacity_JdK Gets or sets the heat capacity in joules per Kelvin. public double HeatCapacity_JdK { get; set; } Property Value double InfInsistentRatioSpindlePowerBoundary_W Gets or sets the infinite insistent ratio spindle power boundary in watts. public double InfInsistentRatioSpindlePowerBoundary_W { get; set; } Property Value double InfInsistentRatioSpindleTorqueBoundary_Nm Gets or sets the infinite insistent ratio spindle torque boundary in Newton-meters. public double InfInsistentRatioSpindleTorqueBoundary_Nm { get; set; } Property Value double MinInsistentRatioSpindlePowerBoundary_W Gets or sets the minimum insistent ratio spindle power boundary in watts. public double MinInsistentRatioSpindlePowerBoundary_W { get; set; } Property Value double MinInsistentRatioSpindleTorqueBoundary_Nm Gets or sets the minimum insistent ratio spindle torque boundary in Newton-meters. public double MinInsistentRatioSpindleTorqueBoundary_Nm { get; set; } Property Value double SpindleSpeed_cycleDs Gets or sets the spindle speed in cycles per second. public double SpindleSpeed_cycleDs { get; set; } Property Value double Methods Create(SpindleCapability, MachineMotionStep, SpindleSpeedCache, Action) Creates a SpindleSpeedCache from spindle capability and machine motion step. Returns preSpindleSpeedCache if the spindle speed is unchanged or the capability data is incomplete. public static SpindleSpeedCache Create(SpindleCapability spindleCapability, MachineMotionStep machineMotionStep, SpindleSpeedCache preSpindleSpeedCache, Action onWarning) Parameters spindleCapability SpindleCapability machineMotionStep MachineMotionStep preSpindleSpeedCache SpindleSpeedCache onWarning Action Returns SpindleSpeedCache" }, + "api/Hi.MachiningProcs.StepDiagnostic.html": { + "href": "api/Hi.MachiningProcs.StepDiagnostic.html", + "title": "Class StepDiagnostic | HiAPI-C# 2025", + "summary": "Class StepDiagnostic Namespace Hi.MachiningProcs Assembly HiMech.dll An IMessage produced while constructing a MachiningStep, anchored to the step's execution-order StepIndex and (when available) its NC-source SentenceCarrier. Decorator over an inner Message — the five IMessage members delegate to it — so a plain SimpleMessage emitted during step processing can be upgraded to a step-anchored diagnostic without the producer needing to know the step context. public class StepDiagnostic : IMessage, IMotionStepIndex Inheritance object StepDiagnostic Implements IMessage IMotionStepIndex 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 StepDiagnostic(int, ISentenceCarrier, IMessage) Initializes a new instance of the StepDiagnostic class. public StepDiagnostic(int stepIndex, ISentenceCarrier sentenceCarrier, IMessage message) Parameters stepIndex int Execution-order index of the step. sentenceCarrier ISentenceCarrier NC-source carrier for the step; may be null. message IMessage The wrapped inner message. Properties Message The wrapped message supplying severity / category / id / notification / detail. public IMessage Message { get; } Property Value IMessage SentenceCarrier NC-source carrier for the step; null when the source is not an ISentenceCarrier (e.g. the legacy hard / CSV runners, which the soft runner is expected to supersede). public ISentenceCarrier SentenceCarrier { get; } Property Value ISentenceCarrier StepIndex Execution-order index of the step this diagnostic belongs to. public int StepIndex { get; } Property Value int Methods GetArgs() Gets the values interpolated into GetFormat(); null when GetFormat() is null, possibly empty for a hole-less template. Default interface method so external implementers are unaffected. public object[] GetArgs() Returns object[] The interpolation arguments, or null when untemplated. GetCategory() Gets the classification — see Category. public Category GetCategory() Returns Category The category of this message. GetDetail() Gets the optional detail payload or exception; null when not applicable. public object GetDetail() Returns object The detail object, or null. GetFormat() Gets the composite-format template behind GetNotification() — a {0}-style .NET format string — when this message was produced from an interpolated template; null when the notification has no structured template. Together with GetArgs() this lets a consumer re-render the message in another language without losing the interpolated live values, while GetNotification() stays the invariant English rendering. Default interface method so external implementers are unaffected. public string GetFormat() Returns string The composite format string, or null when untemplated. GetId() Gets the structured id used for filtering / suppression; may be null. public string GetId() Returns string The message id, or null when not applicable. GetNotification() Gets the end-user friendly notification text. public string GetNotification() Returns string The notification text. GetSeverity() Gets the importance level — see Severity. public Severity GetSeverity() Returns Severity The severity of this message. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + }, + "api/Hi.MachiningProcs.StepDiagnosticAnchorUtil.html": { + "href": "api/Hi.MachiningProcs.StepDiagnosticAnchorUtil.html", + "title": "Class StepDiagnosticAnchorUtil | HiAPI-C# 2025", + "summary": "Class StepDiagnosticAnchorUtil Namespace Hi.MachiningProcs Assembly HiMech.dll Bridges a step-anchored IProgress sink (e.g. StepDiagnosticProgress) back to the generic IProgress surface, so out-of-step-pipeline producers can keep using the id-first MessageUtil shorthands (ValidationError, ConfigurationWarning, …) and still land a StepDiagnostic on the sink. public static class StepDiagnosticAnchorUtil Inheritance object StepDiagnosticAnchorUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods AnchoredToStep(IProgress, int, ISentenceCarrier) Wraps sink in an IProgress that upgrades every reported message to a StepDiagnostic anchored to stepIndex / carrier (an already-anchored StepDiagnostic passes through unchanged). Returns null when sink is null, so the null-safe MessageUtil shorthands remain a no-op. public static IProgress AnchoredToStep(this IProgress sink, int stepIndex, ISentenceCarrier carrier = null) Parameters sink IProgress The step-anchored destination; null yields a null adapter. stepIndex int Motion-step index to anchor plain messages to (typically ShellThreadStepIndex). carrier ISentenceCarrier Optional NC-source carrier for the step; may be null. Returns IProgress" + }, + "api/Hi.MachiningProcs.StepDiagnosticProgress.html": { + "href": "api/Hi.MachiningProcs.StepDiagnosticProgress.html", + "title": "Class StepDiagnosticProgress | HiAPI-C# 2025", + "summary": "Class StepDiagnosticProgress Namespace Hi.MachiningProcs Assembly HiMech.dll Append-only, thread-safe sink for step-anchored diagnostics on the IMessage channel. This sink stores only StepDiagnostic: every message is anchored to a motion step. Per-step batches arrive via FlushTo(IProgress); out-of-pipeline emits (e.g. stroke-limit / tooling diagnostics) anchor themselves with AnchoredToStep(IProgress, int, ISentenceCarrier) before reporting. Data that already has another owner is not duplicated here — NC diagnostics live in NcDiagnosticProgress, plain session-level notices live in ShellProgress, cutter positions live in the CL strip. Because every StepDiagnostic carries its own StepIndex anchor, ordering is recovered downstream by sorting on that anchor. Producers therefore only ever Report(StepDiagnostic) (append) — even from parallel step-processing tasks — and never insert at a computed position. public class StepDiagnosticProgress : IProgress Inheritance object StepDiagnosticProgress 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) StepDiagnosticAnchorUtil.AnchoredToStep(IProgress, int, ISentenceCarrier) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties Messages All reported diagnostics, in append (report) order. The collection is thread-safe for concurrent appends from parallel step-processing tasks. public SynList Messages { get; } Property Value SynList Methods Clear() Removes all messages (e.g. on session reset). public void Clear() Report(StepDiagnostic) Reports a progress update. public void Report(StepDiagnostic value) Parameters value StepDiagnostic The value of the updated progress. Events Cleared Raised after Clear() empties the collection. public event Action Cleared Event Type Action MessageAdded Raised after a diagnostic has been appended. Carries the index it landed at in Messages and the appended diagnostic, so a consumer can place it and reach nearby items by indexing into Messages. The index is captured atomically with the append, so it stays correct under concurrent step-task reports. public event Action MessageAdded Event Type Action" + }, + "api/Hi.MachiningProcs.StepScopedProgress.html": { + "href": "api/Hi.MachiningProcs.StepScopedProgress.html", + "title": "Class StepScopedProgress | HiAPI-C# 2025", + "summary": "Class StepScopedProgress Namespace Hi.MachiningProcs Assembly HiMech.dll A per-step IProgress of IMessage that accumulates the messages emitted while one step is built, upgrading any plain message to a StepDiagnostic anchored to this step's StepIndex / SentenceCarrier. An already step-anchored StepDiagnostic is kept unchanged. (NC diagnostics are not seen here — they live in their own NcDiagnosticProgress, not on this channel.) It does not forward to a downstream sink as messages arrive; instead it collects them into MessageList and is drained once via FlushTo(IProgress) at the step's sequential post-physics stage. Because that stage runs strictly in step order, the per-step batches land in execution order with no position-scanning insert. No locking: a single step's construction is a data-dependency chain (substraction → physics → post-physics), so only one task writes MessageList at a time; parallelism across steps writes to different scopes. Each parallel step task therefore holds its own instance — never a shared mutable \"current step\" on StepDiagnosticProgress, which would race. public class StepScopedProgress : IProgress, IProgressMessage, IMessage, IMotionStepIndex Inheritance object StepScopedProgress Implements IProgress IProgressMessage IMessage IMotionStepIndex 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) StepDiagnosticAnchorUtil.AnchoredToStep(IProgress, int, ISentenceCarrier) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors StepScopedProgress(int, ISentenceCarrier) Initializes a new instance of the StepScopedProgress class. public StepScopedProgress(int stepIndex, ISentenceCarrier sentenceCarrier) Parameters stepIndex int Execution-order index of the step. sentenceCarrier ISentenceCarrier NC-source carrier for the step; may be null. Properties MessageList Messages accumulated for this step, in emission order — already upgraded to StepDiagnostic by Report(IMessage). Written by the step's pipelined (one-at-a-time) construction tasks, then drained once via FlushTo(IProgress). public List MessageList { get; } Property Value List SentenceCarrier NC-source carrier for the step; may be null. public ISentenceCarrier SentenceCarrier { get; } Property Value ISentenceCarrier StepIndex Execution-order index of the step this scope anchors to. public int StepIndex { get; } Property Value int Methods FlushTo(IProgress) Drains the accumulated MessageList into sink in order. Call once, at the step's sequential post-physics stage, so the session sink receives whole per-step batches already in execution order. public void FlushTo(IProgress sink) Parameters sink IProgress The downstream sink (typically the session StepDiagnosticProgress); no-op if null. Report(IMessage) Reports a progress update. public void Report(IMessage value) Parameters value IMessage The value of the updated progress." + }, "api/Hi.MachiningProcs.html": { "href": "api/Hi.MachiningProcs.html", "title": "Namespace Hi.MachiningProcs | HiAPI-C# 2025", - "summary": "Namespace Hi.MachiningProcs Classes LocalProjectService Root(Local) project service. Apply absolute file path. MachiningActRunner Represents a runner for machining actions that manages milling steps, tool paths, and collision detection. MachiningActRunnerConfig Represents the configuration for a milling act runner. Provides settings for physics simulation, evaluation, and temperature control. MachiningParallelProc Represents a parallel processing system for milling operations that manages various tasks such as sweeping, subtraction, force calculation, and physics simulation. MachiningParallelProc.StepTaskBundle Represents a bundle of tasks related to a milling step. MachiningParallelProc.SubstractionResult Represents the result of a subtraction operation. MachiningProject Represents a milling project that manages the execution, simulation, and analysis of NC programs. MachiningProjectDisplayee Represents a displayable wrapper for a machining project. MachiningSession Represents a machining session that manages the execution and optimization of machining operations. Provides functionality for controlling the machining process, handling optimization options, and managing session state. Implements IDisposable to clean up SessionWriters on session end. MillingUtil Provides utility methods for milling calculations and operations. NcRunnerSessionState NC pipeline state held on a MachiningSession and shared across multiple RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) calls within that session. The per-layer SyntaxPieceLayers are extended via AppendSource(IEnumerable) for each subsequent file so that Previous/Next connectivity (and thus ModalCarrySyntax deep-clone) crosses file boundaries. ProxyProjectService Delegate (User-based) Project Service. Apply relative file path from AdminDirectory. SessionMessage Represents a message in the machining process that can contain various types of data such as source commands, machining steps, exceptions, and tagged messages. SessionMessagePack Represents a package containing a machining message and its associated context. SessionProgress Represents a host for managing milling messages with thread-safe operations and stable index tracking. SessionShell End-user-facing facade for a machining session: aggregates session lifecycle, NC playback, optimization, geometry I/O, and scripting infrastructure into a single delegation surface. Used as the C# script globals object and as the concrete target of ISessionCommand implementations. SessionShellController HTTP controller exposing SessionShell over the web API. Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService. SetupController Controller for setup operations of machining projects. SpindleSpeedCache Represents cached spindle speed information. Interfaces IMachiningProjectGetter Interface for objects that can provide a MachiningProject instance. IProjectService Interface for services that manage machining projects. Enums RenderingFlag Flags that control which elements are rendered in the visualization. SessionProgress.FilterFlag Filtering flags for querying messages. Delegates ConfigStepFunc Delegate for configuring a milling step with additional arguments. LocalProjectService.MachiningProjectChangedDelegate Delegate for machining project changed events. MachiningActRunner.MachiningStepBuiltDelegate Delegate for configuring a step with previous and current step information." + "summary": "Namespace Hi.MachiningProcs Classes AllowNoActiveSessionAttribute Marks a session-scoped controller action as callable without an active session, exempting it from RequireActiveSessionAttribute. Use on the session lifecycle entry points (BeginSession / EndSession), which by definition run when no session exists yet. AllowNoLoadedProjectAttribute Marks a project-level controller action as callable without a loaded project, exempting it from RequireLoadedProjectAttribute. Use on the endpoints that create or load a project (which by definition run when no project is open yet). ApiActionResult The shared outcome envelope for a web-API action: whether it succeeded and the messages it reported, in order. Returned by the project-level surface (LocalProjectServiceController) and, on the no-active-session boundary, by the session-scoped surface (SessionShellController via RequireActiveSessionAttribute). A REST / AI caller therefore reads the progress / success / error notifications inline in the HTTP response instead of only out-of-band via the SignalR sinks, and can branch on Success without parsing severities. LocalProjectService Root(Local) project service. Apply absolute file path. LocalProjectServiceController HTTP controller exposing the project-level (session-independent) operations of Hi.MachiningProcs.LocalProjectServiceController.LocalProjectService — the lean API-user surface, parallel to SessionShellController (which mirrors the session-scoped SessionShell). A controller mirrors exactly one body; project-level settings belong here, not bolted onto the session controller. MachiningActRunner Represents a runner for machining actions that manages milling steps, tool paths, and collision detection. MachiningActRunnerConfig Represents the configuration for a milling act runner. Provides settings for physics simulation, evaluation, and temperature control. MachiningParallelProc Represents a parallel processing system for milling operations that manages various tasks such as sweeping, subtraction, force calculation, and physics simulation. MachiningParallelProc.StepTaskBundle Represents a bundle of tasks related to a milling step. MachiningParallelProc.SubstractionResult Represents the result of a subtraction operation. MachiningProject Represents a milling project that manages the execution, simulation, and analysis of NC programs. MachiningSession Represents a machining session that manages the execution and optimization of machining operations. Provides functionality for controlling the machining process, handling optimization options, and managing session state. Implements IDisposable to clean up SessionWriters on session end. MessageDto One reported IMessage, flattened for JSON transport. MillingUtil Provides utility methods for milling calculations and operations. NcKindUtil NcKind helpers. NcRunnerSessionState NC pipeline state held on a MachiningSession and shared across multiple RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) calls within that session. The per-layer SyntaxPieceLayers are extended via AppendSource(IEnumerable) for each subsequent file so that Previous/Next connectivity (and thus ModalCarrySyntax deep-clone) crosses file boundaries. ProjectFileBusyException Thrown when a project-file operation (New / Load / Save / SaveAs / Reload) is requested while another one is already in progress. The newcomer is cancelled rather than queued; controllers surface this as HTTP 409 Conflict. ProxyProjectService Delegate (User-based) Project Service. Apply relative file path from AdminDirectory. RequireActiveSessionAttribute Action filter for the session-scoped web-API surface: before a guarded action runs, verifies a machining session is active (SessionShell is non-null). When none is active it short-circuits with HTTP 409 and an NoActiveSession() envelope, so a REST / AI caller gets a helpful “call BeginSession() first” notice instead of a null-reference 500. Apply at the controller level; exempt the session lifecycle entry points (BeginSession / EndSession) with AllowNoActiveSessionAttribute. RequireLoadedProjectAttribute Action filter for the project-level web-API surface: before a guarded action runs, verifies a project is loaded (MachiningProject is non-null). When none is loaded it short-circuits with HTTP 409 and an NoProjectLoaded() envelope, so a REST / AI caller gets a helpful “create or load a project first” notice instead of a null-reference 500 (the project-level members — MachiningActRunner.Config, workpiece, runners — are null until a project is open). Apply at the controller level; exempt the endpoints that create or load a project with AllowNoLoadedProjectAttribute. SessionShell End-user-facing facade for a machining session: aggregates session lifecycle, NC playback, optimization, geometry I/O, and scripting infrastructure into a single delegation surface. Used as the C# script globals object and as the concrete target of ISessionCommand implementations. SessionShellController HTTP controller exposing SessionShell over the web API. Each action delegates to the underlying SessionShell instance owned by Hi.MachiningProcs.SessionShellController.LocalProjectService. SetupController Controller for setup operations of machining projects. ShellProgress Append-only, thread-safe sink for session-level routine / lifecycle messages on the IMessage channel — one of the partitioned message homes. This is partitioned by message kind, orthogonal to the other sinks: plain SimpleMessage notices that belong to the session as a whole (cache reset, file load / save progress, session start/done) live here; messages tied to a particular machining step live in StepDiagnosticProgress; NC-pipeline diagnostics live in NcDiagnosticProgress. Append-only: session-routine messages are emitted sequentially, so report order already is execution order — there is no per-step anchor and no stable-index bookkeeping. SpindleSpeedCache Represents cached spindle speed information. StepDiagnostic An IMessage produced while constructing a MachiningStep, anchored to the step's execution-order StepIndex and (when available) its NC-source SentenceCarrier. Decorator over an inner Message — the five IMessage members delegate to it — so a plain SimpleMessage emitted during step processing can be upgraded to a step-anchored diagnostic without the producer needing to know the step context. StepDiagnosticAnchorUtil Bridges a step-anchored IProgress sink (e.g. StepDiagnosticProgress) back to the generic IProgress surface, so out-of-step-pipeline producers can keep using the id-first MessageUtil shorthands (ValidationError, ConfigurationWarning, …) and still land a StepDiagnostic on the sink. StepDiagnosticProgress Append-only, thread-safe sink for step-anchored diagnostics on the IMessage channel. This sink stores only StepDiagnostic: every message is anchored to a motion step. Per-step batches arrive via FlushTo(IProgress); out-of-pipeline emits (e.g. stroke-limit / tooling diagnostics) anchor themselves with AnchoredToStep(IProgress, int, ISentenceCarrier) before reporting. Data that already has another owner is not duplicated here — NC diagnostics live in NcDiagnosticProgress, plain session-level notices live in ShellProgress, cutter positions live in the CL strip. Because every StepDiagnostic carries its own StepIndex anchor, ordering is recovered downstream by sorting on that anchor. Producers therefore only ever Report(StepDiagnostic) (append) — even from parallel step-processing tasks — and never insert at a computed position. StepScopedProgress A per-step IProgress of IMessage that accumulates the messages emitted while one step is built, upgrading any plain message to a StepDiagnostic anchored to this step's StepIndex / SentenceCarrier. An already step-anchored StepDiagnostic is kept unchanged. (NC diagnostics are not seen here — they live in their own NcDiagnosticProgress, not on this channel.) It does not forward to a downstream sink as messages arrive; instead it collects them into MessageList and is drained once via FlushTo(IProgress) at the step's sequential post-physics stage. Because that stage runs strictly in step order, the per-step batches land in execution order with no position-scanning insert. No locking: a single step's construction is a data-dependency chain (substraction → physics → post-physics), so only one task writes MessageList at a time; parallelism across steps writes to different scopes. Each parallel step task therefore holds its own instance — never a shared mutable \"current step\" on StepDiagnosticProgress, which would race. Interfaces IMachiningProjectGetter Interface for objects that can provide a MachiningProject instance. IProjectService Interface for services that manage machining projects. Enums NcKind Kind of an NC program file — selects which of the session's runners plays it (ActiveNcRunner / ClRunner / CsvRunner). RenderingFlag Flags that control which elements are rendered in the visualization. Delegates ConfigStepFunc Delegate for configuring a milling step with additional arguments. LocalProjectService.MachiningProjectChangedDelegate Delegate for machining project changed events. MachiningActRunner.MachiningStepBuiltDelegate Delegate for configuring a step with previous and current step information." }, "api/Hi.MachiningSteps.IFlagText.html": { "href": "api/Hi.MachiningSteps.IFlagText.html", @@ -2087,7 +2187,12 @@ "api/Hi.MachiningSteps.IMachiningService.html": { "href": "api/Hi.MachiningSteps.IMachiningService.html", "title": "Interface IMachiningService | HiAPI-C# 2025", - "summary": "Interface IMachiningService Namespace Hi.MachiningSteps Assembly HiMech.dll Represents a host interface for milling steps that provides access to milling equipment and related resources. public interface IMachiningService : IGetMachiningEquipment Inherited Members IGetMachiningEquipment.GetMillingEquipment() 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 ClStrip Gets the cutter location strip containing the machining steps. ClStrip ClStrip { get; } Property Value ClStrip DictionaryColorGuide Gets the color guide for dictionary-based coloring. DictionaryColorGuide DictionaryColorGuide { get; } Property Value DictionaryColorGuide MachiningEquipment Gets the milling equipment used for machining operations. MachiningEquipment MachiningEquipment { get; } Property Value MachiningEquipment MachiningSession Gets the current machining session. MachiningSession MachiningSession { get; } Property Value MachiningSession MachiningToolHouse Gets the tool house containing milling tools. MachiningToolHouse MachiningToolHouse { get; } Property Value MachiningToolHouse MillingStepLuggageReader Gets the parallel bulk reader for milling step luggage data. ParallelBulkReader MillingStepLuggageReader { get; } Property Value ParallelBulkReader TimeMapping Gets the time mapping for synchronization. TimeMapping TimeMapping { get; } Property Value TimeMapping Methods GetSessionShell() Returns the session shell that exposes the runtime surface of the active machining session. ISessionShell GetSessionShell() Returns ISessionShell" + "summary": "Interface IMachiningService Namespace Hi.MachiningSteps Assembly HiMech.dll Represents a host interface for milling steps that provides access to milling equipment and related resources. public interface IMachiningService : IGetMachiningEquipment Inherited Members IGetMachiningEquipment.GetMachiningEquipment() IGetMachiningEquipment.GetMillingEquipment() 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 ActiveNcRunner Gets the active NC control runner. INcRunner ActiveNcRunner { get; } Property Value INcRunner BaseDirectory Gets the project base directory (relative-path root). string BaseDirectory { get; } Property Value string ClRunner Gets the NX-CL (CLSF) control runner. INcRunner ClRunner { get; } Property Value INcRunner ClStrip Gets the cutter location strip containing the machining steps. ClStrip ClStrip { get; } Property Value ClStrip CsvRunner Gets the CSV runner. INcRunner CsvRunner { get; } Property Value INcRunner DictionaryColorGuide Gets the color guide for dictionary-based coloring. DictionaryColorGuide DictionaryColorGuide { get; } Property Value DictionaryColorGuide EnablePauseOnFailure Gets whether playback pauses on a failure. bool EnablePauseOnFailure { get; } Property Value bool IsCollisionDetectionEnabled Gets whether collision detection is currently enabled. bool IsCollisionDetectionEnabled { get; } Property Value bool MachiningActRunner Gets the act runner that expands and processes acts. MachiningActRunner MachiningActRunner { get; } Property Value MachiningActRunner MachiningEquipment Gets the milling equipment used for machining operations. MachiningEquipment MachiningEquipment { get; } Property Value MachiningEquipment MachiningSession Gets the current machining session. MachiningSession MachiningSession { get; } Property Value MachiningSession MachiningToolHouse Gets the tool house containing milling tools. MachiningToolHouse MachiningToolHouse { get; } Property Value MachiningToolHouse MillingStepLuggageReader Gets the parallel bulk reader for milling step luggage data. ParallelBulkReader MillingStepLuggageReader { get; } Property Value ParallelBulkReader NcDiagnosticProgress Gets the NC-pipeline diagnostic sink on the IMessage channel. NcDiagnosticProgress NcDiagnosticProgress { get; } Property Value NcDiagnosticProgress NcManipulationDiagnosticProgress Gets the NC-manipulation diagnostic sink — the second diagnostic home, for operations that rework an already-played NC/CL program (writeback conversion, NC optimization) as opposed to the play-time pipeline diagnostics in NcDiagnosticProgress. Keeping the two scenarios in separate homes lets a play reset clear run diagnostics without discarding manipulation results, and vice versa; each manipulation run clears this home at its start so it always holds the latest run. NcDiagnosticProgress NcManipulationDiagnosticProgress { get; } Property Value NcDiagnosticProgress PacePlayer Gets the pace player controlling execution pace. PacePlayer PacePlayer { get; } Property Value PacePlayer StepDiagnosticProgress Gets the step-aligned IMessage-channel sink. StepDiagnosticProgress StepDiagnosticProgress { get; } Property Value StepDiagnosticProgress TimeMapping Gets the time mapping for synchronization. TimeMapping TimeMapping { get; } Property Value TimeMapping Methods BeginNcRunner() Initialises the meshed geometry for an NC run (idempotent). void BeginNcRunner() CheckStrokeLimitOnStep() Checks the stroke limit at the current step; true if within limits. bool CheckStrokeLimitOnStep() Returns bool GetSessionShell() Returns the session shell that exposes the runtime surface of the active machining session. ISessionShell GetSessionShell() Returns ISessionShell RefreshDrawing() Refreshes the visual display. void RefreshDrawing() UpdateIdealMillingToolOffsetTableByToolHouse() Refreshes the ideal milling-tool offset table from the tool house. void UpdateIdealMillingToolOffsetTableByToolHouse()" + }, + "api/Hi.MachiningSteps.IMotionStepIndex.html": { + "href": "api/Hi.MachiningSteps.IMotionStepIndex.html", + "title": "Interface IMotionStepIndex | HiAPI-C# 2025", + "summary": "Interface IMotionStepIndex Namespace Hi.MachiningSteps Assembly HiMech.dll Abstraction for an object that carries a StepIndex — the 0-based ordinal of a machining motion step in execution order. Used as a cross-object alignment key so a step (MachiningStep), its cutter-location position (ClStripPos), and the messages anchored to it (StepDiagnostic, StepScopedProgress) can be matched by the same ordinal without depending on a concrete type. Distinct from ISentenceIndexed: that ordinal counts NC source blocks, whereas this one counts produced motion steps — a single source block (e.g. a canned cycle) can fan out into several steps. public interface IMotionStepIndex 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 StepIndex 0-based ordinal of the motion step in execution order. int StepIndex { get; } Property Value int" }, "api/Hi.MachiningSteps.IStepPropertyAccessHost.html": { "href": "api/Hi.MachiningSteps.IStepPropertyAccessHost.html", @@ -2097,7 +2202,7 @@ "api/Hi.MachiningSteps.MachineMotionStep.html": { "href": "api/Hi.MachiningSteps.MachineMotionStep.html", "title": "Class MachineMotionStep | HiAPI-C# 2025", - "summary": "Class MachineMotionStep Namespace Hi.MachiningSteps Assembly HiMech.dll MachiningStep has spindle information. Note that the spindle information is only for milling behavior. public class MachineMotionStep : IGetFeedrate, IGetSpindleSpeed Inheritance object MachineMotionStep Implements IGetFeedrate IGetSpindleSpeed 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 MachineMotionStep(MachineMotionStep) Initializes a new instance of the MachineMotionStep class by copying from another instance. public MachineMotionStep(MachineMotionStep src) Parameters src MachineMotionStep The source machining step to copy from. MachineMotionStep(TimeSpan, TimeSpan, double, double[], double, double, SpindleDirection, CoolantMode, int, Mat4d, Mat4d, SeqPair) Initializes a new instance of the MachineMotionStep class with specified parameters. public MachineMotionStep(TimeSpan stepDuration, TimeSpan accumulatedTime, double beginSpindleAngle_rad, double[] mcValues, double feedrate_mmds, double spindleSpeed_radds, SpindleDirection spindleDirection, CoolantMode coolantMode, int toolId, Mat4d programZeroToWorkpieceGeomToMat4d, Mat4d workpieceGeomToProgramZeroMat4d, SeqPair seqOnWorkpieceGeomCoordinate) Parameters stepDuration TimeSpan The duration of this step. accumulatedTime TimeSpan The accumulated time up to this step. beginSpindleAngle_rad double The initial spindle angle in radians. mcValues double[] The machine coordinate values. feedrate_mmds double The feed rate in millimeters per second. spindleSpeed_radds double The spindle speed in radians per second. spindleDirection SpindleDirection The direction of spindle rotation. coolantMode CoolantMode The coolant delivery mode active for this step. toolId int The ID of the tool being used. programZeroToWorkpieceGeomToMat4d Mat4d The transformation matrix from program zero to workpiece geometry. workpieceGeomToProgramZeroMat4d Mat4d The transformation matrix from workpiece geometry to program zero. seqOnWorkpieceGeomCoordinate SeqPair The sequence of transformations on workpiece geometry coordinate. Properties AccumulatedTime The work time at the end of the step. The value is StepBeginTime + StepDuration. public TimeSpan AccumulatedTime { get; set; } Property Value TimeSpan BeginSpindleAngle_deg Begin spindle rotation angle. in deg; public double BeginSpindleAngle_deg { get; set; } Property Value double BeginSpindleAngle_rad Begin spindle rotation angle. in rad; public double BeginSpindleAngle_rad { get; set; } Property Value double CdnTransformProgramToToolRunning Gets the transformation matrix from program to tool running coordinate. public Mat4d CdnTransformProgramToToolRunning { get; } Property Value Mat4d CdnTransformProgramToWorkpieceGeom Gets the transformation matrix from program zero to workpiece geometry. public Mat4d CdnTransformProgramToWorkpieceGeom { get; } Property Value Mat4d CdnTransformToolRunningToProgram Gets the transformation matrix from tool running to program coordinate. public Mat4d CdnTransformToolRunningToProgram { get; } Property Value Mat4d CdnTransformToolRunningToWorkpieceGeom Tool running coordinate to workpiece geom coordinate. public Mat4d CdnTransformToolRunningToWorkpieceGeom { get; } Property Value Mat4d CdnTransformWorkpieceGeomToProgram Gets the transformation matrix from workpiece geometry to program zero. public Mat4d CdnTransformWorkpieceGeomToProgram { get; } Property Value Mat4d CdnTransformWorkpieceGeomToToolRunning Gets the transformation matrix from workpiece geometry to tool running coordinate. public Mat4d CdnTransformWorkpieceGeomToToolRunning { get; } Property Value Mat4d CoolantMode Gets or sets the coolant delivery mode active for this step. Read by BuildCuttingTemperatureAndWear(SeqPhysicsBrief, MachineMotionStep, MachineMotionStep, double, SpindleCapability, IMachiningTool, Workpiece, int, Substraction, LayerMillingEngagement, MillingPhysicsBrief, CoolantHeatCondition, CoolantMode, bool) to pick the effective convection coefficient on the temperature FEM. public CoolantMode CoolantMode { get; set; } Property Value CoolantMode CyclePeriod Gets the cycle period as a TimeSpan. public TimeSpan CyclePeriod { get; } Property Value TimeSpan CyclePeriod_s Gets the cycle period in seconds. public double CyclePeriod_s { get; } Property Value double EndSpindleAngle_deg Gets the end spindle angle in degrees. public double EndSpindleAngle_deg { get; } Property Value double EndSpindleAngle_rad Gets the end spindle angle in radians. public double EndSpindleAngle_rad { get; } Property Value double FeedPerCycle_mm Gets the feed per cycle in millimeters. public double FeedPerCycle_mm { get; } Property Value double Feedrate_mmds Gets or sets the feed rate in millimeters per second. public double Feedrate_mmds { get; set; } Property Value double GeomCl Gets the current position in workpiece geometry coordinate. public DVec3d GeomCl { get; } Property Value DVec3d McValues Machine coordinate values. public double[] McValues { get; set; } Property Value double[] MoveOnProgramCoordinate_mm Gets the movement vector in program coordinate in millimeters. public Vec3d MoveOnProgramCoordinate_mm { get; } Property Value Vec3d MoveOnWorkpieceGeomCoordinate_mm Gets the movement vector in workpiece geometry coordinate in millimeters. public Vec3d MoveOnWorkpieceGeomCoordinate_mm { get; } Property Value Vec3d MovingDirectionOnWorkpieceGeomCoordinate Gets the movement direction vector in workpiece geometry coordinate. public Vec3d MovingDirectionOnWorkpieceGeomCoordinate { get; } Property Value Vec3d MovingLength_mm Gets the length of movement in millimeters. public double MovingLength_mm { get; } Property Value double PassedSpindleAngle_deg For milling behavior only. public double PassedSpindleAngle_deg { get; } Property Value double PassedSpindleAngle_rad For milling behavior only. public double PassedSpindleAngle_rad { get; } Property Value double ProgramCl Gets the current position in program coordinate. public DVec3d ProgramCl { get; } Property Value DVec3d ProgramToWorkpieceGeomMat4d Gets or sets the transformation matrix from program zero to workpiece geometry. public Mat4d ProgramToWorkpieceGeomMat4d { get; set; } Property Value Mat4d SeqOnToolRunningCoordinate Gets the sequence of transformations on tool running coordinate. public SeqPair SeqOnToolRunningCoordinate { get; } Property Value SeqPair SeqOnWorkpieceGeomCoordinate Gets or sets the sequence of transformations on workpiece geometry coordinate. public SeqPair SeqOnWorkpieceGeomCoordinate { get; set; } Property Value SeqPair SpindleDirection Gets or sets the direction of spindle rotation. public SpindleDirection SpindleDirection { get; set; } Property Value SpindleDirection SpindleSpeed_cycleds Gets the spindle speed in cycles per second. public double SpindleSpeed_cycleds { get; } Property Value double SpindleSpeed_radds For milling behavior only. public double SpindleSpeed_radds { get; set; } Property Value double SpindleSpeed_rpm Gets the spindle speed in revolutions per minute. public double SpindleSpeed_rpm { get; } Property Value double StepBeginTime The work time at the begin of the step. public TimeSpan StepBeginTime { get; } Property Value TimeSpan StepDuration Gets or sets the duration of this step. public TimeSpan StepDuration { get; set; } Property Value TimeSpan ToolId Gets or sets the ID of the tool being used. public int ToolId { get; set; } Property Value int WorkpieceGeomToProgramMat4d Gets or sets the transformation matrix from workpiece geometry to program zero. public Mat4d WorkpieceGeomToProgramMat4d { get; set; } Property Value Mat4d Methods GetFeedPerTooth_mm(IMachiningTool) Gets the feed per tooth in millimeters. public double GetFeedPerTooth_mm(IMachiningTool millingTool) Parameters millingTool IMachiningTool The milling tool. Returns double The feed per tooth in millimeters. GetFeedrate_mmds() Gets the program feedrate in millimeters per second. public double GetFeedrate_mmds() Returns double Feedrate in mm/s GetMachiningTool(MachiningToolHouse) Gets the machining tool from the tool house. public IMachiningTool GetMachiningTool(MachiningToolHouse toolHouse) Parameters toolHouse MachiningToolHouse The machining tool house. Returns IMachiningTool The machining tool. GetProgramSideCuspHeight_mm(IMachiningTool) Gets the program side cusp height in millimeters. public double GetProgramSideCuspHeight_mm(IMachiningTool millingTool) Parameters millingTool IMachiningTool The milling tool. Returns double The program side cusp height in millimeters. GetSideCuspList_mm(IMachiningTool) Gets the list of side cusp heights in millimeters. public List GetSideCuspList_mm(IMachiningTool millingTool) Parameters millingTool IMachiningTool The milling tool. Returns List The list of side cusp heights in millimeters. GetSideCuspPhaseInterval_rad(IMachiningTool) Gets the side cusp phase interval in radians. public double GetSideCuspPhaseInterval_rad(IMachiningTool millingTool) Parameters millingTool IMachiningTool The milling tool. Returns double The side cusp phase interval in radians. GetSpindleDirection() Gets the spindle rotation direction. public SpindleDirection GetSpindleDirection() Returns SpindleDirection The spindle direction (clockwise, counterclockwise, or stopped) GetSpindleSpeed_cycleds() Gets the spindle speed in cycles per second. public double GetSpindleSpeed_cycleds() Returns double The spindle speed in cycles per second. GetSpindleSpeed_radds() Gets the spindle speed in radians per second. public double GetSpindleSpeed_radds() Returns double Spindle speed in rad/s GetToothArcDuration_s(IMachiningTool) Gets the duration of a single tooth arc in seconds. public double GetToothArcDuration_s(IMachiningTool millingTool) Parameters millingTool IMachiningTool The milling tool. Returns double The duration of a single tooth arc in seconds. GetToothSeqOnToolRunningCoordinate(IMachiningTool) Gets the sequence of transformations for a single tooth on tool running coordinate. public SeqPair GetToothSeqOnToolRunningCoordinate(IMachiningTool millingTool) Parameters millingTool IMachiningTool The milling tool. Returns SeqPair The sequence of transformations for a single tooth. ToString() Returns a string representation of this machining step. public override string ToString() Returns string A string representation of this machining step." + "summary": "Class MachineMotionStep Namespace Hi.MachiningSteps Assembly HiMech.dll MachiningStep has spindle information. Note that the spindle information is only for milling behavior. public class MachineMotionStep : IGetFeedrate, IGetSpindleSpeed Inheritance object MachineMotionStep Implements IGetFeedrate IGetSpindleSpeed 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 MachineMotionStep(MachineMotionStep) Initializes a new instance of the MachineMotionStep class by copying from another instance. public MachineMotionStep(MachineMotionStep src) Parameters src MachineMotionStep The source machining step to copy from. MachineMotionStep(TimeSpan, TimeSpan, double, double[], double, double, SpindleDirection, CoolantMode, int, Mat4d, Mat4d, SeqPair) Initializes a new instance of the MachineMotionStep class with specified parameters. public MachineMotionStep(TimeSpan stepDuration, TimeSpan accumulatedTime, double beginSpindleAngle_rad, double[] mcValues, double feedrate_mmds, double spindleSpeed_radds, SpindleDirection spindleDirection, CoolantMode coolantMode, int toolId, Mat4d programZeroToWorkpieceGeomToMat4d, Mat4d workpieceGeomToProgramZeroMat4d, SeqPair seqOnWorkpieceGeomCoordinate) Parameters stepDuration TimeSpan The duration of this step. accumulatedTime TimeSpan The accumulated time up to this step. beginSpindleAngle_rad double The initial spindle angle in radians. mcValues double[] The machine coordinate values. feedrate_mmds double The feed rate in millimeters per second. spindleSpeed_radds double The spindle speed in radians per second. spindleDirection SpindleDirection The direction of spindle rotation. coolantMode CoolantMode The coolant delivery mode active for this step. toolId int The ID of the tool being used. programZeroToWorkpieceGeomToMat4d Mat4d The transformation matrix from program zero to workpiece geometry. workpieceGeomToProgramZeroMat4d Mat4d The transformation matrix from workpiece geometry to program zero. seqOnWorkpieceGeomCoordinate SeqPair The sequence of transformations on workpiece geometry coordinate. Properties BeginSpindleAngle_deg Begin spindle rotation angle. in deg; public double BeginSpindleAngle_deg { get; set; } Property Value double BeginSpindleAngle_rad Begin spindle rotation angle. in rad; public double BeginSpindleAngle_rad { get; set; } Property Value double BeginTimecode The work time at the begin of the step. public TimeSpan BeginTimecode { get; } Property Value TimeSpan CdnTransformProgramToToolRunning Gets the transformation matrix from program to tool running coordinate. public Mat4d CdnTransformProgramToToolRunning { get; } Property Value Mat4d CdnTransformProgramToWorkpieceGeom Gets the transformation matrix from program zero to workpiece geometry. public Mat4d CdnTransformProgramToWorkpieceGeom { get; } Property Value Mat4d CdnTransformToolRunningToProgram Gets the transformation matrix from tool running to program coordinate. public Mat4d CdnTransformToolRunningToProgram { get; } Property Value Mat4d CdnTransformToolRunningToWorkpieceGeom Tool running coordinate to workpiece geom coordinate. public Mat4d CdnTransformToolRunningToWorkpieceGeom { get; } Property Value Mat4d CdnTransformWorkpieceGeomToProgram Gets the transformation matrix from workpiece geometry to program zero. public Mat4d CdnTransformWorkpieceGeomToProgram { get; } Property Value Mat4d CdnTransformWorkpieceGeomToToolRunning Gets the transformation matrix from workpiece geometry to tool running coordinate. public Mat4d CdnTransformWorkpieceGeomToToolRunning { get; } Property Value Mat4d CoolantMode Gets or sets the coolant delivery mode active for this step. Read by BuildCuttingTemperatureAndWear(SeqPhysicsBrief, MachineMotionStep, MachineMotionStep, double, SpindleCapability, IMachiningTool, Workpiece, int, Substraction, LayerMillingEngagement, MillingPhysicsBrief, CoolantHeatCondition, CoolantMode, bool, MillingToolPhysicsPack, Action) to pick the effective convection coefficient on the temperature FEM. public CoolantMode CoolantMode { get; set; } Property Value CoolantMode CyclePeriod Gets the cycle period as a TimeSpan. public TimeSpan CyclePeriod { get; } Property Value TimeSpan CyclePeriod_s Gets the cycle period in seconds. public double CyclePeriod_s { get; } Property Value double EndSpindleAngle_deg Gets the end spindle angle in degrees. public double EndSpindleAngle_deg { get; } Property Value double EndSpindleAngle_rad Gets the end spindle angle in radians. public double EndSpindleAngle_rad { get; } Property Value double EndTimecode The work time at the end of the step. The value is BeginTimecode + StepDuration. public TimeSpan EndTimecode { get; set; } Property Value TimeSpan FeedPerCycle_mm Gets the feed per cycle in millimeters. public double FeedPerCycle_mm { get; } Property Value double Feedrate_mmds Gets or sets the feed rate in millimeters per second. public double Feedrate_mmds { get; set; } Property Value double GeomCl Gets the current position in workpiece geometry coordinate. public DVec3d GeomCl { get; } Property Value DVec3d McValues Machine coordinate values. public double[] McValues { get; set; } Property Value double[] MoveOnProgramCoordinate_mm Gets the movement vector in program coordinate in millimeters. public Vec3d MoveOnProgramCoordinate_mm { get; } Property Value Vec3d MoveOnWorkpieceGeomCoordinate_mm Gets the movement vector in workpiece geometry coordinate in millimeters. public Vec3d MoveOnWorkpieceGeomCoordinate_mm { get; } Property Value Vec3d MovingDirectionOnWorkpieceGeomCoordinate Gets the movement direction vector in workpiece geometry coordinate. public Vec3d MovingDirectionOnWorkpieceGeomCoordinate { get; } Property Value Vec3d MovingLength_mm Gets the length of movement in millimeters. public double MovingLength_mm { get; } Property Value double PassedSpindleAngle_deg For milling behavior only. public double PassedSpindleAngle_deg { get; } Property Value double PassedSpindleAngle_rad For milling behavior only. public double PassedSpindleAngle_rad { get; } Property Value double ProgramCl Gets the current position in program coordinate. public DVec3d ProgramCl { get; } Property Value DVec3d ProgramToWorkpieceGeomMat4d Gets or sets the transformation matrix from program zero to workpiece geometry. public Mat4d ProgramToWorkpieceGeomMat4d { get; set; } Property Value Mat4d SeqOnToolRunningCoordinate Gets the sequence of transformations on tool running coordinate. public SeqPair SeqOnToolRunningCoordinate { get; } Property Value SeqPair SeqOnWorkpieceGeomCoordinate Gets or sets the sequence of transformations on workpiece geometry coordinate. public SeqPair SeqOnWorkpieceGeomCoordinate { get; set; } Property Value SeqPair SpindleDirection Gets or sets the direction of spindle rotation. public SpindleDirection SpindleDirection { get; set; } Property Value SpindleDirection SpindleSpeed_cycleds Gets the spindle speed in cycles per second. public double SpindleSpeed_cycleds { get; } Property Value double SpindleSpeed_radds For milling behavior only. public double SpindleSpeed_radds { get; set; } Property Value double SpindleSpeed_rpm Gets the spindle speed in revolutions per minute. public double SpindleSpeed_rpm { get; } Property Value double StepDuration Gets or sets the duration of this step. public TimeSpan StepDuration { get; set; } Property Value TimeSpan ToolId Gets or sets the ID of the tool being used. public int ToolId { get; set; } Property Value int WorkpieceGeomToProgramMat4d Gets or sets the transformation matrix from workpiece geometry to program zero. public Mat4d WorkpieceGeomToProgramMat4d { get; set; } Property Value Mat4d Methods GetFeedPerTooth_mm(IMachiningTool) Gets the feed per tooth in millimeters. public double GetFeedPerTooth_mm(IMachiningTool millingTool) Parameters millingTool IMachiningTool The milling tool. Returns double The feed per tooth in millimeters. GetFeedrate_mmds() Gets the program feedrate in millimeters per second. public double GetFeedrate_mmds() Returns double Feedrate in mm/s GetMachiningTool(MachiningToolHouse) Gets the machining tool from the tool house. public IMachiningTool GetMachiningTool(MachiningToolHouse toolHouse) Parameters toolHouse MachiningToolHouse The machining tool house. Returns IMachiningTool The machining tool. GetProgramSideCuspHeight_mm(IMachiningTool, MillingToolPhysicsPack) Gets the program side cusp height in millimeters. public double GetProgramSideCuspHeight_mm(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack = null) Parameters millingTool IMachiningTool The milling tool. physicsPack MillingToolPhysicsPack The frozen per-session physics pack of millingTool; null computes the diameter on use. Returns double The program side cusp height in millimeters. GetSideCuspList_mm(IMachiningTool, MillingToolPhysicsPack) Gets the list of side cusp heights in millimeters. public List GetSideCuspList_mm(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack = null) Parameters millingTool IMachiningTool The milling tool. physicsPack MillingToolPhysicsPack The frozen per-session physics pack of millingTool; null computes the diameter on use. Returns List The list of side cusp heights in millimeters. GetSideCuspPhaseInterval_rad(IMachiningTool, MillingToolPhysicsPack) Gets the side cusp phase interval in radians. public double GetSideCuspPhaseInterval_rad(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack = null) Parameters millingTool IMachiningTool The milling tool. physicsPack MillingToolPhysicsPack The frozen per-session physics pack of millingTool; null computes the diameter on use. Returns double The side cusp phase interval in radians. GetSpindleDirection() Gets the spindle rotation direction. public SpindleDirection GetSpindleDirection() Returns SpindleDirection The spindle direction (clockwise, counterclockwise, or stopped) GetSpindleSpeed_cycleds() Gets the spindle speed in cycles per second. public double GetSpindleSpeed_cycleds() Returns double The spindle speed in cycles per second. GetSpindleSpeed_radds() Gets the spindle speed in radians per second. public double GetSpindleSpeed_radds() Returns double Spindle speed in rad/s GetToothArcDuration_s(IMachiningTool) Gets the duration of a single tooth arc in seconds. public double GetToothArcDuration_s(IMachiningTool millingTool) Parameters millingTool IMachiningTool The milling tool. Returns double The duration of a single tooth arc in seconds. GetToothSeqOnToolRunningCoordinate(IMachiningTool) Gets the sequence of transformations for a single tooth on tool running coordinate. public SeqPair GetToothSeqOnToolRunningCoordinate(IMachiningTool millingTool) Parameters millingTool IMachiningTool The milling tool. Returns SeqPair The sequence of transformations for a single tooth. ToString() Returns a string representation of this machining step. public override string ToString() Returns string A string representation of this machining step." }, "api/Hi.MachiningSteps.MachiningStep.CollidedKeyPair.html": { "href": "api/Hi.MachiningSteps.MachiningStep.CollidedKeyPair.html", @@ -2107,7 +2212,7 @@ "api/Hi.MachiningSteps.MachiningStep.html": { "href": "api/Hi.MachiningSteps.MachiningStep.html", "title": "Class MachiningStep | HiAPI-C# 2025", - "summary": "Class MachiningStep Namespace Hi.MachiningSteps Assembly HiMech.dll Represents a machining step enriched with physics, mapping and source metadata. The duration-based step property is based on the duration from previous-step to current-step. public class MachiningStep : IGetIndexedFileLine, IFlexDictionaryHost, IGetFeedrate, IGetSpindleSpeed, IGetRgbWithPriority Inheritance object MachiningStep Implements IGetIndexedFileLine IFlexDictionaryHost IGetFeedrate IGetSpindleSpeed IGetRgbWithPriority 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) FlexDictionaryUtil.CallFlexDictionary(IFlexDictionaryHost) FlexDictionaryUtil.GetFlexDictionaryBytes(IFlexDictionaryHost, IntegerKeyDictionaryConverter) FlexDictionaryUtil.WriteFlexDictionary(IFlexDictionaryHost, BinaryWriter, IntegerKeyDictionaryConverter) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningStep(IMachiningService, int, IGetSentence, MachineMotionStep, MillingInstance, CollidedKeyPair[]) Initializes a new instance of the MachiningStep class. public MachiningStep(IMachiningService host, int stepIndex, IGetSentence sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs) Parameters host IMachiningService The host of the milling step. stepIndex int The index of the step. sourceCommand IGetSentence The source command. machineMotionStep MachineMotionStep The machine motion step parameters. millingInstance MillingInstance The physics result for the step. collidedKeyPairs CollidedKeyPair[] The collided key pairs detected in this step. Properties AccumulatedCraterWear_um Gets the accumulated crater wear in micrometers [Present(\"Accumulated Crater Wear\", \"A.C.Wear\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double AccumulatedCraterWear_um { get; } Property Value double AccumulatedFlankWearDepth_um Gets the accumulated flank wear depth in micrometers [Present(\"Accumulated Flank Wear Depth\", \"A.F.Wear.Depth\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double AccumulatedFlankWearDepth_um { get; } Property Value double AccumulatedFlankWearWidth_um Gets the accumulated flank wear width in micrometers [Present(\"Accumulated Flank Wear Width\", \"A.F.Wear.Width\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double AccumulatedFlankWearWidth_um { get; } Property Value double AccumulatedSpindleEnergyConsumption_kWh Gets the accumulated spindle energy consumption in kilowatt-hours [Present(\"Accumulated Spindle Energy Consumption\", null, PhysicsUnit.kWh, \"G6\")] [JsAce(ClassExt = \"MachiningStep\")] public double AccumulatedSpindleEnergyConsumption_kWh { get; } Property Value double AccumulatedTime Ideal accumulated worked time by simulation. Ideal Program duration. [Present(\"Time\", null, PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public TimeSpan AccumulatedTime { get; } Property Value TimeSpan ActualTime Actual accumulated worked time. Actual Program time. [Present(\"Actual Time\", \"Act.Time\", PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public TimeSpan? ActualTime { get; set; } Property Value TimeSpan? AvgAbsMomentAboutSensorVec3d_Nm Gets the average absolute moment about sensor vector in Newton-meters [Present(\"Avg Abs Moment To Tool About Sensor\", \"Avg-Abs-M-ToTool-Sensor-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d AvgAbsMomentAboutSensorVec3d_Nm { get; } Property Value Vec3d AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm Gets the average absolute moment X about sensor on spindle rotation coordinate in Newton-meters [Present(\"Avg Abs Moment X To Tool About Sensor On Spindle Rotation Coordinate\", \"AvgAbsMx-ToTool-Sensor-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm { get; } Property Value double? AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm Gets the average absolute moment X about tool tip on spindle rotation coordinate in Newton-meters [Present(\"Avg Abs Moment X To Tool About Tool Tip On Spindle Rotation Coordinate\", \"AvgAbsMx-ToTool-Tip-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm { get; } Property Value double AvgAbsTorqueByMapping_Nm Gets the average absolute torque by mapping in Newton-meters [Present(\"Avg Abs Torque By Mapping\", \"AvgAbsTorque-Map\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsTorqueByMapping_Nm { get; } Property Value double? AvgAbsTorqueErrorRatioWithMapping numerator is sim value minus mapping value; denominator is the mapping value. [Present(\"Avg Torque Error Ratio by Mapping\", \"Torque-Err-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsTorqueErrorRatioWithMapping { get; } Property Value double? AvgAbsTorqueSignedErrorRelationWithMapping The sign is from sim value minus mapping value. the quantity is Math.Sqrt(err.Square() / Math.Abs(sim * mapping)) [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsTorqueSignedErrorRelationWithMapping { get; } Property Value double? AvgAbsTorque_Nm AvgAbsTorqueOnSpindleRotationCoordinate [Present(\"Avg Abs Torque\", \"AvgAbsTorque\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsTorque_Nm { get; } Property Value double? AvgForceToToolOnToolRunningCoordinate_N Gets the average force to tool on tool running coordinate in N. [Present(\"AvgForceToToolOnToolRunningCoordinate\", \"AvgForce-ToTool-TR\", PhysicsUnit.N, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d AvgForceToToolOnToolRunningCoordinate_N { get; } Property Value Vec3d AvgForceXToToolOnToolRunningCoordinate_N Gets the average force X to tool on tool running coordinate in N. [JsAce(ClassExt = \"MachiningStep\")] public double? AvgForceXToToolOnToolRunningCoordinate_N { get; } Property Value double? AvgForceYToToolOnToolRunningCoordinate_N Gets the average force Y to tool on tool running coordinate in N. [JsAce(ClassExt = \"MachiningStep\")] public double? AvgForceYToToolOnToolRunningCoordinate_N { get; } Property Value double? AvgForceZToToolOnToolRunningCoordinate_N Gets the average force Z to tool on tool running coordinate in N. [JsAce(ClassExt = \"MachiningStep\")] public double? AvgForceZToToolOnToolRunningCoordinate_N { get; } Property Value double? AvgMomentAboutSensor_Nm Gets the average moment about sensor in Newton-meters [Present(\"Avg Moment To Tool About Sensor\", \"AvgM-ToTool-Sensor-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentAboutSensor_Nm { get; } Property Value double? AvgMomentAboutToolTipOnProgramCoordinate_Nm Gets the average moment about tool tip on program coordinate in Newton-meters [Present(\"Avg Moment To Tool About Tool Tip On Workpiece Program Coordinate\", \"AvgAbsM-ToTool-Tip-W\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d AvgMomentAboutToolTipOnProgramCoordinate_Nm { get; } Property Value Vec3d AvgMomentAboutToolTipOnToolRunningCoordinate_Nm Gets the average moment about tool tip on tool running coordinate in Newton-meters [Present(\"Avg Moment To Tool About Tool Tip On Tool Running Coordinate\", \"AvgAbsM-ToTool-Tip-TR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d AvgMomentAboutToolTipOnToolRunningCoordinate_Nm { get; } Property Value Vec3d AvgMomentAboutToolTip_Nm Gets the average moment about tool tip in Newton-meters [Present(\"Avg Moment To Tool About ToolTip\", \"AvgM-ToTool-Tip-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentAboutToolTip_Nm { get; } Property Value double? AvgMomentXyAboutObservationPoint_Nm Gets the average moment XY about observation point in Newton-meters [Present(\"Avg Moment XY To Tool About Sensor\", \"AvgM-ToTool-Sensor.XY\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentXyAboutObservationPoint_Nm { get; } Property Value double? AvgMomentXyByMapping_Nm Gets the average moment XY by mapping in Newton-meters [Present(\"Avg Moment XY By Mapping\", \"AvgM-Map.XY\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentXyByMapping_Nm { get; } Property Value double? AvgMomentXyErrorRatioWithMapping Gets the average moment XY error ratio with mapping. Numerator is sim value minus mapping value; denominator is the mapping value. [Present(\"Avg Moment XY Error Ratio by Mapping\", \"M-XY-Err-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentXyErrorRatioWithMapping { get; } Property Value double? AvgMomentXySignedErrorRelationWithMapping The sign is from sim value minus mapping value. the quantity is Math.Sqrt(err.Square() / Math.Abs(sim * mapping)) [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentXySignedErrorRelationWithMapping { get; } Property Value double? BeginSpindleAngle_deg Gets the beginning spindle angle in degrees. [Present(\"Beginning Spindle Angle Shift\", \"Spd. Ang. Shift\", PhysicsUnit.deg, \"F2\")] [JsAce(ClassExt = \"MachiningStep\")] public double BeginSpindleAngle_deg { get; } Property Value double ChipMass_g Gets the chip mass in grams. [JsAce(ClassExt = \"MachiningStep\")] public double? ChipMass_g { get; } Property Value double? ChipMass_mg Gets the chip mass in milligrams. [Present(\"Chip Mass\", null, PhysicsUnit.mg, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ChipMass_mg { get; } Property Value double? ChipTemperature_C Gets the chip temperature in Celsius [Present(\"Chip Temperature\", \"Chip T.\", PhysicsUnit.C, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ChipTemperature_C { get; } Property Value double? ChipThickness_mm Gets the chip thickness in mm. [Present(\"Chip Thickness\", null, PhysicsUnit.mm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ChipThickness_mm { get; } Property Value double? ChipThickness_um Gets the chip thickness in micrometers public double? ChipThickness_um { get; } Property Value double? ChipVolume_mm3 Gets the chip volume in mm³. [Present(\"Chip Volume\", null, PhysicsUnit.mm3, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ChipVolume_mm3 { get; } Property Value double? Cl Gets the cutter location. [Present(\"Cutter Location\", \"CL\", PhysicsUnit.mm, \"F5\")] public DVec3d Cl { get; } Property Value DVec3d CollidedKeyPairs Gets or sets the collided key pairs if a collision was detected for this step. public MachiningStep.CollidedKeyPair[] CollidedKeyPairs { get; set; } Property Value CollidedKeyPair[] CollisionText A formatted text representing collided key pairs, e.g. \"(A,B);(C,D)\". Returns null when there is no collision. [Present] [JsAce(ClassExt = \"MachiningStep\")] public string CollisionText { get; } Property Value string ContinueSpindlePowerRatio Continuous spindle power ratio: input power / time-unlimited maximum power per spindle capability. [Present(\"Continue Spindle Power Ratio\", \"Cont.Spd.Pow.R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ContinueSpindlePowerRatio { get; } Property Value double? ContinueSpindleTorqueRatio Gets the infinite insistent spindle torque ratio [Present(\"Continue Spindle Torque Ratio\", \"Cont.Spd.Torque-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ContinueSpindleTorqueRatio { get; } Property Value double? CutterBodyTemperature_C Gets the cutter body temperature in Celsius [Present(\"Cutter Body Temperature\", \"Ct. Body T.\", PhysicsUnit.C, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? CutterBodyTemperature_C { get; } Property Value double? CutterDermisTemperature_C Gets the cutter dermis temperature in Celsius [Present(\"Cutter Dermis Temperature\", \"Ct. Dermis T.\", PhysicsUnit.C, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? CutterDermisTemperature_C { get; } Property Value double? CuttingDepth_mm Gets the cutting depth in mm. [Present(\"Cutting Depth\", \"ap\", PhysicsUnit.mm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double CuttingDepth_mm { get; } Property Value double CuttingForcesToToolOnToolRunningCoordinate_N Cutting forces on tool running coordinate. Unit is Newtons. The forced item is tool. public List CuttingForcesToToolOnToolRunningCoordinate_N { get; } Property Value List CuttingForcesToWorkpieceOnProgramCoordinate_N Get the cutting forces on program coordinate. Unit is Newtons. The forced item is workpiece. public List CuttingForcesToWorkpieceOnProgramCoordinate_N { get; } Property Value List CuttingSpeed_mmds Gets the cutting speed in mm/s. The speed on the cutter outer radius by the spindle rotating. [Present(\"Cutting Speed\", \"Vc\", PhysicsUnit.mmds, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double? CuttingSpeed_mmds { get; } Property Value double? CuttingWidth_mm Gets the cutting width in mm. [Present(\"Cutting Width\", \"ae\", PhysicsUnit.mm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double CuttingWidth_mm { get; } Property Value double DeltaTipDeflectionOnToolRunningCoordinate_um Gets the delta tip deflection on tool running coordinate in micrometers [Present(\"Delta Tip Deflection On Tool Running Coordinate\", \"Dlt.Df.-Tip-TR\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d DeltaTipDeflectionOnToolRunningCoordinate_um { get; } Property Value Vec3d FeedPerCycle_mm Gets the feed per cycle in mm. [Present(\"Feed per Cycle\", \"frc\", PhysicsUnit.mm, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double FeedPerCycle_mm { get; } Property Value double FeedPerTooth_mm Gets the feed per tooth in mm. [Present(\"Feed per Tooth\", \"frt\", PhysicsUnit.mm, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double FeedPerTooth_mm { get; } Property Value double Feedrate_mmdmin Gets the feedrate in mm/min. [Present(\"Feedrate\", \"F\", PhysicsUnit.mmdmin, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double Feedrate_mmdmin { get; } Property Value double Feedrate in mm/s FileNo Gets the file number. [Present] [JsAce(ClassExt = \"MachiningStep\")] public int? FileNo { get; } Property Value int? FilePath Gets the file path. [Present] [JsAce(ClassExt = \"MachiningStep\")] public string FilePath { get; } Property Value string FlagsText Gets the flags text. [Present] [JsAce(ClassExt = \"MachiningStep\")] public string FlagsText { get; } Property Value string FlexDictionary Gets or sets the flexible dictionary. public Dictionary FlexDictionary { get; set; } Property Value Dictionary FrictionPower_W friction power takes by workpiece per cycle. the unit is watt. [JsAce(ClassExt = \"MachiningStep\")] public double? FrictionPower_W { get; } Property Value double? Host Gets or sets the host of the milling step. public IMachiningService Host { get; set; } Property Value IMachiningService InstantCraterWear_um Gets the instant crater wear in micrometers [Present(\"Instant Crater Wear\", \"I.C.Wear\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? InstantCraterWear_um { get; } Property Value double? IsReliefFaceCollided Gets a value indicating whether the relief face is collided. [Present(\"Is Relief Face Collided\", \"Is-Rlf.C.\", PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public bool? IsReliefFaceCollided { get; } Property Value bool? IsTouched Gets whether the step is touched. [Present(\"Is Touched\", null, PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public bool IsTouched { get; } Property Value bool this[string] Gets or sets a value in the flexible dictionary by key. public object this[string key] { get; set; } Parameters key string The key to look up. Property Value object The value associated with the key, or null if not found. LineNo Gets the line number. [Present] [JsAce(ClassExt = \"MachiningStep\")] public int? LineNo { get; } Property Value int? LineText Gets the block text (may contain multiple lines for multi-line NC blocks). [Present] [JsAce(ClassExt = \"MachiningStep\")] public string LineText { get; } Property Value string MachineMotionStep Gets or sets the machining step. public MachineMotionStep MachineMotionStep { get; set; } Property Value MachineMotionStep MachiningTool Gets the machining tool used for this milling step. public IMachiningTool MachiningTool { get; } Property Value IMachiningTool MaxAbsForce_N Max absolute force at the rotation cycle. [Present(\"Max Absolute Force\", \"Max Abs F.\", PhysicsUnit.N, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? MaxAbsForce_N { get; } Property Value double? MaxBottomEdgeDeflectionOnToolRunningCoordinate_mm Gets the maximum bottom edge deflection on tool running coordinate in millimeters It only make sense in end mill. The z value of this factor is re-cut depth. [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MaxBottomEdgeDeflectionOnToolRunningCoordinate_mm { get; } Property Value Vec3d MaxBottomEdgeDeflectionOnToolRunningCoordinate_um Gets the maximum bottom edge deflection on tool running coordinate in micrometers. [Present(\"Max Bottom Edge Deflection On Tool Running Coordinate\", \"Df.-Bt.Edge-TR\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MaxBottomEdgeDeflectionOnToolRunningCoordinate_um { get; } Property Value Vec3d MaxForceOnToolRunningCoordinate_N Gets the maximum force on tool running coordinate in N. public Vec3d MaxForceOnToolRunningCoordinate_N { get; } Property Value Vec3d MaxMomentAboutSensor_Nm Gets the maximum moment about sensor in Newton-meters [Present(\"Max Moment To Tool About Sensor\", \"MaxM-ToTool-Sensor-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double MaxMomentAboutSensor_Nm { get; } Property Value double MaxMomentAboutToolTip_Nm Gets the maximum moment about tool tip in Newton-meters [Present(\"Max Moment To Tool About ToolTip\", \"MaxM-ToTool-Tip-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double MaxMomentAboutToolTip_Nm { get; } Property Value double MaxSpindlePowerRatio Maximum spindle power ratio: input power / instantaneous maximum power per spindle capability. [Present(\"Max Spindle Power Ratio\", \"Max.Spd.Pow.R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? MaxSpindlePowerRatio { get; } Property Value double? MaxSpindleTorqueRatio Gets the maximum spindle torque ratio [Present(\"Max Spindle Torque Ratio\", \"Max.Spd.Torque-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? MaxSpindleTorqueRatio { get; } Property Value double? MaxTipDeflectionOnToolRunningCoordinate_mm Gets the maximum tip deflection on tool running coordinate in millimeters [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MaxTipDeflectionOnToolRunningCoordinate_mm { get; } Property Value Vec3d MaxTipDeflectionOnToolRunningCoordinate_um Gets the maximum tip deflection on tool running coordinate in micrometers [Present(\"Max Tip Deflection On Tool Running Coordinate\", \"Max.Df.-Tip-TR\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MaxTipDeflectionOnToolRunningCoordinate_um { get; } Property Value Vec3d MillingInstance Gets or sets the milling instance. public MillingInstance MillingInstance { get; set; } Property Value MillingInstance MillingStepLuggage Get luggage by sequencing loading performance optimization. public MillingStepLuggage MillingStepLuggage { get; } Property Value MillingStepLuggage MomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm Get Moments About Observation Point On Spindle Rotation Coordinate. Unit is Newtons-meter. The forced item is tool. public List MomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm { get; } Property Value List Remarks Not cached data. Light computation cost of the vectors transformation. MoveOnProgramCoordinate Gets the move on program coordinate. [Present(\"Move On Workpiece Program Coordinate\", \"Move-W\", PhysicsUnit.mm, \"F4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MoveOnProgramCoordinate { get; } Property Value Vec3d MovingLength_mm Gets the moving length in mm. From previous-step to current-step. [Present(\"Move Length\", \"Move Len.\", PhysicsUnit.mm, \"F4\")] [JsAce(ClassExt = \"MachiningStep\")] public double MovingLength_mm { get; } Property Value double Mrr_mm3ds Gets the material removal rate in mm³/s. [Present(\"MRR\", null, PhysicsUnit.mm3ds, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double Mrr_mm3ds { get; } Property Value double ProgramSideCusp_um Gets the program side cusp in micrometers. Side cusp without deformation. The value is count by feed per tooth and the tool radius. [Present(\"Program Side Cusp\", null, PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double ProgramSideCusp_um { get; } Property Value double ReCutDepth_um Gets or sets the recut depth in micrometers. The recut depth cause the cutting mark by the end mill. The recut depth increased by the cutter radius increased. [Present(\"Re-Cut Depth on Bottom Edge on Tool Running Coordinate\", \"Re-Cut Depth\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double ReCutDepth_um { get; } Property Value double ReliefFaceCollidingVelocity_mmds Gets the relief face colliding speed. [Present(\"Relief Face Colliding Speed\", \"Rlf.C.Speed\", PhysicsUnit.mmds, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ReliefFaceCollidingVelocity_mmds { get; } Property Value double? SideCuspList_um Gets the list of side cusps in micrometers. [JsAce(ClassExt = \"MachiningStep\")] public List SideCuspList_um { get; } Property Value List SourceCommand Gets or sets the source command. public IGetSentence SourceCommand { get; set; } Property Value IGetSentence SpindleCyclePeriod_s Gets the spindle rotation cycle period in seconds. [Present(\"Spindle Cycle Period\", null, PhysicsUnit.sec, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double SpindleCyclePeriod_s { get; } Property Value double SpindleInputPower_W Input spindle power in watts: energy entering the spindle. [Present(\"Spindle Input Power\", null, PhysicsUnit.watt, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double SpindleInputPower_W { get; } Property Value double Input spindle power in Watts. SpindleOutputPower_W Spindle output power in watts (axial power taken by workpiece). Energy at the cutting end after spindle losses; causes workpiece/chip deformation and temperature rise. [Present(\"Spindle Output Power\", null, PhysicsUnit.watt, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double SpindleOutputPower_W { get; } Property Value double SpindleSpeed_rpm Gets the spindle speed in RPM. [Present(\"Spindle Speed\", \"S\", PhysicsUnit.rpm, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double SpindleSpeed_rpm { get; } Property Value double Spindle speed in rad/s SpindleTemperature_C Gets the spindle temperature in Celsius [Present(\"Spindle Temperature\", \"Spd.Temp.\", PhysicsUnit.C, \"G2\")] [JsAce(ClassExt = \"MachiningStep\")] public double? SpindleTemperature_C { get; } Property Value double? SpindleWorkingTemperatureRatio Gets the spindle working temperature ratio [Present(\"Spindle Working Temperature Ratio\", \"Spd.Temp.R.\", PhysicsUnit.None, \"G2\")] [JsAce(ClassExt = \"MachiningStep\")] public double? SpindleWorkingTemperatureRatio { get; } Property Value double? StepDuration Gets the step duration. [Present(\"Step Duration\", \"duration\", PhysicsUnit.sec, \"ss\\\\.ffffff\")] [JsAce(ClassExt = \"MachiningStep\")] public TimeSpan StepDuration { get; } Property Value TimeSpan StepIndex Gets the index of the step. [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] [Present(\"Step Index\", \"S.I.\", PhysicsUnit.None, \"G\")] public int StepIndex { get; } Property Value int ThermalStress_MPa Gets the thermal stress in MPa [Present(\"Thermal Stress\", \"Th. S.\", PhysicsUnit.MPa, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ThermalStress_MPa { get; } Property Value double? ThermalYieldRatio Gets the thermal yield ratio [Present(\"Thermal Yield Ratio\", \"Th. Yield R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ThermalYieldRatio { get; } Property Value double? TipDeflectionsOnToolRunningCoordinate_um Gets the tip deflections on tool running coordinate in micrometers [JsAce(ClassExt = \"MachiningStep\")] public List TipDeflectionsOnToolRunningCoordinate_um { get; } Property Value List ToolId Gets the tool ID. [Present(\"Tool ID\", \"T\", PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public int ToolId { get; } Property Value int ToothArcDuration_s Gets the tooth arc duration in seconds by the spindle rotation. The value is SpindleCyclePeriod_s div Cutter's teeth number. [Present(\"Tooth Arc Duration\", null, PhysicsUnit.sec, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double ToothArcDuration_s { get; } Property Value double ToothSeqOnToolRunningCoordinate Gets the sequence pair of transformation matrices representing tooth positions on the tool running coordinate system. public SeqPair ToothSeqOnToolRunningCoordinate { get; } Property Value SeqPair WorkpieceDermisTemperature_C Gets the workpiece dermis temperature in Celsius [Present(\"Workpiece Dermis Temperature\", \"W. Dermis T.\", PhysicsUnit.C, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? WorkpieceDermisTemperature_C { get; } Property Value double? WorkpiecePlasticDepth_um Gets the workpiece plastic depth in micrometers. The depth is at the location that the cutting stress is equal to the yielding stress. The cutting stress exert to the workpiece decreased on the depth increased. [Present(\"Workpiece Plastic Deformation Depth\", \"W.P.Depth\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double WorkpiecePlasticDepth_um { get; } Property Value double YieldingStressRatio Gets the yielding stress ratio [Present(\"Yielding Stress Ratio\", \"Y-Stress-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? YieldingStressRatio { get; } Property Value double? Methods GetCutterDermisAvgTemperature_C(double) Gets the average cutter dermis temperature in Celsius at the specified depth. [JsAce(ClassExt = \"MachiningStep\")] public double GetCutterDermisAvgTemperature_C(double depth_mm) Parameters depth_mm double The depth in millimeters Returns double Average temperature in Celsius GetCutterDermisTemperature_C(double) Gets the cutter dermis temperature in Celsius at the specified depth. [JsAce(ClassExt = \"MachiningStep\")] public double GetCutterDermisTemperature_C(double depth_mm) Parameters depth_mm double The depth in millimeters Returns double Temperature in Celsius GetFeedrate_mmds() Gets the program feedrate in millimeters per second. public double GetFeedrate_mmds() Returns double Feedrate in mm/s GetIndexedFileLine() Gets the file line associated with this object. public IndexedFileLine GetIndexedFileLine() Returns IndexedFileLine The file line object. GetMcValue(IMachiningChain, string) Gets the MC value for the specified tag in the machining chain. public double? GetMcValue(IMachiningChain chain, string tag) Parameters chain IMachiningChain The machining chain. tag string The tag to look up. Returns double? The MC value for the specified tag. GetMcValue(int) Gets the MC value at the specified index. For common machine tool, the index 0,1,2,3,4,5 is corresponding to motion component X,Y,Z,A,B,C. If the corresponding motion component not existed, return NaN. If MachineMotionStep not existed, return null. [JsAce(ClassExt = \"MachiningStep\")] public double? GetMcValue(int index) Parameters index int The index to look up. Returns double? The MC value at the specified index. GetRgbWithPriority(out Vec3d, out double) Gets the RGB color and priority for the milling step. public void GetRgbWithPriority(out Vec3d rgb, out double priority) Parameters rgb Vec3d The RGB color vector. priority double The priority value. GetSpindleDirection() Gets the spindle direction for this milling step. [Present(\"Spindle Direction\", \"Spd.Dir.\", PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public SpindleDirection GetSpindleDirection() Returns SpindleDirection GetSpindleSpeed_cycleds() Gets the spindle speed in cycles per second. public double GetSpindleSpeed_cycleds() Returns double The spindle speed in cycles per second. GetSpindleSpeed_radds() Gets the spindle speed in radians per second. public double GetSpindleSpeed_radds() Returns double Spindle speed in rad/s UpdateNcOptOption(Action) Update NcOptOption for this step only. It should not be mixed with the StepBuilt event and NC inline optimization script since the concurent process may break the logics. public void UpdateNcOptOption(Action action) Parameters action Action the action to modify the step." + "summary": "Class MachiningStep Namespace Hi.MachiningSteps Assembly HiMech.dll Represents a machining step enriched with physics, mapping and source metadata. The duration-based step property is based on the duration from previous-step to current-step. public class MachiningStep : IGetIndexedFileLine, IFlexDictionaryHost, IGetFeedrate, IGetSpindleSpeed, IGetRgbWithPriority, ISentenceCarrier, IGetSentence, ISentenceIndexed, IMotionStepIndex Inheritance object MachiningStep Implements IGetIndexedFileLine IFlexDictionaryHost IGetFeedrate IGetSpindleSpeed IGetRgbWithPriority ISentenceCarrier IGetSentence ISentenceIndexed IMotionStepIndex 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) FlexDictionaryUtil.CallFlexDictionary(IFlexDictionaryHost) FlexDictionaryUtil.GetFlexDictionaryBytes(IFlexDictionaryHost, IntegerKeyDictionaryConverter) FlexDictionaryUtil.WriteFlexDictionary(IFlexDictionaryHost, BinaryWriter, IntegerKeyDictionaryConverter) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors MachiningStep(IMachiningService, int, ISentenceCarrier, MachineMotionStep, MillingInstance, CollidedKeyPair[]) Initializes a new instance of the MachiningStep class. public MachiningStep(IMachiningService host, int stepIndex, ISentenceCarrier sourceCommand, MachineMotionStep machineMotionStep, MillingInstance millingInstance, MachiningStep.CollidedKeyPair[] collidedKeyPairs) Parameters host IMachiningService The host of the milling step. stepIndex int The index of the step. sourceCommand ISentenceCarrier The source command. machineMotionStep MachineMotionStep The machine motion step parameters. millingInstance MillingInstance The physics result for the step. collidedKeyPairs CollidedKeyPair[] The collided key pairs detected in this step. Properties AccumulatedCraterWear_um Gets the accumulated crater wear in micrometers [Present(\"Accumulated Crater Wear\", \"A.C.Wear\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double AccumulatedCraterWear_um { get; } Property Value double AccumulatedFlankWearDepth_um Gets the accumulated flank wear depth in micrometers [Present(\"Accumulated Flank Wear Depth\", \"A.F.Wear.Depth\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double AccumulatedFlankWearDepth_um { get; } Property Value double AccumulatedFlankWearWidth_um Gets the accumulated flank wear width in micrometers [Present(\"Accumulated Flank Wear Width\", \"A.F.Wear.Width\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double AccumulatedFlankWearWidth_um { get; } Property Value double AccumulatedSpindleEnergyConsumption_kWh Gets the accumulated spindle energy consumption in kilowatt-hours [Present(\"Accumulated Spindle Energy Consumption\", null, PhysicsUnit.kWh, \"G6\")] [JsAce(ClassExt = \"MachiningStep\")] public double AccumulatedSpindleEnergyConsumption_kWh { get; } Property Value double AccumulatedTime Legacy alias for EndTimecode. The value is a TimeSpan timecode (position from run start), so the canonical member carries the Timecode suffix and owns the [Present] / [JsAce] surface; this stays only as a source-compatible delegate. [Obsolete(\"Renamed to EndTimecode.\")] public TimeSpan AccumulatedTime { get; } Property Value TimeSpan ActualDateTime Absolute controller timestamp (wall-clock DateTime) of the step, preserved alongside ActualTimecode so the calendar date survives. Resolved to a timecode against the project mapping anchor (TimeMapping.MappingAnchorDateTime). null when the source row had no actual time. View onto ActualTime. [Present(\"Actual DateTime\", \"Act.DT\", PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public DateTime? ActualDateTime { get; } Property Value DateTime? ActualTime Wall-clock stamp of the step end (the controller-recorded timeline), or null when the scene has no measured time source (pure NC simulation). Dense on CSV plays: original controller stamps plus machine-timeline extrapolation marked by IsInterpolated. public StepActualTime ActualTime { get; set; } Property Value StepActualTime ActualTimecode Actual accumulated worked time. End Actual Timecode. Actual Program time. View onto ActualTime. [Present(\"Actual Time\", \"Act.Time\", PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public TimeSpan? ActualTimecode { get; } Property Value TimeSpan? AvgAbsMomentAboutSensorVec3d_Nm Gets the average absolute moment about sensor vector in Newton-meters [Present(\"Avg Abs Moment To Tool About Sensor\", \"Avg-Abs-M-ToTool-Sensor-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d AvgAbsMomentAboutSensorVec3d_Nm { get; } Property Value Vec3d AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm Gets the average absolute moment X about sensor on spindle rotation coordinate in Newton-meters [Present(\"Avg Abs Moment X To Tool About Sensor On Spindle Rotation Coordinate\", \"AvgAbsMx-ToTool-Sensor-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm { get; } Property Value double? AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm Gets the average absolute moment X about tool tip on spindle rotation coordinate in Newton-meters [Present(\"Avg Abs Moment X To Tool About Tool Tip On Spindle Rotation Coordinate\", \"AvgAbsMx-ToTool-Tip-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm { get; } Property Value double AvgAbsTorqueByMapping_Nm Gets the average absolute torque by mapping in Newton-meters [Present(\"Avg Abs Torque By Mapping\", \"AvgAbsTorque-Map\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsTorqueByMapping_Nm { get; } Property Value double? AvgAbsTorqueErrorRatioWithMapping numerator is sim value minus mapping value; denominator is the mapping value. [Present(\"Avg Torque Error Ratio by Mapping\", \"Torque-Err-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsTorqueErrorRatioWithMapping { get; } Property Value double? AvgAbsTorqueSignedErrorRelationWithMapping The sign is from sim value minus mapping value. the quantity is Math.Sqrt(err.Square() / Math.Abs(sim * mapping)) [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsTorqueSignedErrorRelationWithMapping { get; } Property Value double? AvgAbsTorque_Nm AvgAbsTorqueOnSpindleRotationCoordinate [Present(\"Avg Abs Torque\", \"AvgAbsTorque\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgAbsTorque_Nm { get; } Property Value double? AvgForceToToolOnToolRunningCoordinate_N Gets the average force to tool on tool running coordinate in N. [Present(\"AvgForceToToolOnToolRunningCoordinate\", \"AvgForce-ToTool-TR\", PhysicsUnit.N, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d AvgForceToToolOnToolRunningCoordinate_N { get; } Property Value Vec3d AvgForceXToToolOnToolRunningCoordinate_N Gets the average force X to tool on tool running coordinate in N. [JsAce(ClassExt = \"MachiningStep\")] public double? AvgForceXToToolOnToolRunningCoordinate_N { get; } Property Value double? AvgForceYToToolOnToolRunningCoordinate_N Gets the average force Y to tool on tool running coordinate in N. [JsAce(ClassExt = \"MachiningStep\")] public double? AvgForceYToToolOnToolRunningCoordinate_N { get; } Property Value double? AvgForceZToToolOnToolRunningCoordinate_N Gets the average force Z to tool on tool running coordinate in N. [JsAce(ClassExt = \"MachiningStep\")] public double? AvgForceZToToolOnToolRunningCoordinate_N { get; } Property Value double? AvgMomentAboutSensor_Nm Gets the average moment about sensor in Newton-meters [Present(\"Avg Moment To Tool About Sensor\", \"AvgM-ToTool-Sensor-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentAboutSensor_Nm { get; } Property Value double? AvgMomentAboutToolTipOnProgramCoordinate_Nm Gets the average moment about tool tip on program coordinate in Newton-meters [Present(\"Avg Moment To Tool About Tool Tip On Workpiece Program Coordinate\", \"AvgAbsM-ToTool-Tip-W\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d AvgMomentAboutToolTipOnProgramCoordinate_Nm { get; } Property Value Vec3d AvgMomentAboutToolTipOnToolRunningCoordinate_Nm Gets the average moment about tool tip on tool running coordinate in Newton-meters [Present(\"Avg Moment To Tool About Tool Tip On Tool Running Coordinate\", \"AvgAbsM-ToTool-Tip-TR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d AvgMomentAboutToolTipOnToolRunningCoordinate_Nm { get; } Property Value Vec3d AvgMomentAboutToolTip_Nm Gets the average moment about tool tip in Newton-meters [Present(\"Avg Moment To Tool About ToolTip\", \"AvgM-ToTool-Tip-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentAboutToolTip_Nm { get; } Property Value double? AvgMomentXyAboutObservationPoint_Nm Gets the average moment XY about observation point in Newton-meters [Present(\"Avg Moment XY To Tool About Sensor\", \"AvgM-ToTool-Sensor.XY\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentXyAboutObservationPoint_Nm { get; } Property Value double? AvgMomentXyByMapping_Nm Gets the average moment XY by mapping in Newton-meters [Present(\"Avg Moment XY By Mapping\", \"AvgM-Map.XY\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentXyByMapping_Nm { get; } Property Value double? AvgMomentXyErrorRatioWithMapping Gets the average moment XY error ratio with mapping. Numerator is sim value minus mapping value; denominator is the mapping value. [Present(\"Avg Moment XY Error Ratio by Mapping\", \"M-XY-Err-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentXyErrorRatioWithMapping { get; } Property Value double? AvgMomentXySignedErrorRelationWithMapping The sign is from sim value minus mapping value. the quantity is Math.Sqrt(err.Square() / Math.Abs(sim * mapping)) [JsAce(ClassExt = \"MachiningStep\")] public double? AvgMomentXySignedErrorRelationWithMapping { get; } Property Value double? BeginSpindleAngle_deg Gets the beginning spindle angle in degrees. [Present(\"Beginning Spindle Angle Shift\", \"Spd. Ang. Shift\", PhysicsUnit.deg, \"F2\")] [JsAce(ClassExt = \"MachiningStep\")] public double BeginSpindleAngle_deg { get; } Property Value double ChipMass_g Gets the chip mass in grams. [JsAce(ClassExt = \"MachiningStep\")] public double? ChipMass_g { get; } Property Value double? ChipMass_mg Gets the chip mass in milligrams. [Present(\"Chip Mass\", null, PhysicsUnit.mg, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ChipMass_mg { get; } Property Value double? ChipTemperature_C Gets the chip temperature in Celsius [Present(\"Chip Temperature\", \"Chip T.\", PhysicsUnit.C, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ChipTemperature_C { get; } Property Value double? ChipThickness_mm Gets the chip thickness in mm. [Present(\"Chip Thickness\", null, PhysicsUnit.mm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ChipThickness_mm { get; } Property Value double? ChipThickness_um Gets the chip thickness in micrometers public double? ChipThickness_um { get; } Property Value double? ChipVolume_mm3 Gets the chip volume in mm³. [Present(\"Chip Volume\", null, PhysicsUnit.mm3, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ChipVolume_mm3 { get; } Property Value double? Cl Gets the cutter location. [Present(\"Cutter Location\", \"CL\", PhysicsUnit.mm, \"F5\")] public DVec3d Cl { get; } Property Value DVec3d CollidedKeyPairs Gets or sets the collided key pairs if a collision was detected for this step. public MachiningStep.CollidedKeyPair[] CollidedKeyPairs { get; set; } Property Value CollidedKeyPair[] CollisionText A formatted text representing collided key pairs, e.g. \"(A,B);(C,D)\". Returns null when there is no collision. [Present] [JsAce(ClassExt = \"MachiningStep\")] public string CollisionText { get; } Property Value string ContinueSpindlePowerRatio Continuous spindle power ratio: input power / time-unlimited maximum power per spindle capability. [Present(\"Continue Spindle Power Ratio\", \"Cont.Spd.Pow.R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ContinueSpindlePowerRatio { get; } Property Value double? ContinueSpindleTorqueRatio Gets the infinite insistent spindle torque ratio [Present(\"Continue Spindle Torque Ratio\", \"Cont.Spd.Torque-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ContinueSpindleTorqueRatio { get; } Property Value double? CutterBodyTemperature_C Gets the cutter body temperature in Celsius [Present(\"Cutter Body Temperature\", \"Ct. Body T.\", PhysicsUnit.C, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? CutterBodyTemperature_C { get; } Property Value double? CutterDermisTemperature_C Gets the cutter dermis temperature in Celsius [Present(\"Cutter Dermis Temperature\", \"Ct. Dermis T.\", PhysicsUnit.C, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? CutterDermisTemperature_C { get; } Property Value double? CuttingDepth_mm Gets the cutting depth in mm. [Present(\"Cutting Depth\", \"ap\", PhysicsUnit.mm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double CuttingDepth_mm { get; } Property Value double CuttingForcesToToolOnToolRunningCoordinate_N Cutting forces on tool running coordinate. Unit is Newtons. The forced item is tool. public List CuttingForcesToToolOnToolRunningCoordinate_N { get; } Property Value List CuttingForcesToWorkpieceOnProgramCoordinate_N Get the cutting forces on program coordinate. Unit is Newtons. The forced item is workpiece. public List CuttingForcesToWorkpieceOnProgramCoordinate_N { get; } Property Value List CuttingSpeed_mmds Gets the cutting speed in mm/s. The speed on the cutter outer radius by the spindle rotating. [Present(\"Cutting Speed\", \"Vc\", PhysicsUnit.mmds, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double? CuttingSpeed_mmds { get; } Property Value double? CuttingWidth_mm Gets the cutting width in mm. [Present(\"Cutting Width\", \"ae\", PhysicsUnit.mm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double CuttingWidth_mm { get; } Property Value double DeltaTipDeflectionOnToolRunningCoordinate_um Gets the delta tip deflection on tool running coordinate in micrometers [Present(\"Delta Tip Deflection On Tool Running Coordinate\", \"Dlt.Df.-Tip-TR\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d DeltaTipDeflectionOnToolRunningCoordinate_um { get; } Property Value Vec3d EndTimecode Ideal accumulated worked time by simulation. Ideal Program duration. [Present(\"Time\", null, PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public TimeSpan EndTimecode { get; } Property Value TimeSpan FeedPerCycle_mm Gets the feed per cycle in mm. [Present(\"Feed per Cycle\", \"frc\", PhysicsUnit.mm, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double FeedPerCycle_mm { get; } Property Value double FeedPerTooth_mm Gets the feed per tooth in mm. [Present(\"Feed per Tooth\", \"frt\", PhysicsUnit.mm, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double FeedPerTooth_mm { get; } Property Value double Feedrate_mmdmin Gets the feedrate in mm/min. [Present(\"Feedrate\", \"F\", PhysicsUnit.mmdmin, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double Feedrate_mmdmin { get; } Property Value double Feedrate in mm/s FileNo Gets the file number. [Present] [JsAce(ClassExt = \"MachiningStep\")] public int? FileNo { get; } Property Value int? FilePath Gets the file path. [Present] [JsAce(ClassExt = \"MachiningStep\")] public string FilePath { get; } Property Value string FlagsText Gets the flags text. [Present] [JsAce(ClassExt = \"MachiningStep\")] public string FlagsText { get; } Property Value string FlexDictionary Gets or sets the flexible dictionary. public Dictionary FlexDictionary { get; set; } Property Value Dictionary FrictionPower_W friction power takes by workpiece per cycle. the unit is watt. [JsAce(ClassExt = \"MachiningStep\")] public double? FrictionPower_W { get; } Property Value double? Host Gets or sets the host of the milling step. public IMachiningService Host { get; set; } Property Value IMachiningService InstantCraterWear_um Gets the instant crater wear in micrometers [Present(\"Instant Crater Wear\", \"I.C.Wear\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? InstantCraterWear_um { get; } Property Value double? IsActualTimeInterpolated Whether the wall-clock stamp was extrapolated rather than read directly from a controller row. View onto ActualTime; null when the step has no wall-clock stamp at all. [Present(\"Actual Interpolated\", \"Act.Int\", PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public bool? IsActualTimeInterpolated { get; } Property Value bool? IsReliefFaceCollided Gets a value indicating whether the relief face is collided. [Present(\"Is Relief Face Collided\", \"Is-Rlf.C.\", PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public bool? IsReliefFaceCollided { get; } Property Value bool? IsTouched Gets whether the step is touched. [Present(\"Is Touched\", null, PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public bool IsTouched { get; } Property Value bool this[string] Gets or sets a value in the flexible dictionary by key. public object this[string key] { get; set; } Parameters key string The key to look up. Property Value object The value associated with the key, or null if not found. LineNo Gets the line number. [Present] [JsAce(ClassExt = \"MachiningStep\")] public int? LineNo { get; } Property Value int? LineText Gets the block text (may contain multiple lines for multi-line NC blocks). [Present] [JsAce(ClassExt = \"MachiningStep\")] public string LineText { get; } Property Value string MachineMotionStep Gets or sets the machining step. public MachineMotionStep MachineMotionStep { get; set; } Property Value MachineMotionStep MachiningTool Gets the machining tool used for this milling step. public IMachiningTool MachiningTool { get; } Property Value IMachiningTool MaxAbsForce_N Max absolute force at the rotation cycle. [Present(\"Max Absolute Force\", \"Max Abs F.\", PhysicsUnit.N, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? MaxAbsForce_N { get; } Property Value double? MaxBottomEdgeDeflectionOnToolRunningCoordinate_mm Gets the maximum bottom edge deflection on tool running coordinate in millimeters It only make sense in end mill. The z value of this factor is re-cut depth. [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MaxBottomEdgeDeflectionOnToolRunningCoordinate_mm { get; } Property Value Vec3d MaxBottomEdgeDeflectionOnToolRunningCoordinate_um Gets the maximum bottom edge deflection on tool running coordinate in micrometers. [Present(\"Max Bottom Edge Deflection On Tool Running Coordinate\", \"Df.-Bt.Edge-TR\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MaxBottomEdgeDeflectionOnToolRunningCoordinate_um { get; } Property Value Vec3d MaxForceOnToolRunningCoordinate_N Gets the maximum force on tool running coordinate in N. public Vec3d MaxForceOnToolRunningCoordinate_N { get; } Property Value Vec3d MaxMomentAboutSensor_Nm Gets the maximum moment about sensor in Newton-meters [Present(\"Max Moment To Tool About Sensor\", \"MaxM-ToTool-Sensor-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double MaxMomentAboutSensor_Nm { get; } Property Value double MaxMomentAboutToolTip_Nm Gets the maximum moment about tool tip in Newton-meters [Present(\"Max Moment To Tool About ToolTip\", \"MaxM-ToTool-Tip-SR\", PhysicsUnit.Nm, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double MaxMomentAboutToolTip_Nm { get; } Property Value double MaxSpindlePowerRatio Maximum spindle power ratio: input power / instantaneous maximum power per spindle capability. [Present(\"Max Spindle Power Ratio\", \"Max.Spd.Pow.R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? MaxSpindlePowerRatio { get; } Property Value double? MaxSpindleTorqueRatio Gets the maximum spindle torque ratio [Present(\"Max Spindle Torque Ratio\", \"Max.Spd.Torque-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? MaxSpindleTorqueRatio { get; } Property Value double? MaxTipDeflectionOnToolRunningCoordinate_mm Gets the maximum tip deflection on tool running coordinate in millimeters [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MaxTipDeflectionOnToolRunningCoordinate_mm { get; } Property Value Vec3d MaxTipDeflectionOnToolRunningCoordinate_um Gets the maximum tip deflection on tool running coordinate in micrometers [Present(\"Max Tip Deflection On Tool Running Coordinate\", \"Max.Df.-Tip-TR\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MaxTipDeflectionOnToolRunningCoordinate_um { get; } Property Value Vec3d MillingInstance Gets or sets the milling instance. public MillingInstance MillingInstance { get; set; } Property Value MillingInstance MillingStepLuggage Get luggage by sequencing loading performance optimization. public MillingStepLuggage MillingStepLuggage { get; } Property Value MillingStepLuggage MomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm Get Moments About Observation Point On Spindle Rotation Coordinate. Unit is Newtons-meter. The forced item is tool. public List MomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm { get; } Property Value List Remarks Not cached data. Light computation cost of the vectors transformation. MoveOnProgramCoordinate Gets the move on program coordinate. [Present(\"Move On Workpiece Program Coordinate\", \"Move-W\", PhysicsUnit.mm, \"F4\")] [JsAce(ClassExt = \"MachiningStep\")] public Vec3d MoveOnProgramCoordinate { get; } Property Value Vec3d MovingLength_mm Gets the moving length in mm. From previous-step to current-step. [Present(\"Move Length\", \"Move Len.\", PhysicsUnit.mm, \"F4\")] [JsAce(ClassExt = \"MachiningStep\")] public double MovingLength_mm { get; } Property Value double Mrr_mm3ds Gets the material removal rate in mm³/s. [Present(\"MRR\", null, PhysicsUnit.mm3ds, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double Mrr_mm3ds { get; } Property Value double ProgramSideCusp_um Gets the program side cusp in micrometers. Side cusp without deformation. The value is count by feed per tooth and the tool radius. [Present(\"Program Side Cusp\", null, PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double ProgramSideCusp_um { get; } Property Value double ReCutDepth_um Gets or sets the recut depth in micrometers. The recut depth cause the cutting mark by the end mill. The recut depth increased by the cutter radius increased. [Present(\"Re-Cut Depth on Bottom Edge on Tool Running Coordinate\", \"Re-Cut Depth\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double ReCutDepth_um { get; } Property Value double ReliefFaceCollidingVelocity_mmds Gets the relief face colliding speed. [Present(\"Relief Face Colliding Speed\", \"Rlf.C.Speed\", PhysicsUnit.mmds, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ReliefFaceCollidingVelocity_mmds { get; } Property Value double? SentenceIndex Execution-order ordinal of the NC source block this step came from, delegated from SourceCommand. This is the source block's position — distinct from this step's own StepIndex, since one block can expand into several steps. Returns -1 (the “not in pipeline” sentinel) when there is no source carrier. public int SentenceIndex { get; } Property Value int SideCuspList_um Gets the list of side cusps in micrometers. [JsAce(ClassExt = \"MachiningStep\")] public List SideCuspList_um { get; } Property Value List SourceCommand Gets or sets the source command — the NC-source carrier that produced this step, exposing both the Sentence (via GetSentence()) and the execution-order SentenceIndex. public ISentenceCarrier SourceCommand { get; set; } Property Value ISentenceCarrier SpindleCyclePeriod_s Gets the spindle rotation cycle period in seconds. [Present(\"Spindle Cycle Period\", null, PhysicsUnit.sec, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double SpindleCyclePeriod_s { get; } Property Value double SpindleInputPower_W Input spindle power in watts: energy entering the spindle. [Present(\"Spindle Input Power\", null, PhysicsUnit.watt, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double SpindleInputPower_W { get; } Property Value double Input spindle power in Watts. SpindleOutputPower_W Spindle output power in watts (axial power taken by workpiece). Energy at the cutting end after spindle losses; causes workpiece/chip deformation and temperature rise. [Present(\"Spindle Output Power\", null, PhysicsUnit.watt, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double SpindleOutputPower_W { get; } Property Value double SpindleSpeed_rpm Gets the spindle speed in RPM. [Present(\"Spindle Speed\", \"S\", PhysicsUnit.rpm, \"G5\")] [JsAce(ClassExt = \"MachiningStep\")] public double SpindleSpeed_rpm { get; } Property Value double Spindle speed in rad/s SpindleTemperature_C Gets the spindle temperature in Celsius [Present(\"Spindle Temperature\", \"Spd.Temp.\", PhysicsUnit.C, \"G2\")] [JsAce(ClassExt = \"MachiningStep\")] public double? SpindleTemperature_C { get; } Property Value double? SpindleWorkingTemperatureRatio Gets the spindle working temperature ratio [Present(\"Spindle Working Temperature Ratio\", \"Spd.Temp.R.\", PhysicsUnit.None, \"G2\")] [JsAce(ClassExt = \"MachiningStep\")] public double? SpindleWorkingTemperatureRatio { get; } Property Value double? StepDuration Gets the step duration. [Present(\"Step Duration\", \"duration\", PhysicsUnit.sec, \"ss\\\\.ffffff\")] [JsAce(ClassExt = \"MachiningStep\")] public TimeSpan StepDuration { get; } Property Value TimeSpan StepIndex Gets the index of the step. [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] [Present(\"Step Index\", \"S.I.\", PhysicsUnit.None, \"G\")] public int StepIndex { get; } Property Value int ThermalStress_MPa Gets the thermal stress in MPa [Present(\"Thermal Stress\", \"Th. S.\", PhysicsUnit.MPa, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ThermalStress_MPa { get; } Property Value double? ThermalYieldRatio Gets the thermal yield ratio [Present(\"Thermal Yield Ratio\", \"Th. Yield R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? ThermalYieldRatio { get; } Property Value double? TipDeflectionsOnToolRunningCoordinate_um Gets the tip deflections on tool running coordinate in micrometers [JsAce(ClassExt = \"MachiningStep\")] public List TipDeflectionsOnToolRunningCoordinate_um { get; } Property Value List ToolId Gets the tool ID. [Present(\"Tool ID\", \"T\", PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public int ToolId { get; } Property Value int ToothArcDuration_s Gets the tooth arc duration in seconds by the spindle rotation. The value is SpindleCyclePeriod_s div Cutter's teeth number. [Present(\"Tooth Arc Duration\", null, PhysicsUnit.sec, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double ToothArcDuration_s { get; } Property Value double ToothSeqOnToolRunningCoordinate Gets the sequence pair of transformation matrices representing tooth positions on the tool running coordinate system. public SeqPair ToothSeqOnToolRunningCoordinate { get; } Property Value SeqPair WorkpieceDermisTemperature_C Gets the workpiece dermis temperature in Celsius [Present(\"Workpiece Dermis Temperature\", \"W. Dermis T.\", PhysicsUnit.C, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? WorkpieceDermisTemperature_C { get; } Property Value double? WorkpiecePlasticDepth_um Gets the workpiece plastic depth in micrometers. The depth is at the location that the cutting stress is equal to the yielding stress. The cutting stress exert to the workpiece decreased on the depth increased. [Present(\"Workpiece Plastic Deformation Depth\", \"W.P.Depth\", PhysicsUnit.um, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double WorkpiecePlasticDepth_um { get; } Property Value double YieldingStressRatio Gets the yielding stress ratio [Present(\"Yielding Stress Ratio\", \"Y-Stress-R.\", PhysicsUnit.None, \"G4\")] [JsAce(ClassExt = \"MachiningStep\")] public double? YieldingStressRatio { get; } Property Value double? Methods GetCutterDermisAvgTemperature_C(double) Gets the average cutter dermis temperature in Celsius at the specified depth. [JsAce(ClassExt = \"MachiningStep\")] public double GetCutterDermisAvgTemperature_C(double depth_mm) Parameters depth_mm double The depth in millimeters Returns double Average temperature in Celsius GetCutterDermisTemperature_C(double) Gets the cutter dermis temperature in Celsius at the specified depth. [JsAce(ClassExt = \"MachiningStep\")] public double GetCutterDermisTemperature_C(double depth_mm) Parameters depth_mm double The depth in millimeters Returns double Temperature in Celsius GetFeedrate_mmds() Gets the program feedrate in millimeters per second. public double GetFeedrate_mmds() Returns double Feedrate in mm/s GetIndexedFileLine() Gets the file line associated with this object. public IndexedFileLine GetIndexedFileLine() Returns IndexedFileLine The file line object. GetMcValue(IMachiningChain, string) Gets the MC value for the specified tag in the machining chain. public double? GetMcValue(IMachiningChain chain, string tag) Parameters chain IMachiningChain The machining chain. tag string The tag to look up. Returns double? The MC value for the specified tag. GetMcValue(int) Gets the MC value at the specified index. For common machine tool, the index 0,1,2,3,4,5 is corresponding to motion component X,Y,Z,A,B,C. If the corresponding motion component not existed, return NaN. If MachineMotionStep not existed, return null. [JsAce(ClassExt = \"MachiningStep\")] public double? GetMcValue(int index) Parameters index int The index to look up. Returns double? The MC value at the specified index. GetRgbWithPriority(out Vec3d, out double) Gets the RGB color and priority for the milling step. public void GetRgbWithPriority(out Vec3d rgb, out double priority) Parameters rgb Vec3d The RGB color vector. priority double The priority value. GetSentence() Returns the source Sentence carried by this object. public Sentence GetSentence() Returns Sentence GetSpindleDirection() Gets the spindle direction for this milling step. [Present(\"Spindle Direction\", \"Spd.Dir.\", PhysicsUnit.None, \"G\")] [JsAce(ClassExt = \"MachiningStep\")] public SpindleDirection GetSpindleDirection() Returns SpindleDirection GetSpindleSpeed_cycleds() Gets the spindle speed in cycles per second. public double GetSpindleSpeed_cycleds() Returns double The spindle speed in cycles per second. GetSpindleSpeed_radds() Gets the spindle speed in radians per second. public double GetSpindleSpeed_radds() Returns double Spindle speed in rad/s UpdateNcOptOption(Action) Update NcOptOption for this step only. It should not be mixed with the StepBuilt event and NC inline optimization script since the concurent process may break the logics. public void UpdateNcOptOption(Action action) Parameters action Action the action to modify the step." }, "api/Hi.MachiningSteps.MachiningStepUtil.html": { "href": "api/Hi.MachiningSteps.MachiningStepUtil.html", @@ -2129,15 +2234,25 @@ "title": "Class PropertyAccess | HiAPI-C# 2025", "summary": "Class PropertyAccess Namespace Hi.MachiningSteps Assembly HiMech.dll Provides access to properties of a milling step with presentation information. public class PropertyAccess where TData : class Type Parameters TData Inheritance object PropertyAccess 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 PropertyAccess(PresentAttribute, Func) Initializes a new instance for numeric properties. public PropertyAccess(PresentAttribute presentAttribute, Func getQuantityFunc) Parameters presentAttribute PresentAttribute The presentation attribute for the property. getQuantityFunc Func The function to retrieve the numeric value. PropertyAccess(PresentAttribute, Func) Initializes a new instance for non-numeric properties. public PropertyAccess(PresentAttribute presentAttribute, Func getNonQuantityFunc) Parameters presentAttribute PresentAttribute The presentation attribute for the property. getNonQuantityFunc Func The function to retrieve the non-numeric value. Properties GetNonQuantityFunc Gets or sets the function to retrieve a non-numeric value from a milling step. public Func GetNonQuantityFunc { get; set; } Property Value Func GetQuantityFunc Gets or sets the function to retrieve a numeric value from a milling step. public Func GetQuantityFunc { get; set; } Property Value Func PresentAttribute Gets or sets the presentation attribute for the property. public PresentAttribute PresentAttribute { get; set; } Property Value PresentAttribute Methods GetValue(TData) Gets the value of the property for the specified milling step. public object GetValue(TData step) Parameters step TData The milling step to get the property value from. Returns object The property value, or null if neither function is set. GetValueText(object) Gets the formatted text representation of the specified value. public string GetValueText(object v) Parameters v object The value to format. Returns string The formatted text representation of the value. GetValueText(TData) Gets the formatted text representation of the property value for the specified milling step. public string GetValueText(TData step) Parameters step TData The milling step to get the property value from. Returns string The formatted text representation of the property value." }, + "api/Hi.MachiningSteps.StepActualTime.html": { + "href": "api/Hi.MachiningSteps.StepActualTime.html", + "title": "Class StepActualTime | HiAPI-C# 2025", + "summary": "Class StepActualTime Namespace Hi.MachiningSteps Assembly HiMech.dll Wall-clock stamp of a machining step end — the controller-recorded timeline, as opposed to the simulated machine timeline (EndTimecode). Grouped into one optional sub-object so scenes that never map measured data (pure NC simulation, collision check, optimization) carry a single null reference per step. A CSV play stamps only the first step built after each row/idle boundary with the controller instant; the steps in between receive values extrapolated from the latest stamp along the machine timeline and are marked IsInterpolated. public class StepActualTime Inheritance object StepActualTime 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 Instant Absolute controller instant of the step end; null when the source row carried only a relative timecode. public DateTime? Instant { get; set; } Property Value DateTime? IsInterpolated False when the values came directly from a controller row (an original stamp — a genuine timeline anchor); true when they were extrapolated from the latest stamp along the machine timeline. public bool IsInterpolated { get; set; } Property Value bool Timecode Run-relative wall-clock timecode of the step end, resolved against the project mapping anchor (TimeMapping.MappingAnchorDateTime). public TimeSpan Timecode { get; set; } Property Value TimeSpan" + }, + "api/Hi.MachiningSteps.StepPresentCatalog.html": { + "href": "api/Hi.MachiningSteps.StepPresentCatalog.html", + "title": "Class StepPresentCatalog | HiAPI-C# 2025", + "summary": "Class StepPresentCatalog Namespace Hi.MachiningSteps Assembly HiMech.dll Internal Use Only. Expands the PresentAttribute-annotated properties of MachiningStep into the stable presentation-key dictionary (vector properties fan out to .X/.Y/.Z, the cutter location to .X/.Y/.Z/.I/.J/.K). public static class StepPresentCatalog Inheritance object StepPresentCatalog Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods BuildNativeAccessDictionary() Internal Use Only. Builds the key-to-access dictionary for the native (machine-independent) MachiningStep presentation properties. public static Dictionary> BuildNativeAccessDictionary() Returns Dictionary> The dictionary mapping stable presentation keys to their property access." + }, "api/Hi.MachiningSteps.html": { "href": "api/Hi.MachiningSteps.html", "title": "Namespace Hi.MachiningSteps | HiAPI-C# 2025", - "summary": "Namespace Hi.MachiningSteps Classes MachineMotionStep MachiningStep has spindle information. Note that the spindle information is only for milling behavior. MachiningStep Represents a machining step enriched with physics, mapping and source metadata. The duration-based step property is based on the duration from previous-step to current-step. MachiningStep.CollidedKeyPair A pair of collided keys that indicates two entities are in collision. MachiningStepUtil Utility class for milling step related constants and helper methods. PresentAccess Provides a value accessor bound with its PresentAttribute metadata. PresentAttribute Attribute for presenting property information with localization support. PropertyAccess Provides access to properties of a milling step with presentation information. Interfaces IFlagText temperary design for showing flag text. IMachiningService Represents a host interface for milling steps that provides access to milling equipment and related resources. IStepPropertyAccessHost Narrow host contract for accessing the step-variable registry and registering new step variables. Exposed as a dedicated surface so pipelines that only need step-variable wiring (e.g. CsvRowSyntax) do not have to depend on the broader IMachiningService." + "summary": "Namespace Hi.MachiningSteps Classes MachineMotionStep MachiningStep has spindle information. Note that the spindle information is only for milling behavior. MachiningStep Represents a machining step enriched with physics, mapping and source metadata. The duration-based step property is based on the duration from previous-step to current-step. MachiningStep.CollidedKeyPair A pair of collided keys that indicates two entities are in collision. MachiningStepUtil Utility class for milling step related constants and helper methods. PresentAccess Provides a value accessor bound with its PresentAttribute metadata. PresentAttribute Attribute for presenting property information with localization support. PropertyAccess Provides access to properties of a milling step with presentation information. StepActualTime Wall-clock stamp of a machining step end — the controller-recorded timeline, as opposed to the simulated machine timeline (EndTimecode). Grouped into one optional sub-object so scenes that never map measured data (pure NC simulation, collision check, optimization) carry a single null reference per step. A CSV play stamps only the first step built after each row/idle boundary with the controller instant; the steps in between receive values extrapolated from the latest stamp along the machine timeline and are marked IsInterpolated. StepPresentCatalog Internal Use Only. Expands the PresentAttribute-annotated properties of MachiningStep into the stable presentation-key dictionary (vector properties fan out to .X/.Y/.Z, the cutter location to .X/.Y/.Z/.I/.J/.K). Interfaces IFlagText temperary design for showing flag text. IMachiningService Represents a host interface for milling steps that provides access to milling equipment and related resources. IMotionStepIndex Abstraction for an object that carries a StepIndex — the 0-based ordinal of a machining motion step in execution order. Used as a cross-object alignment key so a step (MachiningStep), its cutter-location position (ClStripPos), and the messages anchored to it (StepDiagnostic, StepScopedProgress) can be matched by the same ordinal without depending on a concrete type. Distinct from ISentenceIndexed: that ordinal counts NC source blocks, whereas this one counts produced motion steps — a single source block (e.g. a canned cycle) can fan out into several steps. IStepPropertyAccessHost Narrow host contract for accessing the step-variable registry and registering new step variables. Exposed as a dedicated surface so pipelines that only need step-variable wiring (e.g. CsvRowSyntax) do not have to depend on the broader IMachiningService." }, "api/Hi.Mapping.CsvNcStep.html": { "href": "api/Hi.Mapping.CsvNcStep.html", "title": "Class CsvNcStep | HiAPI-C# 2025", - "summary": "Class CsvNcStep Namespace Hi.Mapping Assembly HiMech.dll Represents a numerical control step loaded from a CSV file, with support for interpolation and arithmetic operations. public class CsvNcStep : IGetFileLineIndex, IAdditionOperators, IMultiplyOperators Inheritance object CsvNcStep Implements IGetFileLineIndex IAdditionOperators IMultiplyOperators 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 CsvNcStep(FileLineIndex, TimeSpan, DVec3d, List) Initializes a new instance of the CsvNcStep class with the specified parameters. public CsvNcStep(FileLineIndex fileLineIndex, TimeSpan time, DVec3d mcXyzabc, List doubleFlexList) Parameters fileLineIndex FileLineIndex The file and line index information. time TimeSpan The time value for this step. mcXyzabc DVec3d The machine coordinates for this step. doubleFlexList List The list of additional double values. Properties ActualTime Gets or sets the time value for this step. public TimeSpan ActualTime { get; set; } Property Value TimeSpan DoubleFlexList Gets or sets the list of additional double values associated with this step. public List DoubleFlexList { get; set; } Property Value List FileLineIndex Gets or sets the file and line index information. public FileLineIndex FileLineIndex { get; set; } Property Value FileLineIndex McXyzabc Gets the machine coordinates (XYZ and ABC) for this step. public DVec3d McXyzabc { get; } Property Value DVec3d Methods GetFileLineIndex() Get FileLineIndex. public FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex MapSingleByCsvFile(ClStrip, string, string, IProgress) Embed single data per step by CSV file. It is one (step) - one (embedded-data) mapping. Time interpolation is applied. It is time-based mapping. Builds a collection of CsvNcStep instances from a CSV file. public static void MapSingleByCsvFile(ClStrip clStrip, string baseDirectory, string relFile, IProgress messageHost) Parameters clStrip ClStrip The cutter location strip to populate. baseDirectory string The base directory for the file path. relFile string The relative file path to the CSV file. messageHost IProgress The message host for logging. Operators operator +(CsvNcStep, CsvNcStep) Adds two CsvNcStep instances together. public static CsvNcStep operator +(CsvNcStep left, CsvNcStep right) Parameters left CsvNcStep The first CsvNcStep instance. right CsvNcStep The second CsvNcStep instance. Returns CsvNcStep A new CsvNcStep instance with values that are the sum of the two input instances. operator *(CsvNcStep, double) Multiplies a CsvNcStep instance by a scalar value. public static CsvNcStep operator *(CsvNcStep src, double scale) Parameters src CsvNcStep The CsvNcStep instance to multiply. scale double The scalar value to multiply by. Returns CsvNcStep A new CsvNcStep instance with values scaled by the specified factor." + "summary": "Class CsvNcStep Namespace Hi.Mapping Assembly HiMech.dll Represents a numerical control step loaded from a CSV file, with support for interpolation and arithmetic operations. public class CsvNcStep : IGetFileLineIndex, IAdditionOperators, IMultiplyOperators Inheritance object CsvNcStep Implements IGetFileLineIndex IAdditionOperators IMultiplyOperators 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 CsvNcStep(FileLineIndex, TimeSpan, DVec3d, List) Initializes a new instance of the CsvNcStep class with the specified parameters. public CsvNcStep(FileLineIndex fileLineIndex, TimeSpan time, DVec3d mcXyzabc, List doubleFlexList) Parameters fileLineIndex FileLineIndex The file and line index information. time TimeSpan The time value for this step. mcXyzabc DVec3d The machine coordinates for this step. doubleFlexList List The list of additional double values. Properties ActualDateTime Optional absolute controller instant captured at parse time; null when the row was relative. Resolved to ActualTimecode against the project mapping anchor (timecode-first when both are present). public DateTime? ActualDateTime { get; set; } Property Value DateTime? ActualTimecode Gets or sets the relative timecode for this step (position from run start). Authoritative for interpolation / arithmetic. public TimeSpan ActualTimecode { get; set; } Property Value TimeSpan DoubleFlexList Gets or sets the list of additional double values associated with this step. public List DoubleFlexList { get; set; } Property Value List FileLineIndex Gets or sets the file and line index information. public FileLineIndex FileLineIndex { get; set; } Property Value FileLineIndex McXyzabc Gets the machine coordinates (XYZ and ABC) for this step. public DVec3d McXyzabc { get; } Property Value DVec3d Methods GetFileLineIndex() Get FileLineIndex. public FileLineIndex GetFileLineIndex() Returns FileLineIndex FileLineIndex MapSingleByCsvFile(ClStrip, string, string, IProgress, Func) Embed single data per step by CSV file. It is one (step) - one (embedded-data) mapping. Time interpolation is applied. It is time-based mapping. Builds a collection of CsvNcStep instances from a CSV file. public static void MapSingleByCsvFile(ClStrip clStrip, string baseDirectory, string relFile, IProgress messageProgress, Func toTimecode = null) Parameters clStrip ClStrip The cutter location strip to populate. baseDirectory string The base directory for the file path. relFile string The relative file path to the CSV file. messageProgress IProgress The message host for logging. toTimecode Func Converter from an absolute controller instant to a run-relative timecode (the project mapping anchor's converter). Used when the actual-time cell is a DateTime rather than a bare timecode; timecode-first when both are parseable. Null falls back to the legacy timecode / sim-time parse. Operators operator +(CsvNcStep, CsvNcStep) Adds two CsvNcStep instances together. public static CsvNcStep operator +(CsvNcStep left, CsvNcStep right) Parameters left CsvNcStep The first CsvNcStep instance. right CsvNcStep The second CsvNcStep instance. Returns CsvNcStep A new CsvNcStep instance with values that are the sum of the two input instances. operator *(CsvNcStep, double) Multiplies a CsvNcStep instance by a scalar value. public static CsvNcStep operator *(CsvNcStep src, double scale) Parameters src CsvNcStep The CsvNcStep instance to multiply. scale double The scalar value to multiply by. Returns CsvNcStep A new CsvNcStep instance with values scaled by the specified factor." }, "api/Hi.Mapping.FileToTimeShotMapping.html": { "href": "api/Hi.Mapping.FileToTimeShotMapping.html", @@ -2147,27 +2262,27 @@ "api/Hi.Mapping.IAccelerationShot.html": { "href": "api/Hi.Mapping.IAccelerationShot.html", "title": "Interface IAccelerationShot | HiAPI-C# 2025", - "summary": "Interface IAccelerationShot Namespace Hi.Mapping Assembly HiMech.dll Interface for objects that represent acceleration measurements at a specific time point. Extends the ITimeShot interface to include acceleration data in multiple units. public interface IAccelerationShot : ITimeShot, ITimeGetter Inherited Members ITimeShot.GetAdd(ITimeShot) ITimeShot.GetScaled(double) ITimeGetter.Time 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 This interface adds acceleration measurement capabilities to time shots: Provides acceleration data in multiple units (mm/s², m/s², g) Supports automatic unit conversion between different scales Typically used for vibration analysis in machining operations Maintains consistent coordinate system conventions across unit conversions Properties Acceleration_g Gets or sets the acceleration vector in g-force units (g). This property automatically converts between mm/s² and g, where 1g = 9.81 m/s². Vec3d Acceleration_g { get; set; } Property Value Vec3d Remarks Conversion factors: From m/s² to g: divide by 9.81 From g to m/s²: multiply by 9.81 Common reference values: 1g: Earth's gravitational acceleration 0g: Free fall Acceleration_mds2 Gets or sets the acceleration vector in meters per second squared (m/s²). This property automatically converts between mm/s² and m/s². Vec3d Acceleration_mds2 { get; set; } Property Value Vec3d Remarks Conversion factors: From mm/s² to m/s²: divide by 1000 From m/s² to mm/s²: multiply by 1000 Acceleration_mmds2 Gets or sets the acceleration vector in millimeters per second squared (mm/s²). This is the base unit for acceleration storage in the system. Vec3d Acceleration_mmds2 { get; set; } Property Value Vec3d Remarks The acceleration vector components represent: X: Acceleration in the X direction (mm/s²) Y: Acceleration in the Y direction (mm/s²) Z: Acceleration in the Z direction (mm/s²)" + "summary": "Interface IAccelerationShot Namespace Hi.Mapping Assembly HiMech.dll Interface for objects that represent acceleration measurements at a specific time point. Extends the ITimeShot interface to include acceleration data in multiple units. public interface IAccelerationShot : ITimeShot, ITimecoded Inherited Members ITimeShot.GetAdd(ITimeShot) ITimeShot.GetScaled(double) ITimecoded.Timecode 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 This interface adds acceleration measurement capabilities to time shots: Provides acceleration data in multiple units (mm/s², m/s², g) Supports automatic unit conversion between different scales Typically used for vibration analysis in machining operations Maintains consistent coordinate system conventions across unit conversions Properties Acceleration_g Gets or sets the acceleration vector in g-force units (g). This property automatically converts between mm/s² and g, where 1g = 9.81 m/s². Vec3d Acceleration_g { get; set; } Property Value Vec3d Remarks Conversion factors: From m/s² to g: divide by 9.81 From g to m/s²: multiply by 9.81 Common reference values: 1g: Earth's gravitational acceleration 0g: Free fall Acceleration_mds2 Gets or sets the acceleration vector in meters per second squared (m/s²). This property automatically converts between mm/s² and m/s². Vec3d Acceleration_mds2 { get; set; } Property Value Vec3d Remarks Conversion factors: From mm/s² to m/s²: divide by 1000 From m/s² to mm/s²: multiply by 1000 Acceleration_mmds2 Gets or sets the acceleration vector in millimeters per second squared (mm/s²). This is the base unit for acceleration storage in the system. Vec3d Acceleration_mmds2 { get; set; } Property Value Vec3d Remarks The acceleration vector components represent: X: Acceleration in the X direction (mm/s²) Y: Acceleration in the Y direction (mm/s²) Z: Acceleration in the Z direction (mm/s²)" }, "api/Hi.Mapping.IForceShot.html": { "href": "api/Hi.Mapping.IForceShot.html", "title": "Interface IForceShot | HiAPI-C# 2025", - "summary": "Interface IForceShot Namespace Hi.Mapping Assembly HiMech.dll Interface for objects that represent force measurements at a specific time point. Extends the ITimeShot interface to include force vector data. public interface IForceShot : ITimeShot, ITimeGetter Inherited Members ITimeShot.GetAdd(ITimeShot) ITimeShot.GetScaled(double) ITimeGetter.Time 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 This interface adds force measurement capabilities to time shots: Force is represented as a 3D vector in Newtons Supports operations inherited from ITimeShot Implementations should handle coordinate system conventions appropriately Typically used for recording cutting forces in machining operations Properties Force_N Gets or sets the force vector applied to the workpiece, measured in Newtons (N). Vec3d Force_N { get; set; } Property Value Vec3d Remarks The force vector components represent: X: Force in the X direction (N) Y: Force in the Y direction (N) Z: Force in the Z direction (N) Positive values typically indicate: Forces acting in the positive direction of each axis Forces applied to the workpiece (rather than the tool)" + "summary": "Interface IForceShot Namespace Hi.Mapping Assembly HiMech.dll Interface for objects that represent force measurements at a specific time point. Extends the ITimeShot interface to include force vector data. public interface IForceShot : ITimeShot, ITimecoded Inherited Members ITimeShot.GetAdd(ITimeShot) ITimeShot.GetScaled(double) ITimecoded.Timecode 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 This interface adds force measurement capabilities to time shots: Force is represented as a 3D vector in Newtons Supports operations inherited from ITimeShot Implementations should handle coordinate system conventions appropriately Typically used for recording cutting forces in machining operations Properties Force_N Gets or sets the force vector applied to the workpiece, measured in Newtons (N). Vec3d Force_N { get; set; } Property Value Vec3d Remarks The force vector components represent: X: Force in the X direction (N) Y: Force in the Y direction (N) Z: Force in the Z direction (N) Positive values typically indicate: Forces acting in the positive direction of each axis Forces applied to the workpiece (rather than the tool)" }, "api/Hi.Mapping.IMomentShot.html": { "href": "api/Hi.Mapping.IMomentShot.html", "title": "Interface IMomentShot | HiAPI-C# 2025", - "summary": "Interface IMomentShot Namespace Hi.Mapping Assembly HiMech.dll Interface for objects that represent moment (torque) measurements at a specific time point. Extends the ITimeShot interface to include moment vector data. public interface IMomentShot : ITimeShot, ITimeGetter Inherited Members ITimeShot.GetAdd(ITimeShot) ITimeShot.GetScaled(double) ITimeGetter.Time 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 This interface adds moment measurement capabilities to time shots: Moments are represented as 3D vectors in Newton-meters Supports operations inherited from ITimeShot Typically used for recording spindle or tool torques in machining operations Follows the right-hand rule convention for moment directions Properties Moment_Nm Gets or sets the moment (torque) vector, measured in Newton-meters (N⋅m). Vec3d Moment_Nm { get; set; } Property Value Vec3d Remarks The moment vector components represent: X: Moment around the X axis (N⋅m) Y: Moment around the Y axis (N⋅m) Z: Moment around the Z axis (N⋅m) Positive values indicate: Clockwise moments when looking along the positive axis direction Following the right-hand rule convention" + "summary": "Interface IMomentShot Namespace Hi.Mapping Assembly HiMech.dll Interface for objects that represent moment (torque) measurements at a specific time point. Extends the ITimeShot interface to include moment vector data. public interface IMomentShot : ITimeShot, ITimecoded Inherited Members ITimeShot.GetAdd(ITimeShot) ITimeShot.GetScaled(double) ITimecoded.Timecode 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 This interface adds moment measurement capabilities to time shots: Moments are represented as 3D vectors in Newton-meters Supports operations inherited from ITimeShot Typically used for recording spindle or tool torques in machining operations Follows the right-hand rule convention for moment directions Properties Moment_Nm Gets or sets the moment (torque) vector, measured in Newton-meters (N⋅m). Vec3d Moment_Nm { get; set; } Property Value Vec3d Remarks The moment vector components represent: X: Moment around the X axis (N⋅m) Y: Moment around the Y axis (N⋅m) Z: Moment around the Z axis (N⋅m) Positive values indicate: Clockwise moments when looking along the positive axis direction Following the right-hand rule convention" }, "api/Hi.Mapping.ITimeShot.html": { "href": "api/Hi.Mapping.ITimeShot.html", "title": "Interface ITimeShot | HiAPI-C# 2025", - "summary": "Interface ITimeShot Namespace Hi.Mapping Assembly HiMech.dll Interface for objects that represent a snapshot of data at a specific time and support arithmetic operations. This interface provides a foundation for time-series data with vector operations. public interface ITimeShot : ITimeGetter Inherited Members ITimeGetter.Time 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 Implementations of this interface should: Store data associated with a specific time point Support addition with other time shots Support scaling by a scalar value Handle null or invalid data appropriately Methods GetAdd(ITimeShot) Adds another time shot to this one. ITimeShot GetAdd(ITimeShot shot) Parameters shot ITimeShot The time shot to add. Returns ITimeShot A new time shot representing the sum of the two shots. Remarks The addition should: Combine vector components appropriately Handle null or missing data gracefully Preserve the time value according to implementation rules GetScaled(double) Scales the values in this time shot by the specified factor. ITimeShot GetScaled(double scale) Parameters scale double The scaling factor to apply to all vector components. Returns ITimeShot A new time shot with all values scaled by the given factor. Remarks The scaling should: Apply to all vector components Handle null or missing data gracefully Scale the time value if appropriate for the implementation" + "summary": "Interface ITimeShot Namespace Hi.Mapping Assembly HiMech.dll Interface for objects that represent a snapshot of data at a specific time and support arithmetic operations. This interface provides a foundation for time-series data with vector operations. public interface ITimeShot : ITimecoded Inherited Members ITimecoded.Timecode 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 Implementations of this interface should: Store data associated with a specific time point Support addition with other time shots Support scaling by a scalar value Handle null or invalid data appropriately Methods GetAdd(ITimeShot) Adds another time shot to this one. ITimeShot GetAdd(ITimeShot shot) Parameters shot ITimeShot The time shot to add. Returns ITimeShot A new time shot representing the sum of the two shots. Remarks The addition should: Combine vector components appropriately Handle null or missing data gracefully Preserve the time value according to implementation rules GetScaled(double) Scales the values in this time shot by the specified factor. ITimeShot GetScaled(double scale) Parameters scale double The scaling factor to apply to all vector components. Returns ITimeShot A new time shot with all values scaled by the given factor. Remarks The scaling should: Apply to all vector components Handle null or missing data gracefully Scale the time value if appropriate for the implementation" }, "api/Hi.Mapping.MappingUtil.html": { "href": "api/Hi.Mapping.MappingUtil.html", "title": "Class MappingUtil | HiAPI-C# 2025", - "summary": "Class MappingUtil Namespace Hi.Mapping Assembly HiMech.dll Shared CSV column tags and physics-related column prefixes for mapping simulator or logged controller data onto MachiningStep rows. public static class MappingUtil Inheritance object MappingUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields ActualTimeTag Gets or sets the column title for actual time in the CSV. The actual time basically obtained by the external data from controller. public const string ActualTimeTag = \"ActualTime\" Field Value string CutterLocationPrefix Cutter Location Prefix Tag for CSV Parsing. public const string CutterLocationPrefix = \"CL.\" Field Value string DurationTag Duration tag for CSV parsing. public const string DurationTag = \"StepDuration\" Field Value string FeedrateTag_mmdmin Feedrate for Simulator Tag for CSV Parsing. public const string FeedrateTag_mmdmin = \"Feedrate_mmdmin\" Field Value string FileNoTag Gets or sets the column title for file number in the CSV. public const string FileNoTag = \"FileNo\" Field Value string HolderMomentPrefix CSV column prefix for holder moment / torque channels. public const string HolderMomentPrefix = \"Holder.M\" Field Value string LineBeginCsScriptTag LineBeginCsScript Tag for CSV Parsing. public const string LineBeginCsScriptTag = \"LineBeginCsScript\" Field Value string LineEndCsScriptTag LineEndCsScript Tag for CSV Parsing. public const string LineEndCsScriptTag = \"LineEndCsScript\" Field Value string LineNoTag Gets or sets the column title for line number in the CSV. public const string LineNoTag = \"LineNo\" Field Value string MachineCoordinatePrefix Machine Coordinate Prefix Tag for CSV Parsing. public const string MachineCoordinatePrefix = \"MC.\" Field Value string SimTimeTag Alternative tag for ActualTimeTag if the value of ActualTime is null. public const string SimTimeTag = \"AccumulatedTime\" Field Value string SpindleDirectionTag Spindle direction Tag for CSV Parsing. public const string SpindleDirectionTag = \"Spd.Dir.\" Field Value string SpindleSpeedTag_rpm Spindle speed for Simulator Tag for CSV Parsing. public const string SpindleSpeedTag_rpm = \"SpindleSpeed_rpm\" Field Value string TimeTag Gets or sets the column title for time in the CSV. The time generally obtained by the simulated data. public const string TimeTag = \"Time\" Field Value string ToolForcePrefix CSV column prefix for tool-side force components (e.g. dynamometer). public const string ToolForcePrefix = \"Tool.F\" Field Value string ToolIdTag Tool ID Tag for CSV Parsing. public const string ToolIdTag = \"ToolId\" Field Value string WorkpieceForcePrefix CSV column prefix for workpiece-side force components. public const string WorkpieceForcePrefix = \"Workpiece.F\" Field Value string" + "summary": "Class MappingUtil Namespace Hi.Mapping Assembly HiMech.dll Shared CSV column tags and physics-related column prefixes for mapping simulator or logged controller data onto MachiningStep rows. public static class MappingUtil Inheritance object MappingUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields ActualDateTimeTag Absolute controller-instant column written alongside ActualTimecodeTag (the MachiningStep.ActualDateTime member) so the calendar date survives. Pinned to a literal so renaming the member does not change the CSV header; optional companion column. public const string ActualDateTimeTag = \"ActualDateTime\" Field Value string ActualTimeTag Legacy single-column title for actual time in the CSV (a bare TimeSpan timecode or an absolute DateTime). The step-file writer now splits this into the ActualTimecodeTag + ActualDateTimeTag pair; this column is still read for pre-split files. public const string ActualTimeTag = \"ActualTime\" Field Value string ActualTimecodeTag Run-relative actual timecode column written by the step-file exporter (the MachiningStep.ActualTimecode member). Pinned to a literal so renaming the member does not change the CSV header; preferred over the legacy single ActualTimeTag column when present. public const string ActualTimecodeTag = \"ActualTimecode\" Field Value string CoolantTag Coolant tag for CSV parsing. The cell holds the coolant mode name (e.g. Flood / Mist / Off) or a boolean on/off flag. public const string CoolantTag = \"Coolant\" Field Value string CutterLocationPrefix Cutter Location Prefix Tag for CSV Parsing. public const string CutterLocationPrefix = \"CL.\" Field Value string DurationTag Duration tag for CSV parsing. public const string DurationTag = \"StepDuration\" Field Value string FeedrateTag_mmdmin Feedrate for Simulator Tag for CSV Parsing. public const string FeedrateTag_mmdmin = \"Feedrate_mmdmin\" Field Value string FileNoTag Gets or sets the column title for file number in the CSV. public const string FileNoTag = \"FileNo\" Field Value string HolderMomentPrefix CSV column prefix for holder moment / torque channels. public const string HolderMomentPrefix = \"Holder.M\" Field Value string LineBeginCsScriptTag LineBeginCsScript Tag for CSV Parsing. public const string LineBeginCsScriptTag = \"LineBeginCsScript\" Field Value string LineEndCsScriptTag LineEndCsScript Tag for CSV Parsing. public const string LineEndCsScriptTag = \"LineEndCsScript\" Field Value string LineNoTag Gets or sets the column title for line number in the CSV. public const string LineNoTag = \"LineNo\" Field Value string MachineCoordinatePrefix Machine Coordinate Prefix Tag for CSV Parsing. public const string MachineCoordinatePrefix = \"MC.\" Field Value string SimTimeTag Fallback time column when ActualTimeTag is absent or unparseable: the simulated end timecode. Pinned to a literal (decoupled from the model member name) so renaming the member does not change the CSV header; pre-rename files that used the old “AccumulatedTime” header are still read via SimTimeTagLegacy / GetSimTimeCell(IReadOnlyDictionary). public const string SimTimeTag = \"EndTimecode\" Field Value string SimTimeTagLegacy Legacy CSV header accepted as a fallback for SimTimeTag (files written before the EndTimecode rename used the member name AccumulatedTime). public const string SimTimeTagLegacy = \"AccumulatedTime\" Field Value string SpindleDirectionTag Spindle direction Tag for CSV Parsing. public const string SpindleDirectionTag = \"Spd.Dir.\" Field Value string SpindleSpeedTag_rpm Spindle speed for Simulator Tag for CSV Parsing. public const string SpindleSpeedTag_rpm = \"SpindleSpeed_rpm\" Field Value string TimeTag Gets or sets the column title for time in the CSV. The time generally obtained by the simulated data. public const string TimeTag = \"Time\" Field Value string ToolForcePrefix CSV column prefix for tool-side force components (e.g. dynamometer). public const string ToolForcePrefix = \"Tool.F\" Field Value string ToolIdTag Tool ID Tag for CSV Parsing. public const string ToolIdTag = \"ToolId\" Field Value string WorkpieceForcePrefix CSV column prefix for workpiece-side force components. public const string WorkpieceForcePrefix = \"Workpiece.F\" Field Value string Methods GetSimTimeCell(IReadOnlyDictionary) Returns the de-quoted simulated-time cell from row, reading SimTimeTag first and falling back to the legacy SimTimeTagLegacy header, or null when neither column is present. public static string GetSimTimeCell(IReadOnlyDictionary row) Parameters row IReadOnlyDictionary Returns string" }, "api/Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html": { "href": "api/Hi.Mapping.StepTimeShotUtil.CycleSamplingMode.html", @@ -2182,42 +2297,52 @@ "api/Hi.Mapping.StepTimeShotUtil.html": { "href": "api/Hi.Mapping.StepTimeShotUtil.html", "title": "Class StepTimeShotUtil | HiAPI-C# 2025", - "summary": "Class StepTimeShotUtil Namespace Hi.Mapping Assembly HiMech.dll Utility methods for working with time-based shots (measurements) and mapping them to machining steps. public static class StepTimeShotUtil Inheritance object StepTimeShotUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetStepToShotsDictionaryByActualTime(ClStrip, CycleSamplingMode, string, GetTimeShotByFileDelegate, IDictionary>, IProgress, CancellationToken?) Gets a dictionary mapping step indices to time shots based on actual time. public static void GetStepToShotsDictionaryByActualTime(ClStrip clStrip, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode, string timeShotRelFile, StepTimeShotUtil.GetTimeShotByFileDelegate getTimeShotByRelFileFunc, IDictionary> dstStepToShotsDictionary, IProgress sessionMessageHost, CancellationToken? cancellationToken) Parameters clStrip ClStrip The cutter location strip. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode. timeShotRelFile string The relative file path for time shots. getTimeShotByRelFileFunc StepTimeShotUtil.GetTimeShotByFileDelegate The delegate function to get time shots by relative file path. dstStepToShotsDictionary IDictionary> The destination dictionary to store the mapping. sessionMessageHost IProgress The session message host for logging. cancellationToken CancellationToken? The cancellation token. GetTimeShotByFile(string, Action, CancellationToken?) Gets time shots from a file, reading and parsing force acceleration data. public static List GetTimeShotByFile(string file, Action lineReaded, CancellationToken? cancellationToken = null) Parameters file string The file path to read time shots from. lineReaded Action Action to call when a line is read, providing progress feedback with the current line number. cancellationToken CancellationToken? Optional cancellation token to cancel the reading operation. Returns List A list of time shots read from the file, or null if the file cannot be read or is invalid." + "summary": "Class StepTimeShotUtil Namespace Hi.Mapping Assembly HiMech.dll Utility methods for working with time-based shots (measurements) and mapping them to machining steps. public static class StepTimeShotUtil Inheritance object StepTimeShotUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetStepToShotsDictionaryByActualTime(ClStrip, CycleSamplingMode, string, GetTimeShotByFileDelegate, IDictionary>, IProgress, CancellationToken?) Gets a dictionary mapping step indices to time shots based on actual time. public static void GetStepToShotsDictionaryByActualTime(ClStrip clStrip, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode, string timeShotRelFile, StepTimeShotUtil.GetTimeShotByFileDelegate getTimeShotByRelFileFunc, IDictionary> dstStepToShotsDictionary, IProgress messageProgress, CancellationToken? cancellationToken) Parameters clStrip ClStrip The cutter location strip. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode. timeShotRelFile string The relative file path for time shots. getTimeShotByRelFileFunc StepTimeShotUtil.GetTimeShotByFileDelegate The delegate function to get time shots by relative file path. dstStepToShotsDictionary IDictionary> The destination dictionary to store the mapping. messageProgress IProgress The session message host for logging. cancellationToken CancellationToken? The cancellation token. GetTimeShotByFile(string, Action, CancellationToken?, Func) Gets time shots from a file, reading and parsing force acceleration data. public static List GetTimeShotByFile(string file, Action lineReaded, CancellationToken? cancellationToken = null, Func toTimecode = null) Parameters file string The file path to read time shots from. lineReaded Action Action to call when a line is read, providing progress feedback with the current line number. cancellationToken CancellationToken? Optional cancellation token to cancel the reading operation. toTimecode Func Converter from an absolute sample DateTime to its timecode TimeSpan (used for step timing). Returns List A list of time shots read from the file, or null if the file cannot be read or is invalid." }, "api/Hi.Mapping.TimeMapping.html": { "href": "api/Hi.Mapping.TimeMapping.html", "title": "Class TimeMapping | HiAPI-C# 2025", - "summary": "Class TimeMapping Namespace Hi.Mapping Assembly HiMech.dll Provides mapping between machining steps and time-based measurements (shots). It is one step to many data mapping (one-many). public class TimeMapping : IMakeXmlSource, IDisposable Inheritance object TimeMapping Implements IMakeXmlSource 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TimeMapping(Func) Initializes a new instance of the TimeMapping class with the specified CL strip and tool house. public TimeMapping(Func baseDirectoryGetter) Parameters baseDirectoryGetter Func The function to get the base directory for file paths. TimeMapping(XElement, Func) Initializes a new instance of the TimeMapping class from XML data. public TimeMapping(XElement src, Func baseDirectoryGetter) Parameters src XElement The XML element containing the mapping data. baseDirectoryGetter Func The function to get the base directory for resolving relative file paths. Remarks This constructor supports legacy XML formats and automatically converts them to the current format. Legacy formats include: NcMapping with MarkIdToFileTimeSection element Entries with MarkID attributes Properties BaseDirectory Gets or sets the base directory for resolving file paths. All relative file paths in the mapping are resolved against this directory. public string BaseDirectory { get; } Property Value string BaseDirectoryGetter Gets or sets the function to get the base directory for resolving file paths. public Func BaseDirectoryGetter { get; set; } Property Value Func KeyToRelFileTimeSectionDictionary Gets or sets the dictionary mapping keys to file time sections. Each entry maps a unique identifier to a file time section that specifies which portion of a measurement file corresponds to a particular machining operation. public Dictionary KeyToRelFileTimeSectionDictionary { get; set; } Property Value Dictionary RelFileToTimeShotListDictionary Gets or sets the cache of time shot lists loaded from files. This is a thread-safe dictionary that maps file paths to tasks that load and parse the files. The cache prevents multiple reads of the same file and enables concurrent access. public ConcurrentDictionary>> RelFileToTimeShotListDictionary { get; set; } Property Value ConcurrentDictionary>> StepToTimeShotListDictionary Gets a concurrent dictionary mapping step indices to their corresponding time shot lists. This dictionary is populated during the mapping process. public ConcurrentDictionary> StepToTimeShotListDictionary { get; } Property Value ConcurrentDictionary> XName Gets the XML element name used for serialization. public static string XName { get; } Property Value string Remarks This name is used as the root element when serializing TimeMapping instances to XML. It matches the class name to maintain consistency between code and XML representation. Methods CallTimeShotByRelFile(string, IProgress, CancellationToken?) Retrieves time shots from a file, using cached results if available. public List CallTimeShotByRelFile(string relFile, IProgress messageHost, CancellationToken? cancellationToken = null) Parameters relFile string The relative path to the file containing time shots. messageHost IProgress The message host for logging progress. cancellationToken CancellationToken? Optional token to cancel the loading operation. Returns List A list of time shots from the file. The results are cached for subsequent calls. If the file is already being loaded by another thread, waits for that operation to complete. Remarks This method is thread-safe and ensures each file is only read once, even with concurrent access. Any exceptions during file reading are captured and can be inspected through the task's exception property. Clear() Clears all mappings and data, including the key-to-file time section dictionary. public void Clear() ClearCache() Clears the cache of loaded time shot data, including file-to-time shot list and step-to-time shot list dictionaries. public void ClearCache() Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool GetShots(int) Gets the time shots associated with a specific step index. public List GetShots(int stepIndex) Parameters stepIndex int The index of the step to get shots for. Returns List A list of time shots associated with the specified step, or null if no shots are found. LoadTimeShotFiles(IProgress, CancellationToken?) Loads all time shot files referenced in the KeyToFileTimeSectionMapping. public void LoadTimeShotFiles(IProgress messageHost, CancellationToken? cancellationToken = null) Parameters messageHost IProgress The message host for logging progress. cancellationToken CancellationToken? Optional cancellation token to cancel the operation. MakeXmlSource(string, string, bool) Creates an XML representation of the time mapping data. relFile is not used in current implementation. 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 containing the complete time mapping data. Remarks The XML structure includes: A root TimeMapping element An Entrys element containing Entry elements Each Entry has a Key attribute and FileTimeSection child element Map(Range, FileTimeSection, CycleSamplingMode, ClStrip, IProgress, CancellationToken?) Maps the specified step section to time shots using the provided file time section and cycle sampling mode. This method is thread-safe and can be called concurrently. public void Map(Range stepSection, FileTimeSection relFileTimeSection, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode, ClStrip clStrip, IProgress messageHost, CancellationToken? cancellationToken = null) Parameters stepSection Range The range of step indices to process. relFileTimeSection FileTimeSection The file time section containing file path and time range. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode to use. clStrip ClStrip The cutter location strip to map. messageHost IProgress The message host for logging progress. cancellationToken CancellationToken? Optional cancellation token to cancel the operation. MapSeriesByActualTime(string, CycleSamplingMode, ClStrip, IProgress, CancellationToken?) Maps steps to time shots based on actual time. public void MapSeriesByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode, ClStrip clStrip, IProgress messageHost, CancellationToken? cancellationToken = null) Parameters timeShotRelFile string The relative file path for time shots. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode. clStrip ClStrip The cutter location strip to map. messageHost IProgress The session message host for logging. cancellationToken CancellationToken? The cancellation token. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory WaitMapping() Waits for all mapping operations to complete. This method blocks until all concurrent mapping tasks have finished. public void WaitMapping()" + "summary": "Class TimeMapping Namespace Hi.Mapping Assembly HiMech.dll Provides mapping between machining steps and time-based measurements (shots). It is one step to many data mapping (one-many). public class TimeMapping : IMakeXmlSource, IDisposable Inheritance object TimeMapping Implements IMakeXmlSource 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors TimeMapping(Func) Initializes a new instance of the TimeMapping class with the specified CL strip and tool house. public TimeMapping(Func baseDirectoryGetter) Parameters baseDirectoryGetter Func The function to get the base directory for file paths. TimeMapping(XElement, Func) Initializes a new instance of the TimeMapping class from XML data. public TimeMapping(XElement src, Func baseDirectoryGetter) Parameters src XElement The XML element containing the mapping data. baseDirectoryGetter Func The function to get the base directory for resolving relative file paths. Remarks This constructor supports legacy XML formats and automatically converts them to the current format. Legacy formats include: NcMapping with MarkIdToFileTimeSection element Entries with MarkID attributes Properties BaseDirectory Gets or sets the base directory for resolving file paths. All relative file paths in the mapping are resolved against this directory. public string BaseDirectory { get; } Property Value string BaseDirectoryGetter Gets or sets the function to get the base directory for resolving file paths. public Func BaseDirectoryGetter { get; set; } Property Value Func KeyToRelFileTimeSectionDictionary Gets or sets the dictionary mapping keys to file time sections. Each entry maps a unique identifier to a file time section that specifies which portion of a measurement file corresponds to a particular machining operation. public Dictionary KeyToRelFileTimeSectionDictionary { get; set; } Property Value Dictionary MappingAnchorDateTime Project-scoped anchor for converting an absolute-time (FileDateTimeSection) window into a relative timecode. Set it to the earliest controller instant (the broadest recorded stream covers everything else) so every dateTime - anchor is non-negative. null until set; absolute sections cannot be resolved while it is null. public DateTime? MappingAnchorDateTime { get; set; } Property Value DateTime? RelFileToTimeShotListDictionary Gets or sets the cache of time shot lists loaded from files. This is a thread-safe dictionary that maps file paths to tasks that load and parse the files. The cache prevents multiple reads of the same file and enables concurrent access. public ConcurrentDictionary>> RelFileToTimeShotListDictionary { get; set; } Property Value ConcurrentDictionary>> StepToTimeShotListDictionary Gets a concurrent dictionary mapping step indices to their corresponding time shot lists. This dictionary is populated during the mapping process. public ConcurrentDictionary> StepToTimeShotListDictionary { get; } Property Value ConcurrentDictionary> XName Gets the XML element name used for serialization. public static string XName { get; } Property Value string Remarks This name is used as the root element when serializing TimeMapping instances to XML. It matches the class name to maintain consistency between code and XML representation. Methods AddTimeDataByFile(string, string, double, double) Seconds overload of AddTimeDataByFile(string, string, string, string). public bool AddTimeDataByFile(string key, string relFile, double beginTime, double endTime) Parameters key string relFile string beginTime double endTime double Returns bool AddTimeDataByFile(string, string, string, string) Adds a key → file-time-section entry to KeyToRelFileTimeSectionDictionary. Begin/end texts are parsed timecode-first: seconds or HH:mm:ss → FileTimecodeSection; a date-bearing string → FileDateTimeSection. Returns false when the key already exists. public bool AddTimeDataByFile(string key, string relFile, string beginTimeText, string endTimeText) Parameters key string relFile string beginTimeText string endTimeText string Returns bool CallTimeShotByRelFile(string, IProgress, CancellationToken?) Retrieves time shots from a file, using cached results if available. public List CallTimeShotByRelFile(string relFile, IProgress messageProgress, CancellationToken? cancellationToken = null) Parameters relFile string The relative path to the file containing time shots. messageProgress IProgress The message host for logging progress. cancellationToken CancellationToken? Optional token to cancel the loading operation. Returns List A list of time shots from the file. The results are cached for subsequent calls. If the file is already being loaded by another thread, waits for that operation to complete. Remarks This method is thread-safe and ensures each file is only read once, even with concurrent access. Any exceptions during file reading are captured and can be inspected through the task's exception property. Clear() Clears all mappings and data, including the key-to-file time section dictionary. public void Clear() ClearCache() Clears the cache of loaded time shot data, including file-to-time shot list and step-to-time shot list dictionaries. public void ClearCache() Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool GetShots(int) Gets the time shots associated with a specific step index. public List GetShots(int stepIndex) Parameters stepIndex int The index of the step to get shots for. Returns List A list of time shots associated with the specified step, or null if no shots are found. LoadTimeShotFiles(IProgress, CancellationToken?) Loads all time shot files referenced in the KeyToFileTimeSectionMapping. public void LoadTimeShotFiles(IProgress messageProgress, CancellationToken? cancellationToken = null) Parameters messageProgress IProgress The message host for logging progress. cancellationToken CancellationToken? Optional cancellation token to cancel the operation. MakeXmlSource(string, string, bool) Creates an XML representation of the time mapping data. relFile is not used in current implementation. 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 containing the complete time mapping data. Remarks The XML structure includes: A root TimeMapping element An Entrys element containing Entry elements Each Entry has a Key attribute and FileTimeSection child element Map(Range, IFileTimeSection, CycleSamplingMode, ClStrip, IProgress, CancellationToken?) Maps the specified step section to time shots using the provided file time section and cycle sampling mode. This method is thread-safe and can be called concurrently. public void Map(Range stepSection, IFileTimeSection relFileTimeSection, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode, ClStrip clStrip, IProgress messageProgress, CancellationToken? cancellationToken = null) Parameters stepSection Range The range of step indices to process. relFileTimeSection IFileTimeSection The file time section containing file path and time range. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode to use. clStrip ClStrip The cutter location strip to map. messageProgress IProgress The message host for logging progress. cancellationToken CancellationToken? Optional cancellation token to cancel the operation. MapSeriesByActualTime(string, CycleSamplingMode, ClStrip, IProgress, CancellationToken?) Maps steps to time shots based on actual time. public void MapSeriesByActualTime(string timeShotRelFile, StepTimeShotUtil.CycleSamplingMode cycleSamplingMode, ClStrip clStrip, IProgress messageProgress, CancellationToken? cancellationToken = null) Parameters timeShotRelFile string The relative file path for time shots. cycleSamplingMode StepTimeShotUtil.CycleSamplingMode The cycle sampling mode. clStrip ClStrip The cutter location strip to map. messageProgress IProgress The session message host for logging. cancellationToken CancellationToken? The cancellation token. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToTimecode(DateTime) Converts an absolute controller instant to a run-relative timecode against MappingAnchorDateTime. The anchor is seeded set-once (date-only, so same-day data lines up with the controller's time-of-day) the first time any conversion is requested, unless it was already loaded from project XML or set explicitly. This is the single place the anchor set-logic lives — every DateTime → timecode site calls here rather than re-deriving instant - anchor. public TimeSpan ToTimecode(DateTime instant) Parameters instant DateTime The absolute controller instant to convert. Returns TimeSpan The instant expressed as a timecode from the anchor. WaitMapping() Waits for all mapping operations to complete. This method blocks until all concurrent mapping tasks have finished. public void WaitMapping()" }, "api/Hi.Mapping.html": { "href": "api/Hi.Mapping.html", "title": "Namespace Hi.Mapping | HiAPI-C# 2025", "summary": "Namespace Hi.Mapping Classes CsvNcStep Represents a numerical control step loaded from a CSV file, with support for interpolation and arithmetic operations. FileToTimeShotMapping Provides mapping between files and time shot data with caching capabilities. This class manages the loading and caching of time shot data from measurement files. MappingUtil Shared CSV column tags and physics-related column prefixes for mapping simulator or logged controller data onto MachiningStep rows. StepTimeShotUtil Utility methods for working with time-based shots (measurements) and mapping them to machining steps. TimeMapping Provides mapping between machining steps and time-based measurements (shots). It is one step to many data mapping (one-many). Interfaces IAccelerationShot Interface for objects that represent acceleration measurements at a specific time point. Extends the ITimeShot interface to include acceleration data in multiple units. IForceShot Interface for objects that represent force measurements at a specific time point. Extends the ITimeShot interface to include force vector data. IMomentShot Interface for objects that represent moment (torque) measurements at a specific time point. Extends the ITimeShot interface to include moment vector data. ITimeShot Interface for objects that represent a snapshot of data at a specific time and support arithmetic operations. This interface provides a foundation for time-series data with vector operations. Enums StepTimeShotUtil.CycleSamplingMode Defines the cycle sampling modes for mapping time shots to machining steps. The sampling mode determines how time shots are aligned with machining cycles. Delegates StepTimeShotUtil.GetTimeShotByFileDelegate Delegate for retrieving time shots from a file. Implementations should handle file reading, parsing, and error handling." }, - "api/Hi.Mappings.FileTimeSection.TimeOption.html": { - "href": "api/Hi.Mappings.FileTimeSection.TimeOption.html", - "title": "Enum FileTimeSection.TimeOption | HiAPI-C# 2025", - "summary": "Enum FileTimeSection.TimeOption Namespace Hi.Mappings Assembly HiGeom.dll Defines options for representing time values. public enum FileTimeSection.TimeOption 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 TimeSpan = 1 Represent time as a TimeSpan. TotalSeconds = 0 Represent time as total seconds." + "api/Hi.Mappings.FileDateTimeSection.html": { + "href": "api/Hi.Mappings.FileDateTimeSection.html", + "title": "Class FileDateTimeSection | HiAPI-C# 2025", + "summary": "Class FileDateTimeSection Namespace Hi.Mappings Assembly HiGeom.dll (B) Time window expressed in absolute DateTime only. public sealed class FileDateTimeSection : IFileTimeSection, IMakeXmlSource Inheritance object FileDateTimeSection Implements IFileTimeSection IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) Extension Methods XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) 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 FileDateTimeSection() Initializes an empty instance. public FileDateTimeSection() FileDateTimeSection(FileTimecodeDateTimeSection) Projects a both-form (C) section onto its absolute form (independent copy). public FileDateTimeSection(FileTimecodeDateTimeSection c) Parameters c FileTimecodeDateTimeSection FileDateTimeSection(string, DateTime, DateTime) Initializes from a file and begin/end instants. public FileDateTimeSection(string file, DateTime beginDateTime, DateTime endDateTime) Parameters file string beginDateTime DateTime endDateTime DateTime FileDateTimeSection(XElement) Initializes from XML. public FileDateTimeSection(XElement src) Parameters src XElement Properties BeginDateTime Window start as an absolute controller instant. public DateTime BeginDateTime { get; set; } Property Value DateTime EndDateTime Window end as an absolute controller instant. public DateTime EndDateTime { get; set; } Property Value DateTime File Relative path of the referenced (sensor) file. public string File { get; set; } Property Value string XName XML element name for XFactory 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. Reg(XFactory) Registers this type with the factory. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, - "api/Hi.Mappings.FileTimeSection.html": { - "href": "api/Hi.Mappings.FileTimeSection.html", - "title": "Class FileTimeSection | HiAPI-C# 2025", - "summary": "Class FileTimeSection Namespace Hi.Mappings Assembly HiGeom.dll Represents a section of a file defined by a time range. public class FileTimeSection : IMakeXmlSource Inheritance object FileTimeSection Implements IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) 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 FileTimeSection() Initializes a new instance of the FileTimeSection class. public FileTimeSection() FileTimeSection(string, Range) Initializes a new instance of the FileTimeSection class with a file and time range. public FileTimeSection(string file, Range range) Parameters file string The file path. range Range The time range. FileTimeSection(string, TimeSpan, TimeSpan) Initializes a new instance of the FileTimeSection class with a file and begin/end times. public FileTimeSection(string file, TimeSpan beginTime, TimeSpan endTime) Parameters file string The file path. beginTime TimeSpan The begin time. endTime TimeSpan The end time. FileTimeSection(XElement) Initializes a new instance of the FileTimeSection class from XML. public FileTimeSection(XElement src) Parameters src XElement The XML element containing the file time section data. Properties BeginTime Gets or sets the begin time as a TimeSpan. public TimeSpan BeginTime { get; set; } Property Value TimeSpan BeginTime_s Gets or sets the begin time in seconds. public double BeginTime_s { get; set; } Property Value double Duration_s Gets the duration in seconds. public double Duration_s { get; } Property Value double EndTime Gets or sets the end time as a TimeSpan. public TimeSpan EndTime { get; set; } Property Value TimeSpan EndTime_s Gets or sets the end time in seconds. public double EndTime_s { get; set; } Property Value double File Gets or sets the file path. public string File { get; set; } Property Value string PrimaryTimeOption Gets or sets the primary time option for XML serialization. public FileTimeSection.TimeOption PrimaryTimeOption { get; set; } Property Value FileTimeSection.TimeOption TimeRange Gets or sets the time range. public Range TimeRange { get; set; } Property Value Range XName Name for XML IO. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + "api/Hi.Mappings.FileTimecodeDateTimeSection.html": { + "href": "api/Hi.Mappings.FileTimecodeDateTimeSection.html", + "title": "Class FileTimecodeDateTimeSection | HiAPI-C# 2025", + "summary": "Class FileTimecodeDateTimeSection Namespace Hi.Mappings Assembly HiGeom.dll (C) Time window carrying both forms. The timecode form is authoritative for mapping (timecode-first); the absolute form is retained for the anchor and for projecting to a single-form section (new FileTimecodeSection(c) / new FileDateTimeSection(c)) when the two forms do not agree. public sealed class FileTimecodeDateTimeSection : IFileTimeSection, IMakeXmlSource Inheritance object FileTimecodeDateTimeSection Implements IFileTimeSection IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) Extension Methods XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) 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 FileTimecodeDateTimeSection() Initializes an empty instance. public FileTimecodeDateTimeSection() FileTimecodeDateTimeSection(string, TimeSpan, TimeSpan, DateTime, DateTime) Initializes from a file, a timecode range and an absolute range. public FileTimecodeDateTimeSection(string file, TimeSpan beginTimecode, TimeSpan endTimecode, DateTime beginDateTime, DateTime endDateTime) Parameters file string beginTimecode TimeSpan endTimecode TimeSpan beginDateTime DateTime endDateTime DateTime FileTimecodeDateTimeSection(XElement) Initializes from XML. public FileTimecodeDateTimeSection(XElement src) Parameters src XElement Properties BeginDateTime Window start as an absolute controller instant. public DateTime BeginDateTime { get; set; } Property Value DateTime BeginTimecode Window start as a timecode (authoritative for mapping). public TimeSpan BeginTimecode { get; set; } Property Value TimeSpan EndDateTime Window end as an absolute controller instant. public DateTime EndDateTime { get; set; } Property Value DateTime EndTimecode Window end as a timecode (authoritative for mapping). public TimeSpan EndTimecode { get; set; } Property Value TimeSpan File Relative path of the referenced (sensor) file. public string File { get; set; } Property Value string XName XML element name for XFactory 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. Reg(XFactory) Registers this type with the factory. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + }, + "api/Hi.Mappings.FileTimecodeSection.html": { + "href": "api/Hi.Mappings.FileTimecodeSection.html", + "title": "Class FileTimecodeSection | HiAPI-C# 2025", + "summary": "Class FileTimecodeSection Namespace Hi.Mappings Assembly HiGeom.dll (A) Time window expressed in relative TimeSpan timecodes only. public sealed class FileTimecodeSection : IFileTimeSection, IMakeXmlSource Inheritance object FileTimecodeSection Implements IFileTimeSection IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.ReferenceEquals(object, object) Extension Methods XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) 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 FileTimecodeSection() Initializes an empty instance. public FileTimecodeSection() FileTimecodeSection(FileTimecodeDateTimeSection) Projects a both-form (C) section onto its timecode form (independent copy). public FileTimecodeSection(FileTimecodeDateTimeSection c) Parameters c FileTimecodeDateTimeSection FileTimecodeSection(string, Range) Initializes from a file and a timecode range. public FileTimecodeSection(string file, Range timeRange) Parameters file string timeRange Range FileTimecodeSection(string, TimeSpan, TimeSpan) Initializes from a file and begin/end timecodes. public FileTimecodeSection(string file, TimeSpan beginTimecode, TimeSpan endTimecode) Parameters file string beginTimecode TimeSpan endTimecode TimeSpan FileTimecodeSection(XElement) Initializes from XML; accepts new BeginTimecode and legacy BeginTime / BeginTime_s. public FileTimecodeSection(XElement src) Parameters src XElement Fields LegacyXName Legacy element name; pre-rename projects wrote for this form. public const string LegacyXName = \"FileTimeSection\" Field Value string Properties BeginTimecode Window start as a timecode (position from run start). public TimeSpan BeginTimecode { get; set; } Property Value TimeSpan EndTimecode Window end as a timecode (position from run start). public TimeSpan EndTimecode { get; set; } Property Value TimeSpan File Relative path of the referenced (sensor) file. public string File { get; set; } Property Value string TimeRange The timecode range backing BeginTimecode / EndTimecode. public Range TimeRange { get; set; } Property Value Range XName XML element name for XFactory 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. Reg(XFactory) Registers this type (and its legacy element name) with the factory. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + }, + "api/Hi.Mappings.IFileTimeSection.html": { + "href": "api/Hi.Mappings.IFileTimeSection.html", + "title": "Interface IFileTimeSection | HiAPI-C# 2025", + "summary": "Interface IFileTimeSection Namespace Hi.Mappings Assembly HiGeom.dll A file plus the time window of it that maps onto a range of machining steps. The window is expressed in whichever form the referenced sensor file uses — a relative TimeSpan timecode, an absolute DateTime, or both. Concrete forms: FileTimecodeSection (A), FileDateTimeSection (B), FileTimecodeDateTimeSection (C). These are pure data carriers — turning an absolute DateTime form into a relative timecode is done once at the mapping boundary against the project-scoped mapping anchor, not by a method here. public interface IFileTimeSection : IMakeXmlSource Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) Extension Methods XmlUtil.MakeXmlSourceToFile(IMakeXmlSource, string, bool) XmlUtil.MakeXmlSourceToFileRef(IMakeXmlSource, string, string, bool) XmlUtil.SaveToByteArrayAsync(IMakeXmlSource, string) 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 Relative path of the referenced (sensor) file. string File { get; set; } Property Value string" }, "api/Hi.Mappings.html": { "href": "api/Hi.Mappings.html", "title": "Namespace Hi.Mappings | HiAPI-C# 2025", - "summary": "Namespace Hi.Mappings Classes FileTimeSection Represents a section of a file defined by a time range. Enums FileTimeSection.TimeOption Defines options for representing time values." + "summary": "Namespace Hi.Mappings Classes FileDateTimeSection (B) Time window expressed in absolute DateTime only. FileTimecodeDateTimeSection (C) Time window carrying both forms. The timecode form is authoritative for mapping (timecode-first); the absolute form is retained for the anchor and for projecting to a single-form section (new FileTimecodeSection(c) / new FileDateTimeSection(c)) when the two forms do not agree. FileTimecodeSection (A) Time window expressed in relative TimeSpan timecodes only. Interfaces IFileTimeSection A file plus the time window of it that maps onto a range of machining steps. The window is expressed in whichever form the referenced sensor file uses — a relative TimeSpan timecode, an absolute DateTime, or both. Concrete forms: FileTimecodeSection (A), FileDateTimeSection (B), FileTimecodeDateTimeSection (C). These are pure data carriers — turning an absolute DateTime form into a relative timecode is done once at the mapping boundary against the project-scoped mapping anchor, not by a method here." }, "api/Hi.Mech.GeneralMechanism.html": { "href": "api/Hi.Mech.GeneralMechanism.html", "title": "Class GeneralMechanism | HiAPI-C# 2025", - "summary": "Class GeneralMechanism Namespace Hi.Mech Assembly HiMech.dll General Mechanism. public class GeneralMechanism : IMakeXmlSource, ITopo, IGetAsmb, IGetAnchoredDisplayeeList, IGetAnchorToSolidDictionary, IAnchoredDisplayee, IGetAnchor, IGetTopoIndex, IDisplayee, IExpandToBox3d Inheritance object GeneralMechanism Implements IMakeXmlSource ITopo IGetAsmb IGetAnchoredDisplayeeList IGetAnchorToSolidDictionary IAnchoredDisplayee IGetAnchor IGetTopoIndex IDisplayee IExpandToBox3d Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The XML IO is according to self-contained principle. Constructors GeneralMechanism() Initializes a new instance of the GeneralMechanism class. public GeneralMechanism() GeneralMechanism(XElement, string, IProgress) Initializes a new instance of the GeneralMechanism class from XML. public GeneralMechanism(XElement src, string baseDirectory, IProgress progress) Parameters src XElement The XML element containing the mechanism data. baseDirectory string The base directory for resolving relative file paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. Properties AnchorToSolid Gets the dictionary mapping anchors to their corresponding solids. public Dictionary AnchorToSolid { get; } Property Value Dictionary Asmb Gets the assembly containing the mechanism components. public Asmb Asmb { get; } Property Value Asmb Root Gets the root anchor of the mechanism. public Anchor Root { get; } Property Value Anchor XName Name for XML IO. public static string XName { get; } Property Value string Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchorToSolidDictionary() Gets a dictionary that maps Anchor objects to their corresponding Solid objects. public Dictionary GetAnchorToSolidDictionary() Returns Dictionary A dictionary where keys are anchors and values are their associated solids. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class GeneralMechanism Namespace Hi.Mech Assembly HiMech.dll General Mechanism. public class GeneralMechanism : IMakeXmlSource, ITopo, IGetAsmb, IGetAnchoredDisplayeeList, IGetAnchorToSolidDictionary, IAnchoredDisplayee, IGetAnchor, IGetTopoIndex, IDisplayee, IExpandToBox3d Inheritance object GeneralMechanism Implements IMakeXmlSource ITopo IGetAsmb IGetAnchoredDisplayeeList IGetAnchorToSolidDictionary IAnchoredDisplayee IGetAnchor IGetTopoIndex IDisplayee IExpandToBox3d Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The XML IO is according to self-contained principle. Constructors GeneralMechanism() Initializes a new instance of the GeneralMechanism class. public GeneralMechanism() GeneralMechanism(XElement, string, IProgress) Initializes a new instance of the GeneralMechanism class from XML. public GeneralMechanism(XElement src, string baseDirectory, IProgress progress) Parameters src XElement The XML element containing the mechanism data. baseDirectory string The base directory for resolving relative file paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. Properties AnchorToSolid Gets the dictionary mapping anchors to their corresponding solids. public Dictionary AnchorToSolid { get; } Property Value Dictionary Asmb Gets the assembly containing the mechanism components. public Asmb Asmb { get; } Property Value Asmb Root Gets the root anchor of the mechanism. public Anchor Root { get; } Property Value Anchor XName Name for XML IO. public static string XName { get; } Property Value string Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchorToSolidDictionary() Gets a dictionary that maps Anchor objects to their corresponding Solid objects. public Dictionary GetAnchorToSolidDictionary() Returns Dictionary A dictionary where keys are anchors and values are their associated solids. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.Mech.IGetAnchorToSolidDictionary.html": { "href": "api/Hi.Mech.IGetAnchorToSolidDictionary.html", "title": "Interface IGetAnchorToSolidDictionary | HiAPI-C# 2025", - "summary": "Interface IGetAnchorToSolidDictionary Namespace Hi.Mech Assembly HiMech.dll Provides functionality to retrieve a dictionary mapping anchors to their corresponding solids. public interface IGetAnchorToSolidDictionary 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 GetAnchorToSolidDictionary() Gets a dictionary that maps Anchor objects to their corresponding Solid objects. Dictionary GetAnchorToSolidDictionary() Returns Dictionary A dictionary where keys are anchors and values are their associated solids. PrepareAnchorSolids() Warms NativeSmoothTopoStl for every solid returned by GetAnchorToSolidDictionary() (parallel). void PrepareAnchorSolids()" + "summary": "Interface IGetAnchorToSolidDictionary Namespace Hi.Mech Assembly HiMech.dll Provides functionality to retrieve a dictionary mapping anchors to their corresponding solids. public interface IGetAnchorToSolidDictionary 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 GetAnchorToSolidDictionary() Gets a dictionary that maps Anchor objects to their corresponding Solid objects. Dictionary GetAnchorToSolidDictionary() Returns Dictionary A dictionary where keys are anchors and values are their associated solids. PrepareAnchorSolids() Warms SmoothTopoStl3d for every solid returned by GetAnchorToSolidDictionary() (parallel). void PrepareAnchorSolids()" }, "api/Hi.Mech.IGetMachiningChain.html": { "href": "api/Hi.Mech.IGetMachiningChain.html", @@ -2262,7 +2387,7 @@ "api/Hi.Mech.Topo.Asmb.html": { "href": "api/Hi.Mech.Topo.Asmb.html", "title": "Class Asmb | HiAPI-C# 2025", - "summary": "Class Asmb Namespace Hi.Mech.Topo Assembly HiMech.dll Collection of Anchor and Asmb. public class Asmb : IGetAsmb, IGetTopoIndex, IDisposable Inheritance object Asmb Implements IGetAsmb IGetTopoIndex IDisposable 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 Asmb() Ctor. public Asmb() Asmb(Asmb) Ctor. public Asmb(Asmb parent) Parameters parent Asmb parent Asmb(Asmb, string) Ctor. public Asmb(Asmb parent, string name) Parameters parent Asmb parent name string Name Asmb(string) Ctor. public Asmb(string name) Parameters name string Name Properties ChildAncs Gets the collection of child anchors in this assembly. public ThreadSafeSet ChildAncs { get; } Property Value ThreadSafeSet ChildAsmbs Gets the collection of child assemblies in this assembly. public ThreadSafeSet ChildAsmbs { get; } Property Value ThreadSafeSet Guid GUID. public Guid Guid { get; } Property Value Guid Name Name. public string Name { get; set; } Property Value string XName Gets the XML name for the assembly. public static string XName { get; } Property Value string Methods AllEnterReadLock() Enters read locks for all thread-safe collections in the assembly. public void AllEnterReadLock() AllExitReadLock() Exits read locks for all thread-safe collections in the assembly. public void AllExitReadLock() CallAsmb(XElement, string, Dictionary, Dictionary, Dictionary, IProgress) Get asmb by the asmbXml. If the members of the target asmb do not exist on asmbs or ancs, the members will be generated; otherwise, the existed members are applied. public static Asmb CallAsmb(XElement asmbXml, string baseDirectory, Dictionary asmbs = null, Dictionary ancs = null, Dictionary brns = null, IProgress progress = null) Parameters asmbXml XElement xml of asmb baseDirectory string Base directory path for resolving relative paths asmbs Dictionary existed asmb map ancs Dictionary existed anc map brns Dictionary existed branch map progress IProgress Progress reporter for diagnostic messages emitted during construction. Returns Asmb asmb Display(Bind, Anchor, params IGetAnchor[]) Display displayees according to the GetAnchor(). The fixed anchor is root. If the element of displayees is not IDisplayee or null Anchor, the element will be ignored. public void Display(Bind bind, Anchor root, params IGetAnchor[] displayees) Parameters bind Bind bind root Anchor fixed anchor displayees IGetAnchor[] element to be rendered Display(Bind, Dictionary, params IGetAnchor[]) Display the displayees according to map. If displayees is null, do nothing. public static void Display(Bind bind, Dictionary map, params IGetAnchor[] displayees) Parameters bind Bind bind map Dictionary anchor to transformation map displayees IGetAnchor[] displayees Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d, Anchor, params IGetAnchor[]) Expands a bounding box to include the assembly. public void ExpandToBox3d(Box3d dst, Anchor root, params IGetAnchor[] displayees) Parameters dst Box3d The bounding box to expand. root Anchor The root anchor for the calculation. displayees IGetAnchor[] The displayable objects to include in the calculation. GetAnchorByGuid(string, bool) Finds an anchor in the assembly hierarchy by its GUID. public Anchor GetAnchorByGuid(string guid, bool enableThreadSafe = true) Parameters guid string The GUID of the anchor to find. enableThreadSafe bool If true, uses thread-safe operations for accessing collections. Returns Anchor The anchor with the specified GUID, or null if not found. GetAnchorChain(Anchor, Anchor) Gets a chain of anchors from the head to the tail. public List GetAnchorChain(Anchor head, Anchor tail) Parameters head Anchor The starting anchor of the chain. tail Anchor The ending anchor of the chain. Returns List A list of anchors representing the chain, or an empty list if no chain exists. GetAnchoredDisplayeeList(Dictionary) Gets a list of anchored displayable objects based on the provided anchor-to-solid mapping. public List GetAnchoredDisplayeeList(Dictionary anchorToSolidDictionary) Parameters anchorToSolidDictionary Dictionary Dictionary mapping anchors to their corresponding solids. Returns List A list of anchored displayable objects. GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetAsmbDraw(Anchor) Gets an assembly drawing for visualization. public AsmbDraw GetAsmbDraw(Anchor root) Parameters root Anchor The root anchor for the drawing. Returns AsmbDraw An assembly drawing object. GetBox3d(Anchor, params IGetAnchor[]) Gets a bounding box for the assembly. public Box3d GetBox3d(Anchor root, params IGetAnchor[] displayees) Parameters root Anchor The root anchor for the calculation. displayees IGetAnchor[] The displayable objects to include in the calculation. Returns Box3d A 3D bounding box containing the assembly. GetBranchByGuid(string, bool) Finds a branch in the assembly hierarchy by its GUID. public Branch GetBranchByGuid(string guid, bool enableThreadSafe = true) Parameters guid string The GUID of the branch to find. enableThreadSafe bool If true, uses thread-safe operations for accessing collections. Returns Branch The branch with the specified GUID, or null if not found. GetBranchChain(IGetAnchor, IGetAnchor) Gets a chain of branches with their directions from the head anchor to the tail anchor. public List GetBranchChain(IGetAnchor head, IGetAnchor tail) Parameters head IGetAnchor The starting anchor of the chain. tail IGetAnchor The ending anchor of the chain. Returns List A list of direction-branch pairs representing the chain, or an empty list if no chain exists. GetBranchsXml(IGetAnchor, string) Gets the XML representation of all branches in the assembly starting from the specified root. public XElement GetBranchsXml(IGetAnchor root, string baseDirectory) Parameters root IGetAnchor The root anchor to start from. If null, uses the first descendant anchor. baseDirectory string The base directory for file references. Returns XElement An XML element containing all branches in the assembly. GetDescendantAnchorSet(bool) Generate an anchor set from all descendant anchors. public HashSet GetDescendantAnchorSet(bool enableThreadSafe = true) Parameters enableThreadSafe bool Returns HashSet descendant anchor set GetDescendantAnchors(bool) Gets a list of all descendant anchors in the assembly hierarchy. public List GetDescendantAnchors(bool enableThreadSafe = true) Parameters enableThreadSafe bool If true, uses thread-safe operations for accessing collections. Returns List A list of all descendant anchors. GetDescendantAsmbSet(bool) Gets a set of all descendant assemblies in the assembly hierarchy. public HashSet GetDescendantAsmbSet(bool enableThreadSafe = true) Parameters enableThreadSafe bool If true, uses thread-safe operations for accessing collections. Returns HashSet A set of all descendant assemblies. GetDescendantAsmbs(bool) Gets a list of all descendant assemblies in the assembly hierarchy. public List GetDescendantAsmbs(bool enableThreadSafe = true) Parameters enableThreadSafe bool If true, uses thread-safe operations for accessing collections. Returns List A list of all descendant assemblies. GetDescendingName(Anchor) Gets the descending name path for an anchor, combining assembly names with dashes. public string GetDescendingName(Anchor anc) Parameters anc Anchor The anchor to get the descending name for. Returns string The full descending name path, or null if the anchor is not found in the assembly hierarchy. GetDescendingName(Asmb) Gets the descending name path for a child assembly, combining assembly names with dashes. public string GetDescendingName(Asmb asmb) Parameters asmb Asmb The assembly to get the descending name for. Returns string The full descending name path, or null if the assembly is not found in the hierarchy. GetHierarchyString() Gets a string representation of the assembly hierarchy. public string GetHierarchyString() Returns string A string describing the assembly hierarchy. GetInnerBranchSet(bool) Gets a set of branches that are internal to this assembly. A branch is considered internal if both its endpoints are anchors within this assembly. public HashSet GetInnerBranchSet(bool enableThreadSafe = true) Parameters enableThreadSafe bool If true, uses thread-safe operations for accessing collections. Returns HashSet A set of internal branches. GetMat4d(IGetAnchor, IGetAnchor) Gets the transformation matrix between two anchors in the assembly. public Mat4d GetMat4d(IGetAnchor root, IGetAnchor tail) Parameters root IGetAnchor The source anchor for the transformation. tail IGetAnchor The target anchor for the transformation. Returns Mat4d The 4x4 transformation matrix from root to tail. GetMat4dMap(IGetAnchor) Gets a mapping of anchors to their transformation matrices relative to the root anchor. public Dictionary GetMat4dMap(IGetAnchor root) Parameters root IGetAnchor The root anchor to calculate transformations from. Returns Dictionary A dictionary mapping anchors to their transformation matrices. GetMat4dMapWithBlocks(IGetAnchor, params Anchor[]) Gets a mapping of anchors to their transformation matrices relative to the root anchor, excluding specified blocked anchors. public Dictionary GetMat4dMapWithBlocks(IGetAnchor root, params Anchor[] blockeds) Parameters root IGetAnchor The root anchor to calculate transformations from. blockeds Anchor[] Array of anchors to exclude from the calculation. Returns Dictionary A dictionary mapping anchors to their transformation matrices. ShowMat4dMap(Dictionary) Show mat map in text on console. public static void ShowMat4dMap(Dictionary map) Parameters map Dictionary ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToXElement(IGetAnchor, string) Converts the assembly to an XML element. public XElement ToXElement(IGetAnchor root, string baseDirectory) Parameters root IGetAnchor The root anchor for the conversion. baseDirectory string The base directory for file references. Returns XElement An XML element representing the assembly. ToXElement(string) Converts the assembly to an XML element. public XElement ToXElement(string baseDirectory) Parameters baseDirectory string The base directory for file references. Returns XElement An XML element representing the assembly." + "summary": "Class Asmb Namespace Hi.Mech.Topo Assembly HiMech.dll Collection of Anchor and Asmb. public class Asmb : IGetAsmb, IGetTopoIndex, IDisposable Inheritance object Asmb Implements IGetAsmb IGetTopoIndex IDisposable 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 Asmb() Ctor. public Asmb() Asmb(Asmb) Ctor. public Asmb(Asmb parent) Parameters parent Asmb parent Asmb(Asmb, string) Ctor. public Asmb(Asmb parent, string name) Parameters parent Asmb parent name string Name Asmb(string) Ctor. public Asmb(string name) Parameters name string Name Properties ChildAncs Gets the collection of child anchors in this assembly. public ThreadSafeSet ChildAncs { get; } Property Value ThreadSafeSet ChildAsmbs Gets the collection of child assemblies in this assembly. public ThreadSafeSet ChildAsmbs { get; } Property Value ThreadSafeSet Guid GUID. public Guid Guid { get; } Property Value Guid Name Name. public string Name { get; set; } Property Value string XName Gets the XML name for the assembly. public static string XName { get; } Property Value string Methods AllEnterReadLock() Enters read locks for all thread-safe collections in the assembly. public void AllEnterReadLock() AllExitReadLock() Exits read locks for all thread-safe collections in the assembly. public void AllExitReadLock() CallAsmb(XElement, string, Dictionary, Dictionary, Dictionary, IProgress) Get asmb by the asmbXml. If the members of the target asmb do not exist on asmbs or ancs, the members will be generated; otherwise, the existed members are applied. public static Asmb CallAsmb(XElement asmbXml, string baseDirectory, Dictionary asmbs = null, Dictionary ancs = null, Dictionary brns = null, IProgress progress = null) Parameters asmbXml XElement xml of asmb baseDirectory string Base directory path for resolving relative paths asmbs Dictionary existed asmb map ancs Dictionary existed anc map brns Dictionary existed branch map progress IProgress Progress reporter for diagnostic messages emitted during construction. Returns Asmb asmb Display(Bind, Anchor, params IGetAnchor[]) Display displayees according to the GetAnchor(). The fixed anchor is root. If the element of displayees is not IDisplayee or null Anchor, the element will be ignored. public void Display(Bind bind, Anchor root, params IGetAnchor[] displayees) Parameters bind Bind bind root Anchor fixed anchor displayees IGetAnchor[] element to be rendered Display(Bind, Dictionary, params IGetAnchor[]) Display the displayees according to map. If displayees is null, do nothing. public static void Display(Bind bind, Dictionary map, params IGetAnchor[] displayees) Parameters bind Bind bind map Dictionary anchor to transformation map displayees IGetAnchor[] displayees Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d, Anchor, params IGetAnchor[]) Expands a bounding box to include the assembly. public void ExpandToBox3d(Box3d dst, Anchor root, params IGetAnchor[] displayees) Parameters dst Box3d The bounding box to expand. root Anchor The root anchor for the calculation. displayees IGetAnchor[] The displayable objects to include in the calculation. GetAnchorByGuid(string, bool) Finds an anchor in the assembly hierarchy by its GUID. public Anchor GetAnchorByGuid(string guid, bool enableThreadSafe = true) Parameters guid string The GUID of the anchor to find. enableThreadSafe bool If true, uses thread-safe operations for accessing collections. Returns Anchor The anchor with the specified GUID, or null if not found. GetAnchorChain(Anchor, Anchor) Gets a chain of anchors from the head to the tail. public List GetAnchorChain(Anchor head, Anchor tail) Parameters head Anchor The starting anchor of the chain. tail Anchor The ending anchor of the chain. Returns List A list of anchors representing the chain, or an empty list if no chain exists. GetAnchoredDisplayeeList(Dictionary) Gets a list of anchored displayable objects based on the provided anchor-to-solid mapping. public List GetAnchoredDisplayeeList(Dictionary anchorToSolidDictionary) Parameters anchorToSolidDictionary Dictionary Dictionary mapping anchors to their corresponding solids. Returns List A list of anchored displayable objects. GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetAsmbDraw(Anchor) Gets an assembly drawing for visualization. public AsmbDraw GetAsmbDraw(Anchor root) Parameters root Anchor The root anchor for the drawing. Returns AsmbDraw An assembly drawing object. GetBox3d(Anchor, params IGetAnchor[]) Gets a bounding box for the assembly. public Box3d GetBox3d(Anchor root, params IGetAnchor[] displayees) Parameters root Anchor The root anchor for the calculation. displayees IGetAnchor[] The displayable objects to include in the calculation. Returns Box3d A 3D bounding box containing the assembly. GetBranchByGuid(string, bool) Finds a branch in the assembly hierarchy by its GUID. public Branch GetBranchByGuid(string guid, bool enableThreadSafe = true) Parameters guid string The GUID of the branch to find. enableThreadSafe bool If true, uses thread-safe operations for accessing collections. Returns Branch The branch with the specified GUID, or null if not found. GetBranchChain(IGetAnchor, IGetAnchor) Gets a chain of branches with their directions from the head anchor to the tail anchor. public List GetBranchChain(IGetAnchor head, IGetAnchor tail) Parameters head IGetAnchor The starting anchor of the chain. tail IGetAnchor The ending anchor of the chain. Returns List A list of direction-branch pairs representing the chain, or an empty list if no chain exists. GetBranchsXml(IGetAnchor, string) Gets the XML representation of all branches in the assembly starting from the specified root. public XElement GetBranchsXml(IGetAnchor root, string baseDirectory) Parameters root IGetAnchor The root anchor to start from. If null, uses the first descendant anchor. baseDirectory string The base directory for file references. Returns XElement An XML element containing all branches in the assembly. GetDescendantAnchorSet(bool) Generate an anchor set from all descendant anchors. public HashSet GetDescendantAnchorSet(bool enableThreadSafe = true) Parameters enableThreadSafe bool Returns HashSet descendant anchor set GetDescendantAnchors(bool) Gets a list of all descendant anchors in the assembly hierarchy. public List GetDescendantAnchors(bool enableThreadSafe = true) Parameters enableThreadSafe bool If true, uses thread-safe operations for accessing collections. Returns List A list of all descendant anchors. GetDescendantAsmbSet(bool) Gets a set of all descendant assemblies in the assembly hierarchy. public HashSet GetDescendantAsmbSet(bool enableThreadSafe = true) Parameters enableThreadSafe bool If true, uses thread-safe operations for accessing collections. Returns HashSet A set of all descendant assemblies. GetDescendantAsmbs(bool) Gets a list of all descendant assemblies in the assembly hierarchy. public List GetDescendantAsmbs(bool enableThreadSafe = true) Parameters enableThreadSafe bool If true, uses thread-safe operations for accessing collections. Returns List A list of all descendant assemblies. GetDescendingName(Anchor) Gets the descending name path for an anchor, combining assembly names with dashes. public string GetDescendingName(Anchor anc) Parameters anc Anchor The anchor to get the descending name for. Returns string The full descending name path, or null if the anchor is not found in the assembly hierarchy. GetDescendingName(Asmb) Gets the descending name path for a child assembly, combining assembly names with dashes. public string GetDescendingName(Asmb asmb) Parameters asmb Asmb The assembly to get the descending name for. Returns string The full descending name path, or null if the assembly is not found in the hierarchy. GetHierarchyString() Gets a string representation of the assembly hierarchy. public string GetHierarchyString() Returns string A string describing the assembly hierarchy. GetInnerBranchSet(bool) Gets a set of branches that are internal to this assembly. A branch is considered internal if both its endpoints are anchors within this assembly. public HashSet GetInnerBranchSet(bool enableThreadSafe = true) Parameters enableThreadSafe bool If true, uses thread-safe operations for accessing collections. Returns HashSet A set of internal branches. GetMat4d(IGetAnchor, IGetAnchor) Gets the transformation matrix between two anchors in the assembly. public Mat4d GetMat4d(IGetAnchor root, IGetAnchor tail) Parameters root IGetAnchor The source anchor for the transformation. tail IGetAnchor The target anchor for the transformation. Returns Mat4d The 4x4 transformation matrix from root to tail. GetMat4dMap(IGetAnchor) Gets a mapping of anchors to their transformation matrices relative to the root anchor. public Dictionary GetMat4dMap(IGetAnchor root) Parameters root IGetAnchor The root anchor to calculate transformations from. Returns Dictionary A dictionary mapping anchors to their transformation matrices. GetMat4dMapWithBlocks(IGetAnchor, params Anchor[]) Gets a mapping of anchors to their transformation matrices relative to the root anchor, excluding specified blocked anchors. public Dictionary GetMat4dMapWithBlocks(IGetAnchor root, params Anchor[] blockeds) Parameters root IGetAnchor The root anchor to calculate transformations from. blockeds Anchor[] Array of anchors to exclude from the calculation. Returns Dictionary A dictionary mapping anchors to their transformation matrices. ShowMat4dMap(Dictionary) Show mat map in text on console. public static void ShowMat4dMap(Dictionary map) Parameters map Dictionary ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToXElement(IGetAnchor, string) Converts the assembly to an XML element. public XElement ToXElement(IGetAnchor root, string baseDirectory) Parameters root IGetAnchor The root anchor for the conversion. baseDirectory string The base directory for file references. Returns XElement An XML element representing the assembly. ToXElement(string) Converts the assembly to an XML element. public XElement ToXElement(string baseDirectory) Parameters baseDirectory string The base directory for file references. Returns XElement An XML element representing the assembly." }, "api/Hi.Mech.Topo.AsmbDraw.html": { "href": "api/Hi.Mech.Topo.AsmbDraw.html", @@ -2287,22 +2412,22 @@ "api/Hi.Mech.Topo.DynamicFreeform.html": { "href": "api/Hi.Mech.Topo.DynamicFreeform.html", "title": "Class DynamicFreeform | HiAPI-C# 2025", - "summary": "Class DynamicFreeform Namespace Hi.Mech.Topo Assembly HiMech.dll Dynamic Freeform transformer. public class DynamicFreeform : IDynamicTransformer, ITransformer, IMakeXmlSource, IGetInverseTransformer, IToPresentDto Inheritance object DynamicFreeform Implements IDynamicTransformer ITransformer IMakeXmlSource IGetInverseTransformer IToPresentDto 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 DynamicFreeform(Mat4d) Ctor. public DynamicFreeform(Mat4d mat) Parameters mat Mat4d transform matrix DynamicFreeform(Mat4d, Mat4d) Ctor. public DynamicFreeform(Mat4d mat, Mat4d matInv) Parameters mat Mat4d transform matrix matInv Mat4d inversed transform matrix DynamicFreeform(XElement) Ctor. public DynamicFreeform(XElement src) Parameters src XElement XML Properties XName Static name. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public ITransformer Clone() Returns ITransformer clone GetInverseTransformer() Gets the inverse transformer of this transformer. public ITransformer GetInverseTransformer() Returns ITransformer The inverse transformer. GetMat() Gets the transform matrix. public Mat4d GetMat() Returns Mat4d The transform matrix. GetMatInv() Gets the inverse transform matrix. public Mat4d GetMatInv() Returns Mat4d The inverse transform matrix. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetMat(Mat4d) public void SetMat(Mat4d mat) Parameters mat Mat4d SetMat(Mat4d, Mat4d) Set transform matrix. public void SetMat(Mat4d mat, Mat4d matInv) Parameters mat Mat4d transform matrix matInv Mat4d inversed transform matrix ToPresentDto() Convert StaticFreeform to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO object with type and matrix properties" + "summary": "Class DynamicFreeform Namespace Hi.Mech.Topo Assembly HiMech.dll Dynamic Freeform transformer. public class DynamicFreeform : IDynamicTransformer, ITransformer, IMakeXmlSource, IGetInverseTransformer, IToPresentDto Inheritance object DynamicFreeform Implements IDynamicTransformer ITransformer IMakeXmlSource IGetInverseTransformer IToPresentDto 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 DynamicFreeform(Mat4d) Ctor. public DynamicFreeform(Mat4d mat) Parameters mat Mat4d transform matrix DynamicFreeform(Mat4d, Mat4d) Ctor. public DynamicFreeform(Mat4d mat, Mat4d matInv) Parameters mat Mat4d transform matrix matInv Mat4d inversed transform matrix DynamicFreeform(XElement) Ctor. public DynamicFreeform(XElement src) Parameters src XElement XML Properties XName Static name. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public ITransformer Clone() Returns ITransformer clone GetInverseTransformer() Gets the inverse transformer of this transformer. public ITransformer GetInverseTransformer() Returns ITransformer The inverse transformer. GetMat() Gets the transform matrix. public Mat4d GetMat() Returns Mat4d The transform matrix. GetMatInv() Gets the inverse transform matrix. public Mat4d GetMatInv() Returns Mat4d The inverse transform matrix. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetMat(Mat4d) public void SetMat(Mat4d mat) Parameters mat Mat4d SetMat(Mat4d, Mat4d) Set transform matrix. public void SetMat(Mat4d mat, Mat4d matInv) Parameters mat Mat4d transform matrix matInv Mat4d inversed transform matrix ToPresentDto() Convert to a static-freeform matrix snapshot DTO (Data Transfer Object) for JSON serialization; presented with the StaticFreeform type marker. public object ToPresentDto() Returns object DTO dictionary with Type and Matrix keys" }, "api/Hi.Mech.Topo.DynamicRotation.html": { "href": "api/Hi.Mech.Topo.DynamicRotation.html", "title": "Class DynamicRotation | HiAPI-C# 2025", - "summary": "Class DynamicRotation Namespace Hi.Mech.Topo Assembly HiMech.dll Dynamic rotate transformer. public class DynamicRotation : IDynamicRotation, IDynamicRegular, IDynamicTransformer, ITransformer, IMakeXmlSource, IGetInverseTransformer, IToPresentDto Inheritance object DynamicRotation Implements IDynamicRotation IDynamicRegular IDynamicTransformer ITransformer IMakeXmlSource IGetInverseTransformer IToPresentDto Derived NcRotation 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 DynamicRotation() Ctor. public DynamicRotation() DynamicRotation(Vec3d, double, Vec3d) Ctor. public DynamicRotation(Vec3d axis, double angle_rad = 0, Vec3d pivot = null) Parameters axis Vec3d Axis angle_rad double Angle_rad pivot Vec3d Pivot DynamicRotation(XElement) Ctor. public DynamicRotation(XElement src) Parameters src XElement XML Properties Angle_deg Rotation angle in degree. public double Angle_deg { get; set; } Property Value double Angle_rad Rotation angle in radian. public double Angle_rad { get; set; } Property Value double Axis Rotation axis. public Vec3d Axis { get; set; } Property Value Vec3d Pivot pivot public Vec3d Pivot { get; set; } Property Value Vec3d Step Gets or sets the step. public double Step { get; set; } Property Value double The step. XName Static name. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public virtual ITransformer Clone() Returns ITransformer clone GetInverseTransformer() Gets the inverse transformer of this transformer. public ITransformer GetInverseTransformer() Returns ITransformer The inverse transformer. GetMat() Gets the transform matrix. public Mat4d GetMat() Returns Mat4d The transform matrix. GetMatInv() Gets the inverse transform matrix. public Mat4d GetMatInv() Returns Mat4d The inverse transform matrix. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory Set(DynamicRotation) Copy from src. public void Set(DynamicRotation src) Parameters src DynamicRotation src ToPresentDto() Convert DynamicRotation to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO object with type, axis, angleDeg, and pivot properties" + "summary": "Class DynamicRotation Namespace Hi.Mech.Topo Assembly HiMech.dll Dynamic rotate transformer. public class DynamicRotation : IDynamicRotation, IDynamicRegular, IDynamicTransformer, ITransformer, IMakeXmlSource, IGetInverseTransformer, IToPresentDto Inheritance object DynamicRotation Implements IDynamicRotation IDynamicRegular IDynamicTransformer ITransformer IMakeXmlSource IGetInverseTransformer IToPresentDto Derived NcRotation 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 DynamicRotation() Ctor. public DynamicRotation() DynamicRotation(Vec3d, double, Vec3d) Ctor. public DynamicRotation(Vec3d axis, double angle_rad = 0, Vec3d pivot = null) Parameters axis Vec3d Axis angle_rad double Angle_rad pivot Vec3d Pivot DynamicRotation(XElement) Ctor. public DynamicRotation(XElement src) Parameters src XElement XML Properties Angle_deg Rotation angle in degree. public double Angle_deg { get; set; } Property Value double Angle_rad Rotation angle in radian. public double Angle_rad { get; set; } Property Value double Axis Rotation axis. public Vec3d Axis { get; set; } Property Value Vec3d Pivot pivot public Vec3d Pivot { get; set; } Property Value Vec3d Step Gets or sets the step. public double Step { get; set; } Property Value double The step. XName Static name. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public virtual ITransformer Clone() Returns ITransformer clone GetInverseTransformer() Gets the inverse transformer of this transformer. public ITransformer GetInverseTransformer() Returns ITransformer The inverse transformer. GetMat() Gets the transform matrix. public Mat4d GetMat() Returns Mat4d The transform matrix. GetMatInv() Gets the inverse transform matrix. public Mat4d GetMatInv() Returns Mat4d The inverse transform matrix. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory Set(DynamicRotation) Copy from src. public void Set(DynamicRotation src) Parameters src DynamicRotation src ToPresentDto() Convert DynamicRotation to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO dictionary with Type, Axis, Angle_deg, and Pivot keys" }, "api/Hi.Mech.Topo.DynamicTranslation.html": { "href": "api/Hi.Mech.Topo.DynamicTranslation.html", "title": "Class DynamicTranslation | HiAPI-C# 2025", - "summary": "Class DynamicTranslation Namespace Hi.Mech.Topo Assembly HiMech.dll Dynamic translate transformer public class DynamicTranslation : IDynamicRegular, IDynamicTransformer, ITransformer, IMakeXmlSource, IGetInverseTransformer, IToPresentDto Inheritance object DynamicTranslation Implements IDynamicRegular IDynamicTransformer ITransformer IMakeXmlSource IGetInverseTransformer IToPresentDto Derived NcTranslation 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 DynamicTranslation() Ctor. public DynamicTranslation() DynamicTranslation(Vec3d, double) Ctor. public DynamicTranslation(Vec3d axis, double len = 0) Parameters axis Vec3d Translation axis len double length DynamicTranslation(XElement) Ctor. public DynamicTranslation(XElement src) Parameters src XElement XML Properties Axis Translation Axis. public Vec3d Axis { get; set; } Property Value Vec3d Len Length. public double Len { get; set; } Property Value double Step Gets or sets the step. public double Step { get; set; } Property Value double The step. XName Static name. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public virtual ITransformer Clone() Returns ITransformer clone GetInverseTransformer() Gets the inverse transformer of this transformer. public ITransformer GetInverseTransformer() Returns ITransformer The inverse transformer. GetMat() Gets the transform matrix. public Mat4d GetMat() Returns Mat4d The transform matrix. GetMatInv() Gets the inverse transform matrix. public Mat4d GetMatInv() Returns Mat4d The inverse transform matrix. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory Set(DynamicTranslation) Copy from src. public void Set(DynamicTranslation src) Parameters src DynamicTranslation src ToPresentDto() Convert DynamicTranslation to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO object with type, axis, and step properties" + "summary": "Class DynamicTranslation Namespace Hi.Mech.Topo Assembly HiMech.dll Dynamic translate transformer public class DynamicTranslation : IDynamicRegular, IDynamicTransformer, ITransformer, IMakeXmlSource, IGetInverseTransformer, IToPresentDto Inheritance object DynamicTranslation Implements IDynamicRegular IDynamicTransformer ITransformer IMakeXmlSource IGetInverseTransformer IToPresentDto Derived NcTranslation 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 DynamicTranslation() Ctor. public DynamicTranslation() DynamicTranslation(Vec3d, double) Ctor. public DynamicTranslation(Vec3d axis, double len = 0) Parameters axis Vec3d Translation axis len double length DynamicTranslation(XElement) Ctor. public DynamicTranslation(XElement src) Parameters src XElement XML Properties Axis Translation Axis. public Vec3d Axis { get; set; } Property Value Vec3d Len Length. public double Len { get; set; } Property Value double Step Gets or sets the step. public double Step { get; set; } Property Value double The step. XName Static name. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public virtual ITransformer Clone() Returns ITransformer clone GetInverseTransformer() Gets the inverse transformer of this transformer. public ITransformer GetInverseTransformer() Returns ITransformer The inverse transformer. GetMat() Gets the transform matrix. public Mat4d GetMat() Returns Mat4d The transform matrix. GetMatInv() Gets the inverse transform matrix. public Mat4d GetMatInv() Returns Mat4d The inverse transform matrix. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory Set(DynamicTranslation) Copy from src. public void Set(DynamicTranslation src) Parameters src DynamicTranslation src ToPresentDto() Convert DynamicTranslation to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO dictionary with Type, Axis, and Step keys" }, "api/Hi.Mech.Topo.GeneralTransform.html": { "href": "api/Hi.Mech.Topo.GeneralTransform.html", "title": "Class GeneralTransform | HiAPI-C# 2025", - "summary": "Class GeneralTransform Namespace Hi.Mech.Topo Assembly HiMech.dll Represents a general transformation that combines scaling, rotation, and translation. public class GeneralTransform : IStaticTransformer, ITransformer, IMakeXmlSource, IGetInverseTransformer, IToPresentDto Inheritance object GeneralTransform Implements IStaticTransformer ITransformer IMakeXmlSource IGetInverseTransformer IToPresentDto 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 GeneralTransform() Initializes a new instance of the GeneralTransform class. public GeneralTransform() GeneralTransform(Mat4d) Initializes a new instance of the GeneralTransform class from a 4x4 transformation matrix. public GeneralTransform(Mat4d mat) Parameters mat Mat4d The transformation matrix. GeneralTransform(double, StaticRotation, StaticTranslation) Initializes a new instance of the GeneralTransform class with specified scale, rotation, and translation. public GeneralTransform(double scale, StaticRotation rotation, StaticTranslation translation) Parameters scale double The scaling factor. rotation StaticRotation The rotation transformation. translation StaticTranslation The translation transformation. GeneralTransform(XElement) Ctor. public GeneralTransform(XElement src) Parameters src XElement XML Properties Rotation 2th transform. public StaticRotation Rotation { get; } Property Value StaticRotation Scale 1th transform. public double Scale { get; set; } Property Value double Translation 3th transform. public StaticTranslation Translation { get; } Property Value StaticTranslation XName Static name. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public ITransformer Clone() Returns ITransformer clone GetInverseTransformer() Gets the inverse transformer of this transformer. public ITransformer GetInverseTransformer() Returns ITransformer The inverse transformer. GetMat() Gets the transform matrix. public Mat4d GetMat() Returns Mat4d The transform matrix. GetMatInv() Gets the inverse transform matrix. public Mat4d GetMatInv() Returns Mat4d The inverse transform matrix. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToPresentDto() Convert GeneralTransform to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO object with type, scale, rotation, and translation properties" + "summary": "Class GeneralTransform Namespace Hi.Mech.Topo Assembly HiMech.dll Represents a general transformation that combines scaling, rotation, and translation. public class GeneralTransform : IStaticTransformer, ITransformer, IMakeXmlSource, IGetInverseTransformer, IToPresentDto Inheritance object GeneralTransform Implements IStaticTransformer ITransformer IMakeXmlSource IGetInverseTransformer IToPresentDto 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 GeneralTransform() Initializes a new instance of the GeneralTransform class. public GeneralTransform() GeneralTransform(Mat4d) Initializes a new instance of the GeneralTransform class from a 4x4 transformation matrix. public GeneralTransform(Mat4d mat) Parameters mat Mat4d The transformation matrix. GeneralTransform(double, StaticRotation, StaticTranslation) Initializes a new instance of the GeneralTransform class with specified scale, rotation, and translation. public GeneralTransform(double scale, StaticRotation rotation, StaticTranslation translation) Parameters scale double The scaling factor. rotation StaticRotation The rotation transformation. translation StaticTranslation The translation transformation. GeneralTransform(XElement) Ctor. public GeneralTransform(XElement src) Parameters src XElement XML Properties Rotation 2th transform. public StaticRotation Rotation { get; } Property Value StaticRotation Scale 1th transform. public double Scale { get; set; } Property Value double Translation 3th transform. public StaticTranslation Translation { get; } Property Value StaticTranslation XName Static name. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public ITransformer Clone() Returns ITransformer clone GetInverseTransformer() Gets the inverse transformer of this transformer. public ITransformer GetInverseTransformer() Returns ITransformer The inverse transformer. GetMat() Gets the transform matrix. public Mat4d GetMat() Returns Mat4d The transform matrix. GetMatInv() Gets the inverse transform matrix. public Mat4d GetMatInv() Returns Mat4d The inverse transform matrix. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToPresentDto() Convert GeneralTransform to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO dictionary with Type, Scale, Rotation, and Translation keys" }, "api/Hi.Mech.Topo.IAnchoredDisplayee.html": { "href": "api/Hi.Mech.Topo.IAnchoredDisplayee.html", @@ -2382,27 +2507,27 @@ "api/Hi.Mech.Topo.NoTransform.html": { "href": "api/Hi.Mech.Topo.NoTransform.html", "title": "Class NoTransform | HiAPI-C# 2025", - "summary": "Class NoTransform Namespace Hi.Mech.Topo Assembly HiMech.dll Static Identity Transformer. public class NoTransform : IStaticTransformer, ITransformer, IMakeXmlSource, IToPresentDto, IGetInverseTransformer Inheritance object NoTransform Implements IStaticTransformer ITransformer IMakeXmlSource IToPresentDto IGetInverseTransformer 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 NoTransform() Ctor. public NoTransform() NoTransform(XElement) Ctor. public NoTransform(XElement src) Parameters src XElement XML Properties XName Static name. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public ITransformer Clone() Returns ITransformer clone GetInverseTransformer() Gets the inverse transformer of this transformer. public ITransformer GetInverseTransformer() Returns ITransformer The inverse transformer. GetMat() Gets the transform matrix. public Mat4d GetMat() Returns Mat4d The transform matrix. GetMatInv() Gets the inverse transform matrix. public Mat4d GetMatInv() Returns Mat4d The inverse transform matrix. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToPresentDto() Convert to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO object with type and object properties" + "summary": "Class NoTransform Namespace Hi.Mech.Topo Assembly HiMech.dll Static Identity Transformer. public class NoTransform : IStaticTransformer, ITransformer, IMakeXmlSource, IToPresentDto, IGetInverseTransformer Inheritance object NoTransform Implements IStaticTransformer ITransformer IMakeXmlSource IToPresentDto IGetInverseTransformer 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 NoTransform() Ctor. public NoTransform() NoTransform(XElement) Ctor. public NoTransform(XElement src) Parameters src XElement XML Properties XName Static name. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public ITransformer Clone() Returns ITransformer clone GetInverseTransformer() Gets the inverse transformer of this transformer. public ITransformer GetInverseTransformer() Returns ITransformer The inverse transformer. GetMat() Gets the transform matrix. public Mat4d GetMat() Returns Mat4d The transform matrix. GetMatInv() Gets the inverse transform matrix. public Mat4d GetMatInv() Returns Mat4d The inverse transform matrix. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToPresentDto() Convert NoTransform to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO dictionary with a Type key" }, "api/Hi.Mech.Topo.StackTransformer.html": { "href": "api/Hi.Mech.Topo.StackTransformer.html", "title": "Class StackTransformer | HiAPI-C# 2025", - "summary": "Class StackTransformer Namespace Hi.Mech.Topo Assembly HiMech.dll Represents a transformer that maintains a stack of transformations. public class StackTransformer : ITransformer, IMakeXmlSource, IToPresentDto, IDisposable Inheritance object StackTransformer Implements ITransformer IMakeXmlSource IToPresentDto 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors StackTransformer() Initializes a new instance of the StackTransformer class. public StackTransformer() StackTransformer(params ITransformer[]) Initializes a new instance of the StackTransformer class with the specified transformers. public StackTransformer(params ITransformer[] transformers) Parameters transformers ITransformer[] A variable-length array of transformers to add to the stack. StackTransformer(XElement, string, IProgress) Initializes a new instance of the StackTransformer class from XML data. public StackTransformer(XElement src, string baseDirectory, IProgress progress) Parameters src XElement The XML element containing the transformer stack configuration. baseDirectory string The base directory for resolving relative paths. progress IProgress The progress reporter. Properties Count Gets the number of transformers in the stack. public int Count { get; } Property Value int XName Static name. public static string XName { get; } Property Value string Methods Clear() Removes all transformers from the stack. public void Clear() Clone() Creates a deep copy of this transformer stack. public ITransformer Clone() Returns ITransformer A new StackTransformer instance with cloned transformers. Remarks The children ITransformer on stack are all cloned. Dispose() Releases all resources used by the StackTransformer. public void Dispose() Dispose(bool) Releases the unmanaged resources used by the StackTransformer and optionally releases the managed resources. protected virtual void Dispose(bool disposing) Parameters disposing bool true to release both managed and unmanaged resources; false to release only unmanaged resources. GetMat() Gets the combined transformation matrix of all transformers in the stack. public Mat4d GetMat() Returns Mat4d The combined 4x4 transformation matrix. Remarks The transformations are applied in order from bottom to top of the stack. GetMatInv() Gets the inverse of the combined transformation matrix of all transformers in the stack. public Mat4d GetMatInv() Returns Mat4d The inverse of the combined 4x4 transformation matrix. Remarks The inverse transformations are applied in reverse order (top to bottom of the stack). If forward mats is ABCD, then the inv-mats: DinvCinvBinvAinv. GetStack() Get the copied transformer stack. public List GetStack() Returns List copied stack MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Peek() Returns the transformer at the top of the stack without removing it. public ITransformer Peek() Returns ITransformer The transformer at the top of the stack, or null if the stack is empty. Pop() Removes and returns the transformer at the top of the stack. public ITransformer Pop() Returns ITransformer The transformer at the top of the stack, or null if the stack is empty. Push(ITransformer) Pushes a transformer onto the stack. public void Push(ITransformer transformer) Parameters transformer ITransformer The transformer to push. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToPresentDto() Convert StackTransformer to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO object with type and stack properties" + "summary": "Class StackTransformer Namespace Hi.Mech.Topo Assembly HiMech.dll Represents a transformer that maintains a stack of transformations. public class StackTransformer : ITransformer, IMakeXmlSource, IToPresentDto, IDisposable Inheritance object StackTransformer Implements ITransformer IMakeXmlSource IToPresentDto 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) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors StackTransformer() Initializes a new instance of the StackTransformer class. public StackTransformer() StackTransformer(params ITransformer[]) Initializes a new instance of the StackTransformer class with the specified transformers. public StackTransformer(params ITransformer[] transformers) Parameters transformers ITransformer[] A variable-length array of transformers to add to the stack. StackTransformer(XElement, string, IProgress) Initializes a new instance of the StackTransformer class from XML data. public StackTransformer(XElement src, string baseDirectory, IProgress progress) Parameters src XElement The XML element containing the transformer stack configuration. baseDirectory string The base directory for resolving relative paths. progress IProgress The progress reporter. Properties Count Gets the number of transformers in the stack. public int Count { get; } Property Value int XName Static name. public static string XName { get; } Property Value string Methods Clear() Removes all transformers from the stack. public void Clear() Clone() Creates a deep copy of this transformer stack. public ITransformer Clone() Returns ITransformer A new StackTransformer instance with cloned transformers. Remarks The children ITransformer on stack are all cloned. Dispose() Releases all resources used by the StackTransformer. public void Dispose() Dispose(bool) Releases the unmanaged resources used by the StackTransformer and optionally releases the managed resources. protected virtual void Dispose(bool disposing) Parameters disposing bool true to release both managed and unmanaged resources; false to release only unmanaged resources. GetMat() Gets the combined transformation matrix of all transformers in the stack. public Mat4d GetMat() Returns Mat4d The combined 4x4 transformation matrix. Remarks The transformations are applied in order from bottom to top of the stack. GetMatInv() Gets the inverse of the combined transformation matrix of all transformers in the stack. public Mat4d GetMatInv() Returns Mat4d The inverse of the combined 4x4 transformation matrix. Remarks The inverse transformations are applied in reverse order (top to bottom of the stack). If forward mats is ABCD, then the inv-mats: DinvCinvBinvAinv. GetStack() Get the copied transformer stack. public List GetStack() Returns List copied stack MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Peek() Returns the transformer at the top of the stack without removing it. public ITransformer Peek() Returns ITransformer The transformer at the top of the stack, or null if the stack is empty. Pop() Removes and returns the transformer at the top of the stack. public ITransformer Pop() Returns ITransformer The transformer at the top of the stack, or null if the stack is empty. Push(ITransformer) Pushes a transformer onto the stack. public void Push(ITransformer transformer) Parameters transformer ITransformer The transformer to push. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToPresentDto() Convert StackTransformer to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO dictionary with Type and Stack keys" }, "api/Hi.Mech.Topo.StaticFreeform.html": { "href": "api/Hi.Mech.Topo.StaticFreeform.html", "title": "Class StaticFreeform | HiAPI-C# 2025", - "summary": "Class StaticFreeform Namespace Hi.Mech.Topo Assembly HiMech.dll Static Freeform transformer. public class StaticFreeform : IStaticTransformer, ITransformer, IMakeXmlSource, IGetInverseTransformer, IToPresentDto Inheritance object StaticFreeform Implements IStaticTransformer ITransformer IMakeXmlSource IGetInverseTransformer IToPresentDto 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 StaticFreeform() Ctor. public StaticFreeform() StaticFreeform(Mat4d) Ctor. public StaticFreeform(Mat4d mat) Parameters mat Mat4d transform matrix StaticFreeform(Mat4d, Mat4d) Ctor. public StaticFreeform(Mat4d mat, Mat4d matInv) Parameters mat Mat4d transform matrix matInv Mat4d inversed transform matrix StaticFreeform(XElement) Ctor. public StaticFreeform(XElement src) Parameters src XElement XML Properties XName Static name. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public ITransformer Clone() Returns ITransformer clone GetInverseTransformer() Gets the inverse transformer of this transformer. public ITransformer GetInverseTransformer() Returns ITransformer The inverse transformer. GetMat() Gets the transform matrix. public Mat4d GetMat() Returns Mat4d The transform matrix. GetMatInv() Gets the inverse transform matrix. public Mat4d GetMatInv() Returns Mat4d The inverse transform matrix. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetMat(Mat4d) public void SetMat(Mat4d mat) Parameters mat Mat4d SetMat(Mat4d, Mat4d) Set transform matrix. public void SetMat(Mat4d mat, Mat4d matInv) Parameters mat Mat4d transform matrix matInv Mat4d inversed transform matrix ToPresentDto() Convert StaticFreeform to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO object with type and matrix properties" + "summary": "Class StaticFreeform Namespace Hi.Mech.Topo Assembly HiMech.dll Static Freeform transformer. public class StaticFreeform : IStaticTransformer, ITransformer, IMakeXmlSource, IGetInverseTransformer, IToPresentDto Inheritance object StaticFreeform Implements IStaticTransformer ITransformer IMakeXmlSource IGetInverseTransformer IToPresentDto 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 StaticFreeform() Ctor. public StaticFreeform() StaticFreeform(Mat4d) Ctor. public StaticFreeform(Mat4d mat) Parameters mat Mat4d transform matrix StaticFreeform(Mat4d, Mat4d) Ctor. public StaticFreeform(Mat4d mat, Mat4d matInv) Parameters mat Mat4d transform matrix matInv Mat4d inversed transform matrix StaticFreeform(XElement) Ctor. public StaticFreeform(XElement src) Parameters src XElement XML Properties XName Static name. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public ITransformer Clone() Returns ITransformer clone GetInverseTransformer() Gets the inverse transformer of this transformer. public ITransformer GetInverseTransformer() Returns ITransformer The inverse transformer. GetMat() Gets the transform matrix. public Mat4d GetMat() Returns Mat4d The transform matrix. GetMatInv() Gets the inverse transform matrix. public Mat4d GetMatInv() Returns Mat4d The inverse transform matrix. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetMat(Mat4d) public void SetMat(Mat4d mat) Parameters mat Mat4d SetMat(Mat4d, Mat4d) Set transform matrix. public void SetMat(Mat4d mat, Mat4d matInv) Parameters mat Mat4d transform matrix matInv Mat4d inversed transform matrix ToPresentDto() Convert StaticFreeform to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO dictionary with Type and Matrix keys" }, "api/Hi.Mech.Topo.StaticRotation.html": { "href": "api/Hi.Mech.Topo.StaticRotation.html", "title": "Class StaticRotation | HiAPI-C# 2025", - "summary": "Class StaticRotation Namespace Hi.Mech.Topo Assembly HiMech.dll Static Rotation. public class StaticRotation : IStaticTransformer, ITransformer, IMakeXmlSource, IGetInverseTransformer, IToPresentDto Inheritance object StaticRotation Implements IStaticTransformer ITransformer IMakeXmlSource IGetInverseTransformer IToPresentDto 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 StaticRotation() Initializes a new instance of the StaticRotation class. public StaticRotation() StaticRotation(Vec3d, double) Ctor. public StaticRotation(Vec3d axis, double angle_rad) Parameters axis Vec3d Axis angle_rad double Angle_rad StaticRotation(Vec3d, double, Vec3d) Ctor. public StaticRotation(Vec3d axis, double angle_rad, Vec3d pivot) Parameters axis Vec3d angle_rad double pivot Vec3d StaticRotation(XElement) Initializes a new instance of the StaticRotation class from XML data. public StaticRotation(XElement src) Parameters src XElement The XML element containing the rotation data. Properties Angle_deg Gets or sets the rotation angle in degrees. public double Angle_deg { get; set; } Property Value double Angle_rad Gets or sets the rotation angle in radians. public double Angle_rad { get; set; } Property Value double Axis Gets or sets the rotation axis. public Vec3d Axis { get; set; } Property Value Vec3d Pivot Gets or sets the pivot point for the rotation. public Vec3d Pivot { get; set; } Property Value Vec3d XName Gets the XML element name for serialization. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public ITransformer Clone() Returns ITransformer clone GetInverseTransformer() Gets a new transformer that represents the inverse of this rotation. public ITransformer GetInverseTransformer() Returns ITransformer An inverse transformer instance. GetMat() Gets the transformation matrix representing this rotation. public Mat4d GetMat() Returns Mat4d A 4x4 transformation matrix. GetMatInv() Gets the inverse transformation matrix of this rotation. public Mat4d GetMatInv() Returns Mat4d A 4x4 inverse transformation matrix. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToPresentDto() Convert StaticRotation to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO object with type, axis, angleDeg, and pivot properties" + "summary": "Class StaticRotation Namespace Hi.Mech.Topo Assembly HiMech.dll Static Rotation. public class StaticRotation : IStaticTransformer, ITransformer, IMakeXmlSource, IGetInverseTransformer, IToPresentDto Inheritance object StaticRotation Implements IStaticTransformer ITransformer IMakeXmlSource IGetInverseTransformer IToPresentDto 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 StaticRotation() Initializes a new instance of the StaticRotation class. public StaticRotation() StaticRotation(Vec3d, double) Ctor. public StaticRotation(Vec3d axis, double angle_rad) Parameters axis Vec3d Axis angle_rad double Angle_rad StaticRotation(Vec3d, double, Vec3d) Ctor. public StaticRotation(Vec3d axis, double angle_rad, Vec3d pivot) Parameters axis Vec3d angle_rad double pivot Vec3d StaticRotation(XElement) Initializes a new instance of the StaticRotation class from XML data. public StaticRotation(XElement src) Parameters src XElement The XML element containing the rotation data. Properties Angle_deg Gets or sets the rotation angle in degrees. public double Angle_deg { get; set; } Property Value double Angle_rad Gets or sets the rotation angle in radians. public double Angle_rad { get; set; } Property Value double Axis Gets or sets the rotation axis. public Vec3d Axis { get; set; } Property Value Vec3d Pivot Gets or sets the pivot point for the rotation. public Vec3d Pivot { get; set; } Property Value Vec3d XName Gets the XML element name for serialization. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public ITransformer Clone() Returns ITransformer clone GetInverseTransformer() Gets a new transformer that represents the inverse of this rotation. public ITransformer GetInverseTransformer() Returns ITransformer An inverse transformer instance. GetMat() Gets the transformation matrix representing this rotation. public Mat4d GetMat() Returns Mat4d A 4x4 transformation matrix. GetMatInv() Gets the inverse transformation matrix of this rotation. public Mat4d GetMatInv() Returns Mat4d A 4x4 inverse transformation matrix. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToPresentDto() Convert StaticRotation to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO dictionary with Type, Axis, Angle_deg, and Pivot keys" }, "api/Hi.Mech.Topo.StaticTranslation.html": { "href": "api/Hi.Mech.Topo.StaticTranslation.html", "title": "Class StaticTranslation | HiAPI-C# 2025", - "summary": "Class StaticTranslation Namespace Hi.Mech.Topo Assembly HiMech.dll Static Translate. public class StaticTranslation : IStaticTransformer, ITransformer, IMakeXmlSource, IGetInverseTransformer, IToPresentDto Inheritance object StaticTranslation Implements IStaticTransformer ITransformer IMakeXmlSource IGetInverseTransformer IToPresentDto 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 StaticTranslation() Ctor. public StaticTranslation() StaticTranslation(Vec3d) Ctor. public StaticTranslation(Vec3d trans) Parameters trans Vec3d translation StaticTranslation(double, double, double) Ctor. public StaticTranslation(double x, double y, double z) Parameters x double translation x y double translation y z double translation z StaticTranslation(XElement) Ctor. public StaticTranslation(XElement src) Parameters src XElement XML Properties Trans Translation. public Vec3d Trans { get; set; } Property Value Vec3d XName Static name. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public ITransformer Clone() Returns ITransformer clone GetInverseTransformer() Gets the inverse transformer of this transformer. public ITransformer GetInverseTransformer() Returns ITransformer The inverse transformer. GetMat() Gets the transform matrix. public Mat4d GetMat() Returns Mat4d The transform matrix. GetMatInv() Gets the inverse transform matrix. public Mat4d GetMatInv() Returns Mat4d The inverse transform matrix. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory Set(StaticTranslation) Copy from src. public void Set(StaticTranslation src) Parameters src StaticTranslation src ToPresentDto() Convert StaticTranslation to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO object with type and translation properties ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + "summary": "Class StaticTranslation Namespace Hi.Mech.Topo Assembly HiMech.dll Static Translate. public class StaticTranslation : IStaticTransformer, ITransformer, IMakeXmlSource, IGetInverseTransformer, IToPresentDto Inheritance object StaticTranslation Implements IStaticTransformer ITransformer IMakeXmlSource IGetInverseTransformer IToPresentDto 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 StaticTranslation() Ctor. public StaticTranslation() StaticTranslation(Vec3d) Ctor. public StaticTranslation(Vec3d trans) Parameters trans Vec3d translation StaticTranslation(double, double, double) Ctor. public StaticTranslation(double x, double y, double z) Parameters x double translation x y double translation y z double translation z StaticTranslation(XElement) Ctor. public StaticTranslation(XElement src) Parameters src XElement XML Properties Trans Translation. public Vec3d Trans { get; set; } Property Value Vec3d XName Static name. public static string XName { get; } Property Value string Methods Clone() Clones this instance. public ITransformer Clone() Returns ITransformer clone GetInverseTransformer() Gets the inverse transformer of this transformer. public ITransformer GetInverseTransformer() Returns ITransformer The inverse transformer. GetMat() Gets the transform matrix. public Mat4d GetMat() Returns Mat4d The transform matrix. GetMatInv() Gets the inverse transform matrix. public Mat4d GetMatInv() Returns Mat4d The inverse transform matrix. MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public virtual 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory Set(StaticTranslation) Copy from src. public void Set(StaticTranslation src) Parameters src StaticTranslation src ToPresentDto() Convert StaticTranslation to presentation DTO (Data Transfer Object) for JSON serialization. The returned object includes type metadata for web API presentation. public object ToPresentDto() Returns object DTO dictionary with Type and Trans keys ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, "api/Hi.Mech.Topo.TopoDisplayee.html": { "href": "api/Hi.Mech.Topo.TopoDisplayee.html", @@ -2532,7 +2657,7 @@ "api/Hi.Milling.Cutters.AptProfile.html": { "href": "api/Hi.Milling.Cutters.AptProfile.html", "title": "Class AptProfile | HiAPI-C# 2025", - "summary": "Class AptProfile Namespace Hi.Milling.Cutters Assembly HiMech.dll Represents an APT (Automatically Programmed Tool) based profile for a milling cutter. This profile uses APT definitions to describe the cutter geometry. public class AptProfile : IShaperProfile, IMakeXmlSource, IAbstractNote, IGetZrList, IGenStl, IGetStl, IDuplicate, IGetSelectionName, IGetInitStickConvex, IVolumeRemover, IDisposable, IUpdateByContent, IClearCache, IPolarResolution2dSourceProperty Inheritance object AptProfile Implements IShaperProfile IMakeXmlSource IAbstractNote IGetZrList IGenStl IGetStl IDuplicate IGetSelectionName IGetInitStickConvex IVolumeRemover IDisposable IUpdateByContent IClearCache IPolarResolution2dSourceProperty Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods StlUtil.ToFaceDrawing(IGetStl) StlUtil.ToLineDrawing(IGetStl) StlUtil.ToSparkleLineDrawing(IGetStl) 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 AptProfile() Initializes a new instance of the AptProfile class. public AptProfile() AptProfile(IAptBased) Initializes a new instance of the AptProfile class. public AptProfile(IAptBased apt) Parameters apt IAptBased The APT-based object. AptProfile(XElement, string, IProgress) Initializes a new instance of the AptProfile class. public AptProfile(XElement src, string baseDirectory, IProgress progress) Parameters src XElement XML element containing the profile configuration. baseDirectory string The base directory for resolving relative paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. Properties AbstractNote Gets the abstract note from the APT definition. public string AbstractNote { get; } Property Value string Apt Gets or sets the APT-based definition for the profile. public IAptBased Apt { get; set; } Property Value IAptBased DefaultAngleResolution_rad Gets or sets the default angle resolution in radians. public static double DefaultAngleResolution_rad { get; set; } Property Value double DefaultLinearResolution_mm Gets or sets the default linear resolution in millimeters. public static double DefaultLinearResolution_mm { get; set; } Property Value double PolarResolution2dSource The provider of IPolarResolution2d. public Func PolarResolution2dSource { get; set; } Property Value Func XName Name for XML IO. public static string XName { get; } Property Value string Methods ClearCache() Clears all cached data. public void ClearCache() Dispose() Disposes of all resources. public void Dispose() Dispose(bool) Disposes of unmanaged resources. protected virtual void Dispose(bool disposing) Parameters disposing bool True if disposing, false if finalizing Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object GenStl(IPolarResolution2d) Generates a new STL. public Stl GenStl(IPolarResolution2d resolution) Parameters resolution IPolarResolution2d Polar resolution Returns Stl A newly created STL. GetInitStickConvex() Gets the initial stick convex representation of the profile. public InitStickConvex GetInitStickConvex() Returns InitStickConvex The initial stick convex representation GetSelectionName() Gets the display name for selection. public string GetSelectionName() Returns string The display name GetStl() Gets the STL mesh representation of the profile. public Stl GetStl() Returns Stl The STL mesh GetZrList() Gets the ZR contour list for the profile. public List GetZrList() Returns List The list of ZR pairs 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByContent() Updates the profile based on content changes. public void UpdateByContent()" + "summary": "Class AptProfile Namespace Hi.Milling.Cutters Assembly HiMech.dll Represents an APT (Automatically Programmed Tool) based profile for a milling cutter. This profile uses APT definitions to describe the cutter geometry. public class AptProfile : IShaperProfile, IMakeXmlSource, IAbstractNote, IGetZrList, IGenStl, IGetStl, IDuplicate, IGetSelectionName, IGetInitStickConvex, IVolumeRemover, IDisposable, IUpdateByContent, IClearCache, IPolarResolution2dSourceProperty Inheritance object AptProfile Implements IShaperProfile IMakeXmlSource IAbstractNote IGetZrList IGenStl IGetStl IDuplicate IGetSelectionName IGetInitStickConvex IVolumeRemover IDisposable IUpdateByContent IClearCache IPolarResolution2dSourceProperty Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods StlUtil.ToFaceDrawing(IGetStl) StlUtil.ToLineDrawing(IGetStl) StlUtil.ToSparkleLineDrawing(IGetStl) 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 AptProfile() Initializes a new instance of the AptProfile class. public AptProfile() AptProfile(IAptBased) Initializes a new instance of the AptProfile class. public AptProfile(IAptBased apt) Parameters apt IAptBased The APT-based object. AptProfile(XElement, string, IProgress) Initializes a new instance of the AptProfile class. public AptProfile(XElement src, string baseDirectory, IProgress progress) Parameters src XElement XML element containing the profile configuration. baseDirectory string The base directory for resolving relative paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. Properties AbstractNote Gets the abstract note from the APT definition. public string AbstractNote { get; } Property Value string Apt Gets or sets the APT-based definition for the profile. public IAptBased Apt { get; set; } Property Value IAptBased DefaultAngleResolution_rad Gets or sets the default angle resolution in radians. public static double DefaultAngleResolution_rad { get; set; } Property Value double DefaultLinearResolution_mm Gets or sets the default linear resolution in millimeters. public static double DefaultLinearResolution_mm { get; set; } Property Value double PolarResolution2dSource The provider of IPolarResolution2d. public Func PolarResolution2dSource { get; set; } Property Value Func XName Name for XML IO. public static string XName { get; } Property Value string Methods ClearCache() Clears all cached data. public void ClearCache() Dispose() Disposes of all resources. public void Dispose() Dispose(bool) Disposes of unmanaged resources. protected virtual void Dispose(bool disposing) Parameters disposing bool True if disposing, false if finalizing Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object GenStl(IPolarResolution2d) Generates a new STL. public Stl GenStl(IPolarResolution2d resolution) Parameters resolution IPolarResolution2d Polar resolution Returns Stl A newly created STL. GetInitStickConvex() Gets the initial stick convex representation of the profile. public InitStickConvex GetInitStickConvex() Returns InitStickConvex The initial stick convex representation GetSelectionName() Gets the display name for selection. public string GetSelectionName() Returns string The display name GetStl() Gets the STL mesh representation of the profile. public Stl GetStl() Returns Stl The STL mesh GetZrList() Gets the ZR contour list for the profile. public List GetZrList() Returns List The list of ZR pairs 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByContent() Updates the profile based on content changes. public void UpdateByContent()" }, "api/Hi.Milling.Cutters.ConstRatioProfile.html": { "href": "api/Hi.Milling.Cutters.ConstRatioProfile.html", @@ -2542,7 +2667,7 @@ "api/Hi.Milling.Cutters.CustomSpinningProfile.html": { "href": "api/Hi.Milling.Cutters.CustomSpinningProfile.html", "title": "Class CustomSpinningProfile | HiAPI-C# 2025", - "summary": "Class CustomSpinningProfile Namespace Hi.Milling.Cutters Assembly HiMech.dll Represents a custom spinning profile for a milling cutter. This profile allows for custom geometry to be used as the cutter profile. public class CustomSpinningProfile : IShaperProfile, IMakeXmlSource, IAbstractNote, IGetZrList, IGenStl, IGetStl, IDuplicate, IClearCache, IPolarResolution2dSourceProperty Inheritance object CustomSpinningProfile Implements IShaperProfile IMakeXmlSource IAbstractNote IGetZrList IGenStl IGetStl IDuplicate IClearCache IPolarResolution2dSourceProperty Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods StlUtil.ToFaceDrawing(IGetStl) StlUtil.ToLineDrawing(IGetStl) StlUtil.ToSparkleLineDrawing(IGetStl) 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 CustomSpinningProfile(IGetStl) Initializes a new instance of the CustomSpinningProfile class. public CustomSpinningProfile(IGetStl geom) Parameters geom IGetStl The geometry that defines the profile. CustomSpinningProfile(XElement, string, IProgress, object[]) Initializes a new instance of the CustomSpinningProfile class. public CustomSpinningProfile(XElement element, string baseDirectory, IProgress progress, object[] res) Parameters element XElement The XML element containing profile data. baseDirectory string The base directory for resolving relative paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. res object[] Additional resolution parameters. Properties AbstractNote Gets the abstract note describing the profile. public string AbstractNote { get; } Property Value string Geom Gets or sets the geometry that defines the profile. public IGetStl Geom { get; set; } Property Value IGetStl PolarResolution2dSource The provider of IPolarResolution2d. public Func PolarResolution2dSource { get; set; } Property Value Func XName Name for XML IO. public static string XName { get; } Property Value string Methods ClearCache() Clears any cached data. public void ClearCache() Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object GenStl(IPolarResolution2d) Generates a new STL. public Stl GenStl(IPolarResolution2d resolution) Parameters resolution IPolarResolution2d Polar resolution Returns Stl A newly created STL. GetStl() Gets the STL mesh representation of the profile. public Stl GetStl() Returns Stl The STL mesh GetZrList() Gets the ZR contour list for the profile. This method attempts to get the ZR list from various geometry types. public List GetZrList() Returns List The list of ZR pairs 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class CustomSpinningProfile Namespace Hi.Milling.Cutters Assembly HiMech.dll Represents a custom spinning profile for a milling cutter. This profile allows for custom geometry to be used as the cutter profile. public class CustomSpinningProfile : IShaperProfile, IMakeXmlSource, IAbstractNote, IGetZrList, IGenStl, IGetStl, IDuplicate, IClearCache, IPolarResolution2dSourceProperty Inheritance object CustomSpinningProfile Implements IShaperProfile IMakeXmlSource IAbstractNote IGetZrList IGenStl IGetStl IDuplicate IClearCache IPolarResolution2dSourceProperty Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods StlUtil.ToFaceDrawing(IGetStl) StlUtil.ToLineDrawing(IGetStl) StlUtil.ToSparkleLineDrawing(IGetStl) 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 CustomSpinningProfile(IGetStl) Initializes a new instance of the CustomSpinningProfile class. public CustomSpinningProfile(IGetStl geom) Parameters geom IGetStl The geometry that defines the profile. CustomSpinningProfile(XElement, string, IProgress, object[]) Initializes a new instance of the CustomSpinningProfile class. public CustomSpinningProfile(XElement element, string baseDirectory, IProgress progress, object[] res) Parameters element XElement The XML element containing profile data. baseDirectory string The base directory for resolving relative paths. progress IProgress Progress reporter for diagnostic messages emitted during construction. res object[] Additional resolution parameters. Properties AbstractNote Gets the abstract note describing the profile. public string AbstractNote { get; } Property Value string Geom Gets or sets the geometry that defines the profile. public IGetStl Geom { get; set; } Property Value IGetStl PolarResolution2dSource The provider of IPolarResolution2d. public Func PolarResolution2dSource { get; set; } Property Value Func XName Name for XML IO. public static string XName { get; } Property Value string Methods ClearCache() Clears any cached data. public void ClearCache() Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object GenStl(IPolarResolution2d) Generates a new STL. public Stl GenStl(IPolarResolution2d resolution) Parameters resolution IPolarResolution2d Polar resolution Returns Stl A newly created STL. GetStl() Gets the STL mesh representation of the profile. public Stl GetStl() Returns Stl The STL mesh GetZrList() Gets the ZR contour list for the profile. This method attempts to get the ZR list from various geometry types. public List GetZrList() Returns List The list of ZR pairs 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.Milling.Cutters.CutterUtil.html": { "href": "api/Hi.Milling.Cutters.CutterUtil.html", @@ -2577,7 +2702,7 @@ "api/Hi.Milling.Cutters.MillingCutter.html": { "href": "api/Hi.Milling.Cutters.MillingCutter.html", "title": "Class MillingCutter | HiAPI-C# 2025", - "summary": "Class MillingCutter Namespace Hi.Milling.Cutters Assembly HiMech.dll Represents a milling cutter with its geometric and physical properties. public class MillingCutter : ICutter, IGetSweptable, IAnchoredDisplayee, IGetFletchBuckle, IMakeXmlSource, IAbstractNote, IAnchoredCollidableStem, IAnchoredCollidableNode, IAnchoredCollidableBased, IDisposable, INameNote, IGetFluteHeight, IDisplayee, IExpandToBox3d, IUpdateByContent, IClearCache, IGetThermalLayerList, ITopo, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetAnchoredDisplayeeList, IDuplicate, IGetInitStickConvex, IVolumeRemover, IPolarResolution2d, IGetZrList Inheritance object MillingCutter Implements ICutter IGetSweptable IAnchoredDisplayee IGetFletchBuckle IMakeXmlSource IAbstractNote IAnchoredCollidableStem IAnchoredCollidableNode IAnchoredCollidableBased IDisposable INameNote IGetFluteHeight IDisplayee IExpandToBox3d IUpdateByContent IClearCache IGetThermalLayerList ITopo IGetAsmb IGetAnchor IGetTopoIndex IGetAnchoredDisplayeeList IDuplicate IGetInitStickConvex IVolumeRemover IPolarResolution2d IGetZrList Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) CutterUtil.GetCutterBodyCoolingArea_mm2(ICutter) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MillingTemperatureUtil.GetMaterial(IGetThermalLayerList, double) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The cutter can be solid end or insert end. The term “Flute” is the edge part of the solid end cutter or the full insert of the insert end body. The term “Shank” is the full part except for edge part (i.e. Flute) of the solid end cutter. Shank and Flute compose the full cutter. Constructors MillingCutter() Initializes a new instance of the MillingCutter class. public MillingCutter() MillingCutter(XElement, string, string, IProgress, object[]) Ctor. public MillingCutter(XElement src, string baseDirectory, string relFile, IProgress progress, object[] res) Parameters src XElement XML baseDirectory string Base directory path for resolving relative paths relFile string Relative file path progress IProgress Progress reporter for diagnostic messages emitted during construction. res object[] Additional optional resources Properties AbstractNote Gets a descriptive note or abstract about the object. public string AbstractNote { get; } Property Value string AngleResolution_deg AngleResolution_deg. Call ClearCache() after setting the property. public double AngleResolution_deg { get; set; } Property Value double AngleResolution_rad AngleResolution_rad. Call ClearCache() after setting the property. public double AngleResolution_rad { get; set; } Property Value double CoatingLayerList Gets or sets the list of coating thermal layers. The sequence starts from surface, i.e. from outer to inner. public List CoatingLayerList { get; set; } Property Value List CollidableName Gets the name of the collidable object. public string CollidableName { get; } Property Value string CutterTip Gets the anchor point at the cutter tip. public Anchor CutterTip { get; } Property Value Anchor DefaultAngleResolution_rad Gets or sets the default angle resolution in radians. public static double DefaultAngleResolution_rad { get; set; } Property Value double DefaultLinearResolution_mm Gets or sets the default linear resolution in millimeters. public static double DefaultLinearResolution_mm { get; set; } Property Value double DefaultStlLongitudeNum Gets or sets the default number of longitude lines for STL generation. public static int DefaultStlLongitudeNum { get; set; } Property Value int EffectiveCuttingDiameter_mm Cutting Diameter for calculate cutting speed. public double EffectiveCuttingDiameter_mm { get; } Property Value double ExposedHeight_mm Has to be simultanous with ExposedCutterHeight_mm. public double ExposedHeight_mm { get; set; } Property Value double FluteContourTray Gets or sets the flute contour tray that defines the flute geometry. public IContourTray FluteContourTray { get; set; } Property Value IContourTray FluteHeight_mm Gets the height of the flute in millimeters. public double FluteHeight_mm { get; } Property Value double FluteMaterial Material of the flute. public CutterMaterial FluteMaterial { get; set; } Property Value CutterMaterial FluteMaterialFile Gets or sets the file path for the flute material definition. public string FluteMaterialFile { get; set; } Property Value string FullHeight_mm Gets the full height of the cutter in millimeters. public double FullHeight_mm { get; } Property Value double HoneRadius_mm Gets or sets the hone radius in millimeters. public double HoneRadius_mm { get; set; } Property Value double HoneRadius_um Gets the hone radius in micrometers. public double HoneRadius_um { get; set; } Property Value double InnerBeamProfile Gets or sets the inner beam profile. public IShaperProfile InnerBeamProfile { get; set; } Property Value IShaperProfile Remarks InnerBeamProfile may be dependent on ShaperProfile. InnerBeamProfile.ClearCache() and initialization must be performed after ShaperProfile.ClearCache() and initialization. InsertNum Gets or sets Insert Number. The property should be used Only if IntegralMode is InsertEnd. However, there is no exception mechanism. public int InsertNum { get; set; } Property Value int InsertThickness_mm Thickness of an insert. Only available if the cutter is InsertEnd. public double InsertThickness_mm { get; set; } Property Value double IntegralMode Gets or sets the main integral mode of the cutter. public MillingCutter.IntegralModeEnum IntegralMode { get; set; } Property Value MillingCutter.IntegralModeEnum IsSpinningCutter Is cutter spining when machining. public bool IsSpinningCutter { get; } Property Value bool Is cutter spining when machining. LinearResolution_mm LinearResolution_mm. Call ClearCache() after setting the property. public double LinearResolution_mm { get; set; } Property Value double MillingCutterOptLimit public MillingCutterOptOption MillingCutterOptLimit { get; set; } Property Value MillingCutterOptOption Name Name. public string Name { get; set; } Property Value string Note Note. public string Note { get; set; } Property Value string ReliefAngle_deg Gets or sets the relief angle in degrees. public double ReliefAngle_deg { get; set; } Property Value double ReliefAngle_rad Gets or sets the relief angle in radians. public double ReliefAngle_rad { get; set; } Property Value double ShankMassAssignmentMode Gets or sets the mass assignment mode for the shank. public MillingCutter.MassAssignmentMode ShankMassAssignmentMode { get; set; } Property Value MillingCutter.MassAssignmentMode ShankMass_g Gets or sets the cutter shank mass in grams. If IntegralMode is SolidEnd, the mass is the full cutter mass. If IntegralMode is InsertEnd, the mass is the shank mass. since the flute mass is assumed small and dynamic depends on the CWE (Cutter-Workpiece-Engagement). public double ShankMass_g { get; set; } Property Value double ShankMaterial Material of the shank. It should be the same with FluteMaterial if the cutter is SolidEnd. public IStructureMaterial ShankMaterial { get; set; } Property Value IStructureMaterial ShankMaterialFile Gets or sets the file path for the shank material definition. It should be the same with FluteMaterialFile if the cutter is SolidEnd. public string ShankMaterialFile { get; set; } Property Value string ShaperProfile Gets or sets the shaper profile that defines the cutter's shape. public IShaperProfile ShaperProfile { get; set; } Property Value IShaperProfile ShaperTopoBrick cutable part of cutter. the part cut the workpiece if overlapped. public ITopoBrick ShaperTopoBrick { get; } Property Value ITopoBrick SingleInsertMass_g Gets or sets the total inserts' mass in grams. The property should be used Only if IntegralMode is InsertEnd. However, there is no exception mechanism. public double SingleInsertMass_g { get; set; } Property Value double StrutTopoBrick uncutable part of cutter. the part triggers collision to workpiece if overlapped. public ITopoBrick StrutTopoBrick { get; } Property Value ITopoBrick SumInsertMass_g Gets the total mass of all inserts in grams calculated from SingleInsertMass_g * InsertNum. public double SumInsertMass_g { get; } Property Value double SurfaceMaterial Gets the surface material of the cutter. public CutterMaterial SurfaceMaterial { get; } Property Value CutterMaterial UpperBeamGeom Gets the upper beam geometry of the cutter. public IGetStl UpperBeamGeom { get; set; } Property Value IGetStl UpperBeamPolarResolution2dSource Gets or sets the provider for upper beam polar resolution. public Func UpperBeamPolarResolution2dSource { get; set; } Property Value Func XName Name for XML IO. public static string XName { get; } Property Value string Methods ClearCache() Clears all cached data. public void ClearCache() ClearThermalLayerListCache() Clears the thermal layer list cache. public void ClearThermalLayerListCache() Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredCollidableNode() Gets the anchored collidable node associated with this object. public IAnchoredCollidableNode GetAnchoredCollidableNode() Returns IAnchoredCollidableNode The anchored collidable node. GetAnchoredCollidables() Gets the list of anchored collidable nodes contained by this stem. public List GetAnchoredCollidables() Returns List A list of anchored collidable nodes. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetCutterFluteDisplayee() Gets the cutter flute displayee for visualization. public IAnchoredDisplayee GetCutterFluteDisplayee() Returns IAnchoredDisplayee The anchored displayee for the cutter flute. GetDeflectionPara_umdN(out double, out double) (L^3)/(3EI). Where deflection = F(L^3)/(3EI). for cantiliver beam. public void GetDeflectionPara_umdN(out double bendingPara_umdN, out double zDeflectionPara_umdN) Parameters bendingPara_umdN double zDeflectionPara_umdN double Exceptions Exception GetFletchBuckle() Get fletch buckle anchor. the anchor that generally connect to fixed part such as ground and triggering(motor)-side. public Anchor GetFletchBuckle() Returns Anchor buckle anchor GetFluteThermalLayerList() Flute material layer From outer(i.e. surface) to inner. public List GetFluteThermalLayerList() Returns List GetGuessShankMass_g() Get guess mass by volume and density. The volume is count from InnerBeamProfile and UpperBeamGeom. public double GetGuessShankMass_g() Returns double GetInitStickConvex() Get InitStickConvex. public InitStickConvex GetInitStickConvex() Returns InitStickConvex InitStickConvex GetMinimumUncutChipThickness_mm(ICuttingPara) Gets the minimum uncut chip thickness in millimeters for the specified cutting parameters. The value is dependent on HoneRadius_um. public double GetMinimumUncutChipThickness_mm(ICuttingPara millingPara) Parameters millingPara ICuttingPara The cutting parameters to use for calculation. Returns double The minimum uncut chip thickness in millimeters. GetMinimumUncutChipThickness_um(ICuttingPara) Gets the minimum uncut chip thickness in micrometers for the specified cutting parameters. public double GetMinimumUncutChipThickness_um(ICuttingPara millingPara) Parameters millingPara ICuttingPara The cutting parameters to use for calculation. Returns double The minimum uncut chip thickness in micrometers. GetNobleAnchoredDisplayee() Gets a noble anchored displayee for visualization. public AnchoredDisplayee GetNobleAnchoredDisplayee() Returns AnchoredDisplayee The anchored displayee. GetSweptable(double) Get Sweptable. public Sweptable GetSweptable(double fractionTolerance) Parameters fractionTolerance double The fraction tolerance for the sweptable. Returns Sweptable Sweptable GetTestBallCutter() Creates a test ball cutter. public static MillingCutter GetTestBallCutter() Returns MillingCutter A new ball cutter instance for testing. GetTestBottomCutter() Creates a test bottom cutter. public static MillingCutter GetTestBottomCutter() Returns MillingCutter A new bottom cutter instance for testing. GetTestFreeCutter() Creates a test free cutter. public static MillingCutter GetTestFreeCutter() Returns MillingCutter A new free cutter instance for testing. GetThermalLayerList() Gets the list of thermal layers. public List GetThermalLayerList() Returns List List of thermal layers. GetZrList() Gets a list of Z-R coordinate pairs. public List GetZrList() Returns List A list of PairZr objects representing Z-R coordinates. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByContent() Updates the object based on its current content. public void UpdateByContent()" + "summary": "Class MillingCutter Namespace Hi.Milling.Cutters Assembly HiMech.dll Represents a milling cutter with its geometric and physical properties. public class MillingCutter : ICutter, IGetSweptable, IAnchoredDisplayee, IGetFletchBuckle, IMakeXmlSource, IAbstractNote, IAnchoredCollidableStem, IAnchoredCollidableNode, IAnchoredCollidableBased, IDisposable, INameNote, IGetFluteHeight, IDisplayee, IExpandToBox3d, IUpdateByContent, IClearCache, IGetThermalLayerList, ITopo, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetAnchoredDisplayeeList, IDuplicate, IGetInitStickConvex, IVolumeRemover, IPolarResolution2d, IGetZrList Inheritance object MillingCutter Implements ICutter IGetSweptable IAnchoredDisplayee IGetFletchBuckle IMakeXmlSource IAbstractNote IAnchoredCollidableStem IAnchoredCollidableNode IAnchoredCollidableBased IDisposable INameNote IGetFluteHeight IDisplayee IExpandToBox3d IUpdateByContent IClearCache IGetThermalLayerList ITopo IGetAsmb IGetAnchor IGetTopoIndex IGetAnchoredDisplayeeList IDuplicate IGetInitStickConvex IVolumeRemover IPolarResolution2d IGetZrList Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) CutterUtil.GetCutterBodyCoolingArea_mm2(ICutter) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) MillingTemperatureUtil.GetMaterial(IGetThermalLayerList, double) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The cutter can be solid end or insert end. The term “Flute” is the edge part of the solid end cutter or the full insert of the insert end body. The term “Shank” is the full part except for edge part (i.e. Flute) of the solid end cutter. Shank and Flute compose the full cutter. Constructors MillingCutter() Initializes a new instance of the MillingCutter class. public MillingCutter() MillingCutter(XElement, string, string, IProgress, object[]) Ctor. public MillingCutter(XElement src, string baseDirectory, string relFile, IProgress progress, object[] res) Parameters src XElement XML baseDirectory string Base directory path for resolving relative paths relFile string Relative file path progress IProgress Progress reporter for diagnostic messages emitted during construction. res object[] Additional optional resources Properties AbstractNote Gets a descriptive note or abstract about the object. public string AbstractNote { get; } Property Value string AngleResolution_deg AngleResolution_deg. Call ClearCache() after setting the property. public double AngleResolution_deg { get; set; } Property Value double AngleResolution_rad AngleResolution_rad. Call ClearCache() after setting the property. public double AngleResolution_rad { get; set; } Property Value double CoatingLayerList Gets or sets the list of coating thermal layers. The sequence starts from surface, i.e. from outer to inner. public List CoatingLayerList { get; set; } Property Value List CollidableName Gets the name of the collidable object. public string CollidableName { get; } Property Value string CutterTip Gets the anchor point at the cutter tip. public Anchor CutterTip { get; } Property Value Anchor DefaultAngleResolution_rad Gets or sets the default angle resolution in radians. public static double DefaultAngleResolution_rad { get; set; } Property Value double DefaultLinearResolution_mm Gets or sets the default linear resolution in millimeters. public static double DefaultLinearResolution_mm { get; set; } Property Value double DefaultStlLongitudeNum Gets or sets the default number of longitude lines for STL generation. public static int DefaultStlLongitudeNum { get; set; } Property Value int EffectiveCuttingDiameter_mm Cutting Diameter for calculate cutting speed. Pure computation — deliberately uncached (see Hi.Milling.Cutters.MillingCutter.SideRakeAngle_rad); per-step session paths read the value from MillingToolPhysicsPack. public double EffectiveCuttingDiameter_mm { get; } Property Value double ExposedHeight_mm Has to be simultanous with ExposedCutterHeight_mm. public double ExposedHeight_mm { get; set; } Property Value double FluteHeight_mm Gets the height of the flute in millimeters. public double FluteHeight_mm { get; } Property Value double FluteMaterial Material of the flute. public CutterMaterial FluteMaterial { get; set; } Property Value CutterMaterial FluteMaterialFile Gets or sets the file path for the flute material definition. public string FluteMaterialFile { get; set; } Property Value string Fluting Gets or sets the cutter's fluting — the whole set of flute contours, either one shared baseline repeated evenly around the cutter (UniformFluting) or one contour defined per flute (FreeFluting). public IFluting Fluting { get; set; } Property Value IFluting FullHeight_mm Gets the full height of the cutter in millimeters. public double FullHeight_mm { get; } Property Value double HoneRadius_mm Gets or sets the hone radius in millimeters. public double HoneRadius_mm { get; set; } Property Value double HoneRadius_um Gets the hone radius in micrometers. public double HoneRadius_um { get; set; } Property Value double InnerBeamProfile Gets or sets the inner beam profile. public IShaperProfile InnerBeamProfile { get; set; } Property Value IShaperProfile Remarks InnerBeamProfile may be dependent on ShaperProfile. InnerBeamProfile.ClearCache() and initialization must be performed after ShaperProfile.ClearCache() and initialization. InsertNum Gets or sets Insert Number. The property should be used Only if IntegralMode is InsertEnd. However, there is no exception mechanism. public int InsertNum { get; set; } Property Value int InsertThickness_mm Thickness of an insert. Only available if the cutter is InsertEnd. public double InsertThickness_mm { get; set; } Property Value double IntegralMode Gets or sets the main integral mode of the cutter. public MillingCutter.IntegralModeEnum IntegralMode { get; set; } Property Value MillingCutter.IntegralModeEnum IsSpinningCutter Is cutter spining when machining. public bool IsSpinningCutter { get; } Property Value bool Is cutter spining when machining. LinearResolution_mm LinearResolution_mm. Call ClearCache() after setting the property. public double LinearResolution_mm { get; set; } Property Value double MillingCutterOptLimit public MillingCutterOptOption MillingCutterOptLimit { get; set; } Property Value MillingCutterOptOption Name Name. public string Name { get; set; } Property Value string Note Note. public string Note { get; set; } Property Value string ReliefAngle_deg Gets or sets the relief angle in degrees. public double ReliefAngle_deg { get; set; } Property Value double ReliefAngle_rad Gets or sets the relief angle in radians. public double ReliefAngle_rad { get; set; } Property Value double ShankMassAssignmentMode Gets or sets the mass assignment mode for the shank. public MillingCutter.MassAssignmentMode ShankMassAssignmentMode { get; set; } Property Value MillingCutter.MassAssignmentMode ShankMass_g Gets or sets the cutter shank mass in grams. If IntegralMode is SolidEnd, the mass is the full cutter mass. If IntegralMode is InsertEnd, the mass is the shank mass. since the flute mass is assumed small and dynamic depends on the CWE (Cutter-Workpiece-Engagement). public double ShankMass_g { get; set; } Property Value double ShankMaterial Material of the shank. It should be the same with FluteMaterial if the cutter is SolidEnd. public IStructureMaterial ShankMaterial { get; set; } Property Value IStructureMaterial ShankMaterialFile Gets or sets the file path for the shank material definition. It should be the same with FluteMaterialFile if the cutter is SolidEnd. public string ShankMaterialFile { get; set; } Property Value string ShaperProfile Gets or sets the shaper profile that defines the cutter's shape. public IShaperProfile ShaperProfile { get; set; } Property Value IShaperProfile ShaperTopoBrick cutable part of cutter. the part cut the workpiece if overlapped. public ITopoBrick ShaperTopoBrick { get; } Property Value ITopoBrick SingleInsertMass_g Gets or sets the total inserts' mass in grams. The property should be used Only if IntegralMode is InsertEnd. However, there is no exception mechanism. public double SingleInsertMass_g { get; set; } Property Value double StrutTopoBrick uncutable part of cutter. the part triggers collision to workpiece if overlapped. public ITopoBrick StrutTopoBrick { get; } Property Value ITopoBrick SumInsertMass_g Gets the total mass of all inserts in grams calculated from SingleInsertMass_g * InsertNum. public double SumInsertMass_g { get; } Property Value double SurfaceMaterial Gets the surface material of the cutter. public CutterMaterial SurfaceMaterial { get; } Property Value CutterMaterial UpperBeamGeom Gets the upper beam geometry of the cutter. public IGetStl UpperBeamGeom { get; set; } Property Value IGetStl UpperBeamPolarResolution2dSource Gets or sets the provider for upper beam polar resolution. public Func UpperBeamPolarResolution2dSource { get; set; } Property Value Func XName Name for XML IO. public static string XName { get; } Property Value string Methods ClearCache() Clears all cached data. public void ClearCache() ClearThermalLayerListCache() Clears the thermal layer list cache. public void ClearThermalLayerListCache() Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredCollidableNode() Gets the anchored collidable node associated with this object. public IAnchoredCollidableNode GetAnchoredCollidableNode() Returns IAnchoredCollidableNode The anchored collidable node. GetAnchoredCollidables() Gets the list of anchored collidable nodes contained by this stem. public List GetAnchoredCollidables() Returns List A list of anchored collidable nodes. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetCutterFluteDisplayee() Gets the cutter flute displayee for visualization. public IAnchoredDisplayee GetCutterFluteDisplayee() Returns IAnchoredDisplayee The anchored displayee for the cutter flute. GetDeflectionPara_umdN(out double, out double) (L^3)/(3EI). Where deflection = F(L^3)/(3EI). for cantiliver beam. public void GetDeflectionPara_umdN(out double bendingPara_umdN, out double zDeflectionPara_umdN) Parameters bendingPara_umdN double zDeflectionPara_umdN double Exceptions Exception GetFletchBuckle() Get fletch buckle anchor. the anchor that generally connect to fixed part such as ground and triggering(motor)-side. public Anchor GetFletchBuckle() Returns Anchor buckle anchor GetFluteThermalLayerList() Flute material layer From outer(i.e. surface) to inner. public List GetFluteThermalLayerList() Returns List GetGuessShankMass_g() Get guess mass by volume and density. The volume is count from InnerBeamProfile and UpperBeamGeom. public double GetGuessShankMass_g() Returns double GetInitStickConvex() Get InitStickConvex. public InitStickConvex GetInitStickConvex() Returns InitStickConvex InitStickConvex GetMinimumUncutChipThickness_mm(ICuttingPara) Gets the minimum uncut chip thickness in millimeters for the specified cutting parameters. The value is dependent on HoneRadius_um. Pure computation — deliberately uncached (see GetStagnantAngle_rad(ICuttingPara)); session paths read the value from MillingToolPhysicsPack. public double GetMinimumUncutChipThickness_mm(ICuttingPara millingPara) Parameters millingPara ICuttingPara The cutting parameters to use for calculation. Returns double The minimum uncut chip thickness in millimeters. GetMinimumUncutChipThickness_um(ICuttingPara) Gets the minimum uncut chip thickness in micrometers for the specified cutting parameters. public double GetMinimumUncutChipThickness_um(ICuttingPara millingPara) Parameters millingPara ICuttingPara The cutting parameters to use for calculation. Returns double The minimum uncut chip thickness in micrometers. GetNobleAnchoredDisplayee() Gets a noble anchored displayee for visualization. public AnchoredDisplayee GetNobleAnchoredDisplayee() Returns AnchoredDisplayee The anchored displayee. GetSweptable(double) Get Sweptable. public Sweptable GetSweptable(double fractionTolerance) Parameters fractionTolerance double The fraction tolerance for the sweptable. Returns Sweptable Sweptable GetTestBallCutter() Creates a test ball cutter. public static MillingCutter GetTestBallCutter() Returns MillingCutter A new ball cutter instance for testing. GetTestBottomCutter() Creates a test bottom cutter. public static MillingCutter GetTestBottomCutter() Returns MillingCutter A new bottom cutter instance for testing. GetTestFreeCutter() Creates a test free cutter. public static MillingCutter GetTestFreeCutter() Returns MillingCutter A new free cutter instance for testing. GetThermalLayerList() Gets the list of thermal layers. public List GetThermalLayerList() Returns List List of thermal layers. GetUpperBeamGeometryIssues() Collects human-readable configuration issues on the upper-beam / shank geometry — the settings that used to surface only as an opaque per-step NullReferenceException cascade inside the thermal physics (e.g. an ExtendedCylinder beam whose FullLength is below the flute height, so the shank solid inverts and Hi.Milling.Cutters.MillingCutter.GetShankThermalZrList() cannot build). Returns (Id, Message) pairs following the structured-id convention of the IMessage channel (e.g. Cutter-UpperBeam–BelowFluteHeight); empty when no upper beam is configured (a legal state — physics runs without a shank) or the beam is consistent. Shared by the physics runner (tool-change ConfigurationError) and the web API (post-edit validation warnings). public List<(string Id, string Message)> GetUpperBeamGeometryIssues() Returns List<(string FilterTitle, string FileExtension)> GetZrList() Gets a list of Z-R coordinate pairs. public List GetZrList() Returns List A list of PairZr objects representing Z-R coordinates. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByContent() Updates the object based on its current content. public void UpdateByContent()" }, "api/Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum.html": { "href": "api/Hi.Milling.Cutters.MillingCutterEditorDisplayee.ShapeModeEnum.html", @@ -2622,7 +2747,7 @@ "api/Hi.Milling.Engagements.LayerMillingEngagement.html": { "href": "api/Hi.Milling.Engagements.LayerMillingEngagement.html", "title": "Class LayerMillingEngagement | HiAPI-C# 2025", - "summary": "Class LayerMillingEngagement Namespace Hi.Milling.Engagements Assembly HiMech.dll Milling Engagement. public class LayerMillingEngagement : IWriteBin Inheritance object LayerMillingEngagement Implements IWriteBin 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 LayerMillingEngagement() Initializes a new instance of the LayerMillingEngagement class. public LayerMillingEngagement() LayerMillingEngagement(SortedList, List>, SeqPair, double, double, bool) Initializes a new instance of the LayerMillingEngagement class with specified parameters. public LayerMillingEngagement(SortedList zToDzList, List> contoursOnToolRunningCoordinate, SeqPair seqOnToolRunningCoordinate, double bottomRadius, double resolution, bool isSweeping) Parameters zToDzList SortedList The Z to dZ list. contoursOnToolRunningCoordinate List> The contours on tool running coordinate. seqOnToolRunningCoordinate SeqPair The sequence on tool running coordinate. bottomRadius double The bottom radius. resolution double The resolution. isSweeping bool Indicates whether this is a sweeping engagement. LayerMillingEngagement(BinaryReader) Ctor. public LayerMillingEngagement(BinaryReader reader) Parameters reader BinaryReader Properties AvgTouchedPeriodRatio Gets the average touched period ratio public double AvgTouchedPeriodRatio { get; } Property Value double BottomEngagements Gets or sets the bottom engagements. Maps R values to engagement layers public SortedList BottomEngagements { get; set; } Property Value SortedList BottomEngagementsByteArray Gets or sets the bottom engagements as a byte array for serialization public byte[] BottomEngagementsByteArray { get; set; } Property Value byte[] RInterval Gets or sets the R interval, which is equivalent to the Resolution public double RInterval { get; set; } Property Value double Resolution Gets or sets the resolution value for engagement calculations in millimeters public double Resolution { get; set; } Property Value double SideEngagements Gets or sets the side engagements. Maps Z values to engagement layers public SortedList SideEngagements { get; set; } Property Value SortedList SideEngagementsByteArray Gets or sets the side engagements as a byte array for serialization public byte[] SideEngagementsByteArray { get; set; } Property Value byte[] StepIndex Step index. For database saving. [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int StepIndex { get; set; } Property Value int Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. WriteBin(BinaryWriter) Writes the object's data to a binary stream. public void WriteBin(BinaryWriter writer) Parameters writer BinaryWriter The binary writer to write to" + "summary": "Class LayerMillingEngagement Namespace Hi.Milling.Engagements Assembly HiMech.dll Milling Engagement. public class LayerMillingEngagement : IWriteBin Inheritance object LayerMillingEngagement Implements IWriteBin 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 LayerMillingEngagement() Initializes a new instance of the LayerMillingEngagement class. public LayerMillingEngagement() LayerMillingEngagement(BinaryReader) Ctor. public LayerMillingEngagement(BinaryReader reader) Parameters reader BinaryReader Properties AvgTouchedPeriodRatio Gets the average touched period ratio public double AvgTouchedPeriodRatio { get; } Property Value double BottomEngagements Gets or sets the bottom engagements. Maps R values to engagement layers public SortedList BottomEngagements { get; set; } Property Value SortedList BottomEngagementsByteArray Gets or sets the bottom engagements as a byte array for serialization public byte[] BottomEngagementsByteArray { get; set; } Property Value byte[] RInterval Gets or sets the R interval, which is equivalent to the Resolution public double RInterval { get; set; } Property Value double Resolution Gets or sets the resolution value for engagement calculations in millimeters public double Resolution { get; set; } Property Value double SideEngagements Gets or sets the side engagements. Maps Z values to engagement layers public SortedList SideEngagements { get; set; } Property Value SortedList SideEngagementsByteArray Gets or sets the side engagements as a byte array for serialization public byte[] SideEngagementsByteArray { get; set; } Property Value byte[] StepIndex Step index. For database saving. [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int StepIndex { get; set; } Property Value int Methods ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. WriteBin(BinaryWriter) Writes the object's data to a binary stream. public void WriteBin(BinaryWriter writer) Parameters writer BinaryWriter The binary writer to write to" }, "api/Hi.Milling.Engagements.MillingEngagementUtil.html": { "href": "api/Hi.Milling.Engagements.MillingEngagementUtil.html", @@ -2637,52 +2762,57 @@ "api/Hi.Milling.FluteContours.ConstHelixSideContour.html": { "href": "api/Hi.Milling.FluteContours.ConstHelixSideContour.html", "title": "Class ConstHelixSideContour | HiAPI-C# 2025", - "summary": "Class ConstHelixSideContour Namespace Hi.Milling.FluteContours Assembly HiMech.dll Represents a constant helix side contour for milling cutters. public class ConstHelixSideContour : ISideContour, IWorkingContour, IExpandToBox3d, IMakeXmlSource, IUpdateByContent, IClearCache, IEquatable Inheritance object ConstHelixSideContour Implements ISideContour IWorkingContour IExpandToBox3d IMakeXmlSource IUpdateByContent IClearCache IEquatable Inherited Members object.Equals(object, object) 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) FluteContourUtil.GetDrawing(ISideContour, out Drawing, out Drawing, out NativeTopoStld) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ConstHelixSideContour(IGetZrList) Initializes a new instance of the ConstHelixSideContour class. public ConstHelixSideContour(IGetZrList zrListHost) Parameters zrListHost IGetZrList The Z-R list host. ConstHelixSideContour(double, double, IGetZrList) Initializes a new instance of the ConstHelixSideContour class. public ConstHelixSideContour(double helix_rad, double radialRakeAngle_rad, IGetZrList zrListHost) Parameters helix_rad double The helix angle in radians. radialRakeAngle_rad double The radial rake angle in radians. zrListHost IGetZrList The Z-R list host. ConstHelixSideContour(XElement, string, IGetZrList) Initializes a new instance of the ConstHelixSideContour class from XML. public ConstHelixSideContour(XElement src, string baseDirectory, IGetZrList zrListHost) Parameters src XElement The XML element containing the configuration. baseDirectory string The base directory for resolving relative paths. zrListHost IGetZrList The Z-R list host. Properties Helix_deg Helix_rad in degree. public double Helix_deg { get; set; } Property Value double Helix_rad Helix angle in radian. public double Helix_rad { get; set; } Property Value double KeyRange Gets the key range of the flute contour. public Range KeyRange { get; } Property Value Range Remarks For ISideContour, this represents the Z-value range (height range) For IBottomContour, this represents the R-value range (radial range) RadialRakeAngle_deg Gets or sets the radial rake angle in degrees. public double RadialRakeAngle_deg { get; set; } Property Value double RadialRakeAngle_rad Gets or sets the radial rake angle in radians. public double RadialRakeAngle_rad { get; set; } Property Value double RadialReliefAngle_deg Gets or sets the radial relief angle in degrees. public double RadialReliefAngle_deg { get; set; } Property Value double RadialReliefAngle_rad Gets or sets the radial relief angle in radians. public double RadialReliefAngle_rad { get; set; } Property Value double XName Name for XML IO. public static string XName { get; } Property Value string ZrListHost Gets or sets the Z-R list host. public IGetZrList ZrListHost { get; set; } Property Value IGetZrList Methods ClearCache() Clears the cached data. public void ClearCache() Duplicate(IGetZrList) Creates a duplicate of this contour with a new Z-R list host. public IWorkingContour Duplicate(IGetZrList zrListHost) Parameters zrListHost IGetZrList The new Z-R list host. Returns IWorkingContour A duplicate of this contour. Equals(ConstHelixSideContour) Indicates whether the current object is equal to another object of the same type. public bool Equals(ConstHelixSideContour other) Parameters other ConstHelixSideContour An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. GetSpanContourPosList() Gets a list of span contour positions that define the working contour geometry. public List GetSpanContourPosList() Returns List A list of SpanContourPos4d objects representing the contour geometry Remarks The positions are ordered: For ISideContour, positions are ordered by ascending Z values For IBottomContour, positions are ordered by ascending R values Note: Future implementation may use List> for block flute support. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByContent() Updates the object based on its current content. public void UpdateByContent()" + "summary": "Class ConstHelixSideContour Namespace Hi.Milling.FluteContours Assembly HiMech.dll Represents a constant helix side contour for milling cutters. public class ConstHelixSideContour : ISideContour, IWorkingContour, IExpandToBox3d, IMakeXmlSource, IUpdateByContent, IClearCache, IEquatable Inheritance object ConstHelixSideContour Implements ISideContour IWorkingContour IExpandToBox3d IMakeXmlSource IUpdateByContent IClearCache IEquatable Inherited Members object.Equals(object, object) 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) FluteContourUtil.GetDrawing(ISideContour, out Drawing, out Drawing, out NativeTopoStl3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors ConstHelixSideContour(IGetZrList) Initializes a new instance of the ConstHelixSideContour class. public ConstHelixSideContour(IGetZrList zrListHost) Parameters zrListHost IGetZrList The Z-R list host. ConstHelixSideContour(double, double, IGetZrList) Initializes a new instance of the ConstHelixSideContour class. public ConstHelixSideContour(double helix_rad, double radialRakeAngle_rad, IGetZrList zrListHost) Parameters helix_rad double The helix angle in radians. radialRakeAngle_rad double The radial rake angle in radians. zrListHost IGetZrList The Z-R list host. ConstHelixSideContour(XElement, string, IGetZrList) Initializes a new instance of the ConstHelixSideContour class from XML. public ConstHelixSideContour(XElement src, string baseDirectory, IGetZrList zrListHost) Parameters src XElement The XML element containing the configuration. baseDirectory string The base directory for resolving relative paths. zrListHost IGetZrList The Z-R list host. Properties Helix_deg Helix_rad in degree. public double Helix_deg { get; set; } Property Value double Helix_rad Helix angle in radian. public double Helix_rad { get; set; } Property Value double KeyRange Gets the key range of the flute contour. public Range KeyRange { get; } Property Value Range Remarks For ISideContour, this represents the Z-value range (height range) For IBottomContour, this represents the R-value range (radial range) RadialRakeAngle_deg Gets or sets the radial rake angle in degrees. public double RadialRakeAngle_deg { get; set; } Property Value double RadialRakeAngle_rad Gets or sets the radial rake angle in radians. public double RadialRakeAngle_rad { get; set; } Property Value double RadialReliefAngle_deg Gets or sets the radial relief angle in degrees. public double RadialReliefAngle_deg { get; set; } Property Value double RadialReliefAngle_rad Gets or sets the radial relief angle in radians. public double RadialReliefAngle_rad { get; set; } Property Value double XName Name for XML IO. public static string XName { get; } Property Value string ZrListHost Gets or sets the Z-R list host. public IGetZrList ZrListHost { get; set; } Property Value IGetZrList Methods ClearCache() Clears the cached data. public void ClearCache() Duplicate(IGetZrList) Creates a duplicate of this contour with a new Z-R list host. public IWorkingContour Duplicate(IGetZrList zrListHost) Parameters zrListHost IGetZrList The new Z-R list host. Returns IWorkingContour A duplicate of this contour. Equals(ConstHelixSideContour) Indicates whether the current object is equal to another object of the same type. public bool Equals(ConstHelixSideContour other) Parameters other ConstHelixSideContour An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. GetSpanContourPosList() Gets a list of span contour positions that define the working contour geometry. public List GetSpanContourPosList() Returns List A list of SpanContourPos4d objects representing the contour geometry Remarks The positions are ordered: For ISideContour, positions are ordered by ascending Z values For IBottomContour, positions are ordered by ascending R values Note: Future implementation may use List> for block flute support. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByContent() Updates the object based on its current content. public void UpdateByContent()" }, "api/Hi.Milling.FluteContours.FluteContour.html": { "href": "api/Hi.Milling.FluteContours.FluteContour.html", "title": "Class FluteContour | HiAPI-C# 2025", - "summary": "Class FluteContour Namespace Hi.Milling.FluteContours Assembly HiMech.dll Represents a flute contour for milling tools. public class FluteContour : IMakeXmlSource, IDisposable, IClearCache Inheritance object FluteContour Implements IMakeXmlSource IDisposable IClearCache 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 FluteContour() Initializes a new instance of the FluteContour class public FluteContour() FluteContour(FluteContour, double) Initializes a new instance of the FluteContour class with a source contour and shift angle public FluteContour(FluteContour src, double shiftAngle_rad) Parameters src FluteContour The source flute contour to copy from shiftAngle_rad double The shift angle in radians FluteContour(XElement, string, IProgress, object[]) Initializes a new instance of the FluteContour class from XML data public FluteContour(XElement src, string baseDirectory, IProgress progress, object[] res) Parameters src XElement The source XML element baseDirectory string The base directory for resolving relative paths progress IProgress Progress reporter for diagnostic messages emitted during construction. res object[] Additional resources for initialization Properties BaseBottomContour Gets or sets the base bottom contour of the flute. This represents the original bottom profile before any transformations. public IWorkingContour BaseBottomContour { get; set; } Property Value IWorkingContour BaseSideContour Gets or sets the base side contour of the flute. This represents the original side profile before any transformations. public IWorkingContour BaseSideContour { get; set; } Property Value IWorkingContour SetupAngle_deg Gets or sets the setup angle in degrees. This is a convenience property that converts ShiftAngle_rad to degrees. public double SetupAngle_deg { get; set; } Property Value double ShiftAngle_rad Gets or sets the shift angle in radians. This angle represents the angular offset of the flute from its base position. public double ShiftAngle_rad { get; set; } Property Value double ShiftedBottomContour Gets the shifted bottom contour of the flute. This is the bottom profile after applying the shift angle transformation. public ShiftedWorkingContour ShiftedBottomContour { get; } Property Value ShiftedWorkingContour ShiftedSideContour Gets the shifted side contour of the flute. This is the side profile after applying the shift angle transformation. public ShiftedWorkingContour ShiftedSideContour { get; } Property Value ShiftedWorkingContour XName Gets the XML name for serialization public static string XName { get; } Property Value string Methods ClearCache() Clears any cached data in the flute contour public void ClearCache() Dispose() Releases all resources used by the FluteContour public void Dispose() Dispose(bool) Releases the unmanaged resources used by the FluteContour and optionally releases the managed resources protected virtual void Dispose(bool disposing) Parameters disposing bool true to release both managed and unmanaged resources; false to release only unmanaged resources Duplicate(IGetZrList) Creates a duplicate of this flute contour public FluteContour Duplicate(IGetZrList zrListHost) Parameters zrListHost IGetZrList The host containing Z-R list information Returns FluteContour A new instance of FluteContour with the same properties ExpandToBox3d(Box3d) Expands the given bounding box to include this flute contour public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The bounding box to expand 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByContent() Updates the internal state based on the current content public void UpdateByContent()" + "summary": "Class FluteContour Namespace Hi.Milling.FluteContours Assembly HiMech.dll Represents a flute contour for milling tools. public class FluteContour : IMakeXmlSource, IDisposable, IClearCache Inheritance object FluteContour Implements IMakeXmlSource IDisposable IClearCache 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 FluteContour() Initializes a new instance of the FluteContour class public FluteContour() FluteContour(FluteContour, double) Initializes a new instance of the FluteContour class with a source contour and shift angle public FluteContour(FluteContour src, double shiftAngle_rad) Parameters src FluteContour The source flute contour to copy from shiftAngle_rad double The shift angle in radians FluteContour(XElement, string, IProgress, object[]) Initializes a new instance of the FluteContour class from XML data public FluteContour(XElement src, string baseDirectory, IProgress progress, object[] res) Parameters src XElement The source XML element baseDirectory string The base directory for resolving relative paths progress IProgress Progress reporter for diagnostic messages emitted during construction. res object[] Additional resources for initialization Properties BaseBottomContour Gets or sets the base bottom contour of the flute. This represents the original bottom profile before any transformations. public IWorkingContour BaseBottomContour { get; set; } Property Value IWorkingContour BaseSideContour Gets or sets the base side contour of the flute. This represents the original side profile before any transformations. public IWorkingContour BaseSideContour { get; set; } Property Value IWorkingContour SetupAngle_deg Gets or sets the setup angle in degrees. This is a convenience property that converts ShiftAngle_rad to degrees. public double SetupAngle_deg { get; set; } Property Value double ShiftAngle_rad Gets or sets the shift angle in radians. This angle represents the angular offset of the flute from its base position. public double ShiftAngle_rad { get; set; } Property Value double ShiftedBottomContour Gets the shifted bottom contour of the flute. This is the bottom profile after applying the shift angle transformation. public ShiftedWorkingContour ShiftedBottomContour { get; } Property Value ShiftedWorkingContour ShiftedSideContour Gets the shifted side contour of the flute. This is the side profile after applying the shift angle transformation. public ShiftedWorkingContour ShiftedSideContour { get; } Property Value ShiftedWorkingContour XName Gets the XML name for serialization public static string XName { get; } Property Value string Methods ClearCache() Clears any cached data in the flute contour public void ClearCache() Dispose() Releases all resources used by the FluteContour public void Dispose() Dispose(bool) Releases the unmanaged resources used by the FluteContour and optionally releases the managed resources protected virtual void Dispose(bool disposing) Parameters disposing bool true to release both managed and unmanaged resources; false to release only unmanaged resources Duplicate(IGetZrList) Creates a duplicate of this flute contour public FluteContour Duplicate(IGetZrList zrListHost) Parameters zrListHost IGetZrList The host containing Z-R list information Returns FluteContour A new instance of FluteContour with the same properties ExpandToBox3d(Box3d) Expands the given bounding box to include this flute contour public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The bounding box to expand 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByContent() Updates the internal state based on the current content public void UpdateByContent()" }, "api/Hi.Milling.FluteContours.FluteContourUtil.html": { "href": "api/Hi.Milling.FluteContours.FluteContourUtil.html", "title": "Class FluteContourUtil | HiAPI-C# 2025", - "summary": "Class FluteContourUtil Namespace Hi.Milling.FluteContours Assembly HiMech.dll Provides utility methods for working with flute contours in milling tools. public static class FluteContourUtil Inheritance object FluteContourUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetDrawing(ISideContour, out Drawing, out Drawing, out NativeTopoStld) Generates drawing representations for a side contour. public static void GetDrawing(this ISideContour src, out Drawing faceDrawing, out Drawing lineDrawing, out NativeTopoStld topoStl) Parameters src ISideContour The source side contour to generate drawings from faceDrawing Drawing Output parameter that receives the face drawing representation lineDrawing Drawing Output parameter that receives the line drawing representation topoStl NativeTopoStld Output parameter that receives the STL topology representation Remarks This method creates three different visual representations of the contour: A face drawing showing the surface A line drawing showing the edges An STL representation for 3D visualization The method uses a constant inner radius ratio of 0.4 and calculates appropriate angles for the radial rake to create a smooth transition between the outer and inner surfaces." + "summary": "Class FluteContourUtil Namespace Hi.Milling.FluteContours Assembly HiMech.dll Provides utility methods for working with flute contours in milling tools. public static class FluteContourUtil Inheritance object FluteContourUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods GetDrawing(ISideContour, out Drawing, out Drawing, out NativeTopoStl3d) Generates drawing representations for a side contour. public static void GetDrawing(this ISideContour src, out Drawing faceDrawing, out Drawing lineDrawing, out NativeTopoStl3d topoStl) Parameters src ISideContour The source side contour to generate drawings from faceDrawing Drawing Output parameter that receives the face drawing representation lineDrawing Drawing Output parameter that receives the line drawing representation topoStl NativeTopoStl3d Output parameter that receives the STL topology representation Remarks This method creates three different visual representations of the contour: A face drawing showing the surface A line drawing showing the edges An STL representation for 3D visualization The method uses a constant inner radius ratio of 0.4 and calculates appropriate angles for the radial rake to create a smooth transition between the outer and inner surfaces." }, - "api/Hi.Milling.FluteContours.FreeContourTray.html": { - "href": "api/Hi.Milling.FluteContours.FreeContourTray.html", - "title": "Class FreeContourTray | HiAPI-C# 2025", - "summary": "Class FreeContourTray Namespace Hi.Milling.FluteContours Assembly HiMech.dll Represents a container for multiple flute contours with free arrangement. public class FreeContourTray : IContourTray, IMakeXmlSource, IExpandToBox3d, IUpdateByContent, IClearCache, IGetFluteNum Inheritance object FreeContourTray Implements IContourTray IMakeXmlSource IExpandToBox3d IUpdateByContent IClearCache IGetFluteNum 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 This class provides a flexible way to manage multiple flute contours: Supports XML serialization for data persistence Allows arbitrary arrangement of flute contours Implements IContourTray for standard contour tray functionality Constructors FreeContourTray() Initializes a new instance of the FreeContourTray class public FreeContourTray() FreeContourTray(XElement, string, IProgress, object[]) Initializes a new instance of the FreeContourTray class from XML data public FreeContourTray(XElement src, string baseDirectory, IProgress progress, object[] res) Parameters src XElement The source XML element containing the contour tray data baseDirectory string The base directory for resolving relative paths progress IProgress Progress reporter for diagnostic messages emitted during construction. res object[] Additional resources for initialization Properties ContourList Gets or sets the list of flute contours in this tray public List ContourList { get; set; } Property Value List XName Gets the XML name for serialization public static string XName { get; } Property Value string XmlSourceFile public string XmlSourceFile { get; set; } Property Value string Methods ClearCache() Clears any cached data held by the implementing object. public void ClearCache() Duplicate(IGetZrList) Creates a duplicate of this contour tray public IContourTray Duplicate(IGetZrList zrListHost) Parameters zrListHost IGetZrList The host containing Z-R list information Returns IContourTray A new instance of FreeContourTray with the same properties ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetFluteContourList() Gets the list of flute contours contained in this tray. public List GetFluteContourList() Returns List A list of flute contours. GetFluteNum() Gets the number of flutes in the contour tray. public int GetFluteNum() 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByContent() Updates the object based on its current content. public void UpdateByContent()" + "api/Hi.Milling.FluteContours.FreeFluting.html": { + "href": "api/Hi.Milling.FluteContours.FreeFluting.html", + "title": "Class FreeFluting | HiAPI-C# 2025", + "summary": "Class FreeFluting Namespace Hi.Milling.FluteContours Assembly HiMech.dll A milling cutter's fluting in which every flute is defined individually — each flute carries its own contour, so spacing, helix and rake need not repeat. Use UniformFluting when one baseline contour repeated evenly around the cutter is enough. public class FreeFluting : IFluting, IMakeXmlSource, IExpandToBox3d, IUpdateByContent, IClearCache, IGetFluteNum Inheritance object FreeFluting Implements IFluting IMakeXmlSource IExpandToBox3d IUpdateByContent IClearCache IGetFluteNum 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 This class provides a flexible way to manage multiple flute contours: Supports XML serialization for data persistence Allows arbitrary arrangement of flute contours Implements IFluting for standard fluting functionality Constructors FreeFluting() Initializes a new instance of the FreeFluting class public FreeFluting() FreeFluting(XElement, string, IProgress, object[]) Initializes a new instance of the FreeFluting class from XML data public FreeFluting(XElement src, string baseDirectory, IProgress progress, object[] res) Parameters src XElement The source XML element containing the fluting data baseDirectory string The base directory for resolving relative paths progress IProgress Progress reporter for diagnostic messages emitted during construction. res object[] Additional resources for initialization Properties ContourList Gets or sets the list of flute contours in this fluting public List ContourList { get; set; } Property Value List XName Gets the XML name for serialization public static string XName { get; } Property Value string XmlSourceFile public string XmlSourceFile { get; set; } Property Value string Methods ClearCache() Clears any cached data held by the implementing object. public void ClearCache() Duplicate(IGetZrList) Creates a duplicate of this fluting public IFluting Duplicate(IGetZrList zrListHost) Parameters zrListHost IGetZrList The host containing Z-R list information Returns IFluting A new instance of FreeFluting with the same properties ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetFluteContourList() Gets the list of flute contours that make up this fluting. public List GetFluteContourList() Returns List A list of flute contours. GetFluteNum() Gets the number of flutes. public int GetFluteNum() 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByContent() Updates the object based on its current content. public void UpdateByContent()" + }, + "api/Hi.Milling.FluteContours.FreeformBottomContour.html": { + "href": "api/Hi.Milling.FluteContours.FreeformBottomContour.html", + "title": "Class FreeformBottomContour | HiAPI-C# 2025", + "summary": "Class FreeformBottomContour Namespace Hi.Milling.FluteContours Assembly HiMech.dll Represents a freeform bottom contour for milling tools, allowing arbitrary contour shapes. public class FreeformBottomContour : IBottomContour, IWorkingContour, IExpandToBox3d, IMakeXmlSource, IUpdateByContent, IClearCache, IEquatable Inheritance object FreeformBottomContour Implements IBottomContour IWorkingContour IExpandToBox3d IMakeXmlSource IUpdateByContent IClearCache IEquatable Inherited Members object.Equals(object, object) 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 This class provides a flexible way to define bottom contours with custom shapes: Implements IBottomContour for basic bottom contour functionality Supports XML serialization for data persistence Maintains a list of contour positions ordered by R-coordinate (radius) Constructors FreeformBottomContour() Initializes a new instance of the FreeformBottomContour class public FreeformBottomContour() FreeformBottomContour(XElement, string) Initializes a new instance of the FreeformBottomContour class from XML data public FreeformBottomContour(XElement src, string baseDirectory) Parameters src XElement The source XML element containing the contour data baseDirectory string The base directory for resolving relative paths Properties KeyRange Gets the R-value range (radial range) of the contour public Range KeyRange { get; } Property Value Range Remarks The range is calculated from the first and last points in the SpanContourPosList, which are ordered by R-coordinate (radius) SpanContourPosList Gets or sets the list of contour positions ordered by R-coordinate (radius) public List SpanContourPosList { get; set; } Property Value List Remarks Each position in the list represents a point on the contour with its associated geometric and angular properties XName Gets the XML name for serialization public static string XName { get; } Property Value string Methods ClearCache() Clears the cached key range value public void ClearCache() Duplicate(IGetZrList) Creates a duplicate of this freeform bottom contour public IWorkingContour Duplicate(IGetZrList zrListHost) Parameters zrListHost IGetZrList The host containing Z-R list information Returns IWorkingContour A new instance of FreeformBottomContour with the same properties Equals(FreeformBottomContour) Determines whether the specified FreeformBottomContour is equal to the current FreeformBottomContour public bool Equals(FreeformBottomContour other) Parameters other FreeformBottomContour The FreeformBottomContour to compare with the current FreeformBottomContour Returns bool true if the specified FreeformBottomContour is equal to the current FreeformBottomContour; otherwise, false Equals(object) Determines whether the specified object is equal to the current object public override bool Equals(object obj) Parameters obj object The object to compare with the current object Returns bool true if the specified object is equal to the current object; otherwise, false ExpandToBox3d(Box3d) Expands the given bounding box to include this contour public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The bounding box to expand GetHashCode() Returns a hash code for this instance public override int GetHashCode() Returns int A hash code value based on the contour positions GetSpanContourPosList() Gets the list of span contour positions that define the contour geometry public List GetSpanContourPosList() Returns List The list of contour positions ordered by R-coordinate (radius) 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByContent() Updates the contour's internal state based on its current content public void UpdateByContent()" }, "api/Hi.Milling.FluteContours.FreeformSideContour.html": { "href": "api/Hi.Milling.FluteContours.FreeformSideContour.html", "title": "Class FreeformSideContour | HiAPI-C# 2025", - "summary": "Class FreeformSideContour Namespace Hi.Milling.FluteContours Assembly HiMech.dll Represents a freeform side contour for milling tools, allowing arbitrary contour shapes. public class FreeformSideContour : ISideContour, IWorkingContour, IExpandToBox3d, IMakeXmlSource, IUpdateByContent, IClearCache, IEquatable Inheritance object FreeformSideContour Implements ISideContour IWorkingContour IExpandToBox3d IMakeXmlSource IUpdateByContent IClearCache IEquatable Inherited Members object.Equals(object, object) 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) FluteContourUtil.GetDrawing(ISideContour, out Drawing, out Drawing, out NativeTopoStld) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks This class provides a flexible way to define side contours with custom shapes: Implements ISideContour for basic side contour functionality Supports XML serialization for data persistence Maintains a list of contour positions ordered by Z-coordinate Constructors FreeformSideContour() Initializes a new instance of the FreeformSideContour class public FreeformSideContour() FreeformSideContour(XElement, string) Initializes a new instance of the FreeformSideContour class from XML data public FreeformSideContour(XElement src, string baseDirectory) Parameters src XElement The source XML element containing the contour data baseDirectory string The base directory for resolving relative paths Properties KeyRange Gets the Z-value range (height range) of the contour public Range KeyRange { get; } Property Value Range Remarks The range is calculated from the first and last points in the SpanContourPosList, which are ordered by Z-coordinate SpanContourPosList Gets or sets the list of contour positions ordered by Z-coordinate public List SpanContourPosList { get; set; } Property Value List Remarks Each position in the list represents a point on the contour with its associated geometric and angular properties XName Gets the XML name for serialization public static string XName { get; } Property Value string Methods ClearCache() Clears the cached key range value public void ClearCache() Duplicate(IGetZrList) Creates a duplicate of this freeform side contour public IWorkingContour Duplicate(IGetZrList zrListHost) Parameters zrListHost IGetZrList The host containing Z-R list information Returns IWorkingContour A new instance of FreeformSideContour with the same properties Equals(FreeformSideContour) Determines whether the specified FreeformSideContour is equal to the current FreeformSideContour public bool Equals(FreeformSideContour other) Parameters other FreeformSideContour The FreeformSideContour to compare with the current FreeformSideContour Returns bool true if the specified FreeformSideContour is equal to the current FreeformSideContour; otherwise, false Equals(object) Determines whether the specified object is equal to the current object public override bool Equals(object obj) Parameters obj object The object to compare with the current object Returns bool true if the specified object is equal to the current object; otherwise, false ExpandToBox3d(Box3d) Expands the given bounding box to include this contour public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The bounding box to expand GetHashCode() Returns a hash code for this instance public override int GetHashCode() Returns int A hash code value based on the contour positions GetSpanContourPosList() Gets the list of span contour positions that define the contour geometry public List GetSpanContourPosList() Returns List The list of contour positions ordered by Z-coordinate 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByContent() Updates the contour's internal state based on its current content public void UpdateByContent()" + "summary": "Class FreeformSideContour Namespace Hi.Milling.FluteContours Assembly HiMech.dll Represents a freeform side contour for milling tools, allowing arbitrary contour shapes. public class FreeformSideContour : ISideContour, IWorkingContour, IExpandToBox3d, IMakeXmlSource, IUpdateByContent, IClearCache, IEquatable Inheritance object FreeformSideContour Implements ISideContour IWorkingContour IExpandToBox3d IMakeXmlSource IUpdateByContent IClearCache IEquatable Inherited Members object.Equals(object, object) 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) FluteContourUtil.GetDrawing(ISideContour, out Drawing, out Drawing, out NativeTopoStl3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks This class provides a flexible way to define side contours with custom shapes: Implements ISideContour for basic side contour functionality Supports XML serialization for data persistence Maintains a list of contour positions ordered by Z-coordinate Constructors FreeformSideContour() Initializes a new instance of the FreeformSideContour class public FreeformSideContour() FreeformSideContour(XElement, string) Initializes a new instance of the FreeformSideContour class from XML data public FreeformSideContour(XElement src, string baseDirectory) Parameters src XElement The source XML element containing the contour data baseDirectory string The base directory for resolving relative paths Properties KeyRange Gets the Z-value range (height range) of the contour public Range KeyRange { get; } Property Value Range Remarks The range is calculated from the first and last points in the SpanContourPosList, which are ordered by Z-coordinate SpanContourPosList Gets or sets the list of contour positions ordered by Z-coordinate public List SpanContourPosList { get; set; } Property Value List Remarks Each position in the list represents a point on the contour with its associated geometric and angular properties XName Gets the XML name for serialization public static string XName { get; } Property Value string Methods ClearCache() Clears the cached key range value public void ClearCache() Duplicate(IGetZrList) Creates a duplicate of this freeform side contour public IWorkingContour Duplicate(IGetZrList zrListHost) Parameters zrListHost IGetZrList The host containing Z-R list information Returns IWorkingContour A new instance of FreeformSideContour with the same properties Equals(FreeformSideContour) Determines whether the specified FreeformSideContour is equal to the current FreeformSideContour public bool Equals(FreeformSideContour other) Parameters other FreeformSideContour The FreeformSideContour to compare with the current FreeformSideContour Returns bool true if the specified FreeformSideContour is equal to the current FreeformSideContour; otherwise, false Equals(object) Determines whether the specified object is equal to the current object public override bool Equals(object obj) Parameters obj object The object to compare with the current object Returns bool true if the specified object is equal to the current object; otherwise, false ExpandToBox3d(Box3d) Expands the given bounding box to include this contour public void ExpandToBox3d(Box3d dst) Parameters dst Box3d The bounding box to expand GetHashCode() Returns a hash code for this instance public override int GetHashCode() Returns int A hash code value based on the contour positions GetSpanContourPosList() Gets the list of span contour positions that define the contour geometry public List GetSpanContourPosList() Returns List The list of contour positions ordered by Z-coordinate 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByContent() Updates the contour's internal state based on its current content public void UpdateByContent()" }, "api/Hi.Milling.FluteContours.IBottomContour.html": { "href": "api/Hi.Milling.FluteContours.IBottomContour.html", "title": "Interface IBottomContour | HiAPI-C# 2025", "summary": "Interface IBottomContour Namespace Hi.Milling.FluteContours Assembly HiMech.dll Represents a bottom flute contour for milling tools. public interface IBottomContour : IWorkingContour, IMakeXmlSource, IExpandToBox3d, IClearCache Inherited Members IWorkingContour.KeyRange IWorkingContour.GetSpanContourPosList() IWorkingContour.Duplicate(IGetZrList) IMakeXmlSource.MakeXmlSource(string, string, bool) IExpandToBox3d.ExpandToBox3d(Box3d) IClearCache.ClearCache() 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 bottom contour defines the cutting geometry at the bottom of the tool: Implements IWorkingContour for basic contour functionality Uses R-axis values (radius) as the key range for radial operations Provides geometry for bottom cutting operations in milling tools" }, - "api/Hi.Milling.FluteContours.IContourTray.html": { - "href": "api/Hi.Milling.FluteContours.IContourTray.html", - "title": "Interface IContourTray | HiAPI-C# 2025", - "summary": "Interface IContourTray Namespace Hi.Milling.FluteContours Assembly HiMech.dll Interface for a container that holds multiple flute contours. public interface IContourTray : IMakeXmlSource, IExpandToBox3d, IUpdateByContent, IClearCache, IGetFluteNum Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) IExpandToBox3d.ExpandToBox3d(Box3d) IUpdateByContent.UpdateByContent() IClearCache.ClearCache() IGetFluteNum.GetFluteNum() 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 Duplicate(IGetZrList) Creates a duplicate of this contour tray. IContourTray Duplicate(IGetZrList zrListHost) Parameters zrListHost IGetZrList The host containing Z-R list information. Returns IContourTray A new instance of IContourTray with the same properties. GetFluteContourList() Gets the list of flute contours contained in this tray. List GetFluteContourList() Returns List A list of flute contours." - }, "api/Hi.Milling.FluteContours.IFluteNumSourceProperty.html": { "href": "api/Hi.Milling.FluteContours.IFluteNumSourceProperty.html", "title": "Interface IFluteNumSourceProperty | HiAPI-C# 2025", "summary": "Interface IFluteNumSourceProperty Namespace Hi.Milling.FluteContours Assembly HiMech.dll Interface that requiring a FluteNumSource property. public interface IFluteNumSourceProperty 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 FluteNumSource Gets or sets a delegate that returns the current flute number. Func FluteNumSource { get; set; } Property Value Func" }, + "api/Hi.Milling.FluteContours.IFluting.html": { + "href": "api/Hi.Milling.FluteContours.IFluting.html", + "title": "Interface IFluting | HiAPI-C# 2025", + "summary": "Interface IFluting Namespace Hi.Milling.FluteContours Assembly HiMech.dll A milling cutter's fluting: the complete set of flute contours that do the cutting. Either one shared baseline repeated evenly around the cutter (UniformFluting) or one individually defined contour per flute (FreeFluting) — every flute is definable on its own. “Fluting” is the machining noun for a cutter's flute geometry and carries no size of its own, so it describes the flute set of a 4 mm end mill exactly as well as that of a large face mill. public interface IFluting : IMakeXmlSource, IExpandToBox3d, IUpdateByContent, IClearCache, IGetFluteNum Inherited Members IMakeXmlSource.MakeXmlSource(string, string, bool) IExpandToBox3d.ExpandToBox3d(Box3d) IUpdateByContent.UpdateByContent() IClearCache.ClearCache() IGetFluteNum.GetFluteNum() 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 Duplicate(IGetZrList) Creates a duplicate of this fluting. IFluting Duplicate(IGetZrList zrListHost) Parameters zrListHost IGetZrList The host containing Z-R list information. Returns IFluting A new instance of IFluting with the same properties. GetFluteContourList() Gets the list of flute contours that make up this fluting. List GetFluteContourList() Returns List A list of flute contours." + }, "api/Hi.Milling.FluteContours.IGetFluteNum.html": { "href": "api/Hi.Milling.FluteContours.IGetFluteNum.html", "title": "Interface IGetFluteNum | HiAPI-C# 2025", - "summary": "Interface IGetFluteNum Namespace Hi.Milling.FluteContours Assembly HiMech.dll Provides a method to get the number of flutes. public interface IGetFluteNum 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 GetFluteNum() Gets the number of flutes in the contour tray. int GetFluteNum() Returns int" + "summary": "Interface IGetFluteNum Namespace Hi.Milling.FluteContours Assembly HiMech.dll Provides a method to get the number of flutes. public interface IGetFluteNum 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 GetFluteNum() Gets the number of flutes. int GetFluteNum() Returns int" }, "api/Hi.Milling.FluteContours.ISideContour.html": { "href": "api/Hi.Milling.FluteContours.ISideContour.html", "title": "Interface ISideContour | HiAPI-C# 2025", - "summary": "Interface ISideContour Namespace Hi.Milling.FluteContours Assembly HiMech.dll Represents a side flute contour for milling tools. public interface ISideContour : IWorkingContour, IMakeXmlSource, IExpandToBox3d, IClearCache Inherited Members IWorkingContour.KeyRange IWorkingContour.GetSpanContourPosList() IWorkingContour.Duplicate(IGetZrList) IMakeXmlSource.MakeXmlSource(string, string, bool) IExpandToBox3d.ExpandToBox3d(Box3d) IClearCache.ClearCache() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) FluteContourUtil.GetDrawing(ISideContour, out Drawing, out Drawing, out NativeTopoStld) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The side contour defines the cutting geometry along the side of the tool: Implements IWorkingContour for basic contour functionality Uses Z-axis values as the key range for height-based operations Provides geometry for side cutting operations in milling tools" + "summary": "Interface ISideContour Namespace Hi.Milling.FluteContours Assembly HiMech.dll Represents a side flute contour for milling tools. public interface ISideContour : IWorkingContour, IMakeXmlSource, IExpandToBox3d, IClearCache Inherited Members IWorkingContour.KeyRange IWorkingContour.GetSpanContourPosList() IWorkingContour.Duplicate(IGetZrList) IMakeXmlSource.MakeXmlSource(string, string, bool) IExpandToBox3d.ExpandToBox3d(Box3d) IClearCache.ClearCache() Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) FluteContourUtil.GetDrawing(ISideContour, out Drawing, out Drawing, out NativeTopoStl3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Remarks The side contour defines the cutting geometry along the side of the tool: Implements IWorkingContour for basic contour functionality Uses Z-axis values as the key range for height-based operations Provides geometry for side cutting operations in milling tools" }, "api/Hi.Milling.FluteContours.IWorkingContour.html": { "href": "api/Hi.Milling.FluteContours.IWorkingContour.html", @@ -2709,15 +2839,15 @@ "title": "Class SpanContourPos4d | HiAPI-C# 2025", "summary": "Class SpanContourPos4d Namespace Hi.Milling.FluteContours Assembly HiMech.dll Represents a position in 4D space (r, theta, z, radial angle) for contour spans public class SpanContourPos4d : IAdditionOperators, IMultiplyOperators, IDivisionOperators, ICsvRowIo Inheritance object SpanContourPos4d Implements IAdditionOperators IMultiplyOperators IDivisionOperators ICsvRowIo 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 SpanContourPos4d() Initializes a new instance of the SpanContourPos4d class public SpanContourPos4d() SpanContourPos4d(Polar3d, double) Initializes a new instance of the SpanContourPos4d class with specified polar coordinates and radial angle public SpanContourPos4d(Polar3d polar, double radialAngle_rad) Parameters polar Polar3d The polar coordinates radialAngle_rad double The radial angle in radians SpanContourPos4d(SpanContourPos4d) Initializes a new instance of the SpanContourPos4d class by copying another instance public SpanContourPos4d(SpanContourPos4d src) Parameters src SpanContourPos4d The source instance to copy from Properties CsvText Gets or sets the CSV text representation of this instance public string CsvText { get; set; } Property Value string CsvTitleText Gets the CSV title text for this instance public string CsvTitleText { get; } Property Value string Polar Gets or sets the polar coordinates (r, theta, z) public Polar3d Polar { get; set; } Property Value Polar3d RadialAngle_deg Gets or sets the radial angle in degrees public double RadialAngle_deg { get; set; } Property Value double RadialAngle_rad Gets or sets the radial angle in radians. The radial angle is the angle between surface and radial line. The radial line is the line vertical to the z-axis for side flute or vertical to the r-axis for bottom flute. public double RadialAngle_rad { get; set; } Property Value double StaticCsvTitleText Gets the static CSV title text for the class public static string StaticCsvTitleText { get; } Property Value string Operators operator +(SpanContourPos4d, SpanContourPos4d) Plus. public static SpanContourPos4d operator +(SpanContourPos4d a, SpanContourPos4d b) Parameters a SpanContourPos4d a b SpanContourPos4d b Returns SpanContourPos4d ContourSurfacePos4d(a.Polar+b.Polar,a.RadialAngle_rad+b.RadialAngle_rad) operator /(SpanContourPos4d, double) Get a new object from a scaled by 1/d. public static SpanContourPos4d operator /(SpanContourPos4d a, double d) Parameters a SpanContourPos4d a d double denominator Returns SpanContourPos4d result operator *(SpanContourPos4d, double) Scale a by s. public static SpanContourPos4d operator *(SpanContourPos4d a, double s) Parameters a SpanContourPos4d value s double scale Returns SpanContourPos4d ContourSurfacePos4d(a.Polar * s, a.RadialAngle_rad * s) operator -(SpanContourPos4d, SpanContourPos4d) Plus. public static SpanContourPos4d operator -(SpanContourPos4d a, SpanContourPos4d b) Parameters a SpanContourPos4d a b SpanContourPos4d b Returns SpanContourPos4d ContourSurfacePos4d(a.Polar - b.Polar, a.RadialAngle_rad - b.RadialAngle_rad)" }, - "api/Hi.Milling.FluteContours.UniformContourTray.html": { - "href": "api/Hi.Milling.FluteContours.UniformContourTray.html", - "title": "Class UniformContourTray | HiAPI-C# 2025", - "summary": "Class UniformContourTray Namespace Hi.Milling.FluteContours Assembly HiMech.dll Represents a uniform contour tray for milling tool flutes. public class UniformContourTray : IContourTray, IMakeXmlSource, IExpandToBox3d, IGetFluteNum, IUpdateByContent, IClearCache Inheritance object UniformContourTray Implements IContourTray IMakeXmlSource IExpandToBox3d IGetFluteNum IUpdateByContent IClearCache 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 UniformContourTray() Initializes a new instance of the UniformContourTray class. public UniformContourTray() UniformContourTray(XElement, string, IProgress, object[]) Ctor. public UniformContourTray(XElement src, string baseDirectory, IProgress progress, object[] res) Parameters src XElement XML baseDirectory string Base directory path for resolving relative paths progress IProgress Progress reporter for diagnostic messages emitted during construction. res object[] Additional optional resources Properties BaselineContourShiftAngle_deg Gets or sets the baseline contour shift angle in degrees. public double BaselineContourShiftAngle_deg { get; set; } Property Value double BaselineOneContour Gets or sets the baseline contour. public FluteContour BaselineOneContour { get; set; } Property Value FluteContour TrackNum Gets or sets the number of tracks in the contour tray. public int TrackNum { get; set; } Property Value int XName Name for XML IO. public static string XName { get; } Property Value string Methods ClearCache() Clears any cached data held by the implementing object. public void ClearCache() Duplicate(IGetZrList) Creates a duplicate of this contour tray with the specified ZR list host. public IContourTray Duplicate(IGetZrList zrListHost) Parameters zrListHost IGetZrList The ZR list host to use for the duplicate Returns IContourTray A new contour tray instance ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetFluteContourList() Gets the list of flute contours contained in this tray. public List GetFluteContourList() Returns List A list of flute contours. GetFluteNum() Gets the number of flutes. public int GetFluteNum() Returns int The number of flutes. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByContent() Updates the object based on its current content. public void UpdateByContent()" + "api/Hi.Milling.FluteContours.UniformFluting.html": { + "href": "api/Hi.Milling.FluteContours.UniformFluting.html", + "title": "Class UniformFluting | HiAPI-C# 2025", + "summary": "Class UniformFluting Namespace Hi.Milling.FluteContours Assembly HiMech.dll A milling cutter's fluting built from one shared baseline contour repeated evenly around the cutter: every flute has the same geometry, spaced at equal angles. Use FreeFluting when the flutes need to be defined individually. public class UniformFluting : IFluting, IMakeXmlSource, IExpandToBox3d, IGetFluteNum, IUpdateByContent, IClearCache Inheritance object UniformFluting Implements IFluting IMakeXmlSource IExpandToBox3d IGetFluteNum IUpdateByContent IClearCache 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 UniformFluting() Initializes a new instance of the UniformFluting class. public UniformFluting() UniformFluting(XElement, string, IProgress, object[]) Ctor. public UniformFluting(XElement src, string baseDirectory, IProgress progress, object[] res) Parameters src XElement XML baseDirectory string Base directory path for resolving relative paths progress IProgress Progress reporter for diagnostic messages emitted during construction. res object[] Additional optional resources Properties BaselineContourShiftAngle_deg Gets or sets the baseline contour shift angle in degrees. public double BaselineContourShiftAngle_deg { get; set; } Property Value double BaselineOneContour Gets or sets the baseline contour. public FluteContour BaselineOneContour { get; set; } Property Value FluteContour TrackNum Gets or sets the number of flutes this fluting repeats the baseline contour into. public int TrackNum { get; set; } Property Value int XName Name for XML IO. public static string XName { get; } Property Value string Methods ClearCache() Clears any cached data held by the implementing object. public void ClearCache() Duplicate(IGetZrList) Creates a duplicate of this fluting with the specified ZR list host. public IFluting Duplicate(IGetZrList zrListHost) Parameters zrListHost IGetZrList The ZR list host to use for the duplicate Returns IFluting A new fluting instance ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetFluteContourList() Gets the list of flute contours that make up this fluting. public List GetFluteContourList() Returns List A list of flute contours. GetFluteNum() Gets the number of flutes. public int GetFluteNum() Returns int The number of flutes. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByContent() Updates the object based on its current content. public void UpdateByContent()" }, "api/Hi.Milling.FluteContours.html": { "href": "api/Hi.Milling.FluteContours.html", "title": "Namespace Hi.Milling.FluteContours | HiAPI-C# 2025", - "summary": "Namespace Hi.Milling.FluteContours Classes ConstHelixSideContour Represents a constant helix side contour for milling cutters. FluteContour Represents a flute contour for milling tools. FluteContourUtil Provides utility methods for working with flute contours in milling tools. FreeContourTray Represents a container for multiple flute contours with free arrangement. FreeformSideContour Represents a freeform side contour for milling tools, allowing arbitrary contour shapes. ShiftedWorkingContour Represents a working contour that has been shifted by a specified angle. This class wraps another working contour and applies an angular transformation to it. SideContourDisplayee Represents a displayable side contour. SlideBottomContour Represents a slide bottom contour for milling cutters. SpanContourPos4d Represents a position in 4D space (r, theta, z, radial angle) for contour spans UniformContourTray Represents a uniform contour tray for milling tool flutes. Interfaces IBottomContour Represents a bottom flute contour for milling tools. IContourTray Interface for a container that holds multiple flute contours. IFluteNumSourceProperty Interface that requiring a FluteNumSource property. IGetFluteNum Provides a method to get the number of flutes. ISideContour Represents a side flute contour for milling tools. IWorkingContour Represents a working contour for cutting operations in milling tools. This interface is implemented by both side contours (ISideContour) and bottom contours (IBottomContour)." + "summary": "Namespace Hi.Milling.FluteContours Classes ConstHelixSideContour Represents a constant helix side contour for milling cutters. FluteContour Represents a flute contour for milling tools. FluteContourUtil Provides utility methods for working with flute contours in milling tools. FreeFluting A milling cutter's fluting in which every flute is defined individually — each flute carries its own contour, so spacing, helix and rake need not repeat. Use UniformFluting when one baseline contour repeated evenly around the cutter is enough. FreeformBottomContour Represents a freeform bottom contour for milling tools, allowing arbitrary contour shapes. FreeformSideContour Represents a freeform side contour for milling tools, allowing arbitrary contour shapes. ShiftedWorkingContour Represents a working contour that has been shifted by a specified angle. This class wraps another working contour and applies an angular transformation to it. SideContourDisplayee Represents a displayable side contour. SlideBottomContour Represents a slide bottom contour for milling cutters. SpanContourPos4d Represents a position in 4D space (r, theta, z, radial angle) for contour spans UniformFluting A milling cutter's fluting built from one shared baseline contour repeated evenly around the cutter: every flute has the same geometry, spaced at equal angles. Use FreeFluting when the flutes need to be defined individually. Interfaces IBottomContour Represents a bottom flute contour for milling tools. IFluteNumSourceProperty Interface that requiring a FluteNumSource property. IFluting A milling cutter's fluting: the complete set of flute contours that do the cutting. Either one shared baseline repeated evenly around the cutter (UniformFluting) or one individually defined contour per flute (FreeFluting) — every flute is definable on its own. “Fluting” is the machining noun for a cutter's flute geometry and carries no size of its own, so it describes the flute set of a 4 mm end mill exactly as well as that of a large face mill. IGetFluteNum Provides a method to get the number of flutes. ISideContour Represents a side flute contour for milling tools. IWorkingContour Represents a working contour for cutting operations in milling tools. This interface is implemented by both side contours (ISideContour) and bottom contours (IBottomContour)." }, "api/Hi.Milling.IGetDiameter.html": { "href": "api/Hi.Milling.IGetDiameter.html", @@ -2757,7 +2887,7 @@ "api/Hi.Milling.MillingTools.MillingTool.html": { "href": "api/Hi.Milling.MillingTools.MillingTool.html", "title": "Class MillingTool | HiAPI-C# 2025", - "summary": "Class MillingTool Namespace Hi.Milling.MillingTools Assembly HiMech.dll Represents a central stick milling tool that combines a holder and a cutter. public class MillingTool : IMachiningTool, IDisplayee, IExpandToBox3d, ITopo, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetAnchoredDisplayeeList, IGetFletchBuckle, IMakeXmlSource, IAbstractNote, IDuplicate, IClearCache, IGetFluteNum Inheritance object MillingTool Implements IMachiningTool IDisplayee IExpandToBox3d ITopo IGetAsmb IGetAnchor IGetTopoIndex IGetAnchoredDisplayeeList IGetFletchBuckle IMakeXmlSource IAbstractNote IDuplicate IClearCache IGetFluteNum Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) MillingToolUtil.GetFullH(IMachiningTool) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) 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 MillingTool() Ctor. public MillingTool() MillingTool(XElement, string, string, IProgress) Initializes a new instance of the MillingTool class. public MillingTool(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement The XML element containing the tool configuration. baseDirectory string The base directory for resolving relative paths. relFile string The relative file path. progress IProgress Progress reporter for diagnostic messages emitted during construction. Properties AbstractNote Gets an abstract note describing the tool's dimensions and cutter. public string AbstractNote { get; } Property Value string Asmb Gets the assembly containing the tool components. public Asmb Asmb { get; } Property Value Asmb Cutter Gets the cutting tool. public ICutter Cutter { get; set; } Property Value ICutter CutterFile Gets or sets the file path of the cutter. public string CutterFile { get; set; } Property Value string ExposedCutterBendingPara_umdN Gets or sets the parameter for exposed cutter bending in micrometers per Newton. public double ExposedCutterBendingPara_umdN { get; } Property Value double ExposedCutterHeight_mm Gets or sets the exposed cutter height in millimeters. public double ExposedCutterHeight_mm { get; set; } Property Value double ExposedCutterZDeflectionPara_umdN Gets or sets the parameter for exposed cutter Z-axis deflection in micrometers per Newton. public double ExposedCutterZDeflectionPara_umdN { get; } Property Value double Holder Gets or sets the tool holder. public IHolder Holder { get; set; } Property Value IHolder HolderFile Gets or sets the holder file path. public string HolderFile { get; set; } Property Value string Note Gets or sets a note for this machining tool. public string Note { get; set; } Property Value string ObservationAnchor Gets the tool anchor reference point. public Anchor ObservationAnchor { get; } Property Value Anchor ObservationAnchorReference Gets the tool observation anchor reference point. public MillingToolAnchorReference ObservationAnchorReference { get; set; } Property Value MillingToolAnchorReference ObservationHeightFromToolTip Gets the tool observation point relative to the reference. public double ObservationHeightFromToolTip { get; } Property Value double ObservationRingRadius_mm Obsoleted. Gets the tool observation reference point. public double ObservationRingRadius_mm { get; set; } Property Value double PreservedDistanceBetweenFluteAndSpindleNose_mm Gets or sets the preserved distance between flute and clamp in millimeters. public double PreservedDistanceBetweenFluteAndSpindleNose_mm { get; set; } Property Value double RelativeHeightFromObservationAnchor_mm Gets the tool observation point relative to the reference. public double RelativeHeightFromObservationAnchor_mm { get; set; } Property Value double SpindleBuckle Gets the motor-side buckle. public Anchor SpindleBuckle { get; } Property Value Anchor SpindleBuckleToToolTipLength Height For NC Compensation table and step number computation. public double SpindleBuckleToToolTipLength { get; } Property Value double ToolTip Gets the tool tip anchor point from the cutter. public Anchor ToolTip { get; } Property Value Anchor XName Initializes a new instance of the StickMachiningTool class from XML data. public static string XName { get; } Property Value string Methods AlignAnchorByExposedCutterHeight() Aligns the anchor by the exposed cutter height. public void AlignAnchorByExposedCutterHeight() ClearCache() Clears any cached data held by the implementing object. public void ClearCache() Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box Remarks For display GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetFletchBuckle() Get fletch buckle anchor. the anchor that generally connect to fixed part such as ground and triggering(motor)-side. public Anchor GetFletchBuckle() Returns Anchor buckle anchor GetFluteNum() Gets the number of flutes in the contour tray. public int GetFluteNum() 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class MillingTool Namespace Hi.Milling.MillingTools Assembly HiMech.dll Represents a central stick milling tool that combines a holder and a cutter. public class MillingTool : IMachiningTool, IDisplayee, IExpandToBox3d, ITopo, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetAnchoredDisplayeeList, IGetFletchBuckle, IMakeXmlSource, IAbstractNote, IDuplicate, IClearCache, IGetFluteNum Inheritance object MillingTool Implements IMachiningTool IDisplayee IExpandToBox3d ITopo IGetAsmb IGetAnchor IGetTopoIndex IGetAnchoredDisplayeeList IGetFletchBuckle IMakeXmlSource IAbstractNote IDuplicate IClearCache IGetFluteNum Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) MillingToolUtil.GetFullH(IMachiningTool) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) 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 MillingTool() Ctor. public MillingTool() MillingTool(XElement, string, string, IProgress) Initializes a new instance of the MillingTool class. public MillingTool(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement The XML element containing the tool configuration. baseDirectory string The base directory for resolving relative paths. relFile string The relative file path. progress IProgress Progress reporter for diagnostic messages emitted during construction. Properties AbstractNote Gets an abstract note describing the tool's dimensions and cutter. public string AbstractNote { get; } Property Value string Asmb Gets the assembly containing the tool components. public Asmb Asmb { get; } Property Value Asmb Cutter Gets the cutting tool. public ICutter Cutter { get; set; } Property Value ICutter CutterFile Gets or sets the file path of the cutter. public string CutterFile { get; set; } Property Value string ExposedCutterBendingPara_umdN Gets the parameter for exposed cutter bending in micrometers per Newton. Pure computation — deliberately uncached: a lazy cache on this shared object races with the parallel per-step force build; per-step session paths read the pair from MillingToolPhysicsPack instead. public double ExposedCutterBendingPara_umdN { get; } Property Value double ExposedCutterHeight_mm Gets or sets the exposed cutter height in millimeters. public double ExposedCutterHeight_mm { get; set; } Property Value double ExposedCutterZDeflectionPara_umdN Gets the parameter for exposed cutter Z-axis deflection in micrometers per Newton. Pure computation — see ExposedCutterBendingPara_umdN. public double ExposedCutterZDeflectionPara_umdN { get; } Property Value double Holder Gets or sets the tool holder. public IHolder Holder { get; set; } Property Value IHolder HolderFile Gets or sets the holder file path. public string HolderFile { get; set; } Property Value string Note Gets or sets a note for this machining tool. public string Note { get; set; } Property Value string ObservationAnchor Gets the tool anchor reference point. public Anchor ObservationAnchor { get; } Property Value Anchor ObservationAnchorReference Gets the tool observation anchor reference point. public MillingToolAnchorReference ObservationAnchorReference { get; set; } Property Value MillingToolAnchorReference ObservationHeightFromToolTip Gets the tool observation point relative to the reference. Pure computation (an Asmb walk) — deliberately uncached; per-step session paths read the value from MillingToolPhysicsPack. public double ObservationHeightFromToolTip { get; } Property Value double ObservationRingRadius_mm Obsoleted. Gets the tool observation reference point. public double ObservationRingRadius_mm { get; set; } Property Value double PreservedDistanceBetweenFluteAndSpindleNose_mm Gets or sets the preserved distance between flute and clamp in millimeters. public double PreservedDistanceBetweenFluteAndSpindleNose_mm { get; set; } Property Value double RelativeHeightFromObservationAnchor_mm Gets the tool observation point relative to the reference. public double RelativeHeightFromObservationAnchor_mm { get; set; } Property Value double SpindleBuckle Gets the motor-side buckle. public Anchor SpindleBuckle { get; } Property Value Anchor SpindleBuckleToToolTipLength Height For NC Compensation table and step number computation. Pure computation (an Asmb walk) — deliberately uncached: a lazy cache on this shared object races with concurrent readers; hot session paths read the value from MillingToolPhysicsPack (per step) or a run-scoped memo (CL parsing). public double SpindleBuckleToToolTipLength { get; } Property Value double ToolTip Gets the tool tip anchor point from the cutter. public Anchor ToolTip { get; } Property Value Anchor XName Initializes a new instance of the StickMachiningTool class from XML data. public static string XName { get; } Property Value string Methods AlignAnchorByExposedCutterHeight() Aligns the anchor by the exposed cutter height. public void AlignAnchorByExposedCutterHeight() ClearCache() Clears any cached data held by the implementing object. public void ClearCache() Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box Remarks For display GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetFletchBuckle() Get fletch buckle anchor. the anchor that generally connect to fixed part such as ground and triggering(motor)-side. public Anchor GetFletchBuckle() Returns Anchor buckle anchor GetFluteNum() Gets the number of flutes. public int GetFluteNum() 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.Milling.MillingTools.MillingToolAnchorReference.html": { "href": "api/Hi.Milling.MillingTools.MillingToolAnchorReference.html", @@ -2769,6 +2899,11 @@ "title": "Class MillingToolEditorDisplayee | HiAPI-C# 2025", "summary": "Class MillingToolEditorDisplayee Namespace Hi.Milling.MillingTools Assembly HiMech.dll Display host for a milling tool composed of a cutter and a holder. public class MillingToolEditorDisplayee : ITopoDisplayee, ITopo, IGetAsmb, IGetAnchoredDisplayeeList, IAnchoredDisplayee, IGetAnchor, IGetTopoIndex, IDisplayee, IExpandToBox3d, IClearCache Inheritance object MillingToolEditorDisplayee Implements ITopoDisplayee ITopo IGetAsmb IGetAnchoredDisplayeeList IAnchoredDisplayee IGetAnchor IGetTopoIndex IDisplayee IExpandToBox3d IClearCache Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) 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 HolderEditorDisplayee Gets the displayee for the holder. public HolderEditorDisplayee HolderEditorDisplayee { get; } Property Value HolderEditorDisplayee MillingCutterEditorDisplayee Gets the displayee for the milling cutter. public MillingCutterEditorDisplayee MillingCutterEditorDisplayee { get; } Property Value MillingCutterEditorDisplayee MillingTool Gets the current MillingTool instance. public MillingTool MillingTool { get; } Property Value MillingTool MillingToolGetter Gets or sets the delegate that provides the MillingTool instance. public Func MillingToolGetter { get; set; } Property Value Func ShowCutter Gets or sets whether to show the cutter. public bool ShowCutter { get; set; } Property Value bool ShowHolder Gets or sets whether to show the holder. public bool ShowHolder { get; set; } Property Value bool Methods ClearCache() Clears any cached data held by the implementing object. public void ClearCache() Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb." }, + "api/Hi.Milling.MillingTools.MillingToolPhysicsPack.html": { + "href": "api/Hi.Milling.MillingTools.MillingToolPhysicsPack.html", + "title": "Class MillingToolPhysicsPack | HiAPI-C# 2025", + "summary": "Class MillingToolPhysicsPack Namespace Hi.Milling.MillingTools Assembly HiMech.dll The scalar physics derivations of one tool (and one cutting-parameter set), computed once on a sequential boundary and frozen. The per-step force build, the sequential physics, and the step/shot writers read these values thousands to millions of times per play; the tool and cutter objects themselves expose them as deliberately uncached pure computations, so hot session paths read this pack instead — callers outside a session simply pass null and the pure computation runs on use. Owned per session by MachiningSession, keyed by tool id. A pack is never updated in place: the paths that change tool/cutter/para state invalidate the session's packs explicitly (run-op start, tool change — see MachiningSession.InvalidateToolPhysicsPacks), and IsStaleFor(IMachiningTool, ICuttingPara) re-keys on object replacement. public sealed record MillingToolPhysicsPack : IEquatable Inheritance object MillingToolPhysicsPack Implements 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 MillingToolPhysicsPack(IMachiningTool, ICuttingPara, double, double, double, double, double, double, double) The scalar physics derivations of one tool (and one cutting-parameter set), computed once on a sequential boundary and frozen. The per-step force build, the sequential physics, and the step/shot writers read these values thousands to millions of times per play; the tool and cutter objects themselves expose them as deliberately uncached pure computations, so hot session paths read this pack instead — callers outside a session simply pass null and the pure computation runs on use. Owned per session by MachiningSession, keyed by tool id. A pack is never updated in place: the paths that change tool/cutter/para state invalidate the session's packs explicitly (run-op start, tool change — see MachiningSession.InvalidateToolPhysicsPacks), and IsStaleFor(IMachiningTool, ICuttingPara) re-keys on object replacement. public MillingToolPhysicsPack(IMachiningTool Tool, ICuttingPara Para, double SpindleBuckleToToolTipLength, double ObservationHeightFromToolTip, double EffectiveCuttingDiameter_mm, double BendingPara_umdN, double ZDeflectionPara_umdN, double FakeRakeAngle_rad, double MinimumUncutChipThickness_mm) Parameters Tool IMachiningTool The tool the pack was built from. Para ICuttingPara The cutting-parameter set the para-dependent members were built from (may be null). SpindleBuckleToToolTipLength double See SpindleBuckleToToolTipLength. ObservationHeightFromToolTip double See ObservationHeightFromToolTip; NaN when the tool is not a MillingTool. EffectiveCuttingDiameter_mm double See EffectiveCuttingDiameter_mm; NaN without a MillingCutter. BendingPara_umdN double See ExposedCutterBendingPara_umdN; NaN when the deflection geometry is degenerate (the pure getter throws there instead — the pack stays buildable so geometry-only paths keep working). ZDeflectionPara_umdN double The pair member of BendingPara_umdN — see ExposedCutterZDeflectionPara_umdN. FakeRakeAngle_rad double The simplified (side/bottom averaged) rake angle; NaN without a MillingCutter. MinimumUncutChipThickness_mm double See GetMinimumUncutChipThickness_mm(ICuttingPara) for Para. Properties BendingPara_umdN See ExposedCutterBendingPara_umdN; NaN when the deflection geometry is degenerate (the pure getter throws there instead — the pack stays buildable so geometry-only paths keep working). public double BendingPara_umdN { get; init; } Property Value double EffectiveCuttingDiameter_mm See EffectiveCuttingDiameter_mm; NaN without a MillingCutter. public double EffectiveCuttingDiameter_mm { get; init; } Property Value double FakeRakeAngle_rad The simplified (side/bottom averaged) rake angle; NaN without a MillingCutter. public double FakeRakeAngle_rad { get; init; } Property Value double MinimumUncutChipThickness_mm See GetMinimumUncutChipThickness_mm(ICuttingPara) for Para. public double MinimumUncutChipThickness_mm { get; init; } Property Value double ObservationHeightFromToolTip See ObservationHeightFromToolTip; NaN when the tool is not a MillingTool. public double ObservationHeightFromToolTip { get; init; } Property Value double Para The cutting-parameter set the para-dependent members were built from (may be null). public ICuttingPara Para { get; init; } Property Value ICuttingPara SpindleBuckleToToolTipLength See SpindleBuckleToToolTipLength. public double SpindleBuckleToToolTipLength { get; init; } Property Value double Tool The tool the pack was built from. public IMachiningTool Tool { get; init; } Property Value IMachiningTool ZDeflectionPara_umdN The pair member of BendingPara_umdN — see ExposedCutterZDeflectionPara_umdN. public double ZDeflectionPara_umdN { get; init; } Property Value double Methods Build(IMachiningTool, ICuttingPara) Builds a pack from the tool's (and cutter's) pure computations. Call on a sequential boundary (session/play start, tool change) or ad hoc from a no-session caller that wants the values bundled. public static MillingToolPhysicsPack Build(IMachiningTool tool, ICuttingPara para) Parameters tool IMachiningTool The tool to derive from; null yields null. para ICuttingPara The cutting-parameter set for the para-dependent members; may be null. Returns MillingToolPhysicsPack The frozen pack, or null when tool is null. IsStaleFor(IMachiningTool, ICuttingPara) Whether this pack was built from different objects than the live ones — a replaced tool under the same id, or a swapped cutting para. In-place edits are not detected here; they are covered by the explicit invalidation points (MachiningSession.InvalidateToolPhysicsPacks). public bool IsStaleFor(IMachiningTool tool, ICuttingPara para) Parameters tool IMachiningTool The live tool to compare against. para ICuttingPara The live cutting-parameter set to compare against. Returns bool True when the pack must be rebuilt." + }, "api/Hi.Milling.MillingTools.MillingToolUtil.html": { "href": "api/Hi.Milling.MillingTools.MillingToolUtil.html", "title": "Class MillingToolUtil | HiAPI-C# 2025", @@ -2777,7 +2912,7 @@ "api/Hi.Milling.MillingTools.html": { "href": "api/Hi.Milling.MillingTools.html", "title": "Namespace Hi.Milling.MillingTools | HiAPI-C# 2025", - "summary": "Namespace Hi.Milling.MillingTools Classes MillingTool Represents a central stick milling tool that combines a holder and a cutter. MillingToolEditorDisplayee Display host for a milling tool composed of a cutter and a holder. MillingToolUtil Provides utility methods for working with milling tools. Enums MillingToolAnchorReference Defines reference points for anchoring milling tools." + "summary": "Namespace Hi.Milling.MillingTools Classes MillingTool Represents a central stick milling tool that combines a holder and a cutter. MillingToolEditorDisplayee Display host for a milling tool composed of a cutter and a holder. MillingToolPhysicsPack The scalar physics derivations of one tool (and one cutting-parameter set), computed once on a sequential boundary and frozen. The per-step force build, the sequential physics, and the step/shot writers read these values thousands to millions of times per play; the tool and cutter objects themselves expose them as deliberately uncached pure computations, so hot session paths read this pack instead — callers outside a session simply pass null and the pure computation runs on use. Owned per session by MachiningSession, keyed by tool id. A pack is never updated in place: the paths that change tool/cutter/para state invalidate the session's packs explicitly (run-op start, tool change — see MachiningSession.InvalidateToolPhysicsPacks), and IsStaleFor(IMachiningTool, ICuttingPara) re-keys on object replacement. MillingToolUtil Provides utility methods for working with milling tools. Enums MillingToolAnchorReference Defines reference points for anchoring milling tools." }, "api/Hi.Milling.SpindleCapability.html": { "href": "api/Hi.Milling.SpindleCapability.html", @@ -2797,7 +2932,7 @@ "api/Hi.MillingForces.Fittings.ICuttingPara.html": { "href": "api/Hi.MillingForces.Fittings.ICuttingPara.html", "title": "Interface ICuttingPara | HiAPI-C# 2025", - "summary": "Interface ICuttingPara Namespace Hi.MillingForces.Fittings Assembly HiMech.dll Interface of milling parameter. The milling parameter is trainable. public interface ICuttingPara : IGetCuttingPara, IMakeXmlSource, INameNote Inherited Members IGetCuttingPara.GetCuttingPara() IMakeXmlSource.MakeXmlSource(string, string, bool) INameNote.Name INameNote.Note Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) CuttingParaUtil.ToRakeFaceCuttingPara(ICuttingPara) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties ElementNum Element number. int ElementNum { get; } Property Value int FluteFormNum Flute form number. int FluteFormNum { get; } Property Value int Methods CloneTemplate() Clone template. ICuttingPara CloneTemplate() Returns ICuttingPara clone template GenUnitParas() Generate ICuttingParas. The elements of each ICuttingPara are (1,0,0,0,..),(0,1,0,0,..),.… For parameter training. List GenUnitParas() Returns List unit parameters. GetElementByIndex(int) Get element by index. For parameter training. double GetElementByIndex(int elementIndex) Parameters elementIndex int element index Returns double value SetElementByIndex(int, double) Set element by index. For parameter training. void SetElementByIndex(int elementIndex, double v) Parameters elementIndex int element index v double value ToTemplateXElement() Get XElement for templating. XElement ToTemplateXElement() Returns XElement" + "summary": "Interface ICuttingPara Namespace Hi.MillingForces.Fittings Assembly HiMech.dll Interface of milling parameter. The milling parameter is trainable. public interface ICuttingPara : IGetCuttingPara, IMakeXmlSource, INameNote Inherited Members IGetCuttingPara.GetCuttingPara() IMakeXmlSource.MakeXmlSource(string, string, bool) INameNote.Name INameNote.Note Extension Methods DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) CuttingParaUtil.ToRakeFaceCuttingPara(ICuttingPara) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Properties ElementNum Element number. int ElementNum { get; } Property Value int FluteFormNum Flute form number. int FluteFormNum { get; } Property Value int Methods CloneTemplate() Clone template. ICuttingPara CloneTemplate() Returns ICuttingPara clone template GenUnitParas() Generate the ICuttingPara set used by parameter training. The list length equals ElementNum; entry i corresponds to the element of index i (see SetElementByIndex). List GenUnitParas() Returns List training parameters. GetElementByIndex(int) Get element by index. For parameter training. double GetElementByIndex(int elementIndex) Parameters elementIndex int element index Returns double value SetElementByIndex(int, double) Set element by index. For parameter training. void SetElementByIndex(int elementIndex, double v) Parameters elementIndex int element index v double value ToTemplateXElement() Get XElement for templating. XElement ToTemplateXElement() Returns XElement" }, "api/Hi.MillingForces.Fittings.IGetCuttingPara.html": { "href": "api/Hi.MillingForces.Fittings.IGetCuttingPara.html", @@ -2864,11 +2999,6 @@ "title": "Namespace Hi.MillingForces.Fittings | HiAPI-C# 2025", "summary": "Namespace Hi.MillingForces.Fittings Classes CuttingParaUtil Utility methods for working with cutting parameters. SampleCategory Represents a category for milling force samples with step and division information. SampleFlagUtil Utility methods for working with sample flags. SampleInstance Represents a sample instance with step and local division indices for milling force analysis. TimeForce Represents a force measurement at a specific time point. TimeForceFrequencyDomain Represents force data in the frequency domain after Fourier transformation. TimeForceSeries Represents a time series of force measurements. TimeForceUtil Utility class for reading and processing time-based force measurement data. TimeVsForceSeries Represents a time series of force measurements with compensation capabilities. TimeVsTorqueSeries Represents a time series of torque measurements with compensation capabilities. TrainingSample Represents a training sample for milling force prediction models. Interfaces ICuttingPara Interface of milling parameter. The milling parameter is trainable. IGetCuttingPara Interface of GetCuttingPara(). Enums SampleFlag Flags representing different types of force and moment samples in milling operations." }, - "api/Hi.MillingForces.FluteZData.html": { - "href": "api/Hi.MillingForces.FluteZData.html", - "title": "Class FluteZData | HiAPI-C# 2025", - "summary": "Class FluteZData Namespace Hi.MillingForces Assembly HiMech.dll Represents data for a flute at a specific Z position during milling operation public class FluteZData Inheritance object FluteZData 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 FluteZData(SpanContourPos4d, SpanContourPos4d, SpanContourPos4d, double, double) Initializes a new instance of the FluteZData class public FluteZData(SpanContourPos4d cur, SpanContourPos4d floor, SpanContourPos4d ceil, double z, double zInterval) Parameters cur SpanContourPos4d Current contour position floor SpanContourPos4d Floor contour position ceil SpanContourPos4d Ceiling contour position z double Z coordinate in millimeters zInterval double Z interval in millimeters Properties Ds Gets or sets the differential length element along the flute path in millimeters. The flute length depends on dz. public double Ds { get; set; } Property Value double Dz Gets the Z interval (height difference) in millimeters public double Dz { get; } Property Value double InitialPhi_rad Gets or sets the original phi angle (angular position on XY plane) in radians. Phi angle is angular position on XY plane from the flute edge to tool running direction. The value here has not considered the spindle angular shift. public double InitialPhi_rad { get; set; } Property Value double Kappa_rad Gets or sets the kappa angle (angle between cutting edge and tool axis) in radians public double Kappa_rad { get; set; } Property Value double R Gets or sets the radius at the current Z position in millimeters public double R { get; set; } Property Value double Z Gets or sets the Z coordinate in millimeters public double Z { get; set; } Property Value double Methods ToString() Returns a string representation of the FluteZData public override string ToString() Returns string A string containing the values of R, Z, Phi angle in degrees, Kappa angle in degrees, and Ds" - }, "api/Hi.MillingForces.IGetMillingForce.html": { "href": "api/Hi.MillingForces.IGetMillingForce.html", "title": "Interface IGetMillingForce | HiAPI-C# 2025", @@ -2882,7 +3012,7 @@ "api/Hi.MillingForces.MillingForce.html": { "href": "api/Hi.MillingForces.MillingForce.html", "title": "Class MillingForce | HiAPI-C# 2025", - "summary": "Class MillingForce Namespace Hi.MillingForces Assembly HiMech.dll Milling force. public class MillingForce : IGetFeedrate, IGetSpindleSpeed, IGetMillingForce, IGetQuantityByKey, IGetCsvDictionary, IWriteBin Inheritance object MillingForce Implements IGetFeedrate IGetSpindleSpeed IGetMillingForce IGetQuantityByKey IGetCsvDictionary IWriteBin 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 data list such as CuttingForcesToToolOnToolRunningCoordinate in this class is in sequence of time. If step-limited version is using, the milling force ctor is limited to call 2000 times. Constructors MillingForce(BinaryReader) Initializes a new instance of the MillingForce class from binary data. public MillingForce(BinaryReader reader) Parameters reader BinaryReader The binary reader containing the serialized milling force data. Fields DefaultRotationDivisionNum Gets the default number of divisions for one complete rotation. public const int DefaultRotationDivisionNum = 36 Field Value int Remarks This value determines the resolution of force calculations during tool rotation. A higher value provides more detailed force analysis but requires more computational resources. Properties AbsAvgForce Absolute average force. public double AbsAvgForce { get; } Property Value double AbsAxialPower_W Gets the absolute axial power in watts. public double AbsAxialPower_W { get; } Property Value double AvgAbsMomentsAboutSpindle_Nm Gets the average absolute moments about spindle on the spindle sensor coordinate system. public Vec3d AvgAbsMomentsAboutSpindle_Nm { get; } Property Value Vec3d Remarks Calculates the average of absolute values for each component (X, Y, Z) of the moments about the spindle. AvgAxialTorque_Nm Get avg axial torque in N*m. The observation point is at tool tip. The torque is taken by tool. public double AvgAxialTorque_Nm { get; } Property Value double AvgBendingMomentsAboutSpindle_Nm Gets the average bending moments about spindle in Newton-meters. public double? AvgBendingMomentsAboutSpindle_Nm { get; } Property Value double? Remarks Calculates the magnitude of the average bending moment by taking the square root of the sum of squares of the X and Y components of the average absolute moments. AvgContactEdgeLengthPerFlute_mm Gets the average contact edge length per flute in millimeters. public double AvgContactEdgeLengthPerFlute_mm { get; } Property Value double AvgForceToToolOnToolRunningCoordinate Avg cutting force to tool on tool running coordinate. public Vec3d AvgForceToToolOnToolRunningCoordinate { get; } Property Value Vec3d AvgForceToWorkpieceOnWorkpieceCoordinate Avg cutting force on workpiece coordinate. public Vec3d AvgForceToWorkpieceOnWorkpieceCoordinate { get; } Property Value Vec3d AvgIntersectedContactArea_mm2 contact area along cutter outside contact point to circle center direction. The average is for each rotation angle. This property is for computing heat transfer. public double AvgIntersectedContactArea_mm2 { get; } Property Value double AvgMomentToToolAboutObservationPointOnToolRunningZero_Nm Gets the average moment to tool about observation point on tool running zero in Newton-meters. public Vec3d AvgMomentToToolAboutObservationPointOnToolRunningZero_Nm { get; } Property Value Vec3d AxialPowerTakenByWorkpiece_W Axial Power that the spindle has to create due to axial torque. The empowered item is workpiece. The fulcrum is at the tool tip. Unit is Watt. public double AxialPowerTakenByWorkpiece_W { get; } Property Value double CdnTransformFromToolRunningZeroToWorkpieceGeom Tool running coordinate to workpiece geom coordinate. public Mat4d CdnTransformFromToolRunningZeroToWorkpieceGeom { get; } Property Value Mat4d ChipVolume_mm3 Gets the chip volume in cubic millimeters. public double ChipVolume_mm3 { get; } Property Value double CuttingForcesToToolOnToolRunningCoordinate Cutting forces on tool running coordinate. The forced item is tool. public List CuttingForcesToToolOnToolRunningCoordinate { get; } Property Value List CuttingForcesToToolOnWorkpieceCoodinate Cutting forces on workpiece coordinate. The forced item is tool. public List CuttingForcesToToolOnWorkpieceCoodinate { get; } Property Value List CuttingForcesToWorkpieceOnWorkpieceCoordinate Cutting forces on workpiece coordinate. The forced item is workpiece. public List CuttingForcesToWorkpieceOnWorkpieceCoordinate { get; } Property Value List CyclePeriod_s Gets the cycle period in seconds, calculated as 60 / SpindleSpeed_rpm. public double CyclePeriod_s { get; } Property Value double DAngle_deg Delta angle in degree. The value is 360 / RotationDivisionNum. public double DAngle_deg { get; } Property Value double DAngle_rad Delta angle in radian. The value is 2 * pi / RotationDivisionNum. public double DAngle_rad { get; } Property Value double Feedrate_mmds Gets the feed rate in millimeters per second. public double Feedrate_mmds { get; } Property Value double FluteNum Gets the number of flutes on the cutting tool. public int FluteNum { get; } Property Value int FrictionPower_W friction power to workpiece. the unit is watt. public double FrictionPower_W { get; } Property Value double IndexAtMaxCuttingForce Gets the index at which the maximum cutting force occurs. public int IndexAtMaxCuttingForce { get; } Property Value int IsCw Gets a value indicating whether the spindle rotation is clockwise. public bool IsCw { get; } Property Value bool KinematicPowerDivDensity_Wmm3dg Gets the kinematic power divided by density in watts per cubic millimeter per degree. public double KinematicPowerDivDensity_Wmm3dg { get; } Property Value double MaxAbsForce Gets the maximum absolute force magnitude. public double MaxAbsForce { get; } Property Value double MaxAbsForceSlope_NdDeg Absolute max force changed per degree. public double MaxAbsForceSlope_NdDeg { get; } Property Value double MaxAbsMomentAboutObservationPoint_Nm Gets the maximum absolute moment about observation point in Newton-meters. public double MaxAbsMomentAboutObservationPoint_Nm { get; } Property Value double MaxAxialTorqueToToolByToolTip_Nm Get max axial torque in N*m. The observation point is at tool tip. The torque is taken by tool. public double MaxAxialTorqueToToolByToolTip_Nm { get; } Property Value double MaxForceToToolOnToolRunningCoordinate Max cutting force on tool running coordinate. public Vec3d MaxForceToToolOnToolRunningCoordinate { get; } Property Value Vec3d MaxMomentToToolAboutObservationPointOnToolRunningZero_Nm Gets the maximum moment to tool about observation point on tool running zero in Newton-meters. public Vec3d MaxMomentToToolAboutObservationPointOnToolRunningZero_Nm { get; } Property Value Vec3d MaxMomentToToolAboutObservationPointOnWorkpiceGeom_Nm Gets the maximum moment to tool about observation point on workpiece geometry in Newton-meters. public Vec3d MaxMomentToToolAboutObservationPointOnWorkpiceGeom_Nm { get; } Property Value Vec3d MinAbsMomentAboutObservationPoint_Nm Gets the minimum absolute moment about the observation point in Newton-meters. public double MinAbsMomentAboutObservationPoint_Nm { get; } Property Value double MomentsAboutObservationPointOnObservationCoordinate_Nm Gets the moments about observation point on observation coordinate in Newton-meters. public List MomentsAboutObservationPointOnObservationCoordinate_Nm { get; } Property Value List MomentsAboutObservationPointOnToolRunningZero_Nm Gets the minimum absolute moment about the observation point in Newton-meters. public List MomentsAboutObservationPointOnToolRunningZero_Nm { get; } Property Value List MomentsAboutSpindle_Nm Gets the moments about spindle on the spindle sensor coordinate system. public List MomentsAboutSpindle_Nm { get; } Property Value List Remarks The moments are calculated by transforming the moments about the observation point to the spindle sensor coordinate system using the current rotation angle. MomentsToToolAboutObservationPointOnSpindleRotationZero_Nm Gets the moments to tool about observation point on spindle rotation zero in Newton-meters. public List MomentsToToolAboutObservationPointOnSpindleRotationZero_Nm { get; } Property Value List MomentsToToolAboutToolTipOnToolRunningZero_Nm Moments on tool running coordinate in N*m. The fulcrum is at the coordinate zero. The moment is taken by tool. The size is RotationDivisionNum. public List MomentsToToolAboutToolTipOnToolRunningZero_Nm { get; } Property Value List ObservationPositionFromToolTip Specific fulcrum position relative coordinate zero on tool running coordinate. public Vec3d ObservationPositionFromToolTip { get; } Property Value Vec3d PloughForcesOnTr plough force on tool running coordinate. The force is taken by tool. In sequence of time. public List PloughForcesOnTr { get; } Property Value List PowerWithoutFriction_W Gets the power without friction in watts, calculated as axial power taken by workpiece minus friction power. public double PowerWithoutFriction_W { get; } Property Value double RotationAngleInterval Gets the rotation angle interval in radians between divisions. The value is 2 * pi / RotationDivisionNum. public double RotationAngleInterval { get; } Property Value double RotationDivisionNum Gets the number of divisions for one complete rotation. public int RotationDivisionNum { get; } Property Value int ShearForcesOnTr shear forces on tool running coordinate. The force is taken by tool. In sequence of time. public List ShearForcesOnTr { get; } Property Value List SpindleSpeed_radds Gets the spindle speed in radians per second. public double SpindleSpeed_radds { get; } Property Value double SpindleSpeed_rpm Gets the spindle speed in revolutions per minute. public double SpindleSpeed_rpm { get; } Property Value double StepIndex Step index. For database saving. [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int StepIndex { get; set; } Property Value int ToothArcDuration_s Gets the duration of one tooth arc pass in seconds, calculated as CyclePeriod_s / FluteNum. public double ToothArcDuration_s { get; } Property Value double TransformFromWorkpieceGeomToObservationPoint Gets the transformation matrix from workpiece geometric coordinate system to the observation point. public Mat4d TransformFromWorkpieceGeomToObservationPoint { get; } Property Value Mat4d Methods DynamicBuildExtension() Internal use. Build extended data. In single thread, no need to use the function. In multi thread, call it before going to un-safe area. public void DynamicBuildExtension() GetCsvDictionary() Get row dictionary. It suits for CSV output. public Dictionary GetCsvDictionary() Returns Dictionary csv row dictionary GetFeedrate_mmds() Gets the program feedrate in millimeters per second. public double GetFeedrate_mmds() Returns double Feedrate in mm/s GetForceBriefDictionary(bool) Gets a dictionary containing force-related quantities. public Dictionary GetForceBriefDictionary(bool isIncludingWave = false) Parameters isIncludingWave bool If true, includes wave-related force data. Returns Dictionary A dictionary mapping quantity names to their values. GetForceToToolOnToolRunningCoordinateCsvString() Gets the force to tool on tool running coordinate as a CSV string. public string GetForceToToolOnToolRunningCoordinateCsvString() Returns string A CSV string representation of the forces. GetForceToWorkpieceOnWorkpieceCoordinateCsvString() Gets the force to workpiece on workpiece coordinate as a CSV string. public string GetForceToWorkpieceOnWorkpieceCoordinateCsvString() Returns string A CSV string representation of the forces. GetMillingForce() Get MillingForce. public MillingForce GetMillingForce() Returns MillingForce MillingForce GetMomentsAboutObservationPointOnToolRunningCoordinate_Nm(double) Gets moments about observation point on tool running coordinate in Newton-meters for a specific observation height. public List GetMomentsAboutObservationPointOnToolRunningCoordinate_Nm(double observationHeightFromToolTip) Parameters observationHeightFromToolTip double The height from tool tip to observation point in millimeters Returns List List of moment vectors in Newton-meters GetMomentsAboutObservationPointOnToolRunningZero_Nm(Vec3d) Gets moments about observation point on tool running zero coordinate system in Newton-meters. public List GetMomentsAboutObservationPointOnToolRunningZero_Nm(Vec3d observationPosFromToolTip) Parameters observationPosFromToolTip Vec3d The position vector from tool tip to observation point Returns List List of moment vectors in Newton-meters GetMomentsToToolAboutObservationPointOnSpindleRotationZeroCsvString() Gets the moments to tool about observation point on spindle rotation zero as a CSV string. public string GetMomentsToToolAboutObservationPointOnSpindleRotationZeroCsvString() Returns string A CSV string representation of the moments. GetQuantityByKey(string) Gets a quantity value associated with the specified key. public double GetQuantityByKey(string key) Parameters key string The key to look up Returns double The quantity value associated with the key GetSpindleDirection() Gets the spindle rotation direction. public SpindleDirection GetSpindleDirection() Returns SpindleDirection The spindle direction (clockwise, counterclockwise, or stopped) GetSpindleSpeed_radds() Gets the spindle speed in radians per second. public double GetSpindleSpeed_radds() Returns double Spindle speed in rad/s ToCuttingForcesString() Converts the cutting forces to a string representation. public string ToCuttingForcesString() Returns string A string representation of the cutting forces. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. WriteBin(BinaryWriter) Writes the object's data to a binary stream. public void WriteBin(BinaryWriter writer) Parameters writer BinaryWriter The binary writer to write to" + "summary": "Class MillingForce Namespace Hi.MillingForces Assembly HiMech.dll Milling force. public class MillingForce : IGetFeedrate, IGetSpindleSpeed, IGetMillingForce, IGetQuantityByKey, IGetCsvDictionary, IWriteBin Inheritance object MillingForce Implements IGetFeedrate IGetSpindleSpeed IGetMillingForce IGetQuantityByKey IGetCsvDictionary IWriteBin 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 data list such as CuttingForcesToToolOnToolRunningCoordinate in this class is in sequence of time. Constructors MillingForce(BinaryReader) Initializes a new instance of the MillingForce class from binary data. public MillingForce(BinaryReader reader) Parameters reader BinaryReader The binary reader containing the serialized milling force data. Fields DefaultRotationDivisionNum Gets the default number of divisions for one complete rotation. public const int DefaultRotationDivisionNum = 36 Field Value int Remarks This value determines the resolution of force calculations during tool rotation. A higher value provides more detailed force analysis but requires more computational resources. Properties AbsAvgForce Absolute average force. public double AbsAvgForce { get; } Property Value double AbsAxialPower_W Gets the absolute axial power in watts. public double AbsAxialPower_W { get; } Property Value double AvgAbsMomentsAboutSpindle_Nm Gets the average absolute moments about spindle on the spindle sensor coordinate system. public Vec3d AvgAbsMomentsAboutSpindle_Nm { get; } Property Value Vec3d Remarks Calculates the average of absolute values for each component (X, Y, Z) of the moments about the spindle. AvgAxialTorque_Nm Get avg axial torque in N*m. The observation point is at tool tip. The torque is taken by tool. public double AvgAxialTorque_Nm { get; } Property Value double AvgBendingMomentsAboutSpindle_Nm Gets the average bending moments about spindle in Newton-meters. public double? AvgBendingMomentsAboutSpindle_Nm { get; } Property Value double? Remarks Calculates the magnitude of the average bending moment by taking the square root of the sum of squares of the X and Y components of the average absolute moments. AvgContactEdgeLengthPerFlute_mm Gets the average contact edge length per flute in millimeters. public double AvgContactEdgeLengthPerFlute_mm { get; } Property Value double AvgForceToToolOnToolRunningCoordinate Avg cutting force to tool on tool running coordinate. public Vec3d AvgForceToToolOnToolRunningCoordinate { get; } Property Value Vec3d AvgForceToWorkpieceOnWorkpieceCoordinate Avg cutting force on workpiece coordinate. public Vec3d AvgForceToWorkpieceOnWorkpieceCoordinate { get; } Property Value Vec3d AvgIntersectedContactArea_mm2 contact area along cutter outside contact point to circle center direction. The average is for each rotation angle. This property is for computing heat transfer. public double AvgIntersectedContactArea_mm2 { get; } Property Value double AvgMomentToToolAboutObservationPointOnToolRunningZero_Nm Gets the average moment to tool about observation point on tool running zero in Newton-meters. public Vec3d AvgMomentToToolAboutObservationPointOnToolRunningZero_Nm { get; } Property Value Vec3d AxialPowerTakenByWorkpiece_W Axial Power that the spindle has to create due to axial torque. The empowered item is workpiece. The fulcrum is at the tool tip. Unit is Watt. public double AxialPowerTakenByWorkpiece_W { get; } Property Value double CdnTransformFromToolRunningZeroToWorkpieceGeom Tool running coordinate to workpiece geom coordinate. public Mat4d CdnTransformFromToolRunningZeroToWorkpieceGeom { get; } Property Value Mat4d ChipVolume_mm3 Gets the chip volume in cubic millimeters. public double ChipVolume_mm3 { get; } Property Value double CuttingForcesToToolOnToolRunningCoordinate Cutting forces on tool running coordinate. The forced item is tool. public List CuttingForcesToToolOnToolRunningCoordinate { get; } Property Value List CuttingForcesToToolOnWorkpieceCoodinate Cutting forces on workpiece coordinate. The forced item is tool. public List CuttingForcesToToolOnWorkpieceCoodinate { get; } Property Value List CuttingForcesToWorkpieceOnWorkpieceCoordinate Cutting forces on workpiece coordinate. The forced item is workpiece. public List CuttingForcesToWorkpieceOnWorkpieceCoordinate { get; } Property Value List CyclePeriod_s Gets the cycle period in seconds, calculated as 60 / SpindleSpeed_rpm. public double CyclePeriod_s { get; } Property Value double DAngle_deg Delta angle in degree. The value is 360 / RotationDivisionNum. public double DAngle_deg { get; } Property Value double DAngle_rad Delta angle in radian. The value is 2 * pi / RotationDivisionNum. public double DAngle_rad { get; } Property Value double Feedrate_mmds Gets the feed rate in millimeters per second. public double Feedrate_mmds { get; } Property Value double FluteNum Gets the number of flutes on the cutting tool. public int FluteNum { get; } Property Value int FrictionPower_W friction power to workpiece. the unit is watt. public double FrictionPower_W { get; } Property Value double IndexAtMaxCuttingForce Gets the index at which the maximum cutting force occurs. public int IndexAtMaxCuttingForce { get; } Property Value int IsCw Gets a value indicating whether the spindle rotation is clockwise. public bool IsCw { get; } Property Value bool KinematicPowerDivDensity_Wmm3dg Gets the kinematic power divided by density in watts per cubic millimeter per degree. public double KinematicPowerDivDensity_Wmm3dg { get; } Property Value double MaxAbsForce Gets the maximum absolute force magnitude. public double MaxAbsForce { get; } Property Value double MaxAbsForceSlope_NdDeg Absolute max force changed per degree. public double MaxAbsForceSlope_NdDeg { get; } Property Value double MaxAbsMomentAboutObservationPoint_Nm Gets the maximum absolute moment about observation point in Newton-meters. public double MaxAbsMomentAboutObservationPoint_Nm { get; } Property Value double MaxAxialTorqueToToolByToolTip_Nm Get max axial torque in N*m. The observation point is at tool tip. The torque is taken by tool. public double MaxAxialTorqueToToolByToolTip_Nm { get; } Property Value double MaxForceToToolOnToolRunningCoordinate Max cutting force on tool running coordinate. public Vec3d MaxForceToToolOnToolRunningCoordinate { get; } Property Value Vec3d MaxMomentToToolAboutObservationPointOnToolRunningZero_Nm Gets the maximum moment to tool about observation point on tool running zero in Newton-meters. public Vec3d MaxMomentToToolAboutObservationPointOnToolRunningZero_Nm { get; } Property Value Vec3d MaxMomentToToolAboutObservationPointOnWorkpiceGeom_Nm Gets the maximum moment to tool about observation point on workpiece geometry in Newton-meters. public Vec3d MaxMomentToToolAboutObservationPointOnWorkpiceGeom_Nm { get; } Property Value Vec3d MinAbsMomentAboutObservationPoint_Nm Gets the minimum absolute moment about the observation point in Newton-meters. public double MinAbsMomentAboutObservationPoint_Nm { get; } Property Value double MomentsAboutObservationPointOnObservationCoordinate_Nm Gets the moments about observation point on observation coordinate in Newton-meters. public List MomentsAboutObservationPointOnObservationCoordinate_Nm { get; } Property Value List MomentsAboutObservationPointOnToolRunningZero_Nm Gets the minimum absolute moment about the observation point in Newton-meters. public List MomentsAboutObservationPointOnToolRunningZero_Nm { get; } Property Value List MomentsAboutSpindle_Nm Gets the moments about spindle on the spindle sensor coordinate system. public List MomentsAboutSpindle_Nm { get; } Property Value List Remarks The moments are calculated by transforming the moments about the observation point to the spindle sensor coordinate system using the current rotation angle. MomentsToToolAboutObservationPointOnSpindleRotationZero_Nm Gets the moments to tool about observation point on spindle rotation zero in Newton-meters. public List MomentsToToolAboutObservationPointOnSpindleRotationZero_Nm { get; } Property Value List MomentsToToolAboutToolTipOnToolRunningZero_Nm Moments on tool running coordinate in N*m. The fulcrum is at the coordinate zero. The moment is taken by tool. The size is RotationDivisionNum. public List MomentsToToolAboutToolTipOnToolRunningZero_Nm { get; } Property Value List ObservationPositionFromToolTip Specific fulcrum position relative coordinate zero on tool running coordinate. public Vec3d ObservationPositionFromToolTip { get; } Property Value Vec3d PloughForcesOnTr plough force on tool running coordinate. The force is taken by tool. In sequence of time. public List PloughForcesOnTr { get; } Property Value List PowerWithoutFriction_W Gets the power without friction in watts, calculated as axial power taken by workpiece minus friction power. public double PowerWithoutFriction_W { get; } Property Value double RotationAngleInterval Gets the rotation angle interval in radians between divisions. The value is 2 * pi / RotationDivisionNum. public double RotationAngleInterval { get; } Property Value double RotationDivisionNum Gets the number of divisions for one complete rotation. public int RotationDivisionNum { get; } Property Value int ShearForcesOnTr shear forces on tool running coordinate. The force is taken by tool. In sequence of time. public List ShearForcesOnTr { get; } Property Value List SpindleSpeed_radds Gets the spindle speed in radians per second. public double SpindleSpeed_radds { get; } Property Value double SpindleSpeed_rpm Gets the spindle speed in revolutions per minute. public double SpindleSpeed_rpm { get; } Property Value double StepIndex Step index. For database saving. [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int StepIndex { get; set; } Property Value int ToothArcDuration_s Gets the duration of one tooth arc pass in seconds, calculated as CyclePeriod_s / FluteNum. public double ToothArcDuration_s { get; } Property Value double TransformFromWorkpieceGeomToObservationPoint Gets the transformation matrix from workpiece geometric coordinate system to the observation point. public Mat4d TransformFromWorkpieceGeomToObservationPoint { get; } Property Value Mat4d Methods DynamicBuildExtension() Internal use. Build extended data. In single thread, no need to use the function. In multi thread, call it before going to un-safe area. public void DynamicBuildExtension() GetCsvDictionary() Get row dictionary. It suits for CSV output. public Dictionary GetCsvDictionary() Returns Dictionary csv row dictionary GetFeedrate_mmds() Gets the program feedrate in millimeters per second. public double GetFeedrate_mmds() Returns double Feedrate in mm/s GetForceBriefDictionary(bool) Gets a dictionary containing force-related quantities. public Dictionary GetForceBriefDictionary(bool isIncludingWave = false) Parameters isIncludingWave bool If true, includes wave-related force data. Returns Dictionary A dictionary mapping quantity names to their values. GetForceToToolOnToolRunningCoordinateCsvString() Gets the force to tool on tool running coordinate as a CSV string. public string GetForceToToolOnToolRunningCoordinateCsvString() Returns string A CSV string representation of the forces. GetForceToWorkpieceOnWorkpieceCoordinateCsvString() Gets the force to workpiece on workpiece coordinate as a CSV string. public string GetForceToWorkpieceOnWorkpieceCoordinateCsvString() Returns string A CSV string representation of the forces. GetMillingForce() Get MillingForce. public MillingForce GetMillingForce() Returns MillingForce MillingForce GetMomentsAboutObservationPointOnToolRunningCoordinate_Nm(double) Gets moments about observation point on tool running coordinate in Newton-meters for a specific observation height. public List GetMomentsAboutObservationPointOnToolRunningCoordinate_Nm(double observationHeightFromToolTip) Parameters observationHeightFromToolTip double The height from tool tip to observation point in millimeters Returns List List of moment vectors in Newton-meters GetMomentsAboutObservationPointOnToolRunningZero_Nm(Vec3d) Gets moments about observation point on tool running zero coordinate system in Newton-meters. public List GetMomentsAboutObservationPointOnToolRunningZero_Nm(Vec3d observationPosFromToolTip) Parameters observationPosFromToolTip Vec3d The position vector from tool tip to observation point Returns List List of moment vectors in Newton-meters GetMomentsToToolAboutObservationPointOnSpindleRotationZeroCsvString() Gets the moments to tool about observation point on spindle rotation zero as a CSV string. public string GetMomentsToToolAboutObservationPointOnSpindleRotationZeroCsvString() Returns string A CSV string representation of the moments. GetQuantityByKey(string) Gets a quantity value associated with the specified key. public double GetQuantityByKey(string key) Parameters key string The key to look up Returns double The quantity value associated with the key GetSpindleDirection() Gets the spindle rotation direction. public SpindleDirection GetSpindleDirection() Returns SpindleDirection The spindle direction (clockwise, counterclockwise, or stopped) GetSpindleSpeed_radds() Gets the spindle speed in radians per second. public double GetSpindleSpeed_radds() Returns double Spindle speed in rad/s ToCuttingForcesString() Converts the cutting forces to a string representation. public string ToCuttingForcesString() Returns string A string representation of the cutting forces. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. WriteBin(BinaryWriter) Writes the object's data to a binary stream. public void WriteBin(BinaryWriter writer) Parameters writer BinaryWriter The binary writer to write to" }, "api/Hi.MillingForces.MillingForceLicense.html": { "href": "api/Hi.MillingForces.MillingForceLicense.html", @@ -2892,22 +3022,17 @@ "api/Hi.MillingForces.MillingForceLuggage.html": { "href": "api/Hi.MillingForces.MillingForceLuggage.html", "title": "Class MillingForceLuggage | HiAPI-C# 2025", - "summary": "Class MillingForceLuggage Namespace Hi.MillingForces Assembly HiMech.dll Represents a container for milling force data and calculations. public class MillingForceLuggage Inheritance object MillingForceLuggage 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 MillingForceLuggage() Initializes a new instance of the MillingForceLuggage class. public MillingForceLuggage() MillingForceLuggage(BinaryReader) Initializes a new instance of the MillingForceLuggage class from a binary reader. public MillingForceLuggage(BinaryReader reader) Parameters reader BinaryReader The binary reader containing the milling force data. Properties CuttingForcesToToolOnToolRunningCoordinate_N Cutting forces on tool running coordinate. The forced item is tool. public List CuttingForcesToToolOnToolRunningCoordinate_N { get; } Property Value List MomentsToToolAboutToolTipOnToolRunningCoordinate_Nm Moments on tool running coordinate in N*m. The fulcrum is at the coordinate zero. The moment is taken by tool. The size is RotationDivisionNum. public List MomentsToToolAboutToolTipOnToolRunningCoordinate_Nm { get; } Property Value List PloughForcesOnTr plough force on tool running coordinate. The force is taken by tool. In sequence of time. public List PloughForcesOnTr { get; } Property Value List RotationDivisionNum Gets the number of divisions for one complete rotation. public int RotationDivisionNum { get; } Property Value int ShearForcesOnTr shear forces on tool running coordinate. The force is taken by tool. In sequence of time. public List ShearForcesOnTr { get; } Property Value List StepIndex Step index. For database saving. [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int StepIndex { get; set; } Property Value int Methods GetCuttingForcesToToolOnWorkpieceCoodinate_N(Mat4d) Cutting forces on workpiece coordinate. The forced item is tool. public List GetCuttingForcesToToolOnWorkpieceCoodinate_N(Mat4d CdnTransformFromToolRunningZeroToWorkpieceGeom) Parameters CdnTransformFromToolRunningZeroToWorkpieceGeom Mat4d Returns List GetCuttingForcesToWorkpieceOnProgramCoordinate_N(Mat4d) Cutting forces on workpiece coordinate. The forced item is workpiece. public List GetCuttingForcesToWorkpieceOnProgramCoordinate_N(Mat4d cdnTransformFromToolRunningToProgram) Parameters cdnTransformFromToolRunningToProgram Mat4d Returns List GetCuttingForcesToWorkpieceOnProgramCoordinate_N(MachineMotionStep) Gets the cutting forces to workpiece on program coordinate in Newtons. public List GetCuttingForcesToWorkpieceOnProgramCoordinate_N(MachineMotionStep machineStep) Parameters machineStep MachineMotionStep The machining step to get forces for Returns List List of force vectors in Newtons GetForceToToolOnToolRunningCoordinateCsvString(MachineMotionStep) Gets the force to tool on tool running coordinate as a CSV string. public string GetForceToToolOnToolRunningCoordinateCsvString(MachineMotionStep machineStep) Parameters machineStep MachineMotionStep The machining step to get forces for. Returns string A CSV string representation of the forces. GetForceToWorkpieceOnProgramCoordinateCsvString(MachineMotionStep) Gets the force to workpiece on program coordinate as a CSV string. public string GetForceToWorkpieceOnProgramCoordinateCsvString(MachineMotionStep machineStep) Parameters machineStep MachineMotionStep The machining step to get forces for. Returns string A CSV string representation of the forces. GetMomentsAboutAnchorOnToolRunningCoordinate_Nm(IMachiningTool) Gets the moments about anchor on tool running coordinate in Newton-meters. public List GetMomentsAboutAnchorOnToolRunningCoordinate_Nm(IMachiningTool millingTool) Parameters millingTool IMachiningTool The machining tool to calculate moments for. Returns List A list of moment vectors. GetMomentsAboutToolTipOnSpindleRotationCoordinate_Nm() Gets the moments about tool tip on spindle rotation coordinate in Newton-meters. public List GetMomentsAboutToolTipOnSpindleRotationCoordinate_Nm() Returns List A list of moment vectors. GetMomentsOnToolRunningCoordinate_Nm(Vec3d) Get moments to tool. public List GetMomentsOnToolRunningCoordinate_Nm(Vec3d observationPosFromToolTip) Parameters observationPosFromToolTip Vec3d Returns List GetMomentsOnToolRunningCoordinate_Nm(double) Gets the moments on the tool running coordinate system at a specified height from the tool tip. public List GetMomentsOnToolRunningCoordinate_Nm(double observationHeightFromToolTip) Parameters observationHeightFromToolTip double The height from the tool tip where moments are calculated. Returns List A list of moment vectors in the tool running coordinate system. GetMomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm(IMachiningTool) Get Moments To Tool About Observation Point On Spindle Rotation Coordinate. Unit is Newton-meter. public List GetMomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm(IMachiningTool millingTool) Parameters millingTool IMachiningTool Returns List GetMomentsToToolOnSpindleRotationZeroCsvString(IMachiningTool, MachineMotionStep, MillingPhysicsBrief) Gets the moments to tool on spindle rotation zero as a CSV string. public string GetMomentsToToolOnSpindleRotationZeroCsvString(IMachiningTool machiningTool, MachineMotionStep machineStep, MillingPhysicsBrief brief) Parameters machiningTool IMachiningTool The machining tool. machineStep MachineMotionStep The machining step to get moments for. brief MillingPhysicsBrief The rake face physics brief. Returns string A CSV string representation of the moments. GetTipDeflectionOnToolRunningCoordinateList_mm(IMachiningTool) Gets the tool tip deflection on the tool running coordinate system. public List GetTipDeflectionOnToolRunningCoordinateList_mm(IMachiningTool millingTool) Parameters millingTool IMachiningTool The milling tool for which to calculate deflections. Returns List A list of deflection vectors in millimeters in the tool running coordinate system. GetYieldingStressRatio(IMachiningTool) Gets the yielding stress ratio for the given machining tool. public double GetYieldingStressRatio(IMachiningTool millingTool) Parameters millingTool IMachiningTool The machining tool to calculate the stress ratio for. Returns double The yielding stress ratio. NoCut(int) Builds a luggage representing a physically-computed “no cut” state (paired with NoCut(int)): the three per-rotation force lists are each filled with Zero of length rotationDivisionNum. StepIndex is left at default; the caller assigns it. public static MillingForceLuggage NoCut(int rotationDivisionNum) Parameters rotationDivisionNum int Length of each per-rotation list. Returns MillingForceLuggage ToCuttingForcesString() Converts the cutting forces to a string representation. public string ToCuttingForcesString() Returns string A string representation of the cutting forces. WriteBin(BinaryWriter) public void WriteBin(BinaryWriter writer) Parameters writer BinaryWriter" - }, - "api/Hi.MillingForces.MillingForceUtil.AnglePack.html": { - "href": "api/Hi.MillingForces.MillingForceUtil.AnglePack.html", - "title": "Class MillingForceUtil.AnglePack | HiAPI-C# 2025", - "summary": "Class MillingForceUtil.AnglePack Namespace Hi.MillingForces Assembly HiMech.dll Container class for angle-specific calculations during milling operation public class MillingForceUtil.AnglePack Inheritance object MillingForceUtil.AnglePack 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)" + "summary": "Class MillingForceLuggage Namespace Hi.MillingForces Assembly HiMech.dll Represents a container for milling force data and calculations. public class MillingForceLuggage Inheritance object MillingForceLuggage 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 MillingForceLuggage() Initializes a new instance of the MillingForceLuggage class. public MillingForceLuggage() MillingForceLuggage(BinaryReader) Initializes a new instance of the MillingForceLuggage class from a binary reader. public MillingForceLuggage(BinaryReader reader) Parameters reader BinaryReader The binary reader containing the milling force data. Properties CuttingForcesToToolOnToolRunningCoordinate_N Cutting forces on tool running coordinate. The forced item is tool. public List CuttingForcesToToolOnToolRunningCoordinate_N { get; } Property Value List MomentsToToolAboutToolTipOnToolRunningCoordinate_Nm Moments on tool running coordinate in N*m. The fulcrum is at the coordinate zero. The moment is taken by tool. The size is RotationDivisionNum. public List MomentsToToolAboutToolTipOnToolRunningCoordinate_Nm { get; } Property Value List PloughForcesOnTr plough force on tool running coordinate. The force is taken by tool. In sequence of time. public List PloughForcesOnTr { get; } Property Value List RotationDivisionNum Gets the number of divisions for one complete rotation. public int RotationDivisionNum { get; } Property Value int ShearForcesOnTr shear forces on tool running coordinate. The force is taken by tool. In sequence of time. public List ShearForcesOnTr { get; } Property Value List StepIndex Step index. For database saving. [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] public int StepIndex { get; set; } Property Value int Methods GetCuttingForcesToToolOnWorkpieceCoodinate_N(Mat4d) Cutting forces on workpiece coordinate. The forced item is tool. public List GetCuttingForcesToToolOnWorkpieceCoodinate_N(Mat4d CdnTransformFromToolRunningZeroToWorkpieceGeom) Parameters CdnTransformFromToolRunningZeroToWorkpieceGeom Mat4d Returns List GetCuttingForcesToWorkpieceOnProgramCoordinate_N(Mat4d) Cutting forces on workpiece coordinate. The forced item is workpiece. public List GetCuttingForcesToWorkpieceOnProgramCoordinate_N(Mat4d cdnTransformFromToolRunningToProgram) Parameters cdnTransformFromToolRunningToProgram Mat4d Returns List GetCuttingForcesToWorkpieceOnProgramCoordinate_N(MachineMotionStep) Gets the cutting forces to workpiece on program coordinate in Newtons. public List GetCuttingForcesToWorkpieceOnProgramCoordinate_N(MachineMotionStep machineStep) Parameters machineStep MachineMotionStep The machining step to get forces for Returns List List of force vectors in Newtons GetForceToToolOnToolRunningCoordinateCsvString(MachineMotionStep) Gets the force to tool on tool running coordinate as a CSV string. public string GetForceToToolOnToolRunningCoordinateCsvString(MachineMotionStep machineStep) Parameters machineStep MachineMotionStep The machining step to get forces for. Returns string A CSV string representation of the forces. GetForceToWorkpieceOnProgramCoordinateCsvString(MachineMotionStep) Gets the force to workpiece on program coordinate as a CSV string. public string GetForceToWorkpieceOnProgramCoordinateCsvString(MachineMotionStep machineStep) Parameters machineStep MachineMotionStep The machining step to get forces for. Returns string A CSV string representation of the forces. GetMomentsAboutAnchorOnToolRunningCoordinate_Nm(IMachiningTool, MillingToolPhysicsPack) Gets the moments about anchor on tool running coordinate in Newton-meters. public List GetMomentsAboutAnchorOnToolRunningCoordinate_Nm(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack = null) Parameters millingTool IMachiningTool The machining tool to calculate moments for. physicsPack MillingToolPhysicsPack The frozen per-session physics pack of millingTool; null computes the observation height from the tool on use. Returns List A list of moment vectors. GetMomentsAboutToolTipOnSpindleRotationCoordinate_Nm() Gets the moments about tool tip on spindle rotation coordinate in Newton-meters. public List GetMomentsAboutToolTipOnSpindleRotationCoordinate_Nm() Returns List A list of moment vectors. GetMomentsOnToolRunningCoordinate_Nm(Vec3d) Get moments to tool. public List GetMomentsOnToolRunningCoordinate_Nm(Vec3d observationPosFromToolTip) Parameters observationPosFromToolTip Vec3d Returns List GetMomentsOnToolRunningCoordinate_Nm(double) Gets the moments on the tool running coordinate system at a specified height from the tool tip. public List GetMomentsOnToolRunningCoordinate_Nm(double observationHeightFromToolTip) Parameters observationHeightFromToolTip double The height from the tool tip where moments are calculated. Returns List A list of moment vectors in the tool running coordinate system. GetMomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm(IMachiningTool, MillingToolPhysicsPack) Get Moments To Tool About Observation Point On Spindle Rotation Coordinate. Unit is Newton-meter. public List GetMomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack = null) Parameters millingTool IMachiningTool The machining tool to calculate moments for. physicsPack MillingToolPhysicsPack The frozen per-session physics pack of millingTool; null computes the observation height from the tool on use. Returns List GetMomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm(double) Get Moments To Tool About Observation Point On Spindle Rotation Coordinate, with the observation height supplied directly — for a caller that resolved the height once and reads many luggage instances. Unit is Newton-meter. public List GetMomentsToToolAboutObservationPointOnSpindleRotationCoordinate_Nm(double observationHeightFromToolTip) Parameters observationHeightFromToolTip double The observation height from the tool tip in millimeters. Returns List GetMomentsToToolOnSpindleRotationZeroCsvString(IMachiningTool, MachineMotionStep, MillingPhysicsBrief) Gets the moments to tool on spindle rotation zero as a CSV string. public string GetMomentsToToolOnSpindleRotationZeroCsvString(IMachiningTool machiningTool, MachineMotionStep machineStep, MillingPhysicsBrief brief) Parameters machiningTool IMachiningTool The machining tool. machineStep MachineMotionStep The machining step to get moments for. brief MillingPhysicsBrief The rake face physics brief. Returns string A CSV string representation of the moments. GetTipDeflectionOnToolRunningCoordinateList_mm(IMachiningTool, MillingToolPhysicsPack) Gets the tool tip deflection on the tool running coordinate system. public List GetTipDeflectionOnToolRunningCoordinateList_mm(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack = null) Parameters millingTool IMachiningTool The milling tool for which to calculate deflections. physicsPack MillingToolPhysicsPack The frozen per-session physics pack of millingTool; null computes the deflection parameters from the tool on use. Returns List A list of deflection vectors in millimeters in the tool running coordinate system. GetYieldingStressRatio(IMachiningTool) Gets the yielding stress ratio for the given machining tool. public double GetYieldingStressRatio(IMachiningTool millingTool) Parameters millingTool IMachiningTool The machining tool to calculate the stress ratio for. Returns double The yielding stress ratio, or NaN when it cannot be evaluated — non-milling cutter, missing flute material, or no beam section outside the tip zone. Never a fake-safe 0. NoCut(int) Builds a luggage representing a physically-computed “no cut” state (paired with NoCut(int)): the three per-rotation force lists are each filled with Zero of length rotationDivisionNum. StepIndex is left at default; the caller assigns it. public static MillingForceLuggage NoCut(int rotationDivisionNum) Parameters rotationDivisionNum int Length of each per-rotation list. Returns MillingForceLuggage ToCuttingForcesString() Converts the cutting forces to a string representation. public string ToCuttingForcesString() Returns string A string representation of the cutting forces. WriteBin(BinaryWriter) public void WriteBin(BinaryWriter writer) Parameters writer BinaryWriter" }, "api/Hi.MillingForces.MillingForceUtil.html": { "href": "api/Hi.MillingForces.MillingForceUtil.html", "title": "Class MillingForceUtil | HiAPI-C# 2025", - "summary": "Class MillingForceUtil Namespace Hi.MillingForces Assembly HiMech.dll Utility class for milling force calculations and related operations. public static class MillingForceUtil Inheritance object MillingForceUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties PressureEvaluationDepth_mm For avoid unstable form floating error. public static double PressureEvaluationDepth_mm { get; set; } Property Value double RotationDivisionNum Division number of a spindle cycle. public static int RotationDivisionNum { get; set; } Property Value int Methods GetMillingFoce(ICuttingPara, IMachiningTool, MachineMotionStep, LayerMillingEngagement, out MillingPhysicsBrief, out MillingForceLuggage, double, bool) Calculates the milling forces for a given machining operation public static void GetMillingFoce(ICuttingPara millingPara, IMachiningTool millingTool, MachineMotionStep machineStep, LayerMillingEngagement engagement, out MillingPhysicsBrief brief, out MillingForceLuggage luggage, double trialClippingHeight_mm, bool enableCalculatingReliefColliding) Parameters millingPara ICuttingPara The cutting parameters for the milling operation millingTool IMachiningTool The machining tool used for the operation machineStep MachineMotionStep The machining step information engagement LayerMillingEngagement Layer milling engagement parameters brief MillingPhysicsBrief Output parameter for brief physics information luggage MillingForceLuggage Output parameter for milling force data trialClippingHeight_mm double The available height for cutting height optimization search in millimeters. The value should be always equal or smaller than the cutting depth from the engagement enableCalculatingReliefColliding bool enable calculating effect of relief colliding" + "summary": "Class MillingForceUtil Namespace Hi.MillingForces Assembly HiMech.dll Utility class for milling force calculations and related operations. public static class MillingForceUtil Inheritance object MillingForceUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Properties EnableNativeMillingPhysics Whether the physics runs on the native (core.dll) kernels. Default is true, and in shipping builds the native kernel is the only physics implementation: setting this to false requires the managed reference implementation (the non-shipping HiMech.PhysicsRef assembly, registered at startup by dev/test hosts) and throws InvalidOperationException without it — failing at configuration time rather than on every step of a play. Both implementations produce the same results. Process-global like RotationDivisionNum. public static bool EnableNativeMillingPhysics { get; set; } Property Value bool PressureEvaluationDepth_mm For avoid unstable form floating error. public static double PressureEvaluationDepth_mm { get; set; } Property Value double RotationDivisionNum Division number of a spindle cycle. public static int RotationDivisionNum { get; set; } Property Value int Methods GetMillingFoce(ICuttingPara, IMachiningTool, MachineMotionStep, LayerMillingEngagement, out MillingPhysicsBrief, out MillingForceLuggage, double, bool, MillingToolPhysicsPack) Calculates the milling forces for a given machining operation public static void GetMillingFoce(ICuttingPara millingPara, IMachiningTool millingTool, MachineMotionStep machineStep, LayerMillingEngagement engagement, out MillingPhysicsBrief brief, out MillingForceLuggage luggage, double trialClippingHeight_mm, bool enableCalculatingReliefColliding, MillingToolPhysicsPack physicsPack = null) Parameters millingPara ICuttingPara The cutting parameters for the milling operation millingTool IMachiningTool The machining tool used for the operation machineStep MachineMotionStep The machining step information engagement LayerMillingEngagement Layer milling engagement parameters brief MillingPhysicsBrief Output parameter for brief physics information luggage MillingForceLuggage Output parameter for milling force data trialClippingHeight_mm double The available height for cutting height optimization search in millimeters. The value should be always equal or smaller than the cutting depth from the engagement enableCalculatingReliefColliding bool enable calculating effect of relief colliding physicsPack MillingToolPhysicsPack The frozen per-session physics pack of millingTool and millingPara; null (or a pack keyed to a different para) computes the gate values from the tool on use." }, "api/Hi.MillingForces.MillingPhysicsBrief.html": { "href": "api/Hi.MillingForces.MillingPhysicsBrief.html", "title": "Class MillingPhysicsBrief | HiAPI-C# 2025", - "summary": "Class MillingPhysicsBrief Namespace Hi.MillingForces Assembly HiMech.dll Instant Physics brief on rake face for milling. public class MillingPhysicsBrief Inheritance object MillingPhysicsBrief 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 MillingPhysicsBrief() Ctor. public MillingPhysicsBrief() MillingPhysicsBrief(int) Initializes a new instance of the MillingPhysicsBrief class with a specified rotation division number. public MillingPhysicsBrief(int rotationDivisionNum) Parameters rotationDivisionNum int The number of divisions for rotation calculations. Properties AvgAbsForce_N Gets the average absolute force in Newtons. public double AvgAbsForce_N { get; } Property Value double AvgAbsMomentAboutSensorVec3d_Nm Gets the average absolute moment about the sensor as a 3D vector in Newton-meters. public Vec3d AvgAbsMomentAboutSensorVec3d_Nm { get; } Property Value Vec3d AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm Gets the average absolute moment about the sensor on spindle rotation coordinate in Newton-meters. public double AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm { get; } Property Value double AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm Gets the average absolute moment about the tool tip on spindle rotation coordinate in Newton-meters. public double AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm { get; } Property Value double AvgAbsTorqueOnSpindleRotationCoordinate_Nm Gets the average of abs spindle axial torque on Spindle rotation coordinate. public double AvgAbsTorqueOnSpindleRotationCoordinate_Nm { get; } Property Value double AvgContactEdgeLengthPerFlute_mm Gets the average contact edge length per flute in millimeters. public double AvgContactEdgeLengthPerFlute_mm { get; } Property Value double AvgForceToToolOnToolRunningCoordinate_N Avg cutting force to tool on tool running coordinate. public Vec3d AvgForceToToolOnToolRunningCoordinate_N { get; } Property Value Vec3d AvgMomentAboutSensor_Nm Gets the average moment about the sensor in Newton-meters. public double AvgMomentAboutSensor_Nm { get; } Property Value double AvgMomentAboutToolTipOnProgramCoordinate_Nm Gets the average moment about the tool tip on program coordinate in Newton-meters. public Vec3d AvgMomentAboutToolTipOnProgramCoordinate_Nm { get; } Property Value Vec3d AvgMomentAboutToolTipOnToolRunningCoordinate_Nm Gets the average moment about the tool tip on tool running coordinate in Newton-meters. public Vec3d AvgMomentAboutToolTipOnToolRunningCoordinate_Nm { get; } Property Value Vec3d AvgMomentAboutToolTip_Nm Gets the average moment about the tool tip in the program coordinate system, measured in Newton-meters. public double AvgMomentAboutToolTip_Nm { get; } Property Value double AvgMomentXyAboutObservationPoint Gets the average moment about the tool tip in the program coordinate system, measured in Newton-meters. public double AvgMomentXyAboutObservationPoint { get; } Property Value double AvgRadialForcePerFluteToTool_N Gets the average radial force per flute applied to the tool in Newtons. public double AvgRadialForcePerFluteToTool_N { get; } Property Value double ChipMass_g Gets or sets the chip mass in grams. public double ChipMass_g { get; } Property Value double ChipThickness_mm Gets or sets the actual chip thickness in millimeters after cutting. public double ChipThickness_mm { get; } Property Value double ChipVolume_mm3 ChipVolume_mm3 per flute. public double ChipVolume_mm3 { get; } Property Value double ContinueSpindlePowerRatio Spindle Torque Ratio from spindle power capability on infinite insistency boundary. public double ContinueSpindlePowerRatio { get; } Property Value double ContinueSpindleTorqueRatio Spindle Torque Ratio from spindle torque capability on infinite insistency boundary. public double ContinueSpindleTorqueRatio { get; } Property Value double DeltaTipDeflectionOnToolRunningCoordinate_mm Gets the delta tip deflection on tool running coordinate in millimeters. public Vec3d DeltaTipDeflectionOnToolRunningCoordinate_mm { get; } Property Value Vec3d FrictionPower_W friction power takes by workpiece per cycle. the unit is watt. public double FrictionPower_W { get; } Property Value double IsReliefFaceCollided Gets a value indicating whether the relief face is collided. public bool? IsReliefFaceCollided { get; } Property Value bool? MaxAbsForce_N Gets the maximum absolute force in Newtons. public double MaxAbsForce_N { get; } Property Value double MaxAxialTorqueOnToolRunningCoordinateZero_Nm Gets the maximum axial torque at the tool running coordinate origin in Newton-meters. public double MaxAxialTorqueOnToolRunningCoordinateZero_Nm { get; } Property Value double MaxCompetingCuttingForceOnToolRunningCoordinate_N Gets the maximum competing cutting force on tool running coordinate in Newtons. This represents the second-strongest force during the cutting cycle. public Vec3d MaxCompetingCuttingForceOnToolRunningCoordinate_N { get; } Property Value Vec3d MaxForceOnToolRunningCoordinate_N Gets the maximum force on the tool running coordinate in Newtons. public Vec3d MaxForceOnToolRunningCoordinate_N { get; } Property Value Vec3d MaxMomentAboutSensor_Nm Gets the maximum moment about the sensor in Newton-meters. public double MaxMomentAboutSensor_Nm { get; } Property Value double MaxMomentAboutToolTip_Nm Gets the maximum moment about the tool tip in Newton-meters. public double MaxMomentAboutToolTip_Nm { get; } Property Value double MaxSpindlePowerRatio Spindle Torque Ratio from max spindle power capability. public double MaxSpindlePowerRatio { get; } Property Value double MaxSpindleTorqueRatio Spindle Torque Ratio from max spindle torque capability. public double MaxSpindleTorqueRatio { get; } Property Value double RakeFaceCycleAvgContactArea_mm2 contact area along cutter outside contact point to circle center direction. The average is for each rotation angle. This property is for computing heat transfer. public double RakeFaceCycleAvgContactArea_mm2 { get; } Property Value double ReliefFaceCollidingSpeed_mmds The negative value means there is no relief face collision. public double? ReliefFaceCollidingSpeed_mmds { get; } Property Value double? RotationAngleInterval_deg Delta angle in degree. The value is 360 / RotationDivisionNum. public double RotationAngleInterval_deg { get; } Property Value double RotationAngleInterval_rad Delta angle in radian. The value is 2 * pi / RotationDivisionNum. public double RotationAngleInterval_rad { get; } Property Value double RotationDivisionNum Gets the number of divisions used for rotation calculations. public int RotationDivisionNum { get; } Property Value int UncutChipThickness_mm Gets or sets the uncut chip thickness in millimeters. public double UncutChipThickness_mm { get; } Property Value double WorkpiecePlasticDepth_mm Positive value for compression. Negative value for tension. public double WorkpiecePlasticDepth_mm { get; } Property Value double YieldStressMinHeight_mm While computing cutter yielding, the small radial radius near the tool tip may cause singular computation. a small arbitrary gap is set to avoid the singular behavior. public static double YieldStressMinHeight_mm { get; set; } Property Value double YieldingStressRatio Gets the yielding stress ratio. public double YieldingStressRatio { get; } Property Value double Methods BuildNonSeqExtension(IMachiningTool, WorkpieceMaterial, SpindleCapability, SpindleSpeedCache, MachineMotionStep, MillingForceLuggage) Internal use. Build extended data. In single thread, no need to use the function. In multi thread, call it before going to un-safe area. public void BuildNonSeqExtension(IMachiningTool millingTool, WorkpieceMaterial workpieceMaterial, SpindleCapability spindleCapability, SpindleSpeedCache spindleSpeedCache, MachineMotionStep machineStep, MillingForceLuggage luggage) Parameters millingTool IMachiningTool workpieceMaterial WorkpieceMaterial spindleCapability SpindleCapability spindleSpeedCache SpindleSpeedCache machineStep MachineMotionStep luggage MillingForceLuggage GetAbsAxialPower_W() Gets the absolute axial power in Watts. public double GetAbsAxialPower_W() Returns double Absolute axial power in Watts. GetAvgForceToWorkpieceOnProgramCoordinate(MachineMotionStep) Avg cutting force on workpiece coordinate. public Vec3d GetAvgForceToWorkpieceOnProgramCoordinate(MachineMotionStep machineStep) Parameters machineStep MachineMotionStep Returns Vec3d GetAxialPowerTakenByWorkpiece_W() Gets the axial power taken by workpiece in Watts. public double GetAxialPowerTakenByWorkpiece_W() Returns double Axial power taken by workpiece in Watts. GetDeflectionTransformOnWorkpieceGeomCoordinate(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func) Gets the deflection transformation matrix in the workpiece geometric coordinate system. public Mat4d GetDeflectionTransformOnWorkpieceGeomCoordinate(IMachiningTool millingTool, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func luggageFunc) Parameters millingTool IMachiningTool The milling tool. workpieceMaterial WorkpieceMaterial The workpiece material. machineStep MachineMotionStep The machining step. luggageFunc Func Function to get the milling force luggage. Returns Mat4d The deflection transformation matrix. GetIndexAtMaxCuttingForce() Gets the index at which the maximum cutting force occurs. public int GetIndexAtMaxCuttingForce() Returns int The index of the maximum cutting force. GetInputSpindlePower_W(SpindleCapability) Gets the input spindle power in Watts. public double GetInputSpindlePower_W(SpindleCapability spindleCapability) Parameters spindleCapability SpindleCapability The spindle capability information. Returns double Input spindle power in Watts. GetMaxAbsForceSlope_NdDeg(MachiningToolHouse, WorkpieceMaterial, MachineMotionStep, Func) Absolute max force changed per degree. public double GetMaxAbsForceSlope_NdDeg(MachiningToolHouse toolHouse, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func luggageFunc) Parameters toolHouse MachiningToolHouse workpieceMaterial WorkpieceMaterial machineStep MachineMotionStep luggageFunc Func Returns double GetMaxBottomEdgeDeflectionOnToolRunningCoordinate_mm(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func) Gets the maximum deflection of the bottom edge in the tool running coordinate system. public Vec3d GetMaxBottomEdgeDeflectionOnToolRunningCoordinate_mm(IMachiningTool millingTool, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func luggageFunc) Parameters millingTool IMachiningTool The milling tool to get the deflection for. workpieceMaterial WorkpieceMaterial The workpiece material. machineStep MachineMotionStep The machining step. luggageFunc Func Function to get the milling force luggage. Returns Vec3d The maximum deflection vector in millimeters. GetMaxDeflectionTransformOnToolRunningCoordinate(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func) GetDeflectionTransformationByTipMovementOnToolRunningCoordinate public Mat4d GetMaxDeflectionTransformOnToolRunningCoordinate(IMachiningTool millingTool_, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func luggageFunc) Parameters millingTool_ IMachiningTool workpieceMaterial WorkpieceMaterial machineStep MachineMotionStep luggageFunc Func Returns Mat4d GetMaxTipDeflectionOnToolRunningCoordinate_mm(IMachiningTool) Gets the maximum deflection of the tool tip in the tool running coordinate system. public Vec3d GetMaxTipDeflectionOnToolRunningCoordinate_mm(IMachiningTool millingTool) Parameters millingTool IMachiningTool The milling tool to get the deflection for. Returns Vec3d The maximum deflection vector in millimeters. NoCut(int) Builds a brief representing a physically-computed “no cut” state — i.e. EnablePhysics=true but the step has no engagement (IsTouched=false). This is semantically distinct from a null brief which means “physics was not computed at all”. All forces, moments, ratios, chip dimensions and deflections are zero; relief-face colliding speed is set to a negative sentinel so IsReliefFaceCollided returns false rather than null. public static MillingPhysicsBrief NoCut(int rotationDivisionNum) Parameters rotationDivisionNum int The rotation division count this brief reports. Returns MillingPhysicsBrief PowerWithoutFriction_W() Gets the power without friction in watts, calculated as axial power taken by workpiece minus friction power. public double PowerWithoutFriction_W() Returns double" + "summary": "Class MillingPhysicsBrief Namespace Hi.MillingForces Assembly HiMech.dll Instant Physics brief on rake face for milling. public class MillingPhysicsBrief Inheritance object MillingPhysicsBrief 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 MillingPhysicsBrief() Ctor. public MillingPhysicsBrief() MillingPhysicsBrief(int) Initializes a new instance of the MillingPhysicsBrief class with a specified rotation division number. public MillingPhysicsBrief(int rotationDivisionNum) Parameters rotationDivisionNum int The number of divisions for rotation calculations. Properties AvgAbsForce_N Gets the average absolute force in Newtons. public double AvgAbsForce_N { get; } Property Value double AvgAbsMomentAboutSensorVec3d_Nm Gets the average absolute moment about the sensor as a 3D vector in Newton-meters. public Vec3d AvgAbsMomentAboutSensorVec3d_Nm { get; } Property Value Vec3d AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm Gets the average absolute moment about the sensor on spindle rotation coordinate in Newton-meters. public double AvgAbsMomentXAboutSensorOnSpindleRotationCoordinate_Nm { get; } Property Value double AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm Gets the average absolute moment about the tool tip on spindle rotation coordinate in Newton-meters. public double AvgAbsMomentXAboutToolTipOnSpindleRotationCoordinate_Nm { get; } Property Value double AvgAbsTorqueOnSpindleRotationCoordinate_Nm Gets the average of abs spindle axial torque on Spindle rotation coordinate. public double AvgAbsTorqueOnSpindleRotationCoordinate_Nm { get; } Property Value double AvgContactEdgeLengthPerFlute_mm Gets the average contact edge length per flute in millimeters. public double AvgContactEdgeLengthPerFlute_mm { get; } Property Value double AvgForceToToolOnToolRunningCoordinate_N Avg cutting force to tool on tool running coordinate. public Vec3d AvgForceToToolOnToolRunningCoordinate_N { get; } Property Value Vec3d AvgMomentAboutSensor_Nm Gets the average moment about the sensor in Newton-meters. public double AvgMomentAboutSensor_Nm { get; } Property Value double AvgMomentAboutToolTipOnProgramCoordinate_Nm Gets the average moment about the tool tip on program coordinate in Newton-meters. public Vec3d AvgMomentAboutToolTipOnProgramCoordinate_Nm { get; } Property Value Vec3d AvgMomentAboutToolTipOnToolRunningCoordinate_Nm Gets the average moment about the tool tip on tool running coordinate in Newton-meters. public Vec3d AvgMomentAboutToolTipOnToolRunningCoordinate_Nm { get; } Property Value Vec3d AvgMomentAboutToolTip_Nm Gets the average moment about the tool tip in the program coordinate system, measured in Newton-meters. public double AvgMomentAboutToolTip_Nm { get; } Property Value double AvgMomentXyAboutObservationPoint Gets the average moment about the tool tip in the program coordinate system, measured in Newton-meters. public double AvgMomentXyAboutObservationPoint { get; } Property Value double AvgRadialForcePerFluteToTool_N Gets the average radial force per flute applied to the tool in Newtons. public double AvgRadialForcePerFluteToTool_N { get; } Property Value double ChipMass_g Gets or sets the chip mass in grams. public double ChipMass_g { get; } Property Value double ChipThickness_mm Gets or sets the actual chip thickness in millimeters after cutting. public double ChipThickness_mm { get; } Property Value double ChipVolume_mm3 ChipVolume_mm3 per flute. public double ChipVolume_mm3 { get; } Property Value double ContinueSpindlePowerRatio Spindle Torque Ratio from spindle power capability on infinite insistency boundary. public double ContinueSpindlePowerRatio { get; } Property Value double ContinueSpindleTorqueRatio Spindle Torque Ratio from spindle torque capability on infinite insistency boundary. public double ContinueSpindleTorqueRatio { get; } Property Value double DeltaTipDeflectionOnToolRunningCoordinate_mm Gets the delta tip deflection on tool running coordinate in millimeters. public Vec3d DeltaTipDeflectionOnToolRunningCoordinate_mm { get; } Property Value Vec3d FrictionPower_W friction power takes by workpiece per cycle. the unit is watt. public double FrictionPower_W { get; } Property Value double IsReliefFaceCollided Gets a value indicating whether the relief face is collided. public bool? IsReliefFaceCollided { get; } Property Value bool? MaxAbsForce_N Gets the maximum absolute force in Newtons. public double MaxAbsForce_N { get; } Property Value double MaxAxialTorqueOnToolRunningCoordinateZero_Nm Gets the maximum axial torque at the tool running coordinate origin in Newton-meters. public double MaxAxialTorqueOnToolRunningCoordinateZero_Nm { get; } Property Value double MaxCompetingCuttingForceOnToolRunningCoordinate_N Gets the maximum competing cutting force on tool running coordinate in Newtons. This represents the second-strongest force during the cutting cycle. public Vec3d MaxCompetingCuttingForceOnToolRunningCoordinate_N { get; } Property Value Vec3d MaxForceOnToolRunningCoordinate_N Gets the maximum force on the tool running coordinate in Newtons. public Vec3d MaxForceOnToolRunningCoordinate_N { get; } Property Value Vec3d MaxMomentAboutSensor_Nm Gets the maximum moment about the sensor in Newton-meters. public double MaxMomentAboutSensor_Nm { get; } Property Value double MaxMomentAboutToolTip_Nm Gets the maximum moment about the tool tip in Newton-meters. public double MaxMomentAboutToolTip_Nm { get; } Property Value double MaxSpindlePowerRatio Spindle Torque Ratio from max spindle power capability. public double MaxSpindlePowerRatio { get; } Property Value double MaxSpindleTorqueRatio Spindle Torque Ratio from max spindle torque capability. public double MaxSpindleTorqueRatio { get; } Property Value double RakeFaceCycleAvgContactArea_mm2 contact area along cutter outside contact point to circle center direction. The average is for each rotation angle. This property is for computing heat transfer. public double RakeFaceCycleAvgContactArea_mm2 { get; } Property Value double ReliefFaceCollidingSpeed_mmds The negative value means there is no relief face collision. public double? ReliefFaceCollidingSpeed_mmds { get; } Property Value double? RotationAngleInterval_deg Delta angle in degree. The value is 360 / RotationDivisionNum. public double RotationAngleInterval_deg { get; } Property Value double RotationAngleInterval_rad Delta angle in radian. The value is 2 * pi / RotationDivisionNum. public double RotationAngleInterval_rad { get; } Property Value double RotationDivisionNum Gets the number of divisions used for rotation calculations. public int RotationDivisionNum { get; } Property Value int UncutChipThickness_mm Gets or sets the uncut chip thickness in millimeters. public double UncutChipThickness_mm { get; } Property Value double WorkpiecePlasticDepth_mm Positive value for compression. Negative value for tension. public double WorkpiecePlasticDepth_mm { get; } Property Value double YieldingStressRatio Gets the yielding stress ratio. public double YieldingStressRatio { get; } Property Value double Methods BuildNonSeqExtension(IMachiningTool, WorkpieceMaterial, SpindleCapability, SpindleSpeedCache, MachineMotionStep, MillingForceLuggage, MillingToolPhysicsPack) Internal use. Build extended data. In single thread, no need to use the function. In multi thread, call it before going to un-safe area. public void BuildNonSeqExtension(IMachiningTool millingTool, WorkpieceMaterial workpieceMaterial, SpindleCapability spindleCapability, SpindleSpeedCache spindleSpeedCache, MachineMotionStep machineStep, MillingForceLuggage luggage, MillingToolPhysicsPack physicsPack = null) Parameters millingTool IMachiningTool workpieceMaterial WorkpieceMaterial spindleCapability SpindleCapability spindleSpeedCache SpindleSpeedCache machineStep MachineMotionStep luggage MillingForceLuggage physicsPack MillingToolPhysicsPack GetAbsAxialPower_W() Gets the absolute axial power in Watts. public double GetAbsAxialPower_W() Returns double Absolute axial power in Watts. GetAvgForceToWorkpieceOnProgramCoordinate(MachineMotionStep) Avg cutting force on workpiece coordinate. public Vec3d GetAvgForceToWorkpieceOnProgramCoordinate(MachineMotionStep machineStep) Parameters machineStep MachineMotionStep Returns Vec3d GetAxialPowerTakenByWorkpiece_W() Gets the axial power taken by workpiece in Watts. public double GetAxialPowerTakenByWorkpiece_W() Returns double Axial power taken by workpiece in Watts. GetDeflectionTransformOnWorkpieceGeomCoordinate(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func, MillingToolPhysicsPack) Gets the deflection transformation matrix in the workpiece geometric coordinate system. public Mat4d GetDeflectionTransformOnWorkpieceGeomCoordinate(IMachiningTool millingTool, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func luggageFunc, MillingToolPhysicsPack physicsPack = null) Parameters millingTool IMachiningTool The milling tool. workpieceMaterial WorkpieceMaterial The workpiece material. machineStep MachineMotionStep The machining step. luggageFunc Func Function to get the milling force luggage. physicsPack MillingToolPhysicsPack The frozen per-session physics pack of millingTool; null computes the tool's scalar derivations on use. Returns Mat4d The deflection transformation matrix. GetIndexAtMaxCuttingForce() Gets the index at which the maximum cutting force occurs. public int GetIndexAtMaxCuttingForce() Returns int The index of the maximum cutting force. GetInputSpindlePower_W(SpindleCapability) Gets the input spindle power in Watts. public double GetInputSpindlePower_W(SpindleCapability spindleCapability) Parameters spindleCapability SpindleCapability The spindle capability information. Returns double Input spindle power in Watts. GetMaxAbsForceSlope_NdDeg(MachiningToolHouse, WorkpieceMaterial, MachineMotionStep, Func) Absolute max force changed per degree. public double GetMaxAbsForceSlope_NdDeg(MachiningToolHouse toolHouse, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func luggageFunc) Parameters toolHouse MachiningToolHouse workpieceMaterial WorkpieceMaterial machineStep MachineMotionStep luggageFunc Func Returns double GetMaxBottomEdgeDeflectionOnToolRunningCoordinate_mm(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func, MillingToolPhysicsPack) Gets the maximum deflection of the bottom edge in the tool running coordinate system. public Vec3d GetMaxBottomEdgeDeflectionOnToolRunningCoordinate_mm(IMachiningTool millingTool, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func luggageFunc, MillingToolPhysicsPack physicsPack = null) Parameters millingTool IMachiningTool The milling tool to get the deflection for. workpieceMaterial WorkpieceMaterial The workpiece material. machineStep MachineMotionStep The machining step. luggageFunc Func Function to get the milling force luggage. physicsPack MillingToolPhysicsPack The frozen per-session physics pack of millingTool; null computes the tool's scalar derivations on use. Returns Vec3d The maximum deflection vector in millimeters. GetMaxDeflectionTransformOnToolRunningCoordinate(IMachiningTool, WorkpieceMaterial, MachineMotionStep, Func, MillingToolPhysicsPack) GetDeflectionTransformationByTipMovementOnToolRunningCoordinate public Mat4d GetMaxDeflectionTransformOnToolRunningCoordinate(IMachiningTool millingTool_, WorkpieceMaterial workpieceMaterial, MachineMotionStep machineStep, Func luggageFunc, MillingToolPhysicsPack physicsPack = null) Parameters millingTool_ IMachiningTool workpieceMaterial WorkpieceMaterial machineStep MachineMotionStep luggageFunc Func physicsPack MillingToolPhysicsPack The frozen per-session physics pack of millingTool_; null computes the tool's scalar derivations on use. Returns Mat4d GetMaxTipDeflectionOnToolRunningCoordinate_mm(IMachiningTool, MillingToolPhysicsPack) Gets the maximum deflection of the tool tip in the tool running coordinate system. public Vec3d GetMaxTipDeflectionOnToolRunningCoordinate_mm(IMachiningTool millingTool, MillingToolPhysicsPack physicsPack = null) Parameters millingTool IMachiningTool The milling tool to get the deflection for. physicsPack MillingToolPhysicsPack The frozen per-session physics pack of millingTool; null computes the tool's scalar derivations on use. Returns Vec3d The maximum deflection vector in millimeters, or null when it cannot be computed: no tool, or no maximum tool force resolved yet — the force is filled lazily by the force pass, so a brief handed back before (or without) that pass carries none. Callers treat null as “no deflection known” (e.g. StepFeedSolver.BuildCompensation falls back to Zero, i.e. no compensation). NoCut(int) Builds a brief representing a physically-computed “no cut” state — i.e. EnablePhysics=true but the step has no engagement (IsTouched=false). This is semantically distinct from a null brief which means “physics was not computed at all”. All forces, moments, ratios, chip dimensions and deflections are zero; relief-face colliding speed is set to a negative sentinel so IsReliefFaceCollided returns false rather than null. public static MillingPhysicsBrief NoCut(int rotationDivisionNum) Parameters rotationDivisionNum int The rotation division count this brief reports. Returns MillingPhysicsBrief PowerWithoutFriction_W() Gets the power without friction in watts, calculated as axial power taken by workpiece minus friction power. public double PowerWithoutFriction_W() Returns double" }, "api/Hi.MillingForces.PhysicsUtil.html": { "href": "api/Hi.MillingForces.PhysicsUtil.html", @@ -2922,7 +3047,7 @@ "api/Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html": { "href": "api/Hi.MillingForces.ProfileMillingParas.LocalProfileMillingPara.html", "title": "Class LocalProfileMillingPara | HiAPI-C# 2025", - "summary": "Class LocalProfileMillingPara Namespace Hi.MillingForces.ProfileMillingParas Assembly HiMech.dll Milling parameter of altintas model. public class LocalProfileMillingPara : IEquatable, IMakeXmlSource, IGetLocalProfileMillingPara, ICsvRowIo Inheritance object LocalProfileMillingPara Implements IEquatable IMakeXmlSource IGetLocalProfileMillingPara ICsvRowIo Inherited Members object.Equals(object, object) 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 LocalProfileMillingPara() Ctor. public LocalProfileMillingPara() LocalProfileMillingPara(Vec3d, Vec3d) Ctor. public LocalProfileMillingPara(Vec3d shearPara, Vec3d ploughPara) Parameters shearPara Vec3d shear milling parameter. (x,y,z)=(Ktc,Krc,Kac) ploughPara Vec3d plough milling parameter. (x,y,z)=(Kte,Kre,Kae) LocalProfileMillingPara(LocalProfileMillingPara) Copy constructor. public LocalProfileMillingPara(LocalProfileMillingPara srcPara) Parameters srcPara LocalProfileMillingPara Source parameter to copy from. LocalProfileMillingPara(double, double, double, double, double, double) Constructor with specific milling parameters. public LocalProfileMillingPara(double Krc, double Ktc, double Kac, double Kre, double Kte, double Kae) Parameters Krc double Radial shear coefficient. Ktc double Tangential shear coefficient. Kac double Axial shear coefficient. Kre double Radial plough coefficient. Kte double Tangential plough coefficient. Kae double Axial plough coefficient. LocalProfileMillingPara(XElement) Ctor by XML. public LocalProfileMillingPara(XElement src) Parameters src XElement XML Fields Zero Gets a LocalProfileMillingPara instance with all parameters set to zero. public static LocalProfileMillingPara Zero Field Value LocalProfileMillingPara Properties AA7075 Gets milling parameters for AA7075 aluminum alloy. public static LocalProfileMillingPara AA7075 { get; } Property Value LocalProfileMillingPara Al6061T6 Al6061T6. Build by 20190213 PMC end-mill exp. public static LocalProfileMillingPara Al6061T6 { get; } Property Value LocalProfileMillingPara Al6061T6_ Milling parameters for Al6061T6 material (older version). Determined by NCCU. public static LocalProfileMillingPara Al6061T6_ { get; } Property Value LocalProfileMillingPara Al6061T6_R0p5 Milling parameters for Al6061T6 material with 0.5mm radius. Built by PMC on 2019-02-13. public static LocalProfileMillingPara Al6061T6_R0p5 { get; } Property Value LocalProfileMillingPara CsvText Csv text. public string CsvText { get; set; } Property Value string CsvTitleText Csv titles text. public string CsvTitleText { get; } Property Value string Inconel718 Gets milling parameters for Inconel 718 material. public static LocalProfileMillingPara Inconel718 { get; } Property Value LocalProfileMillingPara Kp Coefficient of (Kpr,Kpt,Kpa). public Vec3d Kp { get; set; } Property Value Vec3d Kpa Coefficient of axial plough force. public double Kpa { get; set; } Property Value double Kpr Coefficient of radial plough force. public double Kpr { get; set; } Property Value double Kpt Coefficient of tangential plough force. public double Kpt { get; set; } Property Value double Ks Coefficient of (Ksr,Kst,Ksa). public Vec3d Ks { get; set; } Property Value Vec3d Ksa Coefficient of axial shear force. public double Ksa { get; set; } Property Value double Ksr Coefficient of radial shear force. public double Ksr { get; set; } Property Value double Kst Coefficient of tangential shear force. public double Kst { get; set; } Property Value double NaN Gets a LocalProfileMillingPara instance with all parameters set to NaN (Not a Number). public static LocalProfileMillingPara NaN { get; } Property Value LocalProfileMillingPara S45C_ColumnEnd Gets milling parameters for S45C material with column end configuration. public static LocalProfileMillingPara S45C_ColumnEnd { get; } Property Value LocalProfileMillingPara SS304 Milling parameters for SS304 stainless steel. Reference: “The effect of cutting force model coefficient variability on process planning in milling”, Firat Eren, University of New Hampshire, Durham. public static LocalProfileMillingPara SS304 { get; } Property Value LocalProfileMillingPara SS304_R0 Gets milling parameters for SS304 stainless steel with no radius (R0). public static LocalProfileMillingPara SS304_R0 { get; } Property Value LocalProfileMillingPara SS304_R0p5 Gets milling parameters for SS304 stainless steel with 0.5mm radius (R0.5) and 4 flutes. public static LocalProfileMillingPara SS304_R0p5 { get; } Property Value LocalProfileMillingPara SS304_R3 Gets milling parameters for SS304 stainless steel with 3mm radius (R3) and 4 flutes. public static LocalProfileMillingPara SS304_R3 { get; } Property Value LocalProfileMillingPara Steel17_4PH Milling parameters for Steel 17-4PH material. public static LocalProfileMillingPara Steel17_4PH { get; } Property Value LocalProfileMillingPara Ti6Al4V Gets milling parameters for Ti6Al4V material. public static LocalProfileMillingPara Ti6Al4V { get; } Property Value LocalProfileMillingPara Ti6Al4V_Altintas2001 Gets milling parameters for Ti6Al4V material based on Altintas 2001 research. public static LocalProfileMillingPara Ti6Al4V_Altintas2001 { get; } Property Value LocalProfileMillingPara XName Name for XML IO. public static string XName { get; } Property Value string Methods Equals(LocalProfileMillingPara) Indicates whether the current object is equal to another object of the same type. public bool Equals(LocalProfileMillingPara other) Parameters other LocalProfileMillingPara An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. GetElementByIndex(RtaMillingParaKey) Gets the parameter value by the specified key. public double GetElementByIndex(RtaMillingParaKey key) Parameters key RtaMillingParaKey The parameter key to retrieve. Returns double The parameter value corresponding to the key. GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. GetMillingPara() Get LocalProfileMillingPara. public LocalProfileMillingPara GetMillingPara() Returns LocalProfileMillingPara LocalProfileMillingPara 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetElementByIndex(RtaMillingParaKey, double) Sets the parameter value for the specified key. public void SetElementByIndex(RtaMillingParaKey key, double v) Parameters key RtaMillingParaKey The parameter key to set. v double The value to set. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." + "summary": "Class LocalProfileMillingPara Namespace Hi.MillingForces.ProfileMillingParas Assembly HiMech.dll Milling parameter of altintas model. public class LocalProfileMillingPara : IEquatable, IMakeXmlSource, IGetLocalProfileMillingPara, ICsvRowIo Inheritance object LocalProfileMillingPara Implements IEquatable IMakeXmlSource IGetLocalProfileMillingPara ICsvRowIo Inherited Members object.Equals(object, object) 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 LocalProfileMillingPara() Ctor. public LocalProfileMillingPara() LocalProfileMillingPara(Vec3d, Vec3d) Ctor. public LocalProfileMillingPara(Vec3d shearPara, Vec3d ploughPara) Parameters shearPara Vec3d shear milling parameter. (x,y,z)=(Ksr,Kst,Ksa) — the Ks convention ploughPara Vec3d plough milling parameter. (x,y,z)=(Kpr,Kpt,Kpa) — the Kp convention LocalProfileMillingPara(LocalProfileMillingPara) Copy constructor. public LocalProfileMillingPara(LocalProfileMillingPara srcPara) Parameters srcPara LocalProfileMillingPara Source parameter to copy from. LocalProfileMillingPara(double, double, double, double, double, double) Constructor with specific milling parameters. public LocalProfileMillingPara(double Krc, double Ktc, double Kac, double Kre, double Kte, double Kae) Parameters Krc double Radial shear coefficient. Ktc double Tangential shear coefficient. Kac double Axial shear coefficient. Kre double Radial plough coefficient. Kte double Tangential plough coefficient. Kae double Axial plough coefficient. LocalProfileMillingPara(XElement) Ctor by XML. public LocalProfileMillingPara(XElement src) Parameters src XElement XML Fields Zero Gets a LocalProfileMillingPara instance with all parameters set to zero. public static LocalProfileMillingPara Zero Field Value LocalProfileMillingPara Properties AA7075 Gets milling parameters for AA7075 aluminum alloy. public static LocalProfileMillingPara AA7075 { get; } Property Value LocalProfileMillingPara Al6061T6 Milling parameters for Al6061T6 material. public static LocalProfileMillingPara Al6061T6 { get; } Property Value LocalProfileMillingPara Al6061T6_ Milling parameters for Al6061T6 material (older calibration set, superseded by Al6061T6). public static LocalProfileMillingPara Al6061T6_ { get; } Property Value LocalProfileMillingPara Al6061T6_R0p5 Milling parameters for Al6061T6 material with 0.5mm radius. public static LocalProfileMillingPara Al6061T6_R0p5 { get; } Property Value LocalProfileMillingPara CsvText Csv text. public string CsvText { get; set; } Property Value string CsvTitleText Csv titles text. public string CsvTitleText { get; } Property Value string Inconel718 Gets milling parameters for Inconel 718 material. public static LocalProfileMillingPara Inconel718 { get; } Property Value LocalProfileMillingPara Kp Coefficient of (Kpr,Kpt,Kpa). public Vec3d Kp { get; set; } Property Value Vec3d Kpa Coefficient of axial plough force. public double Kpa { get; set; } Property Value double Kpr Coefficient of radial plough force. public double Kpr { get; set; } Property Value double Kpt Coefficient of tangential plough force. public double Kpt { get; set; } Property Value double Ks Coefficient of (Ksr,Kst,Ksa). public Vec3d Ks { get; set; } Property Value Vec3d Ksa Coefficient of axial shear force. public double Ksa { get; set; } Property Value double Ksr Coefficient of radial shear force. public double Ksr { get; set; } Property Value double Kst Coefficient of tangential shear force. public double Kst { get; set; } Property Value double NaN Gets a LocalProfileMillingPara instance with all parameters set to NaN (Not a Number). public static LocalProfileMillingPara NaN { get; } Property Value LocalProfileMillingPara S45C_ColumnEnd Gets milling parameters for S45C material with column end configuration. public static LocalProfileMillingPara S45C_ColumnEnd { get; } Property Value LocalProfileMillingPara SS304 Milling parameters for SS304 stainless steel. public static LocalProfileMillingPara SS304 { get; } Property Value LocalProfileMillingPara SS304_R0 Gets milling parameters for SS304 stainless steel with no radius (R0). public static LocalProfileMillingPara SS304_R0 { get; } Property Value LocalProfileMillingPara SS304_R0p5 Gets milling parameters for SS304 stainless steel with 0.5mm radius (R0.5) and 4 flutes. public static LocalProfileMillingPara SS304_R0p5 { get; } Property Value LocalProfileMillingPara SS304_R3 Gets milling parameters for SS304 stainless steel with 3mm radius (R3) and 4 flutes. public static LocalProfileMillingPara SS304_R3 { get; } Property Value LocalProfileMillingPara Steel17_4PH Milling parameters for Steel 17-4PH material. public static LocalProfileMillingPara Steel17_4PH { get; } Property Value LocalProfileMillingPara Ti6Al4V Gets milling parameters for Ti6Al4V material. public static LocalProfileMillingPara Ti6Al4V { get; } Property Value LocalProfileMillingPara Ti6Al4V_Altintas2001 Gets milling parameters for Ti6Al4V material based on Altintas 2001 research. public static LocalProfileMillingPara Ti6Al4V_Altintas2001 { get; } Property Value LocalProfileMillingPara XName Name for XML IO. public static string XName { get; } Property Value string Methods Equals(LocalProfileMillingPara) Indicates whether the current object is equal to another object of the same type. public bool Equals(LocalProfileMillingPara other) Parameters other LocalProfileMillingPara An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. GetElementByIndex(RtaMillingParaKey) Gets the parameter value by the specified key. public double GetElementByIndex(RtaMillingParaKey key) Parameters key RtaMillingParaKey The parameter key to retrieve. Returns double The parameter value corresponding to the key. GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. GetMillingPara() Get LocalProfileMillingPara. public LocalProfileMillingPara GetMillingPara() Returns LocalProfileMillingPara LocalProfileMillingPara 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetElementByIndex(RtaMillingParaKey, double) Sets the parameter value for the specified key. public void SetElementByIndex(RtaMillingParaKey key, double v) Parameters key RtaMillingParaKey The parameter key to set. v double The value to set. ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object." }, "api/Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap.html": { "href": "api/Hi.MillingForces.ProfileMillingParas.ProfileMillingParaMap.html", @@ -2942,7 +3067,7 @@ "api/Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html": { "href": "api/Hi.MillingForces.RakeFaceCuttingParas.IRakeFaceCuttingPara.html", "title": "Interface IRakeFaceCuttingPara | HiAPI-C# 2025", - "summary": "Interface IRakeFaceCuttingPara Namespace Hi.MillingForces.RakeFaceCuttingParas Assembly HiMech.dll Defines cutting parameters on the rake face for force modeling, supporting XML IO and duplication. public interface IRakeFaceCuttingPara : ICuttingPara, IGetCuttingPara, IMakeXmlSource, INameNote, IDuplicate Inherited Members ICuttingPara.FluteFormNum ICuttingPara.ElementNum ICuttingPara.ToTemplateXElement() ICuttingPara.GenUnitParas() ICuttingPara.SetElementByIndex(int, double) ICuttingPara.GetElementByIndex(int) ICuttingPara.CloneTemplate() IGetCuttingPara.GetCuttingPara() IMakeXmlSource.MakeXmlSource(string, string, bool) INameNote.Name INameNote.Note IDuplicate.Duplicate(params object[]) Extension Methods CuttingParaUtil.ToRakeFaceCuttingPara(ICuttingPara) 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 AnchorRakeAngle_deg Gets or sets the anchor rake angle in degrees. double AnchorRakeAngle_deg { get; set; } Property Value double AnchorRakeAngle_rad Gets or sets the anchor rake angle in radians. Different rake angles may have different ploughing parameters but share the same shearing parameters. double AnchorRakeAngle_rad { get; set; } Property Value double Kpc Gets or sets the ploughing coefficient along the rake face cross line (c). Unit: N/mm. double Kpc { get; set; } Property Value double Kpn Gets or sets the ploughing coefficient along the rake face normal direction (n). Unit: N/mm. double Kpn { get; set; } Property Value double Ksc Gets or sets the shear coefficient along the rake face cross line (c). Direction is from outer to center on side cutting. Unit: N/mm². double Ksc { get; set; } Property Value double Ksn Gets or sets the shear coefficient along the rake face normal direction (n). Unit: N/mm². double Ksn { get; set; } Property Value double" + "summary": "Interface IRakeFaceCuttingPara Namespace Hi.MillingForces.RakeFaceCuttingParas Assembly HiMech.dll Defines cutting parameters on the rake face for force modeling, supporting XML IO and duplication. public interface IRakeFaceCuttingPara : ICuttingPara, IGetCuttingPara, IMakeXmlSource, INameNote, IDuplicate Inherited Members ICuttingPara.FluteFormNum ICuttingPara.ElementNum ICuttingPara.ToTemplateXElement() ICuttingPara.GenUnitParas() ICuttingPara.SetElementByIndex(int, double) ICuttingPara.GetElementByIndex(int) ICuttingPara.CloneTemplate() IGetCuttingPara.GetCuttingPara() IMakeXmlSource.MakeXmlSource(string, string, bool) INameNote.Name INameNote.Note IDuplicate.Duplicate(params object[]) Extension Methods CuttingParaUtil.ToRakeFaceCuttingPara(ICuttingPara) 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 AnchorRakeAngle_deg Gets or sets the anchor rake angle in degrees. double AnchorRakeAngle_deg { get; set; } Property Value double AnchorRakeAngle_rad Gets or sets the anchor rake angle in radians — the rake angle this parameter set was calibrated at. double AnchorRakeAngle_rad { get; set; } Property Value double Kpc Gets or sets the ploughing coefficient along the rake face cross line (c). Unit: N/mm. double Kpc { get; set; } Property Value double Kpn Gets or sets the ploughing coefficient along the rake face normal direction (n). Unit: N/mm. double Kpn { get; set; } Property Value double Ksc Gets or sets the shear coefficient along the rake face cross line (c). Direction is from outer to center on side cutting. Unit: N/mm². double Ksc { get; set; } Property Value double Ksn Gets or sets the shear coefficient along the rake face normal direction (n). Unit: N/mm². double Ksn { get; set; } Property Value double" }, "api/Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil.html": { "href": "api/Hi.MillingForces.RakeFaceCuttingParas.MillingPhysicsUtil.html", @@ -2957,17 +3082,17 @@ "api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html": { "href": "api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara2d.html", "title": "Class RakeFaceCuttingPara2d | HiAPI-C# 2025", - "summary": "Class RakeFaceCuttingPara2d Namespace Hi.MillingForces.RakeFaceCuttingParas Assembly HiMech.dll Represents a 2D cutting parameter for rake face cutting operations. public class RakeFaceCuttingPara2d : IRakeFaceCuttingPara, ICuttingPara, IGetCuttingPara, IMakeXmlSource, INameNote, IDuplicate Inheritance object RakeFaceCuttingPara2d Implements IRakeFaceCuttingPara ICuttingPara IGetCuttingPara IMakeXmlSource INameNote IDuplicate Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CuttingParaUtil.ToRakeFaceCuttingPara(ICuttingPara) 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 RakeFaceCuttingPara2d() Initializes a new instance of the RakeFaceCuttingPara2d class. public RakeFaceCuttingPara2d() RakeFaceCuttingPara2d(RakeFaceCuttingPara2d) Initializes a new instance of the RakeFaceCuttingPara2d class by copying from another instance. public RakeFaceCuttingPara2d(RakeFaceCuttingPara2d src) Parameters src RakeFaceCuttingPara2d The source instance to copy from. RakeFaceCuttingPara2d(XElement, string) Initializes a new instance of the RakeFaceCuttingPara2d class from XML. public RakeFaceCuttingPara2d(XElement src, string baseDirectory) Parameters src XElement The XML source element. baseDirectory string The base directory for resolving relative paths. Fields element_num Gets the number of elements in the cutting parameter. public const int element_num = 4 Field Value int Properties AnchorRakeAngle_deg Gets or sets the anchor rake angle in degrees. public double AnchorRakeAngle_deg { get; set; } Property Value double AnchorRakeAngle_rad Gets or sets the anchor rake angle in radians. Different rake angles may have different ploughing parameters but share the same shearing parameters. public double AnchorRakeAngle_rad { get; set; } Property Value double ElementNum Element number. public int ElementNum { get; } Property Value int FluteFormNum Flute form number. public int FluteFormNum { get; } Property Value int Kp Gets the ploughing coefficient vector in ECN coordinates. public Vec2d Kp { get; set; } Property Value Vec2d Kpc Gets or sets the ploughing coefficient along the rake face cross line (c). Unit: N/mm. public double Kpc { get; set; } Property Value double Kpn Gets or sets the ploughing coefficient along the rake face normal direction (n). Unit: N/mm. public double Kpn { get; set; } Property Value double Ks Gets the shear coefficient vector in ECN coordinates. public Vec2d Ks { get; set; } Property Value Vec2d Ksc Gets or sets the shear coefficient along the rake face cross line (c). Direction is from outer to center on side cutting. Unit: N/mm�. public double Ksc { get; set; } Property Value double Ksn Gets or sets the shear coefficient along the rake face normal direction (n). Unit: N/mm�. public double Ksn { get; set; } Property Value double Name Gets or sets the name of the cutting parameter. public string Name { get; set; } Property Value string Note Gets or sets additional notes about the cutting parameter. public string Note { get; set; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string XmlSourceFile public string XmlSourceFile { get; set; } Property Value string Methods CloneTemplate() Clone template. public ICuttingPara CloneTemplate() Returns ICuttingPara clone template Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object GenUnitParas() Generate ICuttingParas. The elements of each ICuttingPara are (1,0,0,0,..),(0,1,0,0,..),.… For parameter training. public List GenUnitParas() Returns List unit parameters. GetCuttingPara() Get ICuttingPara. public ICuttingPara GetCuttingPara() Returns ICuttingPara ICuttingPara GetElementByIndex(int) Gets the cutting parameter element at the specified index. public double GetElementByIndex(int index) Parameters index int The index of the element to retrieve. Returns double The cutting parameter element at the specified index. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetElementByIndex(int, double) Sets the value of an element at the specified index. public void SetElementByIndex(int elementIndex, double v) Parameters elementIndex int The index of the element to set (0-5). v double The value to set. Remarks Index mapping: 0 - Kse (N/mm�) 1 - Ksc (N/mm�) 2 - Ksn (N/mm�) 3 - Kpe (N/mm) 4 - Kpc (N/mm) 5 - Kpn (N/mm) ToTemplateXElement() Get XElement for templating. public XElement ToTemplateXElement() Returns XElement" + "summary": "Class RakeFaceCuttingPara2d Namespace Hi.MillingForces.RakeFaceCuttingParas Assembly HiMech.dll Represents a 2D cutting parameter for rake face cutting operations. public class RakeFaceCuttingPara2d : IRakeFaceCuttingPara, ICuttingPara, IGetCuttingPara, IMakeXmlSource, INameNote, IDuplicate Inheritance object RakeFaceCuttingPara2d Implements IRakeFaceCuttingPara ICuttingPara IGetCuttingPara IMakeXmlSource INameNote IDuplicate Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CuttingParaUtil.ToRakeFaceCuttingPara(ICuttingPara) 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 RakeFaceCuttingPara2d() Initializes a new instance of the RakeFaceCuttingPara2d class. public RakeFaceCuttingPara2d() RakeFaceCuttingPara2d(RakeFaceCuttingPara2d) Initializes a new instance of the RakeFaceCuttingPara2d class by copying from another instance. public RakeFaceCuttingPara2d(RakeFaceCuttingPara2d src) Parameters src RakeFaceCuttingPara2d The source instance to copy from. RakeFaceCuttingPara2d(XElement, string) Initializes a new instance of the RakeFaceCuttingPara2d class from XML. public RakeFaceCuttingPara2d(XElement src, string baseDirectory) Parameters src XElement The XML source element. baseDirectory string The base directory for resolving relative paths. Fields element_num Gets the number of elements in the cutting parameter. public const int element_num = 4 Field Value int Properties AnchorRakeAngle_deg Gets or sets the anchor rake angle in degrees. public double AnchorRakeAngle_deg { get; set; } Property Value double AnchorRakeAngle_rad Gets or sets the anchor rake angle in radians — the rake angle this parameter set was calibrated at. public double AnchorRakeAngle_rad { get; set; } Property Value double ElementNum Element number. public int ElementNum { get; } Property Value int FluteFormNum Flute form number. public int FluteFormNum { get; } Property Value int Kp Gets the ploughing coefficient vector in ECN coordinates. public Vec2d Kp { get; set; } Property Value Vec2d Kpc Gets or sets the ploughing coefficient along the rake face cross line (c). Unit: N/mm. public double Kpc { get; set; } Property Value double Kpn Gets or sets the ploughing coefficient along the rake face normal direction (n). Unit: N/mm. public double Kpn { get; set; } Property Value double Ks Gets the shear coefficient vector in ECN coordinates. public Vec2d Ks { get; set; } Property Value Vec2d Ksc Gets or sets the shear coefficient along the rake face cross line (c). Direction is from outer to center on side cutting. Unit: N/mm�. public double Ksc { get; set; } Property Value double Ksn Gets or sets the shear coefficient along the rake face normal direction (n). Unit: N/mm�. public double Ksn { get; set; } Property Value double Name Gets or sets the name of the cutting parameter. public string Name { get; set; } Property Value string Note Gets or sets additional notes about the cutting parameter. public string Note { get; set; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string XmlSourceFile public string XmlSourceFile { get; set; } Property Value string Methods CloneTemplate() Clone template. public ICuttingPara CloneTemplate() Returns ICuttingPara clone template Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object GenUnitParas() Generate the ICuttingPara set used by parameter training. The list length equals ElementNum; entry i corresponds to the element of index i (see SetElementByIndex). public List GenUnitParas() Returns List training parameters. GetCuttingPara() Get ICuttingPara. public ICuttingPara GetCuttingPara() Returns ICuttingPara ICuttingPara GetElementByIndex(int) Gets the cutting parameter element at the specified index. public double GetElementByIndex(int index) Parameters index int The index of the element to retrieve. Returns double The cutting parameter element at the specified index. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetElementByIndex(int, double) Sets the value of an element at the specified index. public void SetElementByIndex(int elementIndex, double v) Parameters elementIndex int The index of the element to set (0-3; see element_num). v double The value to set. Remarks Index mapping: 0 - Ksc (N/mm^2) 1 - Ksn (N/mm^2) 2 - Kpc (N/mm) 3 - Kpn (N/mm) ToTemplateXElement() Get XElement for templating. public XElement ToTemplateXElement() Returns XElement" }, "api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html": { "href": "api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingPara3d.html", "title": "Class RakeFaceCuttingPara3d | HiAPI-C# 2025", - "summary": "Class RakeFaceCuttingPara3d Namespace Hi.MillingForces.RakeFaceCuttingParas Assembly HiMech.dll Represents local ECN (Edge-Cross-Normal) cutting parameters for rake face cutting. E: cutting edge direction C: Cross vector, along the rake face cross line, perpendicular to cutting edge N: rake face normal direction Internal Use Only. public class RakeFaceCuttingPara3d : IRakeFaceCuttingPara, ICuttingPara, IGetCuttingPara, IMakeXmlSource, INameNote, IDuplicate Inheritance object RakeFaceCuttingPara3d Implements IRakeFaceCuttingPara ICuttingPara IGetCuttingPara IMakeXmlSource INameNote IDuplicate Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CuttingParaUtil.ToRakeFaceCuttingPara(ICuttingPara) 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 Velocity is measured relative to the cutter Resulting force is applied to the cutter Constructors RakeFaceCuttingPara3d() Initializes a new instance of the RakeFaceCuttingPara class. public RakeFaceCuttingPara3d() RakeFaceCuttingPara3d(Vec3d, Vec3d, double) Initializes a new instance of the RakeFaceCuttingPara class with specified shear and plough vectors. public RakeFaceCuttingPara3d(Vec3d shearEcn, Vec3d ploughEcn, double anchorRakeAngle_rad = NaN) Parameters shearEcn Vec3d The shear coefficient vector in ECN coordinates (N/mm�). ploughEcn Vec3d The plough coefficient vector in ECN coordinates (N/mm). anchorRakeAngle_rad double The anchor rake angle in radians. RakeFaceCuttingPara3d(RakeFaceCuttingPara3d) Initializes a new instance of the RakeFaceCuttingPara class by copying from another instance. public RakeFaceCuttingPara3d(RakeFaceCuttingPara3d src) Parameters src RakeFaceCuttingPara3d The source instance to copy from. RakeFaceCuttingPara3d(double, double, double, double, double, double, double) Initializes a new instance of the RakeFaceCuttingPara class with individual coefficient values. public RakeFaceCuttingPara3d(double kse, double ksc, double ksn, double kpe, double kpc, double kpn, double anchorRakeAngle_rad) Parameters kse double The shear coefficient along the cutting edge direction (N/mm�). ksc double The shear coefficient along the rake face cross line (N/mm�). ksn double The shear coefficient along the rake face normal direction (N/mm�). kpe double The plough coefficient along the cutting edge direction (N/mm). kpc double The plough coefficient along the rake face cross line (N/mm). kpn double The plough coefficient along the rake face normal direction (N/mm). anchorRakeAngle_rad double The anchor rake angle in radians. RakeFaceCuttingPara3d(XElement, string) Ctor by XML. public RakeFaceCuttingPara3d(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory path for resolving relative paths Properties AnchorRakeAngle_deg Gets or sets the anchor rake angle in degrees. public double AnchorRakeAngle_deg { get; set; } Property Value double AnchorRakeAngle_rad Gets or sets the anchor rake angle in radians. Different rake angles may have different ploughing parameters but share the same shearing parameters. public double AnchorRakeAngle_rad { get; set; } Property Value double ChipFlowAngle_deg Gets the chip flow angle in degrees. public double ChipFlowAngle_deg { get; } Property Value double ChipFlowAngle_rad Gets or sets the chip flow angle in radians. public double ChipFlowAngle_rad { get; } Property Value double CsvText Gets or sets the cutting parameters as a comma-separated value string. Format: Kse,Ksc,Ksn,Kpe,Kpc,Kpn,AnchorRakeAngle_deg public string CsvText { get; set; } Property Value string ElementNum Element number: 6 for (Shear(e,c,n),Plough(e,c,n)). public int ElementNum { get; } Property Value int FluteFormNum Gets the number of flute forms in this parameter set. Always returns 1 as this class represents a single form. public int FluteFormNum { get; } Property Value int FrictionAngle_deg Gets the friction angle in degrees. public double FrictionAngle_deg { get; } Property Value double FrictionAngle_rad Gets the friction angle in radians. public double FrictionAngle_rad { get; } Property Value double Kp Gets the ploughing coefficient vector in ECN coordinates. public Vec3d Kp { get; set; } Property Value Vec3d KpOnZeroRakeAngleCoordinate Plough parameter remains constant on any rake angle. The vector changed by the view of coordinate transformation. public Vec3d KpOnZeroRakeAngleCoordinate { get; } Property Value Vec3d Kpc Gets or sets the ploughing coefficient along the rake face cross line (c). Unit: N/mm. public double Kpc { get; set; } Property Value double Kpe Gets or sets the ploughing coefficient along the cutting edge direction (e). Unit: N/mm. public double Kpe { get; set; } Property Value double Kpn Gets or sets the ploughing coefficient along the rake face normal direction (n). Unit: N/mm. public double Kpn { get; set; } Property Value double Ks Gets the shear coefficient vector in ECN coordinates. public Vec3d Ks { get; set; } Property Value Vec3d Ksc Gets or sets the shear coefficient along the rake face cross line (c). Direction is from outer to center on side cutting. Unit: N/mm�. public double Ksc { get; set; } Property Value double Kse Gets or sets the shear coefficient along the cutting edge direction (e). Direction is from lower to upper on side cutting. Unit: N/mm�. public double Kse { get; set; } Property Value double Ksn Gets or sets the shear coefficient along the rake face normal direction (n). Unit: N/mm�. public double Ksn { get; set; } Property Value double Name Gets or sets the name of this parameter set. public string Name { get; set; } Property Value string Note Gets or sets additional notes about this parameter set. public string Note { get; set; } Property Value string XName Gets the XML element name for this type. public static string XName { get; } Property Value string Methods CloneTemplate() Creates a clone of this parameter set as a template. public ICuttingPara CloneTemplate() Returns ICuttingPara A new instance with the same anchor rake angle. Duplicate(params object[]) Creates a deep copy of this instance. public object Duplicate(params object[] res) Parameters res object[] Optional parameters (not used). Returns object A new instance with the same values. GenUnitParas() Generate ICuttingParas. The elements of each ICuttingPara are (1,0,0,0,..),(0,1,0,0,..),.… For parameter training. public List GenUnitParas() Returns List unit parameters. GetCuttingPara() Gets this instance as an ICuttingPara. public ICuttingPara GetCuttingPara() Returns ICuttingPara This instance. GetElementByIndex(int) value of (Shear(e,c,n),Plough(e,c,n)) by index. public double GetElementByIndex(int index) Parameters index int The index of the element to get (0-5). Returns double The value at the specified index. Remarks Index mapping: 0 - Kse (N/mm�) 1 - Ksc (N/mm�) 2 - Ksn (N/mm�) 3 - Kpe (N/mm) 4 - Kpc (N/mm) 5 - Kpn (N/mm) 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetElementByIndex(int, double) Sets the value of an element at the specified index. public void SetElementByIndex(int elementIndex, double v) Parameters elementIndex int The index of the element to set (0-5). v double The value to set. Remarks Index mapping: 0 - Kse (N/mm�) 1 - Ksc (N/mm�) 2 - Ksn (N/mm�) 3 - Kpe (N/mm) 4 - Kpc (N/mm) 5 - Kpn (N/mm) ToTemplateXElement() Get XElement for templating. public XElement ToTemplateXElement() Returns XElement" + "summary": "Class RakeFaceCuttingPara3d Namespace Hi.MillingForces.RakeFaceCuttingParas Assembly HiMech.dll Represents local ECN (Edge-Cross-Normal) cutting parameters for rake face cutting. E: cutting edge direction C: Cross vector, along the rake face cross line, perpendicular to cutting edge N: rake face normal direction Internal Use Only. public class RakeFaceCuttingPara3d : IRakeFaceCuttingPara, ICuttingPara, IGetCuttingPara, IMakeXmlSource, INameNote, IDuplicate Inheritance object RakeFaceCuttingPara3d Implements IRakeFaceCuttingPara ICuttingPara IGetCuttingPara IMakeXmlSource INameNote IDuplicate Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CuttingParaUtil.ToRakeFaceCuttingPara(ICuttingPara) 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 Velocity is measured relative to the cutter Resulting force is applied to the cutter Constructors RakeFaceCuttingPara3d() Initializes a new instance of the RakeFaceCuttingPara class. public RakeFaceCuttingPara3d() RakeFaceCuttingPara3d(Vec3d, Vec3d, double) Initializes a new instance of the RakeFaceCuttingPara class with specified shear and plough vectors. public RakeFaceCuttingPara3d(Vec3d shearEcn, Vec3d ploughEcn, double anchorRakeAngle_rad = NaN) Parameters shearEcn Vec3d The shear coefficient vector in ECN coordinates (N/mm�). ploughEcn Vec3d The plough coefficient vector in ECN coordinates (N/mm). anchorRakeAngle_rad double The anchor rake angle in radians. RakeFaceCuttingPara3d(RakeFaceCuttingPara3d) Initializes a new instance of the RakeFaceCuttingPara class by copying from another instance. public RakeFaceCuttingPara3d(RakeFaceCuttingPara3d src) Parameters src RakeFaceCuttingPara3d The source instance to copy from. RakeFaceCuttingPara3d(double, double, double, double, double, double, double) Initializes a new instance of the RakeFaceCuttingPara class with individual coefficient values. public RakeFaceCuttingPara3d(double kse, double ksc, double ksn, double kpe, double kpc, double kpn, double anchorRakeAngle_rad) Parameters kse double The shear coefficient along the cutting edge direction (N/mm�). ksc double The shear coefficient along the rake face cross line (N/mm�). ksn double The shear coefficient along the rake face normal direction (N/mm�). kpe double The plough coefficient along the cutting edge direction (N/mm). kpc double The plough coefficient along the rake face cross line (N/mm). kpn double The plough coefficient along the rake face normal direction (N/mm). anchorRakeAngle_rad double The anchor rake angle in radians. RakeFaceCuttingPara3d(XElement, string) Ctor by XML. public RakeFaceCuttingPara3d(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory path for resolving relative paths Properties AnchorRakeAngle_deg Gets or sets the anchor rake angle in degrees. public double AnchorRakeAngle_deg { get; set; } Property Value double AnchorRakeAngle_rad Gets or sets the anchor rake angle in radians — the rake angle this parameter set was calibrated at. public double AnchorRakeAngle_rad { get; set; } Property Value double ChipFlowAngle_deg Gets the chip flow angle in degrees. public double ChipFlowAngle_deg { get; } Property Value double ChipFlowAngle_rad Gets or sets the chip flow angle in radians. public double ChipFlowAngle_rad { get; } Property Value double CsvText Gets or sets the cutting parameters as a comma-separated value string. Format: Kse,Ksc,Ksn,Kpe,Kpc,Kpn,AnchorRakeAngle_deg public string CsvText { get; set; } Property Value string ElementNum Element number: 6 for (Shear(e,c,n),Plough(e,c,n)). public int ElementNum { get; } Property Value int FluteFormNum Gets the number of flute forms in this parameter set. Always returns 1 as this class represents a single form. public int FluteFormNum { get; } Property Value int FrictionAngle_deg Gets the friction angle in degrees. public double FrictionAngle_deg { get; } Property Value double FrictionAngle_rad Gets the friction angle in radians. public double FrictionAngle_rad { get; } Property Value double Kp Gets the ploughing coefficient vector in ECN coordinates. public Vec3d Kp { get; set; } Property Value Vec3d KpOnZeroRakeAngleCoordinate Gets Kp expressed on the zero-rake-angle coordinate (a NaN AnchorRakeAngle_rad is treated as zero). public Vec3d KpOnZeroRakeAngleCoordinate { get; } Property Value Vec3d Kpc Gets or sets the ploughing coefficient along the rake face cross line (c). Unit: N/mm. public double Kpc { get; set; } Property Value double Kpe Gets or sets the ploughing coefficient along the cutting edge direction (e). Unit: N/mm. public double Kpe { get; set; } Property Value double Kpn Gets or sets the ploughing coefficient along the rake face normal direction (n). Unit: N/mm. public double Kpn { get; set; } Property Value double Ks Gets the shear coefficient vector in ECN coordinates. public Vec3d Ks { get; set; } Property Value Vec3d Ksc Gets or sets the shear coefficient along the rake face cross line (c). Direction is from outer to center on side cutting. Unit: N/mm�. public double Ksc { get; set; } Property Value double Kse Gets or sets the shear coefficient along the cutting edge direction (e). Direction is from lower to upper on side cutting. Unit: N/mm�. public double Kse { get; set; } Property Value double Ksn Gets or sets the shear coefficient along the rake face normal direction (n). Unit: N/mm�. public double Ksn { get; set; } Property Value double Name Gets or sets the name of this parameter set. public string Name { get; set; } Property Value string Note Gets or sets additional notes about this parameter set. public string Note { get; set; } Property Value string XName Gets the XML element name for this type. public static string XName { get; } Property Value string Methods CloneTemplate() Creates a clone of this parameter set as a template. public ICuttingPara CloneTemplate() Returns ICuttingPara A new instance with the same anchor rake angle. Duplicate(params object[]) Creates a deep copy of this instance. public object Duplicate(params object[] res) Parameters res object[] Optional parameters (not used). Returns object A new instance with the same values. GenUnitParas() Generate the ICuttingPara set used by parameter training. The list length equals ElementNum; entry i corresponds to the element of index i (see SetElementByIndex). public List GenUnitParas() Returns List training parameters. GetCuttingPara() Gets this instance as an ICuttingPara. public ICuttingPara GetCuttingPara() Returns ICuttingPara This instance. GetElementByIndex(int) value of (Shear(e,c,n),Plough(e,c,n)) by index. public double GetElementByIndex(int index) Parameters index int The index of the element to get (0-5). Returns double The value at the specified index. Remarks Index mapping: 0 - Kse (N/mm�) 1 - Ksc (N/mm�) 2 - Ksn (N/mm�) 3 - Kpe (N/mm) 4 - Kpc (N/mm) 5 - Kpn (N/mm) 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetElementByIndex(int, double) Sets the value of an element at the specified index. public void SetElementByIndex(int elementIndex, double v) Parameters elementIndex int The index of the element to set (0-5). v double The value to set. Remarks Index mapping: 0 - Kse (N/mm�) 1 - Ksc (N/mm�) 2 - Ksn (N/mm�) 3 - Kpe (N/mm) 4 - Kpc (N/mm) 5 - Kpn (N/mm) ToTemplateXElement() Get XElement for templating. public XElement ToTemplateXElement() Returns XElement" }, "api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html": { "href": "api/Hi.MillingForces.RakeFaceCuttingParas.RakeFaceCuttingParaMap.html", "title": "Class RakeFaceCuttingParaMap | HiAPI-C# 2025", - "summary": "Class RakeFaceCuttingParaMap Namespace Hi.MillingForces.RakeFaceCuttingParas Assembly HiMech.dll Represents a map of rake face cutting parameters. public class RakeFaceCuttingParaMap : ICuttingPara, IGetCuttingPara, IMakeXmlSource, INameNote, ICloneable Inheritance object RakeFaceCuttingParaMap Implements ICuttingPara IGetCuttingPara IMakeXmlSource INameNote ICloneable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods CuttingParaUtil.ToRakeFaceCuttingPara(ICuttingPara) 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 RakeFaceCuttingParaMap(RakeFaceCuttingParaMap) Creates a copy of this parameter map. public RakeFaceCuttingParaMap(RakeFaceCuttingParaMap source) Parameters source RakeFaceCuttingParaMap The source parameter map to copy from. RakeFaceCuttingParaMap(int, int, int) Initializes a new instance of the RakeFaceCuttingParaMap class. public RakeFaceCuttingParaMap(int fluteFormNum, int nAngleDivisionNum, int ecAngleDivisionNum) Parameters fluteFormNum int The number of flute forms. nAngleDivisionNum int The number of normal angle divisions. ecAngleDivisionNum int The number of eccentric angle divisions. RakeFaceCuttingParaMap(XElement, string) Ctor by XML. public RakeFaceCuttingParaMap(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory path for resolving relative paths Properties CircleParas CircleParas[FluteFormIndex,NAngleIndex,EcAngleIndex]. public Vec3d[,,] CircleParas { get; } Property Value Vec3d[,,] EcAngleDivisionNum Angle division number from +E axis on EC plane. Note that range of EcAngle is -pi~pi. public int EcAngleDivisionNum { get; } Property Value int EcAngleInterval_deg Gets or sets the eccentric angle interval in degrees. public double EcAngleInterval_deg { get; } Property Value double EcAngleInterval_rad Gets or sets the eccentric angle interval in radians. public double EcAngleInterval_rad { get; } Property Value double ElementNum Element number. public int ElementNum { get; } Property Value int FluteFormNum Gets or sets the number of flute forms. public int FluteFormNum { get; } Property Value int NAngleDivisionNum Angle division number from N axis. Like R on polar coordinate, but it expresses by angle. Note that range of NAngle is 0~pi/2. public int NAngleDivisionNum { get; } Property Value int NAngleInterval_deg Gets or sets the normal angle interval in degrees. public double NAngleInterval_deg { get; } Property Value double NAngleInterval_rad Gets or sets the normal angle interval in radians. public double NAngleInterval_rad { get; } Property Value double Name Gets or sets the name of the parameter map. public string Name { get; set; } Property Value string Note Gets or sets the note for the parameter map. public string Note { get; set; } Property Value string PloughParas Gets or sets the ploughing parameters. public Vec3d[] PloughParas { get; } Property Value Vec3d[] TipParas TipParas[FluteFormIndex]. tip shear para. public Vec3d[] TipParas { get; } Property Value Vec3d[] XName Name for XML IO. public static string XName { get; } Property Value string XmlSourceFile public string XmlSourceFile { get; set; } Property Value string Methods Clone() Creates a new object that is a copy of the current instance. public object Clone() Returns object A new object that is a copy of this instance. CloneTemplate() Clone template. public ICuttingPara CloneTemplate() Returns ICuttingPara clone template GenUnitParas() Generate ICuttingParas. The elements of each ICuttingPara are (1,0,0,0,..),(0,1,0,0,..),.… For parameter training. public List GenUnitParas() Returns List unit parameters. GetCuttingPara() Get ICuttingPara. public ICuttingPara GetCuttingPara() Returns ICuttingPara ICuttingPara GetElementByIndex(int) Get element by index. For parameter training. public double GetElementByIndex(int elementIndex) Parameters elementIndex int element index Returns double value GetLocalRakeFaceCuttingPara(int, double, double) Gets the local rake face cutting parameters for the specified conditions. public RakeFaceCuttingPara3d GetLocalRakeFaceCuttingPara(int fluteIndex, double nAngle_rad, double ecAngle_rad) Parameters fluteIndex int The index of the flute. nAngle_rad double The normal angle in radians. ecAngle_rad double The effective cutting angle in radians. Returns RakeFaceCuttingPara3d A rake face cutting parameter object. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetElementByIndex(int, double) Set element by index. For parameter training. public void SetElementByIndex(int elementIndex, double v) Parameters elementIndex int element index v double value Test() Test method for validating the interpolation functionality of the RakeFaceCuttingParaMap. Creates a sample map and outputs interpolated values at various angles. public static void Test() ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToTemplateXElement() Get XElement for templating. public XElement ToTemplateXElement() Returns XElement" + "summary": "Class RakeFaceCuttingParaMap Namespace Hi.MillingForces.RakeFaceCuttingParas Assembly HiMech.dll Represents a map of rake face cutting parameters. public class RakeFaceCuttingParaMap : ICuttingPara, IGetCuttingPara, IMakeXmlSource, INameNote, ICloneable Inheritance object RakeFaceCuttingParaMap Implements ICuttingPara IGetCuttingPara IMakeXmlSource INameNote ICloneable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods CuttingParaUtil.ToRakeFaceCuttingPara(ICuttingPara) 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 RakeFaceCuttingParaMap(RakeFaceCuttingParaMap) Creates a copy of this parameter map. public RakeFaceCuttingParaMap(RakeFaceCuttingParaMap source) Parameters source RakeFaceCuttingParaMap The source parameter map to copy from. RakeFaceCuttingParaMap(int, int, int) Initializes a new instance of the RakeFaceCuttingParaMap class. public RakeFaceCuttingParaMap(int fluteFormNum, int nAngleDivisionNum, int ecAngleDivisionNum) Parameters fluteFormNum int The number of flute forms. nAngleDivisionNum int The number of normal angle divisions. ecAngleDivisionNum int The number of eccentric angle divisions. RakeFaceCuttingParaMap(XElement, string) Ctor by XML. public RakeFaceCuttingParaMap(XElement src, string baseDirectory) Parameters src XElement XML baseDirectory string Base directory path for resolving relative paths Properties CircleParas CircleParas[FluteFormIndex,NAngleIndex,EcAngleIndex]. public Vec3d[,,] CircleParas { get; } Property Value Vec3d[,,] EcAngleDivisionNum Angle division number from +E axis on EC plane. Note that range of EcAngle is -pi~pi. public int EcAngleDivisionNum { get; } Property Value int EcAngleInterval_deg Gets or sets the eccentric angle interval in degrees. public double EcAngleInterval_deg { get; } Property Value double EcAngleInterval_rad Gets or sets the eccentric angle interval in radians. public double EcAngleInterval_rad { get; } Property Value double ElementNum Element number. public int ElementNum { get; } Property Value int FluteFormNum Gets or sets the number of flute forms. public int FluteFormNum { get; } Property Value int NAngleDivisionNum Angle division number from N axis. Like R on polar coordinate, but it expresses by angle. Note that range of NAngle is 0~pi/2. public int NAngleDivisionNum { get; } Property Value int NAngleInterval_deg Gets or sets the normal angle interval in degrees. public double NAngleInterval_deg { get; } Property Value double NAngleInterval_rad Gets or sets the normal angle interval in radians. public double NAngleInterval_rad { get; } Property Value double Name Gets or sets the name of the parameter map. public string Name { get; set; } Property Value string Note Gets or sets the note for the parameter map. public string Note { get; set; } Property Value string PloughParas Gets or sets the ploughing parameters. public Vec3d[] PloughParas { get; } Property Value Vec3d[] TipParas TipParas[FluteFormIndex]. tip shear para. public Vec3d[] TipParas { get; } Property Value Vec3d[] XName Name for XML IO. public static string XName { get; } Property Value string XmlSourceFile public string XmlSourceFile { get; set; } Property Value string Methods Clone() Creates a new object that is a copy of the current instance. public object Clone() Returns object A new object that is a copy of this instance. CloneTemplate() Clone template. public ICuttingPara CloneTemplate() Returns ICuttingPara clone template GenUnitParas() Generate the ICuttingPara set used by parameter training. The list length equals ElementNum; entry i corresponds to the element of index i (see SetElementByIndex). public List GenUnitParas() Returns List training parameters. GetCuttingPara() Get ICuttingPara. public ICuttingPara GetCuttingPara() Returns ICuttingPara ICuttingPara GetElementByIndex(int) Get element by index. For parameter training. public double GetElementByIndex(int elementIndex) Parameters elementIndex int element index Returns double value GetLocalRakeFaceCuttingPara(int, double, double) Gets the local rake face cutting parameters for the specified conditions. public RakeFaceCuttingPara3d GetLocalRakeFaceCuttingPara(int fluteIndex, double nAngle_rad, double ecAngle_rad) Parameters fluteIndex int The index of the flute. nAngle_rad double The normal angle in radians. ecAngle_rad double The effective cutting angle in radians. Returns RakeFaceCuttingPara3d A rake face cutting parameter object. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetElementByIndex(int, double) Set element by index. For parameter training. public void SetElementByIndex(int elementIndex, double v) Parameters elementIndex int element index v double value Test() Test method for validating the interpolation functionality of the RakeFaceCuttingParaMap. Creates a sample map and outputs interpolated values at various angles. public static void Test() ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. ToTemplateXElement() Get XElement for templating. public XElement ToTemplateXElement() Returns XElement" }, "api/Hi.MillingForces.RakeFaceCuttingParas.html": { "href": "api/Hi.MillingForces.RakeFaceCuttingParas.html", @@ -2979,25 +3104,30 @@ "title": "Enum ToolObservationReference | HiAPI-C# 2025", "summary": "Enum ToolObservationReference Namespace Hi.MillingForces Assembly HiMech.dll Defines reference points for tool observation measurements. [Flags] public enum ToolObservationReference 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 HolderShankBuckle = 18 The holder shank buckle reference point combined with tool side. ProgramZero = 8 The program zero reference point. SpindleHolderBuckle = 20 The spindle holder buckle reference point combined with tool side. ToolSide = 16 The tool side reference point. ToolTip = 17 The tool tip reference point combined with tool side." }, + "api/Hi.MillingForces.Training.MillingParaTrainResult.html": { + "href": "api/Hi.MillingForces.Training.MillingParaTrainResult.html", + "title": "Class MillingParaTrainResult | HiAPI-C# 2025", + "summary": "Class MillingParaTrainResult Namespace Hi.MillingForces.Training Assembly HiNc.dll Snapshot of the most recent milling-parameter training call (LocalProjectService.TrainMillingPara / ReTrainMillingPara) — the queryable training outcome that otherwise only lands in the output .mp file's Note. Held by LocalProjectService.LastMillingParaTrainResult (service lifetime, last-wins) so callers such as the webservice can read it after a run without touching the file system. public class MillingParaTrainResult Inheritance object MillingParaTrainResult 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 CorrelationR Correlation coefficient R of the built parameter against the filtered samples (0..1); null when unavailable. public double? CorrelationR { get; set; } Property Value double? DstRelFile Destination file the built parameter was saved to (relative to the project base directory); null when not saved. public string DstRelFile { get; set; } Property Value string FilteredSampleNum Number of training samples that survived outlier filtering. public int FilteredSampleNum { get; set; } Property Value int Kind Which call produced the snapshot: “Train” or “ReTrain”. public string Kind { get; set; } Property Value string Note The built parameter's Note — the human-readable summary also written into the .mp file. public string Note { get; set; } Property Value string OutlierRatio The outlier exclusion ratio the training used. public double OutlierRatio { get; set; } Property Value double ParaName The built parameter's Name (the destination file name). public string ParaName { get; set; } Property Value string ParaTypeName The built parameter's concrete type name (e.g. RakeFaceCuttingPara2d). public string ParaTypeName { get; set; } Property Value string ParaXml The built parameter's full XML source — carries every trained coefficient in the same form as the saved .mp file. public string ParaXml { get; set; } Property Value string SampleFlags The SampleFlag combination the training used (enum text, e.g. “Mx, My, Mz”). public string SampleFlags { get; set; } Property Value string Succeeded False when the training aborted without a built parameter (no mapped data / no samples); the run's messages explain why. public bool Succeeded { get; set; } Property Value bool TrainedAtUtc UTC instant the training call completed. public DateTime TrainedAtUtc { get; set; } Property Value DateTime" + }, "api/Hi.MillingForces.Training.MillingTraining.html": { "href": "api/Hi.MillingForces.Training.MillingTraining.html", "title": "Class MillingTraining | HiAPI-C# 2025", - "summary": "Class MillingTraining Namespace Hi.MillingForces.Training Assembly HiNc.dll Provides utilities for milling force training and parameter identification. public static class MillingTraining Inheritance object MillingTraining Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields EnableMzLeverWeighting Gets or sets whether Mz lever weighting is enabled during training sample gathering. public static bool EnableMzLeverWeighting Field Value bool EnableSampleNormalization [Obsolete] public static bool EnableSampleNormalization Field Value bool Remarks The input normalization deminish the quantity effect. The R-value decrease from 99% to 70% in moment training case from NKUST\\nkust2024-milling-para-training-plan\\workingx.hincproj Don't apply this option. Properties CycleDivisionNum Division number of a spindle cycle. public static int CycleDivisionNum { get; } Property Value int DefaultParaTemplate Gets or sets the parameter template for cutting operations. public static ICuttingPara DefaultParaTemplate { get; set; } Property Value ICuttingPara StepQuantityNames Gets the names of step quantities used in training. public static string[] StepQuantityNames { get; } Property Value string[] TextAngleOffset_deg Gets the text key for angle offset in degrees. public static string TextAngleOffset_deg { get; } Property Value string TextTrainingErrRatio Gets the text key for training error ratio. public static string TextTrainingErrRatio { get; } Property Value string Methods Convert(ICuttingPara, ICuttingPara, GeneralApt, double, double, IProgress, CancellationToken) Converts one cutting parameter model to another based on the provided parameters. public static ICuttingPara Convert(ICuttingPara src, ICuttingPara resultParaTemplate, GeneralApt apt, double helixAngle_rad, double radialRakeAngle_rad, IProgress messageHost, CancellationToken cancellationToken) Parameters src ICuttingPara Source cutting parameter model resultParaTemplate ICuttingPara Destination template for the converted model apt GeneralApt General apt parameters helixAngle_rad double Helix angle in radians radialRakeAngle_rad double Radial rake angle in radians messageHost IProgress Message host for logging cancellationToken CancellationToken Cancellation token Returns ICuttingPara The converted cutting parameter model Convert(LocalProfileMillingPara, double, double, IProgress, CancellationToken) Converts a LocalProfileMillingPara to a RakeFaceCuttingPara. public static RakeFaceCuttingPara2d Convert(LocalProfileMillingPara src, double helixAngle_rad, double radialRakeAngle_rad, IProgress messageHost, CancellationToken cancellationToken) Parameters src LocalProfileMillingPara Source LocalProfileMillingPara helixAngle_rad double Helix angle in radians radialRakeAngle_rad double Radial rake angle in radians messageHost IProgress Message host for logging cancellationToken CancellationToken Cancellation token Returns RakeFaceCuttingPara2d The converted RakeFaceCuttingPara GatherAndGetUpdate(ConcurrentDictionary>, ClStrip, ICuttingPara, SampleFlag, double, IProgress, CancellationToken) Gathers training samples and updates an existing cutting parameter model. public static ICuttingPara GatherAndGetUpdate(ConcurrentDictionary> stepToTimeShotListDictionary, ClStrip clStrip, ICuttingPara anchorPara, SampleFlag sampleFlags, double outlierRatio, IProgress messageHost, CancellationToken cancellationToken) Parameters stepToTimeShotListDictionary ConcurrentDictionary> Dictionary mapping step indices to time shot lists clStrip ClStrip The cutter location strip anchorPara ICuttingPara The anchor cutting parameter model to update sampleFlags SampleFlag Sample flags indicating which forces to use outlierRatio double Ratio of outliers to exclude messageHost IProgress Message host for logging cancellationToken CancellationToken Cancellation token Returns ICuttingPara The updated cutting parameter model" + "summary": "Class MillingTraining Namespace Hi.MillingForces.Training Assembly HiNc.dll Provides utilities for milling force training and parameter identification. public static class MillingTraining Inheritance object MillingTraining Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields DesignMatrixSvdRelativeTol Relative singular-value cutoff (σ_i/σ_max on σ(M)) for the truncated pseudo-inverse of the lead-para fit when EnableDesignMatrixSolver is on. Replaces the legacy absolute gap (1e-7) applied to σ(MᵀM) = σ(M)², whose effective cut depends on the data scale. public static double DesignMatrixSvdRelativeTol Field Value double EnableCwePhasePairing When enabled, GatherAndBuild(ICuttingPara, ConcurrentDictionary>, ClStrip, SampleFlag, bool, double, IProgress, CancellationToken, out double, out int) determines each step's rotation phase by the CWE block-pairing detector (Hi.MillingForces.Training.MillingPhasePairing) instead of the self-bootstrapped averaged-basis lead parameter, and replaces the averaged-basis outlier pre-filter by a residual-based pass. Applies to one-flute and symmetric two-flute cutters in light radial side cuts (contact arc smaller than the flute pitch); when its preconditions do not hold the training falls back to the legacy lead path with a warning. public static bool EnableCwePhasePairing Field Value bool EnableDesignMatrixSolver When enabled, the least-squares fits are solved directly on the N-by-p design matrix M (thin QR, plus SVD of its R factor for the lead-para truncated pseudo-inverse) instead of forming the normal-equation matrix MᵀM first. Forming MᵀM squares the condition number (κ(MᵀM) = κ(M)²), which halves the usable precision and blurs the rank structure; the direct path keeps σ(M) intact at the same p-by-p solve size. Experimental flag for the QR-vs-MᵀM solver comparison. public static bool EnableDesignMatrixSolver Field Value bool EnableMzLeverWeighting Gets or sets whether Mz lever weighting is enabled during training sample gathering. public static bool EnableMzLeverWeighting Field Value bool EnableSampleNormalization [Obsolete] public static bool EnableSampleNormalization Field Value bool Remarks The input normalization deminish the quantity effect. The R-value decrease from 99% to 70% in moment training case from NKUST\\nkust2024-milling-para-training-plan\\workingx.hincproj Don't apply this option. MissingEngagementAbortRatio Abort threshold on the fraction of touched, force-bearing steps whose milling-step engagement could not be used during sample gathering — either the luggage row was unreadable, or the row was present but the engagement was never built (physics inactive at simulation time). At or below the threshold the misses are reported as a summary warning and training continues on the remaining steps; above it the training aborts with a ConfigurationError instead of silently building a model from a fraction of the play (one such degraded sweep cell once produced outlier coefficients that were nearly read as a resolution effect). Set to 1 to never abort. public static double MissingEngagementAbortRatio Field Value double ReTrainAnchorOutputScale Weight scale of the virtual anchor samples that pull a GatherAndGetUpdate(ConcurrentDictionary>, ClStrip, ICuttingPara, SampleFlag, double, IProgress, CancellationToken) (ReTrain) result back toward its seed parameter. The anchors are generated at scale * Σoutput / ElementNum per coefficient, so their curvature grows as N² against the data's N — at large sample counts they dominate and the result reproduces the seed. Set to 0 to make ReTrain purely data-driven: the seed then only supplies the phase alignment and the outlier scoring, which turns ReTrain into an external-lead identifiability instrument (\"with a known-good lead but no prior, what do the data actually say?\"). The default 0.1 keeps the historical seed-anchored ridge behaviour. public static double ReTrainAnchorOutputScale Field Value double Properties CycleDivisionNum Division number of a spindle cycle. public static int CycleDivisionNum { get; } Property Value int DefaultParaTemplate Gets or sets the parameter template for cutting operations. public static ICuttingPara DefaultParaTemplate { get; set; } Property Value ICuttingPara StepQuantityNames Gets the names of step quantities used in training. public static string[] StepQuantityNames { get; } Property Value string[] TextAngleOffset_deg Gets the text key for angle offset in degrees. public static string TextAngleOffset_deg { get; } Property Value string TextTrainingErrRatio Gets the text key for training error ratio. public static string TextTrainingErrRatio { get; } Property Value string Methods Convert(ICuttingPara, ICuttingPara, GeneralApt, double, double, IProgress, CancellationToken) Converts one cutting parameter model to another based on the provided parameters. public static ICuttingPara Convert(ICuttingPara src, ICuttingPara resultParaTemplate, GeneralApt apt, double helixAngle_rad, double radialRakeAngle_rad, IProgress messageProgress, CancellationToken cancellationToken) Parameters src ICuttingPara Source cutting parameter model resultParaTemplate ICuttingPara Destination template for the converted model apt GeneralApt General apt parameters helixAngle_rad double Helix angle in radians radialRakeAngle_rad double Radial rake angle in radians messageProgress IProgress Message host for logging cancellationToken CancellationToken Cancellation token Returns ICuttingPara The converted cutting parameter model Convert(LocalProfileMillingPara, double, double, IProgress, CancellationToken) Converts a LocalProfileMillingPara to a RakeFaceCuttingPara. public static RakeFaceCuttingPara2d Convert(LocalProfileMillingPara src, double helixAngle_rad, double radialRakeAngle_rad, IProgress messageProgress, CancellationToken cancellationToken) Parameters src LocalProfileMillingPara Source LocalProfileMillingPara helixAngle_rad double Helix angle in radians radialRakeAngle_rad double Radial rake angle in radians messageProgress IProgress Message host for logging cancellationToken CancellationToken Cancellation token Returns RakeFaceCuttingPara2d The converted RakeFaceCuttingPara GatherAndGetUpdate(ConcurrentDictionary>, ClStrip, ICuttingPara, SampleFlag, double, IProgress, CancellationToken) Gathers training samples and updates an existing cutting parameter model. public static ICuttingPara GatherAndGetUpdate(ConcurrentDictionary> stepToTimeShotListDictionary, ClStrip clStrip, ICuttingPara anchorPara, SampleFlag sampleFlags, double outlierRatio, IProgress messageProgress, CancellationToken cancellationToken) Parameters stepToTimeShotListDictionary ConcurrentDictionary> Dictionary mapping step indices to time shot lists clStrip ClStrip The cutter location strip anchorPara ICuttingPara The anchor cutting parameter model to update sampleFlags SampleFlag Sample flags indicating which forces to use outlierRatio double Ratio of outliers to exclude messageProgress IProgress Message host for logging cancellationToken CancellationToken Cancellation token Returns ICuttingPara The updated cutting parameter model" }, "api/Hi.MillingForces.Training.html": { "href": "api/Hi.MillingForces.Training.html", "title": "Namespace Hi.MillingForces.Training | HiAPI-C# 2025", - "summary": "Namespace Hi.MillingForces.Training Classes MillingTraining Provides utilities for milling force training and parameter identification." + "summary": "Namespace Hi.MillingForces.Training Classes MillingParaTrainResult Snapshot of the most recent milling-parameter training call (LocalProjectService.TrainMillingPara / ReTrainMillingPara) — the queryable training outcome that otherwise only lands in the output .mp file's Note. Held by LocalProjectService.LastMillingParaTrainResult (service lifetime, last-wins) so callers such as the webservice can read it after a run without touching the file system. MillingTraining Provides utilities for milling force training and parameter identification." }, "api/Hi.MillingForces.html": { "href": "api/Hi.MillingForces.html", "title": "Namespace Hi.MillingForces | HiAPI-C# 2025", - "summary": "Namespace Hi.MillingForces Classes FluteZData Represents data for a flute at a specific Z position during milling operation MillingForce Milling force. MillingForceLicense Provides license information and management for the milling force calculation functionality. MillingForceLuggage Represents a container for milling force data and calculations. MillingForceUtil Utility class for milling force calculations and related operations. MillingForceUtil.AnglePack Container class for angle-specific calculations during milling operation MillingPhysicsBrief Instant Physics brief on rake face for milling. PhysicsUtil Provides utility methods for physics calculations in milling operations. Interfaces IGetMillingForce Interface of GetMillingForce(). IMillingForceAccessor Interface of MillingForce. Enums ToolObservationReference Defines reference points for tool observation measurements." + "summary": "Namespace Hi.MillingForces Classes MillingForce Milling force. MillingForceLicense Provides license information and management for the milling force calculation functionality. MillingForceLuggage Represents a container for milling force data and calculations. MillingForceUtil Utility class for milling force calculations and related operations. MillingPhysicsBrief Instant Physics brief on rake face for milling. PhysicsUtil Provides utility methods for physics calculations in milling operations. Interfaces IGetMillingForce Interface of GetMillingForce(). IMillingForceAccessor Interface of MillingForce. Enums ToolObservationReference Defines reference points for tool observation measurements." }, "api/Hi.MillingProcs.MillingGuide.html": { "href": "api/Hi.MillingProcs.MillingGuide.html", "title": "Class MillingGuide | HiAPI-C# 2025", - "summary": "Class MillingGuide Namespace Hi.MillingProcs Assembly HiNc.dll Provides guidance and configuration for milling visualization and analysis. public class MillingGuide : IMakeXmlSource Inheritance object MillingGuide Implements 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 MillingGuide() Initializes a new instance of the MillingGuide class with default configurations. public MillingGuide() MillingGuide(XElement, string, IProgress) Initializes a new instance of the MillingGuide class from XML data. public MillingGuide(XElement src, string baseDirectory, IProgress progress) Parameters src XElement XML element containing configuration data baseDirectory string Base directory for resolving relative paths progress IProgress Progress reporter for XML deserialization. Properties ClStripChartConfig Gets or sets the configuration for cutter location strip charts. public ClStripChartConfig ClStripChartConfig { get; set; } Property Value ClStripChartConfig DictionaryColorGuide Gets or sets the dictionary of color guides for visualizing different properties. public DictionaryColorGuide DictionaryColorGuide { get; set; } Property Value DictionaryColorGuide ForceWCycleLineDivConfig Gets or sets the configuration for force cycle line division. public ForceCycleLineDivConfig ForceWCycleLineDivConfig { get; set; } Property Value ForceCycleLineDivConfig SensorSpindleMomentCycleLineDivConfig Gets or sets the configuration for sensor spindle moment cycle line division. public SpindleMomentCycleLineDivConfig SensorSpindleMomentCycleLineDivConfig { get; set; } Property Value SpindleMomentCycleLineDivConfig SimSpindleMomentCycleLineDivConfig Gets or sets the configuration for simulation spindle moment cycle line division. public SpindleMomentCycleLineDivConfig SimSpindleMomentCycleLineDivConfig { get; set; } Property Value SpindleMomentCycleLineDivConfig XName Name for XML IO. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class MillingGuide Namespace Hi.MillingProcs Assembly HiNc.dll Provides guidance and configuration for milling visualization and analysis. public class MillingGuide : IMakeXmlSource Inheritance object MillingGuide Implements 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 MillingGuide() Initializes a new instance of the MillingGuide class with default configurations. public MillingGuide() MillingGuide(XElement, string, IProgress) Initializes a new instance of the MillingGuide class from XML data. public MillingGuide(XElement src, string baseDirectory, IProgress progress) Parameters src XElement XML element containing configuration data baseDirectory string Base directory for resolving relative paths progress IProgress Progress reporter for XML deserialization. Properties ClStripChartConfig Gets or sets the configuration for cutter location strip charts. public ClStripChartConfig ClStripChartConfig { get; set; } Property Value ClStripChartConfig DictionaryColorGuide Gets or sets the dictionary of color guides for visualizing different properties. public DictionaryColorGuide DictionaryColorGuide { get; set; } Property Value DictionaryColorGuide ForceWCycleLineDivConfig Gets or sets the configuration for force cycle line division. public ForceCycleLineDivConfig ForceWCycleLineDivConfig { get; set; } Property Value ForceCycleLineDivConfig SensorSpindleMomentCycleLineDivConfig Gets or sets the configuration for sensor spindle moment cycle line division. public SpindleMomentCycleLineDivConfig SensorSpindleMomentCycleLineDivConfig { get; set; } Property Value SpindleMomentCycleLineDivConfig SimSpindleMomentCycleLineDivConfig Gets or sets the configuration for simulation spindle moment cycle line division. public SpindleMomentCycleLineDivConfig SimSpindleMomentCycleLineDivConfig { get; set; } Property Value SpindleMomentCycleLineDivConfig XName Name for XML IO. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.MillingProcs.html": { "href": "api/Hi.MillingProcs.html", @@ -3222,7 +3352,7 @@ "api/Hi.NcMech.Fixtures.Fixture.html": { "href": "api/Hi.NcMech.Fixtures.Fixture.html", "title": "Class Fixture | HiAPI-C# 2025", - "summary": "Class Fixture Namespace Hi.NcMech.Fixtures Assembly HiMech.dll Represents a fixture used to hold workpieces during machining operations. public class Fixture : IGetSolid, IMakeXmlSource, IDisplayee, IExpandToBox3d, IGetAnchoredDisplayeeList, IGetAsmb, IGetAnchor, IGetTopoIndex, IDisposable, IAnchoredCollidableLeaf, IAnchoredCollidableNode, IAnchoredCollidableBased, ICollidable Inheritance object Fixture Implements IGetSolid IMakeXmlSource IDisplayee IExpandToBox3d IGetAnchoredDisplayeeList IGetAsmb IGetAnchor IGetTopoIndex IDisposable IAnchoredCollidableLeaf IAnchoredCollidableNode IAnchoredCollidableBased ICollidable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DispUtil.Display(IDisplayee, Bind, Mat4d) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) 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 Fixture() Initializes a new instance of the Fixture class. public Fixture() Fixture(XElement, string, string, IProgress) Initializes a new instance of the Fixture class from XML. public Fixture(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement The XML element containing fixture data. baseDirectory string The base directory for resolving relative paths. relFile string The relative file path. progress IProgress Progress reporter for diagnostic messages emitted during construction. Fields XName Name for XML IO. public static string XName Field Value string Properties Asmb Gets the assembly that contains the fixture components. public Asmb Asmb { get; } Property Value Asmb CollidableName Gets the name of the collidable object. public string CollidableName { get; } Property Value string CollisionFlag Gets or sets the collision flag. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag Geom Geometry. Delegate by Solid.Geom. public IGetStl Geom { get; set; } Property Value IGetStl GeomAnchor Anchor that represents the geometry origin of the fixture. public Anchor GeomAnchor { get; } Property Value Anchor GeomToTableBranch Branch that transforms from geometry origin to table origin. public Branch GeomToTableBranch { get; } Property Value Branch GeomToTableTransformer Transformer from Geometry origin to table (machine tool side) origin. public ITransformer GeomToTableTransformer { get; set; } Property Value ITransformer GeomToWorkpieceBranch Branch that transforms from geometry origin to workpiece origin. public Branch GeomToWorkpieceBranch { get; } Property Value Branch GeomToWorkpieceTransformer Transformer from Geometry origin to workpiece origin. public ITransformer GeomToWorkpieceTransformer { get; set; } Property Value ITransformer Solid Gets the solid representation of the fixture. public Solid Solid { get; } Property Value Solid TableBuckle Table buckle. Root. Solid anchor. public Anchor TableBuckle { get; } Property Value Anchor ThemeColor Default theme color used when rendering the fixture. public static Vec3d ThemeColor { get; } Property Value Vec3d WorkpieceBuckle Gets the workpiece buckle anchor point. public Anchor WorkpieceBuckle { get; } Property Value Anchor Methods ClearGeomCache() Update cache of Geom. The method is used after inner content of Geom is altered. public void ClearGeomCache() Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredCollidableNode() Gets the anchored collidable node associated with this object. public IAnchoredCollidableNode GetAnchoredCollidableNode() Returns IAnchoredCollidableNode The anchored collidable node. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetCollidableAnchor() Gets the anchor associated with this collidable leaf. public Anchor GetCollidableAnchor() Returns Anchor The anchor for this collidable leaf. GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetSolid() Gets the solid geometry object. public Solid GetSolid() Returns Solid The solid geometry object. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetWorkpieceTransformationToGeomTopCenter() Sets the workpiece transformation to position it at the top center of the fixture. public void SetWorkpieceTransformationToGeomTopCenter()" + "summary": "Class Fixture Namespace Hi.NcMech.Fixtures Assembly HiMech.dll Represents a fixture used to hold workpieces during machining operations. public class Fixture : IGetSolid, IMakeXmlSource, IDisplayee, IExpandToBox3d, IGetAnchoredDisplayeeList, IGetAsmb, IGetAnchor, IGetTopoIndex, IDisposable, IAnchoredCollidableLeaf, IAnchoredCollidableNode, IAnchoredCollidableBased, ICollidable Inheritance object Fixture Implements IGetSolid IMakeXmlSource IDisplayee IExpandToBox3d IGetAnchoredDisplayeeList IGetAsmb IGetAnchor IGetTopoIndex IDisposable IAnchoredCollidableLeaf IAnchoredCollidableNode IAnchoredCollidableBased ICollidable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DispUtil.Display(IDisplayee, Bind, Mat4d) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) 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 Fixture() Initializes a new instance of the Fixture class. public Fixture() Fixture(XElement, string, string, IProgress) Initializes a new instance of the Fixture class from XML. public Fixture(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement The XML element containing fixture data. baseDirectory string The base directory for resolving relative paths. relFile string The relative file path. progress IProgress Progress reporter for diagnostic messages emitted during construction. Fields XName Name for XML IO. public static string XName Field Value string Properties Asmb Gets the assembly that contains the fixture components. public Asmb Asmb { get; } Property Value Asmb CollidableName Gets the name of the collidable object. public string CollidableName { get; } Property Value string CollisionFlag Gets or sets the collision flag. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag Geom Geometry. Delegate by Solid.Geom. public IGetStl Geom { get; set; } Property Value IGetStl GeomAnchor Anchor that represents the geometry origin of the fixture. public Anchor GeomAnchor { get; } Property Value Anchor GeomToTableBranch Branch that transforms from geometry origin to table origin. public Branch GeomToTableBranch { get; } Property Value Branch GeomToTableTransformer Transformer from Geometry origin to table (machine tool side) origin. public ITransformer GeomToTableTransformer { get; set; } Property Value ITransformer GeomToWorkpieceBranch Branch that transforms from geometry origin to workpiece origin. public Branch GeomToWorkpieceBranch { get; } Property Value Branch GeomToWorkpieceTransformer Transformer from Geometry origin to workpiece origin. public ITransformer GeomToWorkpieceTransformer { get; set; } Property Value ITransformer Solid Gets the solid representation of the fixture. public Solid Solid { get; } Property Value Solid TableBuckle Table buckle. Root. Solid anchor. public Anchor TableBuckle { get; } Property Value Anchor ThemeColor Default theme color used when rendering the fixture. public static Vec3d ThemeColor { get; } Property Value Vec3d WorkpieceBuckle Gets the workpiece buckle anchor point. public Anchor WorkpieceBuckle { get; } Property Value Anchor Methods ClearGeomCache() Update cache of Geom. The method is used after inner content of Geom is altered. public void ClearGeomCache() Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredCollidableNode() Gets the anchored collidable node associated with this object. public IAnchoredCollidableNode GetAnchoredCollidableNode() Returns IAnchoredCollidableNode The anchored collidable node. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetCollidableAnchor() Gets the anchor associated with this collidable leaf. public Anchor GetCollidableAnchor() Returns Anchor The anchor for this collidable leaf. GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetSolid() Gets the solid geometry object. public Solid GetSolid() Returns Solid The solid geometry object. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetWorkpieceTransformationToGeomTopCenter() Sets the workpiece transformation to position it at the top center of the fixture. public void SetWorkpieceTransformationToGeomTopCenter()" }, "api/Hi.NcMech.Fixtures.FixtureEditorDisplayee.html": { "href": "api/Hi.NcMech.Fixtures.FixtureEditorDisplayee.html", @@ -3242,12 +3372,12 @@ "api/Hi.NcMech.Holders.CylindroidHolder.html": { "href": "api/Hi.NcMech.Holders.CylindroidHolder.html", "title": "Class CylindroidHolder | HiAPI-C# 2025", - "summary": "Class CylindroidHolder Namespace Hi.NcMech.Holders Assembly HiMech.dll Represents a cylindrical tool holder for machining operations. public class CylindroidHolder : IHolder, ITopo, IGetAsmb, IGetAnchoredDisplayeeList, IAnchoredDisplayee, IDisplayee, IExpandToBox3d, IMakeXmlSource, IAbstractNote, IGetFletchBuckle, IDuplicate, INameNote, IAnchoredCollidabled, IGetCollidable, IGetAnchor, IGetTopoIndex, IGetSolid, IDisposable, IAnchoredCollidableLeaf, IAnchoredCollidableNode, IAnchoredCollidableBased, ICollidable, IClearCache Inheritance object CylindroidHolder Implements IHolder ITopo IGetAsmb IGetAnchoredDisplayeeList IAnchoredDisplayee IDisplayee IExpandToBox3d IMakeXmlSource IAbstractNote IGetFletchBuckle IDuplicate INameNote IAnchoredCollidabled IGetCollidable IGetAnchor IGetTopoIndex IGetSolid IDisposable IAnchoredCollidableLeaf IAnchoredCollidableNode IAnchoredCollidableBased ICollidable IClearCache Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DispUtil.Display(IDisplayee, Bind, Mat4d) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) 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 CylindroidHolder() Ctor. public CylindroidHolder() CylindroidHolder(Cylindroid) Ctor. public CylindroidHolder(Cylindroid cylindroid) Parameters cylindroid Cylindroid The cylindroid geometry for this holder. CylindroidHolder(XElement, string, string, IProgress) Initializes a new instance of the CylindroidHolder class from XML. public CylindroidHolder(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement The XML element containing holder data. baseDirectory string The base directory for resolving relative paths. relFile string The relative file path. progress IProgress Progress reporter for diagnostic messages emitted during construction. Fields XName XML Name. public static string XName Field Value string Properties AbstractNote Gets a descriptive note or abstract about the object. public string AbstractNote { get; } Property Value string Branch Gets the branch connecting the fletch buckle to the tail buckle. public Branch Branch { get; } Property Value Branch CollidableName Gets the name of the collidable object. public string CollidableName { get; } Property Value string CollisionFlag Gets or sets the collision flag. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag CutterBuckle Gets the cutter buckle anchor. public Anchor CutterBuckle { get; } Property Value Anchor Cylindroid Gets or sets the cylindroid geometry that defines this holder. public Cylindroid Cylindroid { get; set; } Property Value Cylindroid GeomAnchor Equivalent of CutterBuckle. public Anchor GeomAnchor { get; } Property Value Anchor Name Gets or sets the name of the object. public string Name { get; set; } Property Value string Note Gets or sets the descriptive note for the object. public string Note { get; set; } Property Value string PolarResolution2d Gets or sets the polar resolution used for STL generation. public PolarResolution2d PolarResolution2d { get; set; } Property Value PolarResolution2d SpindleBuckle Gets the spindle buckle anchor. public Anchor SpindleBuckle { get; } Property Value Anchor Methods ClearCache() Clears any cached data held by the implementing object. public void ClearCache() Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredCollidableNode() Gets the anchored collidable node associated with this object. public IAnchoredCollidableNode GetAnchoredCollidableNode() Returns IAnchoredCollidableNode The anchored collidable node. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetCollidable() Get ICollidable. public ICollidable GetCollidable() Returns ICollidable The collidable object. GetCollidableAnchor() Gets the anchor associated with the collidable object. public Anchor GetCollidableAnchor() Returns Anchor The Anchor instance. GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetFletchBuckle() Get fletch buckle anchor. the anchor that generally connect to fixed part such as ground and triggering(motor)-side. public Anchor GetFletchBuckle() Returns Anchor buckle anchor GetSolid() Gets the solid geometry object. public Solid GetSolid() Returns Solid The solid geometry object. GetTailBuckle() Gets the cutter buckle anchor, generally located on the free-end side. public Anchor GetTailBuckle() Returns Anchor 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByCylindroid() Update Branch By Cylindroid. Call the function if the Cylindroid content changed. public void UpdateByCylindroid()" + "summary": "Class CylindroidHolder Namespace Hi.NcMech.Holders Assembly HiMech.dll Represents a cylindrical tool holder for machining operations. public class CylindroidHolder : IHolder, ITopo, IGetAsmb, IGetAnchoredDisplayeeList, IAnchoredDisplayee, IDisplayee, IExpandToBox3d, IMakeXmlSource, IAbstractNote, IGetFletchBuckle, IDuplicate, INameNote, IAnchoredCollidabled, IGetCollidable, IGetAnchor, IGetTopoIndex, IGetSolid, IDisposable, IAnchoredCollidableLeaf, IAnchoredCollidableNode, IAnchoredCollidableBased, ICollidable, IClearCache Inheritance object CylindroidHolder Implements IHolder ITopo IGetAsmb IGetAnchoredDisplayeeList IAnchoredDisplayee IDisplayee IExpandToBox3d IMakeXmlSource IAbstractNote IGetFletchBuckle IDuplicate INameNote IAnchoredCollidabled IGetCollidable IGetAnchor IGetTopoIndex IGetSolid IDisposable IAnchoredCollidableLeaf IAnchoredCollidableNode IAnchoredCollidableBased ICollidable IClearCache Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DispUtil.Display(IDisplayee, Bind, Mat4d) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) 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 CylindroidHolder() Ctor. public CylindroidHolder() CylindroidHolder(Cylindroid) Ctor. public CylindroidHolder(Cylindroid cylindroid) Parameters cylindroid Cylindroid The cylindroid geometry for this holder. CylindroidHolder(XElement, string, string, IProgress) Initializes a new instance of the CylindroidHolder class from XML. public CylindroidHolder(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement The XML element containing holder data. baseDirectory string The base directory for resolving relative paths. relFile string The relative file path. progress IProgress Progress reporter for diagnostic messages emitted during construction. Fields XName XML Name. public static string XName Field Value string Properties AbstractNote Gets a descriptive note or abstract about the object. public string AbstractNote { get; } Property Value string Branch Gets the branch connecting the fletch buckle to the tail buckle. public Branch Branch { get; } Property Value Branch CollidableName Gets the name of the collidable object. public string CollidableName { get; } Property Value string CollisionFlag Gets or sets the collision flag. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag CutterBuckle Gets the cutter buckle anchor. public Anchor CutterBuckle { get; } Property Value Anchor Cylindroid Gets or sets the cylindroid geometry that defines this holder. public Cylindroid Cylindroid { get; set; } Property Value Cylindroid GeomAnchor Equivalent of CutterBuckle. public Anchor GeomAnchor { get; } Property Value Anchor Name Gets or sets the name of the object. public string Name { get; set; } Property Value string Note Gets or sets the descriptive note for the object. public string Note { get; set; } Property Value string PolarResolution2d Gets or sets the polar resolution used for STL generation. public PolarResolution2d PolarResolution2d { get; set; } Property Value PolarResolution2d SpindleBuckle Gets the spindle buckle anchor. public Anchor SpindleBuckle { get; } Property Value Anchor Methods ClearCache() Clears any cached data held by the implementing object. public void ClearCache() Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredCollidableNode() Gets the anchored collidable node associated with this object. public IAnchoredCollidableNode GetAnchoredCollidableNode() Returns IAnchoredCollidableNode The anchored collidable node. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetCollidable() Get ICollidable. public ICollidable GetCollidable() Returns ICollidable The collidable object. GetCollidableAnchor() Gets the anchor associated with the collidable object. public Anchor GetCollidableAnchor() Returns Anchor The Anchor instance. GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetFletchBuckle() Get fletch buckle anchor. the anchor that generally connect to fixed part such as ground and triggering(motor)-side. public Anchor GetFletchBuckle() Returns Anchor buckle anchor GetSolid() Gets the solid geometry object. public Solid GetSolid() Returns Solid The solid geometry object. GetTailBuckle() Gets the cutter buckle anchor, generally located on the free-end side. public Anchor GetTailBuckle() Returns Anchor 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByCylindroid() Update Branch By Cylindroid. Call the function if the Cylindroid content changed. public void UpdateByCylindroid()" }, "api/Hi.NcMech.Holders.FreeformHolder.html": { "href": "api/Hi.NcMech.Holders.FreeformHolder.html", "title": "Class FreeformHolder | HiAPI-C# 2025", - "summary": "Class FreeformHolder Namespace Hi.NcMech.Holders Assembly HiMech.dll Represents a freeform tool holder with customizable geometry. public class FreeformHolder : IHolder, ITopo, IGetAsmb, IGetAnchoredDisplayeeList, IAnchoredDisplayee, IDisplayee, IExpandToBox3d, IMakeXmlSource, IAbstractNote, IGetFletchBuckle, IDuplicate, INameNote, IAnchoredCollidabled, IGetCollidable, IGetAnchor, IGetTopoIndex, IGetSolid, IDisposable, IAnchoredCollidableLeaf, IAnchoredCollidableNode, IAnchoredCollidableBased, ICollidable, IClearCache Inheritance object FreeformHolder Implements IHolder ITopo IGetAsmb IGetAnchoredDisplayeeList IAnchoredDisplayee IDisplayee IExpandToBox3d IMakeXmlSource IAbstractNote IGetFletchBuckle IDuplicate INameNote IAnchoredCollidabled IGetCollidable IGetAnchor IGetTopoIndex IGetSolid IDisposable IAnchoredCollidableLeaf IAnchoredCollidableNode IAnchoredCollidableBased ICollidable IClearCache Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DispUtil.Display(IDisplayee, Bind, Mat4d) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) 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 FreeformHolder() Ctor. public FreeformHolder() FreeformHolder(IStlSource) Initializes a new instance of the FreeformHolder class from STL geometry. public FreeformHolder(IStlSource geom) Parameters geom IStlSource The STL geometry provider. FreeformHolder(XElement, string, string, IProgress) Initializes a new instance of the FreeformHolder class from XML data. public FreeformHolder(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement The XML element containing holder data baseDirectory string Base directory path for resolving relative paths relFile string Relative file path progress IProgress Progress reporter for diagnostic messages emitted during construction. Fields XName XML Name. public static string XName Field Value string Properties AbstractNote Gets a descriptive note or abstract about the object. public string AbstractNote { get; } Property Value string CollidableName Gets the name of the collidable object. public string CollidableName { get; } Property Value string CollisionFlag Gets or sets the collision flag. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag CutterBuckle Gets the tail buckle (tool buckle) anchor point public Anchor CutterBuckle { get; } Property Value Anchor Geom Gets the transformation geometry. Internal Use Only. public IStlSource Geom { get; set; } Property Value IStlSource Remarks Call UpdateByGeom() to keep state of Hi.NcMech.Holders.FreeformHolder.Solid if content modified. GeomAnchor Gets the geometry anchor point public Anchor GeomAnchor { get; } Property Value Anchor GeomAnchorToSpindleBuckleBranch Gets the branch from GeomAnchor to SpindleBuckle. public Branch GeomAnchorToSpindleBuckleBranch { get; } Property Value Branch GeomToCutterBranch Gets the branch from GeomAnchor to CutterBuckle. public Branch GeomToCutterBranch { get; } Property Value Branch GeomToCutterTransformer Gets or sets the transformer from geometry to tail (Cutter). public ITransformer GeomToCutterTransformer { get; set; } Property Value ITransformer GeomToSpindleTransformer Gets or sets the transformer from geometry to base (Spindle) public ITransformer GeomToSpindleTransformer { get; set; } Property Value ITransformer Name Gets or sets the name of the object. public string Name { get; set; } Property Value string Note Gets or sets the descriptive note for the object. public string Note { get; set; } Property Value string PolarResolution2d Gets or sets the polar resolution 2D settings. public PolarResolution2d PolarResolution2d { get; set; } Property Value PolarResolution2d SpindleBuckle Gets the base buckle (spindle buckle) anchor point public Anchor SpindleBuckle { get; } Property Value Anchor Methods ClearCache() Clears any cached data held by the implementing object. public void ClearCache() Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredCollidableNode() Gets the anchored collidable node associated with this object. public IAnchoredCollidableNode GetAnchoredCollidableNode() Returns IAnchoredCollidableNode The anchored collidable node. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetCollidable() Get ICollidable. public ICollidable GetCollidable() Returns ICollidable The collidable object. GetCollidableAnchor() Gets the anchor associated with the collidable object. public Anchor GetCollidableAnchor() Returns Anchor The Anchor instance. GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetFletchBuckle() Get fletch buckle anchor. the anchor that generally connect to fixed part such as ground and triggering(motor)-side. public Anchor GetFletchBuckle() Returns Anchor buckle anchor GetSolid() Gets the solid geometry object. public Solid GetSolid() Returns Solid The solid geometry object. GetTailBuckle() Gets the cutter buckle anchor, generally located on the free-end side. public Anchor GetTailBuckle() Returns Anchor 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByGeom() Call the function if the Geom content changed. public void UpdateByGeom()" + "summary": "Class FreeformHolder Namespace Hi.NcMech.Holders Assembly HiMech.dll Represents a freeform tool holder with customizable geometry. public class FreeformHolder : IHolder, ITopo, IGetAsmb, IGetAnchoredDisplayeeList, IAnchoredDisplayee, IDisplayee, IExpandToBox3d, IMakeXmlSource, IAbstractNote, IGetFletchBuckle, IDuplicate, INameNote, IAnchoredCollidabled, IGetCollidable, IGetAnchor, IGetTopoIndex, IGetSolid, IDisposable, IAnchoredCollidableLeaf, IAnchoredCollidableNode, IAnchoredCollidableBased, ICollidable, IClearCache Inheritance object FreeformHolder Implements IHolder ITopo IGetAsmb IGetAnchoredDisplayeeList IAnchoredDisplayee IDisplayee IExpandToBox3d IMakeXmlSource IAbstractNote IGetFletchBuckle IDuplicate INameNote IAnchoredCollidabled IGetCollidable IGetAnchor IGetTopoIndex IGetSolid IDisposable IAnchoredCollidableLeaf IAnchoredCollidableNode IAnchoredCollidableBased ICollidable IClearCache Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DispUtil.Display(IDisplayee, Bind, Mat4d) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) TopoDisplayeeUtil.Display(ITopo, Bind) TopoDisplayeeUtil.ExpandToBox3d(ITopo, Box3d) 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 FreeformHolder() Ctor. public FreeformHolder() FreeformHolder(IStlSource) Initializes a new instance of the FreeformHolder class from STL geometry. public FreeformHolder(IStlSource geom) Parameters geom IStlSource The STL geometry provider. FreeformHolder(XElement, string, string, IProgress) Initializes a new instance of the FreeformHolder class from XML data. public FreeformHolder(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement The XML element containing holder data baseDirectory string Base directory path for resolving relative paths relFile string Relative file path progress IProgress Progress reporter for diagnostic messages emitted during construction. Fields XName XML Name. public static string XName Field Value string Properties AbstractNote Gets a descriptive note or abstract about the object. public string AbstractNote { get; } Property Value string CollidableName Gets the name of the collidable object. public string CollidableName { get; } Property Value string CollisionFlag Gets or sets the collision flag. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag CutterBuckle Gets the tail buckle (tool buckle) anchor point public Anchor CutterBuckle { get; } Property Value Anchor Geom Gets the transformation geometry. Internal Use Only. public IStlSource Geom { get; set; } Property Value IStlSource Remarks Call UpdateByGeom() to keep state of Hi.NcMech.Holders.FreeformHolder.Solid if content modified. GeomAnchor Gets the geometry anchor point public Anchor GeomAnchor { get; } Property Value Anchor GeomAnchorToSpindleBuckleBranch Gets the branch from GeomAnchor to SpindleBuckle. public Branch GeomAnchorToSpindleBuckleBranch { get; } Property Value Branch GeomToCutterBranch Gets the branch from GeomAnchor to CutterBuckle. public Branch GeomToCutterBranch { get; } Property Value Branch GeomToCutterTransformer Gets or sets the transformer from geometry to tail (Cutter). public ITransformer GeomToCutterTransformer { get; set; } Property Value ITransformer GeomToSpindleTransformer Gets or sets the transformer from geometry to base (Spindle) public ITransformer GeomToSpindleTransformer { get; set; } Property Value ITransformer Name Gets or sets the name of the object. public string Name { get; set; } Property Value string Note Gets or sets the descriptive note for the object. public string Note { get; set; } Property Value string PolarResolution2d Gets or sets the polar resolution 2D settings. public PolarResolution2d PolarResolution2d { get; set; } Property Value PolarResolution2d SpindleBuckle Gets the base buckle (spindle buckle) anchor point public Anchor SpindleBuckle { get; } Property Value Anchor Methods ClearCache() Clears any cached data held by the implementing object. public void ClearCache() Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool Duplicate(params object[]) Creates a deep copy of the object, excluding any source file references. public object Duplicate(params object[] res) Parameters res object[] Optional parameters that may be needed during the duplication process Returns object A new instance that is a deep copy of the original object ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredCollidableNode() Gets the anchored collidable node associated with this object. public IAnchoredCollidableNode GetAnchoredCollidableNode() Returns IAnchoredCollidableNode The anchored collidable node. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetCollidable() Get ICollidable. public ICollidable GetCollidable() Returns ICollidable The collidable object. GetCollidableAnchor() Gets the anchor associated with the collidable object. public Anchor GetCollidableAnchor() Returns Anchor The Anchor instance. GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetFletchBuckle() Get fletch buckle anchor. the anchor that generally connect to fixed part such as ground and triggering(motor)-side. public Anchor GetFletchBuckle() Returns Anchor buckle anchor GetSolid() Gets the solid geometry object. public Solid GetSolid() Returns Solid The solid geometry object. GetTailBuckle() Gets the cutter buckle anchor, generally located on the free-end side. public Anchor GetTailBuckle() Returns Anchor 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory UpdateByGeom() Call the function if the Geom content changed. public void UpdateByGeom()" }, "api/Hi.NcMech.Holders.HolderEditorDisplayee.html": { "href": "api/Hi.NcMech.Holders.HolderEditorDisplayee.html", @@ -3282,7 +3412,7 @@ "api/Hi.NcMech.Solids.Solid.html": { "href": "api/Hi.NcMech.Solids.Solid.html", "title": "Class Solid | HiAPI-C# 2025", - "summary": "Class Solid Namespace Hi.NcMech.Solids Assembly HiMech.dll Represents a solid geometry object with display, collision detection, and STL capabilities. Provides thread-safe access to geometry data and caching mechanisms. public class Solid : IGetTriTree, ICollidable, IGetCollidable, IDisplayee, IExpandToBox3d, IStlSource, IGetStl, IPolarResolution2dSourceProperty, IDisposable, IMakeXmlSource, IGetSolid, IUpdateByContent, IClearCache Inheritance object Solid Implements IGetTriTree ICollidable IGetCollidable IDisplayee IExpandToBox3d IStlSource IGetStl IPolarResolution2dSourceProperty IDisposable IMakeXmlSource IGetSolid IUpdateByContent IClearCache Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DispUtil.Display(IDisplayee, Bind, Mat4d) StlUtil.ToFaceDrawing(IGetStl) StlUtil.ToLineDrawing(IGetStl) StlUtil.ToSparkleLineDrawing(IGetStl) 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 Solid() Initializes a new instance of the Solid class. public Solid() Solid(IGetStl) Initializes a new instance of the Solid class with the specified STL geometry source. public Solid(IGetStl geom) Parameters geom IGetStl The STL geometry source. Solid(XElement, string, IProgress) Initializes a new instance of the Solid class from XML. public Solid(XElement src, string baseDirectory, IProgress progress) Parameters src XElement The XML source element. baseDirectory string The base directory for resolving relative paths. progress IProgress The progress reporter. Fields XName Gets the XML element name for serialization. public static string XName Field Value string Properties CollisionFlag Gets or sets the collision flag indicating the collision state of this solid. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag Geom Gets or sets the STL geometry source. Setting this property will clear the cached data. public IGetStl Geom { get; set; } Property Value IGetStl NativeSmoothTopoStl Gets the native smooth topology STL representation. The data is created from the STL representation when first accessed. public NativeTopoStld NativeSmoothTopoStl { get; } Property Value NativeTopoStld NativeStl Gets the native STL representation. The data is created from the STL representation when first accessed. public NativeStl NativeStl { get; } Property Value NativeStl PolarResolution2dSource The provider of IPolarResolution2d. public Func PolarResolution2dSource { get; set; } Property Value Func Prepared Gets or sets whether the solid geometry is prepared for use. Setting this to true will ensure all necessary data structures are initialized. Setting this to false will clear the cached data. public bool Prepared { get; set; } Property Value bool Stl Gets the STL representation of the solid geometry. The STL data is cached after first access. public Stl Stl { get; } Property Value Stl TriTree Gets the triangle tree representation for collision detection. The tree is built from the native STL data when first accessed. public TriTree TriTree { get; } Property Value TriTree Methods ClearCache() Manually clears the cached data if the content of Geom has changed. The cache determines the behavior of the Solid. public void ClearCache() Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Display(Bind, RenderingModeEnum) Displays the solid according to the specified rendering mode. public void Display(Bind bind, Solid.RenderingModeEnum renderingMode) Parameters bind Bind Display binding context. renderingMode Solid.RenderingModeEnum Rendering mode. DisplayFeatureEdges(Bind) Displays the feature edges of the solid. public void DisplayFeatureEdges(Bind bind) Parameters bind Bind Display binding context. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) Releases the unmanaged resources and optionally releases the managed resources. protected virtual void Dispose(bool disposing) Parameters disposing bool true to release both managed and unmanaged resources; false to release only unmanaged resources. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetCollidable() Get ICollidable. public ICollidable GetCollidable() Returns ICollidable The collidable object. GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetSolid() Gets the solid geometry object. public Solid GetSolid() Returns Solid The solid geometry object. GetSourceGeom() Gets the source geometry object. public IGetStl GetSourceGeom() Returns IGetStl The source geometry object. GetStl() Gets the STL geometry data. public Stl GetStl() Returns Stl The STL geometry object GetTriTree() Get TriTree. public TriTree GetTriTree() Returns TriTree TriTree 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. UpdateByContent() Updates the object based on its current content. public void UpdateByContent()" + "summary": "Class Solid Namespace Hi.NcMech.Solids Assembly HiMech.dll Represents a solid geometry object with display, collision detection, and STL capabilities. Provides thread-safe access to geometry data and caching mechanisms. public class Solid : IGetTriTree, ICollidable, IGetCollidable, IDisplayee, IExpandToBox3d, IStlSource, IGetStl, IPolarResolution2dSourceProperty, IDisposable, IMakeXmlSource, IGetSolid, IUpdateByContent, IClearCache Inheritance object Solid Implements IGetTriTree ICollidable IGetCollidable IDisplayee IExpandToBox3d IStlSource IGetStl IPolarResolution2dSourceProperty IDisposable IMakeXmlSource IGetSolid IUpdateByContent IClearCache Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) Extension Methods CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DispUtil.Display(IDisplayee, Bind, Mat4d) StlUtil.ToFaceDrawing(IGetStl) StlUtil.ToLineDrawing(IGetStl) StlUtil.ToSparkleLineDrawing(IGetStl) 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 Solid() Initializes a new instance of the Solid class. public Solid() Solid(IGetStl) Initializes a new instance of the Solid class with the specified STL geometry source. public Solid(IGetStl geom) Parameters geom IGetStl The STL geometry source. Solid(XElement, string, IProgress) Initializes a new instance of the Solid class from XML. public Solid(XElement src, string baseDirectory, IProgress progress) Parameters src XElement The XML source element. baseDirectory string The base directory for resolving relative paths. progress IProgress The progress reporter. Fields XName Gets the XML element name for serialization. public static string XName Field Value string Properties CollisionFlag Gets or sets the collision flag indicating the collision state of this solid. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag Geom Gets or sets the STL geometry source. Setting this property will clear the cached data. public IGetStl Geom { get; set; } Property Value IGetStl NativeStl Gets the native STL representation. The data is created from the STL representation when first accessed. public NativeStl NativeStl { get; } Property Value NativeStl PolarResolution2dSource The provider of IPolarResolution2d. public Func PolarResolution2dSource { get; set; } Property Value Func Prepared Gets or sets whether the solid geometry is prepared for use. Setting this to true will ensure all necessary data structures are initialized. Setting this to false will clear the cached data. public bool Prepared { get; set; } Property Value bool Rgb Optional authored display color (RGB, each channel 0~1). Null means not authored: display sites fall back to a color seeded from the hosting anchor's persisted Guid, and Display(Bind) pushes no color of its own. A collision (Collision) always overrides the authored color with red. Serialized as the optional Rgb attribute of the element; legacy readers ignore attributes, so the addition is backward and forward compatible. public Vec3d Rgb { get; set; } Property Value Vec3d SmoothTopoStl3d Gets the native smooth topology STL representation. The data is created from the STL representation when first accessed. public NativeTopoStl3d SmoothTopoStl3d { get; } Property Value NativeTopoStl3d Stl Gets the STL representation of the solid geometry. The STL data is cached after first access. public Stl Stl { get; } Property Value Stl TriTree Gets the triangle tree representation for collision detection. The tree is built from the native STL data when first accessed. public TriTree TriTree { get; } Property Value TriTree Methods ClearCache() Manually clears the cached data if the content of Geom has changed. The cache determines the behavior of the Solid. public void ClearCache() Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Display(Bind, RenderingModeEnum) Displays the solid according to the specified rendering mode. public void Display(Bind bind, Solid.RenderingModeEnum renderingMode) Parameters bind Bind Display binding context. renderingMode Solid.RenderingModeEnum Rendering mode. DisplayFeatureEdges(Bind) Displays the feature edges of the solid. public void DisplayFeatureEdges(Bind bind) Parameters bind Bind Display binding context. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) Releases the unmanaged resources and optionally releases the managed resources. protected virtual void Dispose(bool disposing) Parameters disposing bool true to release both managed and unmanaged resources; false to release only unmanaged resources. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetCollidable() Get ICollidable. public ICollidable GetCollidable() Returns ICollidable The collidable object. GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetSolid() Gets the solid geometry object. public Solid GetSolid() Returns Solid The solid geometry object. GetSourceGeom() Gets the source geometry object. public IGetStl GetSourceGeom() Returns IGetStl The source geometry object. GetStl() Gets the STL geometry data. public Stl GetStl() Returns Stl The STL geometry object GetTriTree() Get TriTree. public TriTree GetTriTree() Returns TriTree TriTree 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToString() Returns a string that represents the current object. public override string ToString() Returns string A string that represents the current object. UpdateByContent() Updates the object based on its current content. public void UpdateByContent()" }, "api/Hi.NcMech.Solids.SolidFuncSource.html": { "href": "api/Hi.NcMech.Solids.SolidFuncSource.html", @@ -3327,7 +3457,7 @@ "api/Hi.NcMech.Topo.StlSourceTopoBrick.html": { "href": "api/Hi.NcMech.Topo.StlSourceTopoBrick.html", "title": "Class StlSourceTopoBrick | HiAPI-C# 2025", - "summary": "Class StlSourceTopoBrick Namespace Hi.NcMech.Topo Assembly HiMech.dll Represents a topological brick that sources its geometry from an STL file. Implements display, collision detection, and content update capabilities. public class StlSourceTopoBrick : ITopoBrick, IGetSolid, IAnchoredDisplayee, IGetAnchor, IGetTopoIndex, IDisplayee, IExpandToBox3d, IAnchoredCollidableLeaf, IAnchoredCollidableNode, IAnchoredCollidableBased, ICollidable, IDisposable, IUpdateByContent, IClearCache Inheritance object StlSourceTopoBrick Implements ITopoBrick IGetSolid IAnchoredDisplayee IGetAnchor IGetTopoIndex IDisplayee IExpandToBox3d IAnchoredCollidableLeaf IAnchoredCollidableNode IAnchoredCollidableBased ICollidable IDisposable IUpdateByContent IClearCache Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DispUtil.Display(IDisplayee, Bind, Mat4d) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) 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 StlSourceTopoBrick() Initializes a new instance of the StlSourceTopoBrick class. public StlSourceTopoBrick() StlSourceTopoBrick(Anchor) Initializes a new instance of the StlSourceTopoBrick class with the specified anchor. public StlSourceTopoBrick(Anchor anchor) Parameters anchor Anchor The anchor point for this brick. StlSourceTopoBrick(Anchor, IGetStl) Initializes a new instance of the StlSourceTopoBrick class with the specified anchor and geometry. public StlSourceTopoBrick(Anchor anchor, IGetStl geom) Parameters anchor Anchor The anchor point for this brick. geom IGetStl The STL geometry source. Properties Anchor Gets the anchor point for this brick. public Anchor Anchor { get; } Property Value Anchor CollidableName Gets the name of the collidable object. public string CollidableName { get; } Property Value string CollisionFlag Gets or sets the collision flag. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag Geom Gets or sets the STL geometry source. public IGetStl Geom { get; set; } Property Value IGetStl Solid Gets the solid geometry instance. public Solid Solid { get; } Property Value Solid Methods ClearCache() Clears any cached data held by the implementing object. public void ClearCache() Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) Releases the unmanaged resources and optionally releases the managed resources. protected virtual void Dispose(bool disposing) Parameters disposing bool true to release both managed and unmanaged resources; false to release only unmanaged resources. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredCollidableNode() Gets the anchored collidable node associated with this object. public IAnchoredCollidableNode GetAnchoredCollidableNode() Returns IAnchoredCollidableNode The anchored collidable node. GetCollidableAnchor() Gets the anchor associated with this collidable leaf. public Anchor GetCollidableAnchor() Returns Anchor The anchor for this collidable leaf. GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetSolid() Gets the solid geometry object. public Solid GetSolid() Returns Solid The solid geometry object. UpdateByContent() Updates the object based on its current content. public void UpdateByContent()" + "summary": "Class StlSourceTopoBrick Namespace Hi.NcMech.Topo Assembly HiMech.dll Represents a topological brick that sources its geometry from an STL file. Implements display, collision detection, and content update capabilities. public class StlSourceTopoBrick : ITopoBrick, IGetSolid, IAnchoredDisplayee, IGetAnchor, IGetTopoIndex, IDisplayee, IExpandToBox3d, IAnchoredCollidableLeaf, IAnchoredCollidableNode, IAnchoredCollidableBased, ICollidable, IDisposable, IUpdateByContent, IClearCache Inheritance object StlSourceTopoBrick Implements ITopoBrick IGetSolid IAnchoredDisplayee IGetAnchor IGetTopoIndex IDisplayee IExpandToBox3d IAnchoredCollidableLeaf IAnchoredCollidableNode IAnchoredCollidableBased ICollidable IDisposable IUpdateByContent IClearCache Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DispUtil.Display(IDisplayee, Bind, Mat4d) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) 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 StlSourceTopoBrick() Initializes a new instance of the StlSourceTopoBrick class. public StlSourceTopoBrick() StlSourceTopoBrick(Anchor) Initializes a new instance of the StlSourceTopoBrick class with the specified anchor. public StlSourceTopoBrick(Anchor anchor) Parameters anchor Anchor The anchor point for this brick. StlSourceTopoBrick(Anchor, IGetStl) Initializes a new instance of the StlSourceTopoBrick class with the specified anchor and geometry. public StlSourceTopoBrick(Anchor anchor, IGetStl geom) Parameters anchor Anchor The anchor point for this brick. geom IGetStl The STL geometry source. StlSourceTopoBrick(Anchor, Solid) Initializes a new instance of the StlSourceTopoBrick class hosting an externally owned Solid. The brick does NOT dispose an injected solid: the provider keeps its lifecycle, so one solid instance can be shared by several hosts (e.g. two topology entities displaying the same machine part). public StlSourceTopoBrick(Anchor anchor, Solid solid) Parameters anchor Anchor The anchor point for this brick. solid Solid The externally owned solid to host. Properties Anchor Gets the anchor point for this brick. public Anchor Anchor { get; } Property Value Anchor CollidableName Gets the name of the collidable object. public string CollidableName { get; } Property Value string CollisionFlag Gets or sets the collision flag. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag Geom Gets or sets the STL geometry source. public IGetStl Geom { get; set; } Property Value IGetStl Solid Gets the solid geometry instance. public Solid Solid { get; } Property Value Solid Methods ClearCache() Clears any cached data held by the implementing object. public void ClearCache() Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) Releases the unmanaged resources and optionally releases the managed resources. protected virtual void Dispose(bool disposing) Parameters disposing bool true to release both managed and unmanaged resources; false to release only unmanaged resources. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchoredCollidableNode() Gets the anchored collidable node associated with this object. public IAnchoredCollidableNode GetAnchoredCollidableNode() Returns IAnchoredCollidableNode The anchored collidable node. GetCollidableAnchor() Gets the anchor associated with this collidable leaf. public Anchor GetCollidableAnchor() Returns Anchor The anchor for this collidable leaf. GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetSolid() Gets the solid geometry object. public Solid GetSolid() Returns Solid The solid geometry object. UpdateByContent() Updates the object based on its current content. public void UpdateByContent()" }, "api/Hi.NcMech.Topo.html": { "href": "api/Hi.NcMech.Topo.html", @@ -3337,42 +3467,42 @@ "api/Hi.NcMech.Workpieces.Workpiece.html": { "href": "api/Hi.NcMech.Workpieces.Workpiece.html", "title": "Class Workpiece | HiAPI-C# 2025", - "summary": "Class Workpiece Namespace Hi.NcMech.Workpieces Assembly HiMech.dll Workpiece configuration data model. public class Workpiece : IGetAnchor, IGetTopoIndex, IGetCuttingPara, IMakeXmlSource Inheritance object Workpiece Implements IGetAnchor IGetTopoIndex IGetCuttingPara IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) 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 Workpiece holds the persistent/serializable configuration. Runtime geometry, caching, diff calculation, defect scanning, display and collision are managed by WorkpieceService. Constructors Workpiece() Initializes a new instance of the Workpiece class. public Workpiece() Workpiece(XElement, string, string, IProgress) Initializes a new instance of the Workpiece class. public Workpiece(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement XML element source. baseDirectory string Base directory. relFile string Relative file path. progress IProgress Progress reporter for diagnostic messages emitted during construction. Properties Asmb Asmb. public Asmb Asmb { get; } Property Value Asmb CollidableName Collidable name. public string CollidableName { get; } Property Value string CuttingPara Milling parameters. public ICuttingPara CuttingPara { get; set; } Property Value ICuttingPara CuttingParaFile File path for milling parameters. public string CuttingParaFile { get; set; } Property Value string FixtureBuckle Buckle anchor. public Anchor FixtureBuckle { get; } Property Value Anchor FixtureToProgramZeroMat4d Matrix transformation from fixture to program zero. public Mat4d FixtureToProgramZeroMat4d { get; } Property Value Mat4d GeomAnchor Anchor of workpiece geometry. public Anchor GeomAnchor { get; } Property Value Anchor IdealGeom Ideal geometry representation. public IGetStl IdealGeom { get; set; } Property Value IGetStl InitGeom Raw geometry for initiate. public IMakeXmlSource InitGeom { get; set; } Property Value IMakeXmlSource InitResolution Resolution for initialization. public double InitResolution { get; set; } Property Value double ProgramZeroAnchor Anchor of geometry zero and cutter location zero. public Anchor ProgramZeroAnchor { get; } Property Value Anchor WorkpieceGeomToFixtureBuckleBranch Branch connecting workpiece geometry to fixture buckle. public Branch WorkpieceGeomToFixtureBuckleBranch { get; } Property Value Branch WorkpieceGeomToFixtureBuckleTransformer Transformer connecting workpiece geometry to fixture buckle. public ITransformer WorkpieceGeomToFixtureBuckleTransformer { get; set; } Property Value ITransformer WorkpieceGeomToProgramZeroBranch Branch connecting workpiece geometry to program zero. public Branch WorkpieceGeomToProgramZeroBranch { get; } Property Value Branch WorkpieceGeomToProgramZeroTransformer Transformer connecting workpiece geometry to program zero. public ITransformer WorkpieceGeomToProgramZeroTransformer { get; set; } Property Value ITransformer WorkpieceMaterial Workpiece material. public WorkpieceMaterial WorkpieceMaterial { get; set; } Property Value WorkpieceMaterial WorkpieceMaterialFile File path for workpiece material. public string WorkpieceMaterialFile { get; set; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string Methods GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetCuttingPara() Get ICuttingPara. public ICuttingPara GetCuttingPara() Returns ICuttingPara ICuttingPara 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class Workpiece Namespace Hi.NcMech.Workpieces Assembly HiMech.dll Workpiece configuration data model. public class Workpiece : IGetAnchor, IGetTopoIndex, IGetCuttingPara, IMakeXmlSource Inheritance object Workpiece Implements IGetAnchor IGetTopoIndex IGetCuttingPara IMakeXmlSource Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) 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 Workpiece holds the persistent/serializable configuration. Meshed geometry, caching, diff calculation, defect scanning, display and collision are managed by WorkpieceService. Constructors Workpiece() Initializes a new instance of the Workpiece class. public Workpiece() Workpiece(XElement, string, string, IProgress) Initializes a new instance of the Workpiece class. public Workpiece(XElement src, string baseDirectory, string relFile, IProgress progress) Parameters src XElement XML element source. baseDirectory string Base directory. relFile string Relative file path. progress IProgress Progress reporter for diagnostic messages emitted during construction. Properties Asmb Asmb. public Asmb Asmb { get; } Property Value Asmb CollidableName Collidable name. public string CollidableName { get; } Property Value string CuttingPara Milling parameters. public ICuttingPara CuttingPara { get; set; } Property Value ICuttingPara CuttingParaFile File path for milling parameters. public string CuttingParaFile { get; set; } Property Value string FixtureBuckle Buckle anchor. public Anchor FixtureBuckle { get; } Property Value Anchor FixtureToProgramZeroMat4d Matrix transformation from fixture to program zero. public Mat4d FixtureToProgramZeroMat4d { get; } Property Value Mat4d GeomAnchor Anchor of workpiece geometry. public Anchor GeomAnchor { get; } Property Value Anchor IdealGeom Ideal geometry representation. public IGetStl IdealGeom { get; set; } Property Value IGetStl InitGeom Raw geometry for initiate. public IMakeXmlSource InitGeom { get; set; } Property Value IMakeXmlSource InitResolution Resolution for initialization. public double InitResolution { get; set; } Property Value double ProgramZeroAnchor Anchor of geometry zero and cutter location zero. public Anchor ProgramZeroAnchor { get; } Property Value Anchor WorkpieceGeomToFixtureBuckleBranch Branch connecting workpiece geometry to fixture buckle. public Branch WorkpieceGeomToFixtureBuckleBranch { get; } Property Value Branch WorkpieceGeomToFixtureBuckleTransformer Transformer connecting workpiece geometry to fixture buckle. public ITransformer WorkpieceGeomToFixtureBuckleTransformer { get; set; } Property Value ITransformer WorkpieceGeomToProgramZeroBranch Branch connecting workpiece geometry to program zero. public Branch WorkpieceGeomToProgramZeroBranch { get; } Property Value Branch WorkpieceGeomToProgramZeroTransformer Transformer connecting workpiece geometry to program zero. public ITransformer WorkpieceGeomToProgramZeroTransformer { get; set; } Property Value ITransformer WorkpieceMaterial Workpiece material. public WorkpieceMaterial WorkpieceMaterial { get; set; } Property Value WorkpieceMaterial WorkpieceMaterialFile File path for workpiece material. public string WorkpieceMaterialFile { get; set; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string Methods GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetCuttingPara() Get ICuttingPara. public ICuttingPara GetCuttingPara() Returns ICuttingPara ICuttingPara 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html": { "href": "api/Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.html", "title": "Class WorkpieceEditorDisplayee | HiAPI-C# 2025", - "summary": "Class WorkpieceEditorDisplayee Namespace Hi.NcMech.Workpieces Assembly HiMech.dll Displayee for visualizing workpiece raw/ideal/runtime geometry and anchors. public class WorkpieceEditorDisplayee : IDisplayee, IExpandToBox3d Inheritance object WorkpieceEditorDisplayee Implements IDisplayee IExpandToBox3d Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) 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 WorkpieceEditorDisplayee(IProgress) public WorkpieceEditorDisplayee(IProgress progress = null) Parameters progress IProgress Progress reporter for runtime geometry operations (e.g. defect warnings). Properties Config Gets or sets the configuration for visualization. public WorkpieceEditorDisplayeeConfig Config { get; set; } Property Value WorkpieceEditorDisplayeeConfig FixtureRenderingMode Gets or sets the rendering mode for fixture. public Solid.RenderingModeEnum FixtureRenderingMode { get; set; } Property Value Solid.RenderingModeEnum IdealGeomRenderingMode Gets or sets the rendering mode for ideal geometry. public Solid.RenderingModeEnum IdealGeomRenderingMode { get; set; } Property Value Solid.RenderingModeEnum MachiningEquipmentGetter Gets or sets the delegate that provides Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.MachiningEquipment. public Func MachiningEquipmentGetter { get; set; } Property Value Func Progress Progress reporter for runtime geometry operations. public IProgress Progress { get; } Property Value IProgress RawGeomRenderingMode Gets or sets the rendering mode for raw geometry. public Solid.RenderingModeEnum RawGeomRenderingMode { get; set; } Property Value Solid.RenderingModeEnum ShowRuntimeGeom Gets or sets whether to show runtime geometry. public bool ShowRuntimeGeom { get; set; } Property Value bool WorkpieceServiceGetter Gets or sets the delegate that provides Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.WorkpieceService. public Func WorkpieceServiceGetter { get; set; } Property Value Func Methods ClearIdealGeomCache() Clears the ideal geometry cache on workpiece service. public void ClearIdealGeomCache() ClearRawGeomCache() Clears the raw geometry cache on workpiece service. public void ClearRawGeomCache() Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box" + "summary": "Class WorkpieceEditorDisplayee Namespace Hi.NcMech.Workpieces Assembly HiMech.dll Displayee for visualizing workpiece raw/ideal/meshed geometry and anchors. public class WorkpieceEditorDisplayee : IDisplayee, IExpandToBox3d Inheritance object WorkpieceEditorDisplayee Implements IDisplayee IExpandToBox3d Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) 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 WorkpieceEditorDisplayee(IProgress) public WorkpieceEditorDisplayee(IProgress progress = null) Parameters progress IProgress Progress reporter for meshed geometry operations (e.g. defect warnings). Properties Config Gets or sets the configuration for visualization. public WorkpieceEditorDisplayeeConfig Config { get; set; } Property Value WorkpieceEditorDisplayeeConfig FixtureRenderingMode Gets or sets the rendering mode for fixture. public Solid.RenderingModeEnum FixtureRenderingMode { get; set; } Property Value Solid.RenderingModeEnum IdealGeomRenderingMode Gets or sets the rendering mode for ideal geometry. public Solid.RenderingModeEnum IdealGeomRenderingMode { get; set; } Property Value Solid.RenderingModeEnum MachiningEquipmentGetter Gets or sets the delegate that provides Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.MachiningEquipment. public Func MachiningEquipmentGetter { get; set; } Property Value Func Progress Progress reporter for meshed geometry operations. public IProgress Progress { get; } Property Value IProgress RawGeomRenderingMode Gets or sets the rendering mode for raw geometry. public Solid.RenderingModeEnum RawGeomRenderingMode { get; set; } Property Value Solid.RenderingModeEnum ShowMeshedGeom Gets or sets whether to show meshed geometry. public bool ShowMeshedGeom { get; set; } Property Value bool WorkpieceServiceGetter Gets or sets the delegate that provides Hi.NcMech.Workpieces.WorkpieceEditorDisplayee.WorkpieceService. public Func WorkpieceServiceGetter { get; set; } Property Value Func Methods ClearIdealGeomCache() Clears the ideal geometry cache on workpiece service. public void ClearIdealGeomCache() ClearRawGeomCache() Clears the raw geometry cache on workpiece service. public void ClearRawGeomCache() Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box" }, "api/Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html": { "href": "api/Hi.NcMech.Workpieces.WorkpieceEditorDisplayeeConfig.html", "title": "Class WorkpieceEditorDisplayeeConfig | HiAPI-C# 2025", - "summary": "Class WorkpieceEditorDisplayeeConfig Namespace Hi.NcMech.Workpieces Assembly HiMech.dll Configuration settings for workpiece editor display. public class WorkpieceEditorDisplayeeConfig : IMakeXmlSource Inheritance object WorkpieceEditorDisplayeeConfig Implements 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 WorkpieceEditorDisplayeeConfig() Initializes a new instance of the WorkpieceEditorDisplayeeConfig class. public WorkpieceEditorDisplayeeConfig() WorkpieceEditorDisplayeeConfig(XElement) Initializes a new instance from XML. public WorkpieceEditorDisplayeeConfig(XElement element) Parameters element XElement Properties FixtureRenderingMode Rendering mode for fixture geometry. public Solid.RenderingModeEnum FixtureRenderingMode { get; set; } Property Value Solid.RenderingModeEnum IdealGeomRenderingMode Rendering mode for ideal geometry. public Solid.RenderingModeEnum IdealGeomRenderingMode { get; set; } Property Value Solid.RenderingModeEnum RawGeomRenderingMode Rendering mode for raw geometry. public Solid.RenderingModeEnum RawGeomRenderingMode { get; set; } Property Value Solid.RenderingModeEnum ShowFixtureBuckle Whether to show fixture buckle. public bool ShowFixtureBuckle { get; set; } Property Value bool ShowGeomAnchor Whether to show geometry anchor. public bool ShowGeomAnchor { get; set; } Property Value bool ShowProgramZeroAnchor Whether to show program zero anchor. public bool ShowProgramZeroAnchor { get; set; } Property Value bool ShowRuntimeGeom Whether to show runtime geometry. public bool ShowRuntimeGeom { get; set; } Property Value bool XName Name for XML IO. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class WorkpieceEditorDisplayeeConfig Namespace Hi.NcMech.Workpieces Assembly HiMech.dll Configuration settings for workpiece editor display. public class WorkpieceEditorDisplayeeConfig : IMakeXmlSource Inheritance object WorkpieceEditorDisplayeeConfig Implements 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 WorkpieceEditorDisplayeeConfig() Initializes a new instance of the WorkpieceEditorDisplayeeConfig class. public WorkpieceEditorDisplayeeConfig() WorkpieceEditorDisplayeeConfig(XElement) Initializes a new instance from XML. public WorkpieceEditorDisplayeeConfig(XElement element) Parameters element XElement Properties FixtureRenderingMode Rendering mode for fixture geometry. public Solid.RenderingModeEnum FixtureRenderingMode { get; set; } Property Value Solid.RenderingModeEnum IdealGeomRenderingMode Rendering mode for ideal geometry. public Solid.RenderingModeEnum IdealGeomRenderingMode { get; set; } Property Value Solid.RenderingModeEnum RawGeomRenderingMode Rendering mode for raw geometry. public Solid.RenderingModeEnum RawGeomRenderingMode { get; set; } Property Value Solid.RenderingModeEnum ShowFixtureBuckle Whether to show fixture buckle. public bool ShowFixtureBuckle { get; set; } Property Value bool ShowGeomAnchor Whether to show geometry anchor. public bool ShowGeomAnchor { get; set; } Property Value bool ShowMeshedGeom Whether to show meshed geometry. public bool ShowMeshedGeom { get; set; } Property Value bool ShowProgramZeroAnchor Whether to show program zero anchor. public bool ShowProgramZeroAnchor { get; set; } Property Value bool XName Name for XML IO. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcMech.Workpieces.WorkpieceService.html": { "href": "api/Hi.NcMech.Workpieces.WorkpieceService.html", "title": "Class WorkpieceService | HiAPI-C# 2025", - "summary": "Class WorkpieceService Namespace Hi.NcMech.Workpieces Assembly HiMech.dll Runtime service for Workpiece. public class WorkpieceService : IDisplayee, IExpandToBox3d, IDisposable, IGetAnchoredDisplayeeList, IAnchoredCollidableLeaf, IAnchoredCollidableNode, IAnchoredCollidableBased, ICollidable Inheritance object WorkpieceService Implements IDisplayee IExpandToBox3d IDisposable IGetAnchoredDisplayeeList IAnchoredCollidableLeaf IAnchoredCollidableNode IAnchoredCollidableBased ICollidable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DispUtil.Display(IDisplayee, Bind, Mat4d) 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 WorkpieceService handles runtime geometry, caching, diff calculation, defect scanning, display and collision — state that does not require configuration IO. Compare to Workpiece, which holds the persistent/serializable configuration. Constructors WorkpieceService(Func) Ctor. public WorkpieceService(Func workpieceGetter) Parameters workpieceGetter Func Properties BottomResolution Resolution. public double BottomResolution { get; } Property Value double CollidableName Gets the name of the collidable object. public string CollidableName { get; } Property Value string CollisionFlag Gets or sets the collision flag. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag ConstructionDefectDisplayee Construction defect displayee. public ConstructionDefectDisplayee ConstructionDefectDisplayee { get; } Property Value ConstructionDefectDisplayee DiffAttachmentBag transient object. For Internal Use. public ConcurrentBag DiffAttachmentBag { get; set; } Property Value ConcurrentBag DiffRangeColorRule Internal used. public RangeColorRule DiffRangeColorRule { get; set; } Property Value RangeColorRule DiffVisualRadius_mm Visual radius for difference visualization. public double DiffVisualRadius_mm { get; set; } Property Value double HasDiff Indicates whether there are differences between ideal and actual geometry. public bool HasDiff { get; } Property Value bool IdealGeom Delegate property for IdealGeom with cache cleanup. public IGetStl IdealGeom { get; set; } Property Value IGetStl IdealSolid Gets the drawing representing the ideal geometry faces of the workpiece. The derived solid from IdealGeom. public Solid IdealSolid { get; } Property Value Solid InitGeom Delegate property for InitGeom with runtime cleanup. public IMakeXmlSource InitGeom { get; set; } Property Value IMakeXmlSource InitSolid The derived solid from InitGeom. public Solid InitSolid { get; } Property Value Solid IsRuntimeGeomInit Indicates whether the runtime geometry is initialized. public bool IsRuntimeGeomInit { get; } Property Value bool Workpiece The underlying workpiece data model. public Workpiece Workpiece { get; } Property Value Workpiece WorkpieceGetter Lazy factory for the active Workpiece; invoked whenever consumers read Workpiece. public Func WorkpieceGetter { get; } Property Value Func Methods ClearCache() Drops runtime geometry and defect display caches so the next access rebuilds from the current Workpiece. public void ClearCache() ClearDefectDisplayee() Clears all defect displayees. public void ClearDefectDisplayee() ClearIdealGeomCache() Clears the ideal geometry cache. public void ClearIdealGeomCache() ClearRawGeomCache() Clears the raw geometry cache. public void ClearRawGeomCache() Diff(double, CancellationToken, IProgress) Calculates the difference between ideal and actual geometry. public void Diff(double detectionRadius, CancellationToken token, IProgress progress = null) Parameters detectionRadius double Detection radius. token CancellationToken Cancellation token. progress IProgress Progress reporting interface. Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchoredCollidableNode() Gets the anchored collidable node associated with this object. public IAnchoredCollidableNode GetAnchoredCollidableNode() Returns IAnchoredCollidableNode The anchored collidable node. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetCollidableAnchor() Gets the anchor associated with this collidable leaf. public Anchor GetCollidableAnchor() Returns Anchor The anchor for this collidable leaf. GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetRuntimeGeom(CancellationToken, IProgress) Gets the runtime geometry. public CubeTree GetRuntimeGeom(CancellationToken token, IProgress progress = null) Parameters token CancellationToken Cancellation token. progress IProgress Progress reporting interface. Returns CubeTree Cube tree representing the runtime geometry. ReadRuntimeGeom(string) Reads the runtime geometry from a file. public void ReadRuntimeGeom(string file) Parameters file string Source file path. ResetRuntimeGeom(ClStrip) Resets the runtime geometry. public void ResetRuntimeGeom(ClStrip clStrip) Parameters clStrip ClStrip Cutter location strip. ScanRuntimeGeomInfDefect(IProgress, CancellationToken) Scans the runtime geometry for inf defects. public bool? ScanRuntimeGeomInfDefect(IProgress messageHost, CancellationToken cancellationToken) Parameters messageHost IProgress cancellationToken CancellationToken Returns bool? SetRuntimeGeom(CubeTree) Sets the runtime geometry instance and rebuilds its attachments. public void SetRuntimeGeom(CubeTree runtimeGeom_) Parameters runtimeGeom_ CubeTree The runtime cube tree geometry. WriteRuntimeGeom(string, CancellationToken, IProgress) Writes the runtime geometry to a file. public void WriteRuntimeGeom(string file, CancellationToken token, IProgress progress = null) Parameters file string Target file path. token CancellationToken Cancellation token. progress IProgress Progress reporting interface." + "summary": "Class WorkpieceService Namespace Hi.NcMech.Workpieces Assembly HiMech.dll Runtime service for Workpiece. public class WorkpieceService : IDisplayee, IExpandToBox3d, IDisposable, IGetAnchoredDisplayeeList, IAnchoredCollidableLeaf, IAnchoredCollidableNode, IAnchoredCollidableBased, ICollidable Inheritance object WorkpieceService Implements IDisplayee IExpandToBox3d IDisposable IGetAnchoredDisplayeeList IAnchoredCollidableLeaf IAnchoredCollidableNode IAnchoredCollidableBased ICollidable Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int) DispUtil.Display(IDisplayee, Bind, Mat4d) 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 WorkpieceService handles meshed geometry, caching, diff calculation, defect scanning, display and collision — state that does not require configuration IO. Compare to Workpiece, which holds the persistent/serializable configuration. Constructors WorkpieceService(Func, Func) Ctor. public WorkpieceService(Func workpieceGetter, Func baseDirectoryGetter = null) Parameters workpieceGetter Func baseDirectoryGetter Func Properties BaseDirectoryGetter Provides the base directory that relative file paths in this service resolve against (injected by the owning project service); when null, paths are used as-is. public Func BaseDirectoryGetter { get; } Property Value Func BottomResolution Resolution. public double BottomResolution { get; } Property Value double CollidableName Gets the name of the collidable object. public string CollidableName { get; } Property Value string CollisionFlag Gets or sets the collision flag. public CollisionFlag CollisionFlag { get; set; } Property Value CollisionFlag ConstructionDefectDisplayee Construction defect displayee. public ConstructionDefectDisplayee ConstructionDefectDisplayee { get; } Property Value ConstructionDefectDisplayee DetectionRadius_mm Detection radius in millimeters last used by Diff(double, CancellationToken, IProgress). It is set by that runtime call (e.g. from a session / mission command), not by display callers, and saved on the service so consumers (e.g. the web UI) can bound DiffVisualRadius_mm to it — the visual radius is meaningful only up to the detection radius. public double DetectionRadius_mm { get; set; } Property Value double DiffAttachmentBag transient object. For Internal Use. public ConcurrentBag DiffAttachmentBag { get; } Property Value ConcurrentBag DiffRangeColorRule Internal used. public RangeColorRule DiffRangeColorRule { get; set; } Property Value RangeColorRule DiffVisualRadius_mm Visual radius for difference visualization. public double DiffVisualRadius_mm { get; set; } Property Value double HasDiff Indicates whether there are differences between ideal and actual geometry. public bool HasDiff { get; } Property Value bool IdealGeom Delegate property for IdealGeom with cache cleanup. public IGetStl IdealGeom { get; set; } Property Value IGetStl IdealSolid Gets the drawing representing the ideal geometry faces of the workpiece. The derived solid from IdealGeom. public Solid IdealSolid { get; } Property Value Solid InitGeom Delegate property for InitGeom with runtime cleanup. public IMakeXmlSource InitGeom { get; set; } Property Value IMakeXmlSource InitSolid The derived solid from InitGeom. public Solid InitSolid { get; } Property Value Solid IsMeshedGeomInit Indicates whether the meshed geometry is initialized. public bool IsMeshedGeomInit { get; } Property Value bool Workpiece The underlying workpiece data model. public Workpiece Workpiece { get; } Property Value Workpiece WorkpieceGetter Lazy factory for the active Workpiece; invoked whenever consumers read Workpiece. public Func WorkpieceGetter { get; } Property Value Func Methods ClearCache() Drops the raw / ideal solid and defect display caches so the next access rebuilds from the current Workpiece. public void ClearCache() ClearDefectDisplayee() Clears all defect displayees. public void ClearDefectDisplayee() ClearIdealGeomCache() Clears the ideal geometry cache. public void ClearIdealGeomCache() ClearRawGeomCache() Clears the raw geometry cache. public void ClearRawGeomCache() Diff(double, CancellationToken, IProgress) Calculates the difference between ideal and actual geometry. public void Diff(double detectionRadius, CancellationToken token, IProgress messageProgress = null) Parameters detectionRadius double Detection radius; also saved to DetectionRadius_mm. token CancellationToken Cancellation token. messageProgress IProgress Progress reporting interface. Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. Dispose() Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. public void Dispose() Dispose(bool) protected virtual void Dispose(bool disposing) Parameters disposing bool ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchoredCollidableNode() Gets the anchored collidable node associated with this object. public IAnchoredCollidableNode GetAnchoredCollidableNode() Returns IAnchoredCollidableNode The anchored collidable node. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetCollidableAnchor() Gets the anchor associated with this collidable leaf. public Anchor GetCollidableAnchor() Returns Anchor The anchor for this collidable leaf. GetCollidee() Get ICollidee. public ICollidee GetCollidee() Returns ICollidee ICollidee GetOrBuildMeshedGeom(CancellationToken, IProgress) Returns the current meshed geometry, lazily building it from the workpiece's InitGeom (voxelize via NewWithDefectInfos(Stl, double, CancellationToken, IProgress), or load a CubeTreeFile) when not yet present. The first build can be slow — hence the cancellation token + progress sinks; once built, the tree is returned cheaply. public CubeTree GetOrBuildMeshedGeom(CancellationToken token, IProgress messageProgress = null) Parameters token CancellationToken Cancels an in-progress build (leaves the geometry unbuilt / null). messageProgress IProgress IMessage-channel sink (null = silent). Returns CubeTree The meshed cube tree; null when there is no workpiece / InitGeom, or the build was cancelled. ReadMeshedGeom(string, IProgress) Reads the meshed geometry from a file, relative to BaseDirectoryGetter. public bool ReadMeshedGeom(string relFile, IProgress messageProgress = null) Parameters relFile string Source file path, relative to the injected base directory. messageProgress IProgress IMessage-channel sink injected by the caller (null = silent). Returns bool True if the file existed and was read; false if it was not found. ResetMeshedGeom() Resets the meshed geometry. public void ResetMeshedGeom() RetireAttachments(IReadOnlyCollection) Retires attachments OWNED BY A CALLER (e.g. ClStrip's ClStripPos) that are attached to the current meshed tree. If a tree is current it detaches them under its write-gate render barrier first; otherwise (tree already retired) it just frees them on the background chain. Targeted — never touches the base attachment or diff attachments. public void RetireAttachments(IReadOnlyCollection attachments) Parameters attachments IReadOnlyCollection ScanMeshedGeomInfDefect(IProgress, CancellationToken) Scans the meshed geometry for inf defects. public bool? ScanMeshedGeomInfDefect(IProgress messageProgress, CancellationToken cancellationToken) Parameters messageProgress IProgress cancellationToken CancellationToken Returns bool? SetMeshedGeom(CubeTree) Sets the meshed geometry instance and rebuilds its attachments. public void SetMeshedGeom(CubeTree meshedGeom_) Parameters meshedGeom_ CubeTree The meshed cube tree geometry. WriteMeshedGeom(string, CancellationToken, IProgress) Writes the meshed geometry to a file, relative to BaseDirectoryGetter. public void WriteMeshedGeom(string relFile, CancellationToken token, IProgress messageProgress = null) Parameters relFile string Target file path, relative to the injected base directory. token CancellationToken Cancellation token. messageProgress IProgress IMessage-channel progress sink (null = silent)." }, "api/Hi.NcMech.Workpieces.html": { "href": "api/Hi.NcMech.Workpieces.html", "title": "Namespace Hi.NcMech.Workpieces | HiAPI-C# 2025", - "summary": "Namespace Hi.NcMech.Workpieces Classes Workpiece Workpiece configuration data model. WorkpieceEditorDisplayee Displayee for visualizing workpiece raw/ideal/runtime geometry and anchors. WorkpieceEditorDisplayeeConfig Configuration settings for workpiece editor display. WorkpieceService Runtime service for Workpiece." + "summary": "Namespace Hi.NcMech.Workpieces Classes Workpiece Workpiece configuration data model. WorkpieceEditorDisplayee Displayee for visualizing workpiece raw/ideal/meshed geometry and anchors. WorkpieceEditorDisplayeeConfig Configuration settings for workpiece editor display. WorkpieceService Runtime service for Workpiece." }, "api/Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html": { "href": "api/Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html", "title": "Class CodeXyzabcMachineTool | HiAPI-C# 2025", - "summary": "Class CodeXyzabcMachineTool Namespace Hi.NcMech.Xyzabc Assembly HiMech.dll This machine tool class helps very quick test by the code configuration. For general/end-user use, apply GeneralXyzabcMachineTool instead. public class CodeXyzabcMachineTool : IXyzabcMachineTool, IDisplayee, IGetCollisionIndexPairs, IXyzabcChain, IGetXyzabcChain, IMachiningChain, IGetAsmb, IGetAnchor, IGetTopoIndex, IMakeXmlSource, IGetAnchorToSolidDictionary, IGetAnchoredDisplayeeList, IExpandToBox3d, INameNote Inheritance object CodeXyzabcMachineTool Implements IXyzabcMachineTool IDisplayee IGetCollisionIndexPairs IXyzabcChain IGetXyzabcChain IMachiningChain IGetAsmb IGetAnchor IGetTopoIndex IMakeXmlSource IGetAnchorToSolidDictionary IGetAnchoredDisplayeeList IExpandToBox3d INameNote Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) MachiningChainUtil.GetMcCodeTransformerDictionary(IMachiningChain) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) XyzabcUtil.GenerateCollisionIndexPairs(IXyzabcChain) XyzabcUtil.GetMc(IXyzabcChain, out DVec3d) XyzabcUtil.GetMc(IXyzabcChain, out double, out double, out double, out double, out double, out double) XyzabcUtil.GetMcAbc_rad(IXyzabcChain, out Abc) XyzabcUtil.GetMcXyzabc(IXyzabcChain) XyzabcUtil.GetNp(IXyzabcChain) XyzabcUtil.GetTransformationMat4d(IXyzabcChain) XyzabcUtil.SetMc(IXyzabcChain, DVec3d) XyzabcUtil.SetMc(IXyzabcChain, Vec3d) XyzabcUtil.SetMc(IXyzabcChain, double, double, double) XyzabcUtil.SetMc(IXyzabcChain, double, double, double, double, double, double) XyzabcUtil.SetMcAbc_rad(IXyzabcChain, Vec3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CodeXyzabcMachineTool(CodeXyzabcChain) Initializes a new instance of the CodeXyzabcMachineTool class. public CodeXyzabcMachineTool(CodeXyzabcChain xyzabcChain) Parameters xyzabcChain CodeXyzabcChain The XYZABC chain instance. CodeXyzabcMachineTool(string, bool) Builds a machine tool from a compact CodeXyzabcChain axis string and vertical/horizontal layout flag. public CodeXyzabcMachineTool(string chainCode = \"[O][Z][C][w];[O][Y][X][B][S][t]\", bool isVertical = true) Parameters chainCode string Bracket token string consumed by CodeXyzabcChain (defaults to a common 5-axis layout). isVertical bool Whether the Z column is treated as vertical for the generated chain. CodeXyzabcMachineTool(XElement, string, IProgress) Initializes a new instance from XML. public CodeXyzabcMachineTool(XElement src, string baseDirectory, IProgress progress) Parameters src XElement The XML source element. baseDirectory string The base directory for resolving relative paths. progress IProgress The progress reporter. Properties CollisionIndexPairs Gets or sets the collection of collision index pairs. public HashSet CollisionIndexPairs { get; set; } Property Value HashSet EnableAutoGeneratingCollisionIndexPairsOnXmlLoaded Gets or sets whether to automatically generate collision index pairs when loading from XML. public bool EnableAutoGeneratingCollisionIndexPairsOnXmlLoaded { get; set; } Property Value bool McCodes Gets the machine codes array. public string[] McCodes { get; } Property Value string[] McTransformers Gets the machine transformers array. public IDynamicRegular[] McTransformers { get; } Property Value IDynamicRegular[] Name Gets or sets the name of the object. public string Name { get; set; } Property Value string Note Gets or sets the descriptive note for the object. public string Note { get; set; } Property Value string TableAnchor Anchor to attach fixture or workpiece. The anchor is the same as IXyzabcChain.Hi.Numerical.Xyzabc.IXyzabcChain.GetTableBuckle. public Anchor TableAnchor { get; } Property Value Anchor ToolAnchor Anchor to attach tool. The anchor is the same as IXyzabcChain.Hi.Numerical.Xyzabc.IXyzabcChain.GetToolBuckle. public Anchor ToolAnchor { get; } Property Value Anchor XName Name of XML element. public static string XName { get; } Property Value string XyzabcChain Gets the XYZABC chain instance. public IXyzabcChain XyzabcChain { get; } Property Value IXyzabcChain Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GenerateCollisionIndexPairs() Generates collision index pairs for the machine tool components. public void GenerateCollisionIndexPairs() GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchorToSolidDictionary() Gets a dictionary that maps Anchor objects to their corresponding Solid objects. public Dictionary GetAnchorToSolidDictionary() Returns Dictionary A dictionary where keys are anchors and values are their associated solids. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetCollisionIndexPairs() Gets a collection of collision index pairs for collision detection. public IEnumerable GetCollisionIndexPairs() Returns IEnumerable A collection of CollisionIndexPair objects. GetMachiningChain() public IMachiningChain GetMachiningChain() Returns IMachiningChain GetMcCodeTransformerDictionary() public Dictionary GetMcCodeTransformerDictionary() Returns Dictionary GetTableBuckle() Gets the table buckle anchor point. public IGetAnchor GetTableBuckle() Returns IGetAnchor The table buckle anchor point. GetToolBuckle() Gets the tool buckle anchor point. public IGetAnchor GetToolBuckle() Returns IGetAnchor The tool buckle anchor point. GetTransformerA() Get transformer A. public DynamicRotation GetTransformerA() Returns DynamicRotation transformer A GetTransformerB() Get transformer B. public DynamicRotation GetTransformerB() Returns DynamicRotation transformer B GetTransformerC() Get transformer C. public DynamicRotation GetTransformerC() Returns DynamicRotation transformer C GetTransformerX() Get transformer X. public DynamicTranslation GetTransformerX() Returns DynamicTranslation transformer X GetTransformerY() Get transformer Y. public DynamicTranslation GetTransformerY() Returns DynamicTranslation transformer Y GetTransformerZ() Get transformer Z. public DynamicTranslation GetTransformerZ() Returns DynamicTranslation transformer Z GetXyzabcChain() Get IXyzabcChain. public IXyzabcChain GetXyzabcChain() Returns IXyzabcChain IXyzabcChain GetXyzabcMachineTool() public CodeXyzabcMachineTool GetXyzabcMachineTool() Returns CodeXyzabcMachineTool 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class CodeXyzabcMachineTool Namespace Hi.NcMech.Xyzabc Assembly HiMech.dll This machine tool class helps very quick test by the code configuration. For general/end-user use, apply GeneralXyzabcMachineTool instead. public class CodeXyzabcMachineTool : IXyzabcMachineTool, IDisplayee, IGetCollisionIndexPairs, IXyzabcChain, IGetXyzabcChain, IMachiningChain, IGetAsmb, IGetAnchor, IGetTopoIndex, IMakeXmlSource, IGetAnchorToSolidDictionary, IGetAnchoredDisplayeeList, IExpandToBox3d, INameNote Inheritance object CodeXyzabcMachineTool Implements IXyzabcMachineTool IDisplayee IGetCollisionIndexPairs IXyzabcChain IGetXyzabcChain IMachiningChain IGetAsmb IGetAnchor IGetTopoIndex IMakeXmlSource IGetAnchorToSolidDictionary IGetAnchoredDisplayeeList IExpandToBox3d INameNote Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) MachiningChainUtil.GetMcCodeTransformerDictionary(IMachiningChain) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) XyzabcUtil.GenerateCollisionIndexPairs(IXyzabcChain) XyzabcUtil.GetMc(IXyzabcChain, out DVec3d) XyzabcUtil.GetMc(IXyzabcChain, out double, out double, out double, out double, out double, out double) XyzabcUtil.GetMcAbc_rad(IXyzabcChain, out Abc) XyzabcUtil.GetMcXyzabc(IXyzabcChain) XyzabcUtil.GetNp(IXyzabcChain) XyzabcUtil.GetTransformationMat4d(IXyzabcChain) XyzabcUtil.SetMc(IXyzabcChain, DVec3d) XyzabcUtil.SetMc(IXyzabcChain, Vec3d) XyzabcUtil.SetMc(IXyzabcChain, double, double, double) XyzabcUtil.SetMc(IXyzabcChain, double, double, double, double, double, double) XyzabcUtil.SetMcAbc_rad(IXyzabcChain, Vec3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors CodeXyzabcMachineTool(CodeXyzabcChain) Initializes a new instance of the CodeXyzabcMachineTool class. public CodeXyzabcMachineTool(CodeXyzabcChain xyzabcChain) Parameters xyzabcChain CodeXyzabcChain The XYZABC chain instance. CodeXyzabcMachineTool(string, bool) Builds a machine tool from a compact CodeXyzabcChain axis string and vertical/horizontal layout flag. public CodeXyzabcMachineTool(string chainCode = \"[O][Z][C][w];[O][Y][X][B][S][t]\", bool isVertical = true) Parameters chainCode string Bracket token string consumed by CodeXyzabcChain (defaults to a common 5-axis layout). isVertical bool Whether the Z column is treated as vertical for the generated chain. CodeXyzabcMachineTool(XElement, string, IProgress) Initializes a new instance from XML. public CodeXyzabcMachineTool(XElement src, string baseDirectory, IProgress progress) Parameters src XElement The XML source element. baseDirectory string The base directory for resolving relative paths. progress IProgress The progress reporter. Properties CollisionIndexPairs Gets or sets the collection of collision index pairs. public HashSet CollisionIndexPairs { get; set; } Property Value HashSet EnableAutoGeneratingCollisionIndexPairsOnXmlLoaded Gets or sets whether to automatically generate collision index pairs when loading from XML. public bool EnableAutoGeneratingCollisionIndexPairsOnXmlLoaded { get; set; } Property Value bool McCodes Gets the machine codes array. public string[] McCodes { get; } Property Value string[] McTransformers Gets the machine transformers array. public IDynamicRegular[] McTransformers { get; } Property Value IDynamicRegular[] Name Gets or sets the name of the object. public string Name { get; set; } Property Value string Note Gets or sets the descriptive note for the object. public string Note { get; set; } Property Value string TableAnchor Anchor to attach fixture or workpiece. The anchor is the same as IXyzabcChain.Hi.Numerical.Xyzabc.IXyzabcChain.GetTableBuckle. public Anchor TableAnchor { get; } Property Value Anchor ToolAnchor Anchor to attach tool. The anchor is the same as IXyzabcChain.Hi.Numerical.Xyzabc.IXyzabcChain.GetToolBuckle. public Anchor ToolAnchor { get; } Property Value Anchor XName Name of XML element. public static string XName { get; } Property Value string XyzabcChain Gets the XYZABC chain instance. public IXyzabcChain XyzabcChain { get; } Property Value IXyzabcChain Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GenerateCollisionIndexPairs() Generates collision index pairs for the machine tool components. public void GenerateCollisionIndexPairs() GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchorToSolidDictionary() Gets a dictionary that maps Anchor objects to their corresponding Solid objects. public Dictionary GetAnchorToSolidDictionary() Returns Dictionary A dictionary where keys are anchors and values are their associated solids. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetCollisionIndexPairs() Gets a collection of collision index pairs for collision detection. public IEnumerable GetCollisionIndexPairs() Returns IEnumerable A collection of CollisionIndexPair objects. GetMachiningChain() public IMachiningChain GetMachiningChain() Returns IMachiningChain GetMcCodeTransformerDictionary() public Dictionary GetMcCodeTransformerDictionary() Returns Dictionary GetTableBuckle() Gets the table buckle anchor point. public IGetAnchor GetTableBuckle() Returns IGetAnchor The table buckle anchor point. GetToolBuckle() Gets the tool buckle anchor point. public IGetAnchor GetToolBuckle() Returns IGetAnchor The tool buckle anchor point. GetTransformerA() Get transformer A. public DynamicRotation GetTransformerA() Returns DynamicRotation transformer A GetTransformerB() Get transformer B. public DynamicRotation GetTransformerB() Returns DynamicRotation transformer B GetTransformerC() Get transformer C. public DynamicRotation GetTransformerC() Returns DynamicRotation transformer C GetTransformerX() Get transformer X. public DynamicTranslation GetTransformerX() Returns DynamicTranslation transformer X GetTransformerY() Get transformer Y. public DynamicTranslation GetTransformerY() Returns DynamicTranslation transformer Y GetTransformerZ() Get transformer Z. public DynamicTranslation GetTransformerZ() Returns DynamicTranslation transformer Z GetXyzabcChain() Get IXyzabcChain. public IXyzabcChain GetXyzabcChain() Returns IXyzabcChain IXyzabcChain GetXyzabcMachineTool() public CodeXyzabcMachineTool GetXyzabcMachineTool() Returns CodeXyzabcMachineTool 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html": { "href": "api/Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html", "title": "Class CodeXyzabcMachineToolUri | HiAPI-C# 2025", - "summary": "Class CodeXyzabcMachineToolUri Namespace Hi.NcMech.Xyzabc Assembly HiMech.dll Represents a URI-based container for CodeXyzabcMachineTool. public class CodeXyzabcMachineToolUri : IGetCodeXyzabcMachineTool, IMakeXmlSource, IUriGetter Inheritance object CodeXyzabcMachineToolUri Implements IGetCodeXyzabcMachineTool IMakeXmlSource IUriGetter 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 CodeXyzabcMachineToolUri(string, CodeXyzabcMachineTool) Initializes a new instance of the CodeXyzabcMachineToolUri class. public CodeXyzabcMachineToolUri(string uri, CodeXyzabcMachineTool data) Parameters uri string URI location. data CodeXyzabcMachineTool Machine tool data. CodeXyzabcMachineToolUri(XElement, string, IProgress, object[]) Ctor. public CodeXyzabcMachineToolUri(XElement src, string baseDirectory, IProgress progress, object[] res) Parameters src XElement XML element source. baseDirectory string Base directory. progress IProgress Progress reporter passed to LoadFromUri(string, IProgress, object[]). res object[] Additional resources. Properties IsEncrypted Gets or sets whether the content is encrypted. public bool IsEncrypted { get; set; } Property Value bool MachineTool Gets or sets the machine tool. public CodeXyzabcMachineTool MachineTool { get; } Property Value CodeXyzabcMachineTool Uri Gets the URI string. public string Uri { get; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string Methods GetMachiningChain() public IMachiningChain GetMachiningChain() Returns IMachiningChain GetXyzabcMachineTool() Get CodeXyzabcMachineTool. public CodeXyzabcMachineTool GetXyzabcMachineTool() Returns CodeXyzabcMachineTool Machine tool. LoadFromUri(string, IProgress, object[]) Loads the machine tool data from the URI. public void LoadFromUri(string baseDirectory, IProgress progress, object[] res) Parameters baseDirectory string Base directory. progress IProgress Progress reporter for nested XML / factory loading. res object[] Additional resources. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SaveToUri(string) Saves the machine tool data to the URI. public void SaveToUri(string baseDirectory) Parameters baseDirectory string Base directory." + "summary": "Class CodeXyzabcMachineToolUri Namespace Hi.NcMech.Xyzabc Assembly HiMech.dll Represents a URI-based container for CodeXyzabcMachineTool. public class CodeXyzabcMachineToolUri : IGetCodeXyzabcMachineTool, IMakeXmlSource, IUriGetter Inheritance object CodeXyzabcMachineToolUri Implements IGetCodeXyzabcMachineTool IMakeXmlSource IUriGetter 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 CodeXyzabcMachineToolUri(string, CodeXyzabcMachineTool) Initializes a new instance of the CodeXyzabcMachineToolUri class. public CodeXyzabcMachineToolUri(string uri, CodeXyzabcMachineTool data) Parameters uri string URI location. data CodeXyzabcMachineTool Machine tool data. CodeXyzabcMachineToolUri(XElement, string, IProgress, object[]) Ctor. public CodeXyzabcMachineToolUri(XElement src, string baseDirectory, IProgress progress, object[] res) Parameters src XElement XML element source. baseDirectory string Base directory. progress IProgress Progress reporter passed to LoadFromUri(string, IProgress, object[]). res object[] Additional resources. Properties IsEncrypted Gets or sets whether the content is encrypted. public bool IsEncrypted { get; set; } Property Value bool MachineTool Gets or sets the machine tool. public CodeXyzabcMachineTool MachineTool { get; } Property Value CodeXyzabcMachineTool Uri Gets the URI string. public string Uri { get; } Property Value string XName Name for XML IO. public static string XName { get; } Property Value string Methods GetMachiningChain() public IMachiningChain GetMachiningChain() Returns IMachiningChain GetXyzabcMachineTool() Get CodeXyzabcMachineTool. public CodeXyzabcMachineTool GetXyzabcMachineTool() Returns CodeXyzabcMachineTool Machine tool. LoadFromUri(string, IProgress, object[]) Loads the machine tool data from the URI. public void LoadFromUri(string baseDirectory, IProgress progress, object[] res) Parameters baseDirectory string Base directory. progress IProgress Progress reporter for nested XML / factory loading. res object[] Additional resources. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SaveToUri(string) Saves the machine tool data to the URI. public void SaveToUri(string baseDirectory) Parameters baseDirectory string Base directory." }, "api/Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html": { "href": "api/Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html", "title": "Class GeneralXyzabcMachineTool | HiAPI-C# 2025", - "summary": "Class GeneralXyzabcMachineTool Namespace Hi.NcMech.Xyzabc Assembly HiMech.dll General implementation of an XYZABC machine tool. public class GeneralXyzabcMachineTool : IXyzabcMachineTool, IDisplayee, IGetCollisionIndexPairs, IXyzabcChain, IGetXyzabcChain, IMachiningChain, IGetAsmb, IGetAnchor, IGetTopoIndex, IMakeXmlSource, IGetAnchorToSolidDictionary, IGetAnchoredDisplayeeList, IExpandToBox3d, INameNote Inheritance object GeneralXyzabcMachineTool Implements IXyzabcMachineTool IDisplayee IGetCollisionIndexPairs IXyzabcChain IGetXyzabcChain IMachiningChain IGetAsmb IGetAnchor IGetTopoIndex IMakeXmlSource IGetAnchorToSolidDictionary IGetAnchoredDisplayeeList IExpandToBox3d INameNote Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) MachiningChainUtil.GetMcCodeTransformerDictionary(IMachiningChain) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) XyzabcUtil.GenerateCollisionIndexPairs(IXyzabcChain) XyzabcUtil.GetMc(IXyzabcChain, out DVec3d) XyzabcUtil.GetMc(IXyzabcChain, out double, out double, out double, out double, out double, out double) XyzabcUtil.GetMcAbc_rad(IXyzabcChain, out Abc) XyzabcUtil.GetMcXyzabc(IXyzabcChain) XyzabcUtil.GetNp(IXyzabcChain) XyzabcUtil.GetTransformationMat4d(IXyzabcChain) XyzabcUtil.SetMc(IXyzabcChain, DVec3d) XyzabcUtil.SetMc(IXyzabcChain, Vec3d) XyzabcUtil.SetMc(IXyzabcChain, double, double, double) XyzabcUtil.SetMc(IXyzabcChain, double, double, double, double, double, double) XyzabcUtil.SetMcAbc_rad(IXyzabcChain, Vec3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors GeneralXyzabcMachineTool(IXyzabcChain) Initializes a new instance of the GeneralXyzabcMachineTool class. public GeneralXyzabcMachineTool(IXyzabcChain xyzabcChain) Parameters xyzabcChain IXyzabcChain XYZABC chain to use. GeneralXyzabcMachineTool(XElement, string, IProgress) Initializes a new instance of the GeneralXyzabcMachineTool class from XML. public GeneralXyzabcMachineTool(XElement src, string baseDirectory, IProgress progress) Parameters src XElement XML element source. baseDirectory string Base directory. progress IProgress Progress reporter for loading XyzabcChain and related children. Fields XName Name of XML element. public static string XName Field Value string Properties CollisionIndexPairs Collection of collision index pairs for collision detection. public HashSet CollisionIndexPairs { get; } Property Value HashSet EnableAutoGeneratingCollisionIndexPairsOnXmlLoaded Gets or sets whether to automatically generate collision index pairs when loaded from XML. public bool EnableAutoGeneratingCollisionIndexPairsOnXmlLoaded { get; set; } Property Value bool McCodes Gets the machine coordinate code sequence for decoding the MC array. public string[] McCodes { get; } Property Value string[] McTransformers Gets the machine coordinate transformers. public IDynamicRegular[] McTransformers { get; } Property Value IDynamicRegular[] Name Gets or sets the name of the object. public string Name { get; set; } Property Value string Note Gets or sets the descriptive note for the object. public string Note { get; set; } Property Value string TableAnchor Anchor to attach fixture or workpiece. The anchor is the same as IXyzabcChain.Hi.Numerical.Xyzabc.IXyzabcChain.GetTableBuckle. public Anchor TableAnchor { get; } Property Value Anchor ToolAnchor Anchor to attach tool. The anchor is the same as IXyzabcChain.Hi.Numerical.Xyzabc.IXyzabcChain.GetToolBuckle. public Anchor ToolAnchor { get; } Property Value Anchor XyzabcChain XYZABC chain for this machine tool. public IXyzabcChain XyzabcChain { get; } Property Value IXyzabcChain XyzabcChainFile File path for XYZABC chain. public string XyzabcChainFile { get; set; } Property Value string Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchorToSolidDictionary() Gets a dictionary that maps Anchor objects to their corresponding Solid objects. public Dictionary GetAnchorToSolidDictionary() Returns Dictionary A dictionary where keys are anchors and values are their associated solids. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetCollisionIndexPairs() Gets a collection of collision index pairs for collision detection. public IEnumerable GetCollisionIndexPairs() Returns IEnumerable A collection of CollisionIndexPair objects. GetMachiningChain() public IMachiningChain GetMachiningChain() Returns IMachiningChain GetMcCodeTransformerDictionary() public Dictionary GetMcCodeTransformerDictionary() Returns Dictionary GetTableBuckle() Gets the table buckle anchor point. public IGetAnchor GetTableBuckle() Returns IGetAnchor The table buckle anchor point. GetToolBuckle() Gets the tool buckle anchor point. public IGetAnchor GetToolBuckle() Returns IGetAnchor The tool buckle anchor point. GetTransformerA() Get transformer A. public DynamicRotation GetTransformerA() Returns DynamicRotation transformer A GetTransformerB() Get transformer B. public DynamicRotation GetTransformerB() Returns DynamicRotation transformer B GetTransformerC() Get transformer C. public DynamicRotation GetTransformerC() Returns DynamicRotation transformer C GetTransformerX() Get transformer X. public DynamicTranslation GetTransformerX() Returns DynamicTranslation transformer X GetTransformerY() Get transformer Y. public DynamicTranslation GetTransformerY() Returns DynamicTranslation transformer Y GetTransformerZ() Get transformer Z. public DynamicTranslation GetTransformerZ() Returns DynamicTranslation transformer Z GetXyzabcChain() Get IXyzabcChain. public IXyzabcChain GetXyzabcChain() Returns IXyzabcChain IXyzabcChain GetXyzabcMachineTool() public GeneralXyzabcMachineTool GetXyzabcMachineTool() Returns GeneralXyzabcMachineTool 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class GeneralXyzabcMachineTool Namespace Hi.NcMech.Xyzabc Assembly HiMech.dll General implementation of an XYZABC machine tool. public class GeneralXyzabcMachineTool : IXyzabcMachineTool, IDisplayee, IGetCollisionIndexPairs, IXyzabcChain, IGetXyzabcChain, IMachiningChain, IGetAsmb, IGetAnchor, IGetTopoIndex, IMakeXmlSource, IGetAnchorToSolidDictionary, IGetAnchoredDisplayeeList, IExpandToBox3d, INameNote Inheritance object GeneralXyzabcMachineTool Implements IXyzabcMachineTool IDisplayee IGetCollisionIndexPairs IXyzabcChain IGetXyzabcChain IMachiningChain IGetAsmb IGetAnchor IGetTopoIndex IMakeXmlSource IGetAnchorToSolidDictionary IGetAnchoredDisplayeeList IExpandToBox3d INameNote Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Extension Methods DispUtil.Display(IDisplayee, Bind, Mat4d) MachiningChainUtil.GetMcCodeTransformerDictionary(IMachiningChain) TopoUtil.Display(IGetAnchor, Bind, Dictionary) TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary) DuplicateUtil.TryDuplicate(TSelf, params object[]) InvokeUtil.SelfInvoke(TSrc, Action) InvokeUtil.SelfInvoke(TSrc, Func) XyzabcUtil.GenerateCollisionIndexPairs(IXyzabcChain) XyzabcUtil.GetMc(IXyzabcChain, out DVec3d) XyzabcUtil.GetMc(IXyzabcChain, out double, out double, out double, out double, out double, out double) XyzabcUtil.GetMcAbc_rad(IXyzabcChain, out Abc) XyzabcUtil.GetMcXyzabc(IXyzabcChain) XyzabcUtil.GetNp(IXyzabcChain) XyzabcUtil.GetTransformationMat4d(IXyzabcChain) XyzabcUtil.SetMc(IXyzabcChain, DVec3d) XyzabcUtil.SetMc(IXyzabcChain, Vec3d) XyzabcUtil.SetMc(IXyzabcChain, double, double, double) XyzabcUtil.SetMc(IXyzabcChain, double, double, double, double, double, double) XyzabcUtil.SetMcAbc_rad(IXyzabcChain, Vec3d) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors GeneralXyzabcMachineTool(IXyzabcChain) Initializes a new instance of the GeneralXyzabcMachineTool class. public GeneralXyzabcMachineTool(IXyzabcChain xyzabcChain) Parameters xyzabcChain IXyzabcChain XYZABC chain to use. GeneralXyzabcMachineTool(XElement, string, IProgress) Initializes a new instance of the GeneralXyzabcMachineTool class from XML. public GeneralXyzabcMachineTool(XElement src, string baseDirectory, IProgress progress) Parameters src XElement XML element source. baseDirectory string Base directory. progress IProgress Progress reporter for loading XyzabcChain and related children. Fields XName Name of XML element. public static string XName Field Value string Properties CollisionIndexPairs Collection of collision index pairs for collision detection. public HashSet CollisionIndexPairs { get; } Property Value HashSet EnableAutoGeneratingCollisionIndexPairsOnXmlLoaded Gets or sets whether to automatically generate collision index pairs when loaded from XML. public bool EnableAutoGeneratingCollisionIndexPairsOnXmlLoaded { get; set; } Property Value bool McCodes Gets the machine coordinate code sequence for decoding the MC array. public string[] McCodes { get; } Property Value string[] McTransformers Gets the machine coordinate transformers. public IDynamicRegular[] McTransformers { get; } Property Value IDynamicRegular[] Name Gets or sets the name of the object. public string Name { get; set; } Property Value string Note Gets or sets the descriptive note for the object. public string Note { get; set; } Property Value string TableAnchor Anchor to attach fixture or workpiece. The anchor is the same as IXyzabcChain.Hi.Numerical.Xyzabc.IXyzabcChain.GetTableBuckle. public Anchor TableAnchor { get; } Property Value Anchor ToolAnchor Anchor to attach tool. The anchor is the same as IXyzabcChain.Hi.Numerical.Xyzabc.IXyzabcChain.GetToolBuckle. public Anchor ToolAnchor { get; } Property Value Anchor XyzabcChain XYZABC chain for this machine tool. public IXyzabcChain XyzabcChain { get; } Property Value IXyzabcChain XyzabcChainFile File path for XYZABC chain. public string XyzabcChainFile { get; set; } Property Value string Methods Display(Bind) Display function called in DispEngine rendering loop. public void Display(Bind bind) Parameters bind Bind Bind with DispEngine. See Bind. ExpandToBox3d(Box3d) Expands the destination box. This function is usually used to compute the bounding box of elements. public void ExpandToBox3d(Box3d dst) Parameters dst Box3d Destination box GetAnchor() Get key anchor. (i.e. root anchor) public Anchor GetAnchor() Returns Anchor key anchor GetAnchorToSolidDictionary() Gets a dictionary that maps Anchor objects to their corresponding Solid objects. public Dictionary GetAnchorToSolidDictionary() Returns Dictionary A dictionary where keys are anchors and values are their associated solids. GetAnchoredDisplayeeList() Gets a list of anchored displayable objects. public List GetAnchoredDisplayeeList() Returns List A list of IAnchoredDisplayee objects GetAsmb() Gets the key asmb. public Asmb GetAsmb() Returns Asmb The key asmb. GetCollisionIndexPairs() Gets a collection of collision index pairs for collision detection. public IEnumerable GetCollisionIndexPairs() Returns IEnumerable A collection of CollisionIndexPair objects. GetMachiningChain() public IMachiningChain GetMachiningChain() Returns IMachiningChain GetMcCodeTransformerDictionary() public Dictionary GetMcCodeTransformerDictionary() Returns Dictionary GetTableBuckle() Gets the table buckle anchor point. public IGetAnchor GetTableBuckle() Returns IGetAnchor The table buckle anchor point. GetToolBuckle() Gets the tool buckle anchor point. public IGetAnchor GetToolBuckle() Returns IGetAnchor The tool buckle anchor point. GetTransformerA() Get transformer A. public DynamicRotation GetTransformerA() Returns DynamicRotation transformer A GetTransformerB() Get transformer B. public DynamicRotation GetTransformerB() Returns DynamicRotation transformer B GetTransformerC() Get transformer C. public DynamicRotation GetTransformerC() Returns DynamicRotation transformer C GetTransformerX() Get transformer X. public DynamicTranslation GetTransformerX() Returns DynamicTranslation transformer X GetTransformerY() Get transformer Y. public DynamicTranslation GetTransformerY() Returns DynamicTranslation transformer Y GetTransformerZ() Get transformer Z. public DynamicTranslation GetTransformerZ() Returns DynamicTranslation transformer Z GetXyzabcChain() Get IXyzabcChain. public IXyzabcChain GetXyzabcChain() Returns IXyzabcChain IXyzabcChain GetXyzabcMachineTool() public GeneralXyzabcMachineTool GetXyzabcMachineTool() Returns GeneralXyzabcMachineTool 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. Reg(XFactory) Registers this type's deserializer with the given XFactory and chains Reg(factory) on dependents. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html": { "href": "api/Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html", @@ -3439,11 +3569,6 @@ "title": "Class NcOptOption | HiAPI-C# 2025", "summary": "Class NcOptOption Namespace Hi.NcOpt Assembly HiMech.dll Represents the optimization options for NC operations. public class NcOptOption : IMakeXmlSource, IEquatable, IToXElement Inheritance object NcOptOption Implements IMakeXmlSource IEquatable IToXElement Inherited Members object.Equals(object, object) 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 NcOptOption() Ctor. public NcOptOption() NcOptOption(NcOptOption) Copy Ctor. public NcOptOption(NcOptOption src) Parameters src NcOptOption src NcOptOption(XElement) Initializes a new instance of the NcOptOption class from XML. public NcOptOption(XElement src) Parameters src XElement The XML element containing the option data. Properties CompensationMask Internal Use Only. Gets or sets the compensation mask for axis compensation. public int CompensationMask { get; set; } Property Value int EnableDepthCompensation Gets or sets whether depth compensation is enabled. public bool EnableDepthCompensation { get; set; } Property Value bool EnableDepthSplition Enables or disables depth splitting optimization. public bool EnableDepthSplition { get; set; } Property Value bool EnableForwardCompensation Gets or sets whether forward compensation is enabled. public bool EnableForwardCompensation { get; set; } Property Value bool EnableInterpolation Enables or disables interpolation. public bool EnableInterpolation { get; set; } Property Value bool EnableOpt Enables or disables the optimization process. public bool EnableOpt { get; set; } Property Value bool EnableOptFeedrate Enables or disables feedrate optimization. public bool EnableOptFeedrate { get; set; } Property Value bool EnableSideCompensation Gets or sets whether side compensation is enabled. public bool EnableSideCompensation { get; set; } Property Value bool ExtendedPostDistance_mm Gets or sets the extended post-distance in millimeters. public double ExtendedPostDistance_mm { get; set; } Property Value double ExtendedPreDistance_mm Gets or sets the extended pre-distance in millimeters. public double ExtendedPreDistance_mm { get; set; } Property Value double FeedrateAssignmentRatio The option takes effect if EnableInterpolation is true. If the feedrate changing exceeds this ratio, the Feedrate in the NC line will be updated. public double FeedrateAssignmentRatio { get; set; } Property Value double IsPreferFuncIndexDictionaryCalled Internal Use Only. public bool IsPreferFuncIndexDictionaryCalled { get; } Property Value bool MaxAcceleration_mmds2 Gets or sets the maximum acceleration in millimeters per second squared. The typical CNC lathe or machining center has an acceleration of 0.2g (2 m/sec2). High speed machines have accelerations up to 2g (20 m/sec2). An arbitrary value 10mm/s2 is chosen for initial value. Note: 600mm/min=10mm/s. public double MaxAcceleration_mmds2 { get; set; } Property Value double MaxFeedPerTooth_mm Gets or sets the maximum feed per tooth in millimeters. By the principle of conservation, if the value is different from the IFeedPerToothOptLimit.GetMaxFeedPerTooth_mm(), The smaller value will be applied in the optimization process. public double MaxFeedPerTooth_mm { get; set; } Property Value double MaxFeedrate_mmdmin Gets or sets the maximum feedrate in millimeters per minute. public double MaxFeedrate_mmdmin { get; set; } Property Value double MaxFeedrate_mmds Gets or sets the maximum feedrate in millimeters per second. public double MaxFeedrate_mmds { get; set; } Property Value double MaxJerk_mmds3 Gets or sets the maximum jerk in millimeters per second cubed. public double MaxJerk_mmds3 { get; set; } Property Value double MaxSpindlePowerSafetyFactor Gets or sets the safety factor for spindle power. public double MaxSpindlePowerSafetyFactor { get; set; } Property Value double MaxSpindlePowerUtilizationFactor Gets or sets the utilization factor for spindle power. It is the reciprocal of MaxSpindlePowerSafetyFactor. public double MaxSpindlePowerUtilizationFactor { get; set; } Property Value double MaxSpindleTorqueSafetyFactor Gets or sets the safety factor for spindle torque. public double MaxSpindleTorqueSafetyFactor { get; set; } Property Value double MaxSpindleTorqueUtilizationFactor Gets or sets the utilization factor for spindle torque. It is the reciprocal of MaxSpindleTorqueSafetyFactor. public double MaxSpindleTorqueUtilizationFactor { get; set; } Property Value double MinFeedPerTooth_mm Gets or sets the minimum feed per tooth in millimeters. By the principle of conservation, if the value is different from the IFeedPerToothOptLimit.GetMinFeedPerTooth_mm(), The larger value will be applied in the optimization process. public double MinFeedPerTooth_mm { get; set; } Property Value double MinFeedrate_mmdmin Gets or sets the minimum feedrate in millimeters per minute. public double MinFeedrate_mmdmin { get; set; } Property Value double MinFeedrate_mmds Gets or sets the minimum feedrate in millimeters per second. The principle of conversation is applied for feedrate setting (MinFeedrate_mmds and MaxFeedrate_mmds) and feed per tooth setting (MinFeedPerTooth_mm and MaxFeedPerTooth_mm). If feed per tooth setting is not in the range of feedrate setting, The feedrate setting takes priority. public double MinFeedrate_mmds { get; set; } Property Value double PreferedForce_N Gets or sets the preferred force in Newtons. public double PreferedForce_N { get; set; } Property Value double RapidFeed_mmdmin Gets or sets the rapid feed rate in millimeters per minute. public double RapidFeed_mmdmin { get; set; } Property Value double RapidFeed_mmds Gets or sets the rapid feed rate in millimeters per second. public double RapidFeed_mmds { get; set; } Property Value double ThermalYieldSafetyFactor Gets or sets the safety factor for cutter thermal yield. public double ThermalYieldSafetyFactor { get; set; } Property Value double ThermalYieldUtilizationFactor Gets or sets the safety bound for cutter thermal yield. It is the reciprocal of ThermalYieldSafetyFactor. public double ThermalYieldUtilizationFactor { get; set; } Property Value double XName Name for XML IO. public static string XName { get; } Property Value string YieldingSafetyFactor Gets or sets the safety factor for yielding. By the principle of conservation, if the value is different from the MillingCutterOptOption.YieldingSafetyFactor, The larger value will be applied in the optimization process. public double YieldingSafetyFactor { get; set; } Property Value double YieldingUtilizationFactor Gets or sets the utilization factor for yielding. It is the reciprocal of YieldingSafetyFactor. public double YieldingUtilizationFactor { get; set; } Property Value double Methods CallPreferFuncIndexDictionary() Calls and returns the prefer function index dictionary, initializing it if it is null. public Dictionary, double> CallPreferFuncIndexDictionary() Returns Dictionary, double> The prefer function index dictionary. Duplicate() Creates a new instance of NcOptOption by duplicating the current instance. public NcOptOption Duplicate() Returns NcOptOption A new NcOptOption instance with the same values as the current instance. Equals(NcOptOption) Indicates whether the current object is equal to another object of the same type. public bool Equals(NcOptOption other) Parameters other NcOptOption An object to compare with this object. Returns bool true if the current object is equal to the other parameter; otherwise, false. Equals(object) Determines whether the specified object is equal to the current object. public override bool Equals(object obj) Parameters obj object The object to compare with the current object. Returns bool true if the specified object is equal to the current object; otherwise, false. GetHashCode() Serves as the default hash function. public override int GetHashCode() Returns int A hash code for the current object. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToXElement() Get the XElement to represent the object. public XElement ToXElement() Returns XElement XElement to represent the object." }, - "api/Hi.NcOpt.NcOptProc.html": { - "href": "api/Hi.NcOpt.NcOptProc.html", - "title": "Class NcOptProc | HiAPI-C# 2025", - "summary": "Class NcOptProc Namespace Hi.NcOpt Assembly HiNc.dll Provides functionality for optimizing NC programs by modifying feed rates and tool paths. public class NcOptProc : IMakeXmlSource Inheritance object NcOptProc Implements 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 NcOptProc(SequentialBulkReader) Ctor. public NcOptProc(SequentialBulkReader millingStepLuggageReader) Parameters millingStepLuggageReader SequentialBulkReader NcOptProc(XElement, string, SequentialBulkReader) Ctor. public NcOptProc(XElement src, string baseDirectory, SequentialBulkReader millingStepLuggageReader) Parameters src XElement XML baseDirectory string Base directory path millingStepLuggageReader SequentialBulkReader Milling step luggage reader Properties CoreNum Parallel computation thread num. 0 is special number to use all cores. public static int CoreNum { get; set; } Property Value int EmbeddedLogMode Gets or sets the embedded log mode for NC optimization. public static NcOptimizationEmbeddedLogMode EmbeddedLogMode { get; set; } Property Value NcOptimizationEmbeddedLogMode EnableIndividualStepAdjustmentLog Enable create log file for building individual NcOptProc.StepAdjustment process. public static bool EnableIndividualStepAdjustmentLog { get; set; } Property Value bool XName Name for XML IO. 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. Optimize(ICuttingPara, MachiningSession, LinkedList, HardNcEnv, List, MachiningToolHouse, IProgress, CancellationToken, string, string) Optimizes NC lines based on cutting parameters and milling steps. public IEnumerable<(HardNcLine SrcNcLine, HardNcLine OptNcLine)> Optimize(ICuttingPara millingPara, MachiningSession machiningSession, LinkedList srcNcLines, HardNcEnv ncEnv, List machiningSteps, MachiningToolHouse millingToolHouse, IProgress progress, CancellationToken cancellationToken, string baseDirectory, string relFileTemplate) Parameters millingPara ICuttingPara The cutting parameters for optimization. machiningSession MachiningSession The current machining session. srcNcLines LinkedList The source NC lines to optimize. ncEnv HardNcEnv The NC environment settings. machiningSteps List The list of milling steps. millingToolHouse MachiningToolHouse The machining tool house. progress IProgress The message host for logging. cancellationToken CancellationToken Cancellation token to cancel the operation. baseDirectory string The base directory for file operations. relFileTemplate string The relative file template for output. Returns IEnumerable<(HardNcLine SrcNcLine, HardNcLine OptNcLine)> Enumerable of source and optimized NC line pairs. OptimizeToFiles(ICuttingPara, MachiningSession, LinkedList, HardNcEnv, MachiningToolHouse, ClStrip, string, IProgress, CancellationToken, string) Optimizes NC lines and writes the results to files. public void OptimizeToFiles(ICuttingPara millingPara, MachiningSession machiningSession, LinkedList ncLines, HardNcEnv ncEnv, MachiningToolHouse millingToolHouse, ClStrip clStrip, string baseDirectory, IProgress progress, CancellationToken cancellationToken, string relFileTemplate = \"Output/Opt-[NcName]\") Parameters millingPara ICuttingPara The cutting parameters for optimization machiningSession MachiningSession The current machining session ncLines LinkedList The NC lines to optimize ncEnv HardNcEnv The NC environment settings millingToolHouse MachiningToolHouse The machining tool house clStrip ClStrip The cutter location strip baseDirectory string The base directory for output files progress IProgress The message host for logging cancellationToken CancellationToken Cancellation token to cancel the operation relFileTemplate string The relative file template for output files Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" - }, "api/Hi.NcOpt.NcOptimizationEmbeddedLogMode.html": { "href": "api/Hi.NcOpt.NcOptimizationEmbeddedLogMode.html", "title": "Enum NcOptimizationEmbeddedLogMode | HiAPI-C# 2025", @@ -3457,7 +3582,12 @@ "api/Hi.NcOpt.html": { "href": "api/Hi.NcOpt.html", "title": "Namespace Hi.NcOpt | HiAPI-C# 2025", - "summary": "Namespace Hi.NcOpt Classes CuttingVelocityOptLimit Represents optimization limits for cutting velocity parameters. FixedFeedPerCycleOptLimit Represents fixed feed-per-cycle optimization limits. Provides implementation for feed-per-cycle optimization with fixed minimum and maximum values. FixedFeedPerToothOptLimit Represents fixed feed-per-tooth optimization limits. Provides implementation for feed-per-tooth optimization with fixed minimum and maximum values. MillingCutterOptOption Represents NC optimization option for milling cutters. NcOptOption Represents the optimization options for NC operations. NcOptProc Provides functionality for optimizing NC programs by modifying feed rates and tool paths. ShapeBasedCutterOptLimit Represents optimization limits based on cutter shape parameters. Interfaces ICutterOptLimitHost Interface for hosts that contain cutter optimization limits. Provides access to cutter optimization limit settings. ICutterOptOption Interface for cutter optimization limits. Combines feed-per-tooth optimization capabilities with duplication and XML serialization support. Inherits from IMakeXmlSource, IFeedPerToothOptLimit, and IDuplicate. ICuttingVelocityOptLimit Interface for cutting velocity optimization limits. Defines methods to get minimum and maximum cutting velocity values. Implements IMakeXmlSource for XML serialization and IDuplicate for object duplication. IFeedPerToothOptLimit Interface for feed-per-tooth optimization limits. Defines methods to get minimum and maximum feed per tooth values. Implements IMakeXmlSource for XML serialization and IDuplicate for object duplication. Enums NcOptimizationEmbeddedLogMode Embedded log mode for NC optimization." + "summary": "Namespace Hi.NcOpt Classes CuttingVelocityOptLimit Represents optimization limits for cutting velocity parameters. FixedFeedPerCycleOptLimit Represents fixed feed-per-cycle optimization limits. Provides implementation for feed-per-cycle optimization with fixed minimum and maximum values. FixedFeedPerToothOptLimit Represents fixed feed-per-tooth optimization limits. Provides implementation for feed-per-tooth optimization with fixed minimum and maximum values. MillingCutterOptOption Represents NC optimization option for milling cutters. NcOptOption Represents the optimization options for NC operations. ShapeBasedCutterOptLimit Represents optimization limits based on cutter shape parameters. Interfaces ICutterOptLimitHost Interface for hosts that contain cutter optimization limits. Provides access to cutter optimization limit settings. ICutterOptOption Interface for cutter optimization limits. Combines feed-per-tooth optimization capabilities with duplication and XML serialization support. Inherits from IMakeXmlSource, IFeedPerToothOptLimit, and IDuplicate. ICuttingVelocityOptLimit Interface for cutting velocity optimization limits. Defines methods to get minimum and maximum cutting velocity values. Implements IMakeXmlSource for XML serialization and IDuplicate for object duplication. IFeedPerToothOptLimit Interface for feed-per-tooth optimization limits. Defines methods to get minimum and maximum feed per tooth values. Implements IMakeXmlSource for XML serialization and IDuplicate for object duplication. Enums NcOptimizationEmbeddedLogMode Embedded log mode for NC optimization." + }, + "api/Hi.NcParsers.ControllerPresetWriter.html": { + "href": "api/Hi.NcParsers.ControllerPresetWriter.html", + "title": "Class ControllerPresetWriter | HiAPI-C# 2025", + "summary": "Class ControllerPresetWriter Namespace Hi.NcParsers Assembly HiMech.dll Writes the built-in brand controller presets out as standalone SoftNcRunner resource files. A controller resource file is one serialized SoftNcRunner — the whole pipeline (dependencies, segmenter, initializers, syntaxes, semantics) that decides how a brand's NC code is interpreted. The shipped copies live under Resource/Controller/ so the Object Management Load browser starts populated; they are regenerable snapshots, not the source of truth — the brand properties on SoftNcRunner are. Writing needs no XFactory registration. Reading a file back does: call Reg(XFactory) first, otherwise XFactory.GenListSkippingUnloadable drops every unregistered pipeline entry and hands back a silently hollow runner. public static class ControllerPresetWriter Inheritance object ControllerPresetWriter Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields FileExtension Canonical extension of a serialized SoftNcRunner — named after the controller it describes rather than the class that implements it. The Controller tree's Object Management menu filters on it, so a file written here is visible in its Load browser; the older .SoftNcRunner extension stays loadable there for assets already saved under it. public const string FileExtension = \".Controller\" Field Value string ResourceCategoryFolder Resource category folder the presets are shipped under, relative to the resource root (i.e. Resource/Controller). public const string ResourceCategoryFolder = \"Controller\" Field Value string Properties BrandNames Brand tokens CreateBrandPreset(string) understands, in the order WriteAllBrandPresetFiles(string) writes them. public static IReadOnlyList BrandNames { get; } Property Value IReadOnlyList Methods CreateBrandPreset(string) Gets a fresh brand preset runner, or null when brand is not one of BrandNames. public static SoftNcRunner CreateBrandPreset(string brand) Parameters brand string One of the CncBrandDependency brand tokens. Returns SoftNcRunner Remarks Each brand property builds a new instance per read, so the returned runner is safe to mutate before writing. GetBrandPresetFileName(string) Builds the file name a brand preset is shipped under, e.g. Fanuc.default.Controller — the ResourceDefaultMarker token declares the file system-owned, so the resource seeder may refresh it on version updates. The runner carries no name of its own, so the file name is the only identity a resource browser can show. public static string GetBrandPresetFileName(string brand) Parameters brand string One of the CncBrandDependency brand tokens. Returns string WriteAllBrandPresetFiles(string) Writes every brand preset in BrandNames into targetDirectory and returns the written file paths. public static IReadOnlyList WriteAllBrandPresetFiles(string targetDirectory) Parameters targetDirectory string Directory to write into, e.g. an absolute path ending in Resource/Controller. Returns IReadOnlyList WriteBrandPresetFile(string, string) Writes one brand preset into targetDirectory and returns the written file path. Missing directories are created. public static string WriteBrandPresetFile(string brand, string targetDirectory) Parameters brand string One of the CncBrandDependency brand tokens. targetDirectory string Directory to write into, e.g. an absolute path ending in Resource/Controller. Returns string Exceptions ArgumentException brand is not a known brand. ArgumentNullException targetDirectory is null or blank." }, "api/Hi.NcParsers.Dependencys.AxisType.html": { "href": "api/Hi.NcParsers.Dependencys.AxisType.html", @@ -3467,12 +3597,12 @@ "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 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class CncBrandDependency Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Explicit CNC controller brand identifier carried in PipelineNcDependencyList. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html": { "href": "api/Hi.NcParsers.Dependencys.ControllerParameterTableBase.html", "title": "Class ControllerParameterTableBase | HiAPI-C# 2025", - "summary": "Class ControllerParameterTableBase Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll 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. public abstract class ControllerParameterTableBase : IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, INcDependency, IMakeXmlSource Inheritance object ControllerParameterTableBase Implements IHomeMcConfig IMachineAxisConfig IRapidFeedrateConfig IStrokeLimitConfig INcDependency IMakeXmlSource Derived FanucParameterTable HeidenhainParameterTable SiemensMachineDataTable SyntecParameterTable 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 AxisNames Gets the configured axis names in order. public IEnumerable AxisNames { get; } Property Value IEnumerable AxisParams Per-axis float parameters. Outer key = parameter number, inner key = axis name. public Dictionary> AxisParams { get; set; } Property Value Dictionary> AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected abstract int AxisTypeParamId { get; } Property Value int IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected abstract string IdAttributeName { get; } Property Value string IntAxisParams Per-axis integer parameters. Outer key = parameter number, inner key = axis name. public Dictionary> IntAxisParams { get; set; } Property Value Dictionary> RapidRateParamId Parameter/MD/MP number for rapid traverse rate per axis. Null if not defined for this controller brand. protected virtual int? RapidRateParamId { get; } Property Value int? ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected abstract int ReferencePositionParamId { get; } Property Value int StrokeLimitNegParamId Parameter/MD/MP number for negative stroke limit per axis. Null if not defined for this controller brand. protected virtual int? StrokeLimitNegParamId { get; } Property Value int? StrokeLimitPosParamId Parameter/MD/MP number for positive stroke limit per axis. Null if not defined for this controller brand. protected virtual int? StrokeLimitPosParamId { get; } Property Value int? SystemParams System-wide parameters. Key = parameter number. public Dictionary SystemParams { get; set; } Property Value Dictionary Methods AxisParam(int) Returns the per-axis float bucket for paramId, creating it if absent. See AxisParams. public Dictionary AxisParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns Dictionary ConfigureRotaryAxis(string, double, double) Configures a rotary axis with home position and rapid rate. Sets axis type to Rotary, home position via SetHomePosition(string, double), and per-axis rapid rate (if RapidRateParamId is defined for this brand). Use RemoveAxis(string) to remove the axis entirely. public void ConfigureRotaryAxis(string axisName, double homePosition_deg = 0, double rapidRate_degdmin = 36000) Parameters axisName string Axis name (e.g., “A”, “B”, “C”). homePosition_deg double Home position in degrees (default 0). rapidRate_degdmin double Rapid traverse rate in deg/min (default 36000). GetHomePosition(string) Gets the home position for a specific axis. Returns null if the axis has no home position configured. public double? GetHomePosition(string axisName) Parameters axisName string Returns double? GetLinearAxisRapidRate_mmdmin(string) Gets rapid traverse feedrate for a linear axis in mm/min. Returns a default value if the axis is not configured. public double GetLinearAxisRapidRate_mmdmin(string axisName) Parameters axisName string Returns double GetNegativeLimit(string) Gets the negative stroke limit for a specific axis. Unit is mm for linear axes, deg for rotary axes. Returns null if not configured (no limit). public double? GetNegativeLimit(string axisName) Parameters axisName string Returns double? GetPositiveLimit(string) Gets the positive stroke limit for a specific axis. Unit is mm for linear axes, deg for rotary axes. Returns null if not configured (no limit). public double? GetPositiveLimit(string axisName) Parameters axisName string Returns double? GetRotaryAxisRapidRate_degdmin(string) Gets rapid traverse feedrate for a rotary axis in deg/min. Returns a default value if the axis is not configured. public double GetRotaryAxisRapidRate_degdmin(string axisName) Parameters axisName string Returns double IntAxisParam(int) Returns the per-axis integer bucket for paramId, creating it if absent. See IntAxisParams. public Dictionary IntAxisParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns Dictionary IsRotaryAxis(string) Returns true if the axis is rotary or spindle, false if linear. public bool IsRotaryAxis(string axisName) Parameters axisName string 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 abstract 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. ReadXml(XElement) Populates SystemParams, AxisParams, and IntAxisParams from src using the brand-specific IdAttributeName. protected void ReadXml(XElement src) Parameters src XElement XML element produced by WriteXml(string). RemoveAxis(string) Removes an axis from the configuration. public void RemoveAxis(string axisName) Parameters axisName string SetAxis(string, AxisType) Adds or updates an axis with the specified type. public void SetAxis(string axisName, AxisType type) Parameters axisName string type AxisType SetHomePosition(string, double) Sets the home position for a specific axis. public void SetHomePosition(string axisName, double value) Parameters axisName string value double SetLinearAxisRapidRate_mmdmin(string, double) Sets rapid traverse feedrate for a linear axis in mm/min. public void SetLinearAxisRapidRate_mmdmin(string axisName, double value) Parameters axisName string value double SetNegativeLimit(string, double) Sets the negative stroke limit for a specific axis. Unit is mm for linear axes, deg for rotary axes. public void SetNegativeLimit(string axisName, double value) Parameters axisName string value double SetPositiveLimit(string, double) Sets the positive stroke limit for a specific axis. Unit is mm for linear axes, deg for rotary axes. public void SetPositiveLimit(string axisName, double value) Parameters axisName string value double SetRotaryAxisRapidRate_degdmin(string, double) Sets rapid traverse feedrate for a rotary axis in deg/min. public void SetRotaryAxisRapidRate_degdmin(string axisName, double value) Parameters axisName string value double WriteXml(string) Serializes SystemParams, AxisParams, and IntAxisParams into a new XElement. Inverse of ReadXml(XElement). protected XElement WriteXml(string xName) Parameters xName string Element name for the produced XML element. Returns XElement" + "summary": "Class ControllerParameterTableBase Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll 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. public abstract class ControllerParameterTableBase : IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, ISpindleControlConfig, IMCodeDeclarationConfig, IToolChangeTriggerConfig, INcDependency, IMakeXmlSource Inheritance object ControllerParameterTableBase Implements IHomeMcConfig IMachineAxisConfig IRapidFeedrateConfig IStrokeLimitConfig ISpindleControlConfig IMCodeDeclarationConfig IToolChangeTriggerConfig INcDependency IMakeXmlSource Derived FanucParameterTable HeidenhainParameterTable SiemensMachineDataTable SyntecParameterTable 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 AxisNames Gets the configured axis names in order. public IEnumerable AxisNames { get; } Property Value IEnumerable AxisParams Per-axis float parameters. Outer key = parameter number, inner key = axis name. public Dictionary> AxisParams { get; set; } Property Value Dictionary> AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected abstract int AxisTypeParamId { get; } Property Value int EffectiveMCodeDeclarations The declaration view the consumers resolve against (IMCodeDeclarationConfig and TryGetMCodeEffects(string, out MCodeEffects)/TryResolveDirection(string, out SpindleDirection)). Defaults to MCodeDeclarations verbatim; a brand subclass overrides it to overlay declarations mandated by its own machine data (e.g. the Siemens MD22560 tool-change M function) without writing them into the stored dictionary — the stored declarations, XML, and clones stay derivation-free and the overlay re-derives on every read. protected virtual IReadOnlyDictionary EffectiveMCodeDeclarations { get; } Property Value IReadOnlyDictionary IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected abstract string IdAttributeName { get; } Property Value string IntAxisParams Per-axis integer parameters. Outer key = parameter number, inner key = axis name. public Dictionary> IntAxisParams { get; set; } Property Value Dictionary> MCodeDeclarations Declared machine M-codes and their effects — the single storage behind both IMCodeDeclarationConfig and the narrower ISpindleControlConfig face, so one code is never half-recognized by two separate maps. Key = M-code as parsed (e.g., “M13”), case-insensitive. Serialized as elements (spindle-direction-only entries keep the legacy element for older readers). public Dictionary MCodeDeclarations { get; set; } Property Value Dictionary RapidRateParamId Parameter/MD/MP number for rapid traverse rate per axis. Null if not defined for this controller brand. protected virtual int? RapidRateParamId { get; } Property Value int? ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected abstract int ReferencePositionParamId { get; } Property Value int SpindleDirectionCodes Spindle-direction view over MCodeDeclarations: every declared code that carries a SpindleDirection. See ISpindleControlConfig. public IReadOnlyDictionary SpindleDirectionCodes { get; } Property Value IReadOnlyDictionary StrokeLimitNegParamId Parameter/MD/MP number for negative stroke limit per axis. Null if not defined for this controller brand. protected virtual int? StrokeLimitNegParamId { get; } Property Value int? StrokeLimitPosParamId Parameter/MD/MP number for positive stroke limit per axis. Null if not defined for this controller brand. protected virtual int? StrokeLimitPosParamId { get; } Property Value int? SystemParams System-wide parameters. Key = parameter number. public Dictionary SystemParams { get; set; } Property Value Dictionary ToolWordTriggersChange When true, a T word performs the tool change by itself (turret/lathe semantics — Siemens MD22550 $MC_TOOL_CHANGE_MODE = 0). Default false: T only pre-selects; the trigger M-code changes the tool. See IToolChangeTriggerConfig. Virtual so a brand subclass can defer to its own machine data when that carries the same semantics (the Siemens table consults MD22550 when present). public virtual bool ToolWordTriggersChange { get; set; } Property Value bool Methods AxisParam(int) Returns the per-axis float bucket for paramId, creating it if absent. See AxisParams. public Dictionary AxisParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns Dictionary ConfigureRotaryAxis(string, double, double) Configures a rotary axis with home position and rapid rate. Sets axis type to Rotary, home position via SetHomePosition(string, double), and per-axis rapid rate (if RapidRateParamId is defined for this brand). Use RemoveAxis(string) to remove the axis entirely. public void ConfigureRotaryAxis(string axisName, double homePosition_deg = 0, double rapidRate_degdmin = 36000) Parameters axisName string Axis name (e.g., “A”, “B”, “C”). homePosition_deg double Home position in degrees (default 0). rapidRate_degdmin double Rapid traverse rate in deg/min (default 36000). ConfigureSpindleDirectionCode(string, SpindleDirection) Adds or updates a custom spindle direction M-code. public void ConfigureSpindleDirectionCode(string mCode, SpindleDirection direction) Parameters mCode string direction SpindleDirection CopyParamsTo(ControllerParameterTableBase) Deep-copies this table's SystemParams, AxisParams, IntAxisParams, MCodeDeclarations, and ToolWordTriggersChange into target, replacing the target's dictionaries with independent copies (outer and inner buckets; declaration entries cloned). Subclasses expose a typed DeepClone that constructs the concrete table and calls this. Used by the parameter-table proxies to clone their fixed machine-config seed into a host that has no table yet. protected void CopyParamsTo(ControllerParameterTableBase target) Parameters target ControllerParameterTableBase The table to overwrite with deep copies of this table's parameters. DeclareMCode(string, MCodeEffects) Adds or replaces the declaration for an M-code. The effects are copied on store, so the caller may reuse or further mutate its instance without coupling declarations to each other. public void DeclareMCode(string mCode, MCodeEffects effects) Parameters mCode string effects MCodeEffects DescribeAxisParam(int) Per-axis double counterpart of DescribeSystemParam(int). Covers the role ids the base class consumes (reference position, rapid rate, stroke limits); brand subclasses may override for their own vocabulary or extra numbers. public virtual string DescribeAxisParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns string DescribeIntAxisParam(int) Per-axis integer counterpart of DescribeSystemParam(int). Covers the axis-type id the base class consumes. public virtual string DescribeIntAxisParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns string DescribeSystemParam(int) Short usage label for a well-known system parameter id, or null when the id has no modeled meaning (a raw pass-through row). Brand subclasses extend this with their own well-known numbers; the native parameter UI shows the label next to the raw id so an operator can tell the modeled parameters from free extras. public virtual string DescribeSystemParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns string GetHomePosition(string) Gets the home position for a specific axis. Returns null if the axis has no home position configured. public double? GetHomePosition(string axisName) Parameters axisName string Returns double? GetLinearAxisRapidRate_mmdmin(string) Gets rapid traverse feedrate for a linear axis in mm/min. Returns a default value if the axis is not configured. public double GetLinearAxisRapidRate_mmdmin(string axisName) Parameters axisName string Returns double GetNegativeLimit(string) Gets the negative stroke limit for a specific axis. Unit is mm for linear axes, deg for rotary axes. Returns null if not configured (no limit). public double? GetNegativeLimit(string axisName) Parameters axisName string Returns double? GetPositiveLimit(string) Gets the positive stroke limit for a specific axis. Unit is mm for linear axes, deg for rotary axes. Returns null if not configured (no limit). public double? GetPositiveLimit(string axisName) Parameters axisName string Returns double? GetRotaryAxisRapidRate_degdmin(string) Gets rapid traverse feedrate for a rotary axis in deg/min. Returns a default value if the axis is not configured. public double GetRotaryAxisRapidRate_degdmin(string axisName) Parameters axisName string Returns double IntAxisParam(int) Returns the per-axis integer bucket for paramId, creating it if absent. See IntAxisParams. public Dictionary IntAxisParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns Dictionary IsRotaryAxis(string) Returns true if the axis is rotary or spindle, false if linear. public bool IsRotaryAxis(string axisName) Parameters axisName string 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 abstract 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. ReadXml(XElement) Populates SystemParams, AxisParams, and IntAxisParams from src using the brand-specific IdAttributeName. protected void ReadXml(XElement src) Parameters src XElement XML element produced by WriteXml(string). RemoveAxis(string) Removes an axis from the configuration. public void RemoveAxis(string axisName) Parameters axisName string RemoveMCodeDeclaration(string) Removes the declaration for an M-code. public void RemoveMCodeDeclaration(string mCode) Parameters mCode string RemoveSpindleDirectionCode(string) Removes a custom spindle direction M-code. public void RemoveSpindleDirectionCode(string mCode) Parameters mCode string SetAxis(string, AxisType) Adds or updates an axis with the specified type. public void SetAxis(string axisName, AxisType type) Parameters axisName string type AxisType SetHomePosition(string, double) Sets the home position for a specific axis. public void SetHomePosition(string axisName, double value) Parameters axisName string value double SetLinearAxisRapidRate_mmdmin(string, double) Sets rapid traverse feedrate for a linear axis in mm/min. public void SetLinearAxisRapidRate_mmdmin(string axisName, double value) Parameters axisName string value double SetNegativeLimit(string, double) Sets the negative stroke limit for a specific axis. Unit is mm for linear axes, deg for rotary axes. public void SetNegativeLimit(string axisName, double value) Parameters axisName string value double SetPositiveLimit(string, double) Sets the positive stroke limit for a specific axis. Unit is mm for linear axes, deg for rotary axes. public void SetPositiveLimit(string axisName, double value) Parameters axisName string value double SetRotaryAxisRapidRate_degdmin(string, double) Sets rapid traverse feedrate for a rotary axis in deg/min. public void SetRotaryAxisRapidRate_degdmin(string axisName, double value) Parameters axisName string value double TryGetMCodeEffects(string, out MCodeEffects) Resolves a parsed flag to its declared effects. Returns false for undeclared codes — ISO defaults are the consumers' concern, not this config's. The returned instance is the live declaration: treat it as read-only and reconfigure through DeclareMCode(string, MCodeEffects) instead of mutating it. public bool TryGetMCodeEffects(string mCode, out MCodeEffects effects) Parameters mCode string effects MCodeEffects Returns bool TryResolveDirection(string, out SpindleDirection) Resolves a parsed flag to a spindle direction. Returns true only for configured custom codes whose declaration carries no other effect — the caller consumes the whole flag for this one meaning, so a composite declaration (e.g. spindle + coolant) must instead be expanded by MCodeExpansionSyntax to keep its other halves alive. ISO M03/M04/M05 defaults are the caller's fallback, not this config's concern. public bool TryResolveDirection(string mCode, out SpindleDirection direction) Parameters mCode string direction SpindleDirection Returns bool WriteXml(string) Serializes SystemParams, AxisParams, and IntAxisParams into a new XElement. Inverse of ReadXml(XElement). protected XElement WriteXml(string xName) Parameters xName string Element name for the produced XML element. Returns XElement" }, "api/Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType.html": { "href": "api/Hi.NcParsers.Dependencys.Fanuc.CutterCompensationType.html", @@ -3482,12 +3612,17 @@ "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 the ISessionResettable sweep in 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; OnSessionReset() is the session-init hook the runner invokes through ISessionResettable, 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, ISessionResettable Inheritance object FanucGotoIterationDependency Implements INcDependency IMakeXmlSource ISessionResettable 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 OnSessionReset() 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. OnSessionReset() Clears CountByTarget; leaves MaxIterationsPerTarget untouched. public void OnSessionReset() Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "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 the ISessionResettable sweep in RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, 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; OnSessionReset() is the session-init hook the runner invokes through ISessionResettable, 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, ISessionResettable Inheritance object FanucGotoIterationDependency Implements INcDependency IMakeXmlSource ISessionResettable 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 OnSessionReset() 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. OnSessionReset() Clears CountByTarget; leaves MaxIterationsPerTarget untouched. public void OnSessionReset() Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html": { "href": "api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html", "title": "Class FanucParameterTable | HiAPI-C# 2025", - "summary": "Class FanucParameterTable Namespace Hi.NcParsers.Dependencys.Fanuc Assembly HiMech.dll Fanuc controller parameter table. Stores system parameters (single value) and axis parameters (per-axis value) following real Fanuc parameter numbering. public class FanucParameterTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, ICannedCycleConfig, IIsoCoordinateConfig, INcDependency, IMakeXmlSource, IVariableLookup Inheritance object ControllerParameterTableBase FanucParameterTable Implements IHomeMcConfig IMachineAxisConfig IRapidFeedrateConfig IStrokeLimitConfig ICannedCycleConfig IIsoCoordinateConfig INcDependency IMakeXmlSource IVariableLookup Inherited Members ControllerParameterTableBase.GetLinearAxisRapidRate_mmdmin(string) ControllerParameterTableBase.GetRotaryAxisRapidRate_degdmin(string) ControllerParameterTableBase.SetLinearAxisRapidRate_mmdmin(string, double) ControllerParameterTableBase.SetRotaryAxisRapidRate_degdmin(string, double) ControllerParameterTableBase.GetPositiveLimit(string) ControllerParameterTableBase.GetNegativeLimit(string) ControllerParameterTableBase.SetPositiveLimit(string, double) ControllerParameterTableBase.SetNegativeLimit(string, double) ControllerParameterTableBase.SystemParams ControllerParameterTableBase.AxisParams ControllerParameterTableBase.IntAxisParams ControllerParameterTableBase.AxisParam(int) ControllerParameterTableBase.IntAxisParam(int) ControllerParameterTableBase.GetHomePosition(string) ControllerParameterTableBase.SetHomePosition(string, double) ControllerParameterTableBase.AxisNames ControllerParameterTableBase.IsRotaryAxis(string) ControllerParameterTableBase.SetAxis(string, AxisType) ControllerParameterTableBase.RemoveAxis(string) ControllerParameterTableBase.ConfigureRotaryAxis(string, double, double) ControllerParameterTableBase.ReadXml(XElement) ControllerParameterTableBase.WriteXml(string) 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 FanucParameterTable() Initializes a new instance, seeding Param1020, Param3741, Param5003, and the ISO G54-G59/G54.1 P-table coordinate offsets with their default values. public FanucParameterTable() FanucParameterTable(XElement) Initializes a new instance by deserializing from src. public FanucParameterTable(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Fields CoordOffsetMax Inclusive upper bound of the G54-G59 work coordinate offset address range (#5328). public const int CoordOffsetMax = 5328 Field Value int CoordOffsetMin Inclusive lower bound of the G54-G59 work coordinate offset address range (#5221). public const int CoordOffsetMin = 5221 Field Value int ExtCoordOffsetMax Inclusive upper bound of the G54.1 P-table extended offset range (#7999). public const int ExtCoordOffsetMax = 7999 Field Value int ExtCoordOffsetMin Inclusive lower bound of the G54.1 P-table extended offset range (#7001). public const int ExtCoordOffsetMin = 7001 Field Value int ParamAxisType #1006: Axis type per axis. See AxisType. public const int ParamAxisType = 1006 Field Value int ParamControlledAxes #1020: Number of controlled axes. public const int ParamControlledAxes = 1020 Field Value int ParamCutterCompType #5003: Cutter compensation startup type. See CutterCompensationType. public const int ParamCutterCompType = 5003 Field Value int ParamG54OffsetBase #5221: Base address (X) of G54 work coordinate offset. G54.Y at +1 (#5222), G54.Z at +2 (#5223). G55..G59 follow at stride 20. See IsoCoordinateAddressMap. public const int ParamG54OffsetBase = 5221 Field Value int ParamG54p1P1OffsetBase #7001: Base address (X) of G54.1 P1 extended work coordinate offset. G54.1 P2..P48 follow at stride 20. See IsoCoordinateAddressMap. public const int ParamG54p1P1OffsetBase = 7001 Field Value int ParamMaxSpindleSpeed #3741: Maximum spindle speed (RPM). public const int ParamMaxSpindleSpeed = 3741 Field Value int ParamPeckRetraction #4002: G83 peck drilling retraction distance (mm). Fanuc stores this value in mm directly in the system parameter. public const int ParamPeckRetraction = 4002 Field Value int ParamRapidRate #1420: Rapid traverse rate per axis (mm/min or deg/min). public const int ParamRapidRate = 1420 Field Value int ParamReferencePosition #1240: G28 first reference position per axis. public const int ParamReferencePosition = 1240 Field Value int ParamStrokeLimitNeg #1320: Negative stroke limit per axis (mm or deg). public const int ParamStrokeLimitNeg = 1320 Field Value int ParamStrokeLimitPos #1300: Positive stroke limit per axis (mm or deg). public const int ParamStrokeLimitPos = 1300 Field Value int Properties AxisParam1006 #1006: Axis type per axis. See AxisType. See AxisNames. See IsRotaryAxis(string). See SetAxis(string, AxisType). public Dictionary AxisParam1006 { get; set; } Property Value Dictionary AxisParam1240 #1240: G28 first reference position per axis. See IHomeMcConfig. See GetHomePosition(string). See SetHomePosition(string, double). public Dictionary AxisParam1240 { get; set; } Property Value Dictionary AxisParam1420 #1420: Rapid traverse rate per axis (mm/min or deg/min). See IRapidFeedrateConfig. public Dictionary AxisParam1420 { get; set; } Property Value Dictionary AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected override int AxisTypeParamId { get; } Property Value int ControlledAxisCount Number of controlled axes. Delegates to Param1020. public int ControlledAxisCount { get; set; } Property Value int CoordinateIds Enumerates the G-code coordinate ids that this provider currently has data for. public IEnumerable CoordinateIds { get; } Property Value IEnumerable CutterCompType Cutter compensation startup type. Delegates to Param5003. public CutterCompensationType CutterCompType { get; set; } Property Value CutterCompensationType Default3Axis Default 3-axis Fanuc milling machine. public static FanucParameterTable Default3Axis { get; } Property Value FanucParameterTable IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected override string IdAttributeName { get; } Property Value string MaxSpindleSpeed_rpm Maximum spindle speed in RPM. Delegates to Param3741. public double MaxSpindleSpeed_rpm { get; set; } Property Value double Param1020 #1020: Number of controlled axes. See ControlledAxisCount. public int Param1020 { get; set; } Property Value int Param3741 #3741: Maximum spindle speed (RPM). See MaxSpindleSpeed_rpm. public double Param3741 { get; set; } Property Value double Param5003 #5003: Cutter compensation startup type. See CutterCompType. public CutterCompensationType Param5003 { get; set; } Property Value CutterCompensationType PeckRetractionDistance_mm G83 peck drilling clearance distance above the previous stroke bottom before re-entering at feed (mm). public double PeckRetractionDistance_mm { get; } Property Value double RapidRateParamId Parameter/MD/MP number for rapid traverse rate per axis. Null if not defined for this controller brand. protected override int? RapidRateParamId { get; } Property Value int? ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected override int ReferencePositionParamId { get; } Property Value int StrokeLimitNegParamId Parameter/MD/MP number for negative stroke limit per axis. Null if not defined for this controller brand. protected override int? StrokeLimitNegParamId { get; } Property Value int? StrokeLimitPosParamId Parameter/MD/MP number for positive stroke limit per axis. Null if not defined for this controller brand. protected override int? StrokeLimitPosParamId { get; } Property Value int? XName XML element name used to register this dependency with XFactory. 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 Fanuc system-variable reads to SystemParams: #5221-#5328 (G54-G59 work coordinate offsets) and #7001-#7999 (G54.1 P1-P48 extended offsets) are returned directly by parameter address. Other ranges return null so the evaluator's lookup chain can fall through. GetCoordinateOffset(string) Gets the offset for the given G-code coordinate id. Returns null when no offset is configured for that id by this provider (callers iterate the next provider, or fall back to Zero). public Vec3d GetCoordinateOffset(string coordId) Parameters coordId string Returns Vec3d MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public override 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetCoordinateOffset(string, Vec3d) Sets the offset for the given G-code coordinate id. public void SetCoordinateOffset(string coordId, Vec3d offset) Parameters coordId string offset Vec3d" + "summary": "Class FanucParameterTable Namespace Hi.NcParsers.Dependencys.Fanuc Assembly HiMech.dll Fanuc controller parameter table. Stores system parameters (single value) and axis parameters (per-axis value) following real Fanuc parameter numbering. public class FanucParameterTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, ISpindleControlConfig, IMCodeDeclarationConfig, IToolChangeTriggerConfig, ICannedCycleConfig, IIsoCoordinateConfig, INcDependency, IMakeXmlSource, IVariableLookup Inheritance object ControllerParameterTableBase FanucParameterTable Implements IHomeMcConfig IMachineAxisConfig IRapidFeedrateConfig IStrokeLimitConfig ISpindleControlConfig IMCodeDeclarationConfig IToolChangeTriggerConfig ICannedCycleConfig IIsoCoordinateConfig INcDependency IMakeXmlSource IVariableLookup Inherited Members ControllerParameterTableBase.GetLinearAxisRapidRate_mmdmin(string) ControllerParameterTableBase.GetRotaryAxisRapidRate_degdmin(string) ControllerParameterTableBase.SetLinearAxisRapidRate_mmdmin(string, double) ControllerParameterTableBase.SetRotaryAxisRapidRate_degdmin(string, double) ControllerParameterTableBase.GetPositiveLimit(string) ControllerParameterTableBase.GetNegativeLimit(string) ControllerParameterTableBase.SetPositiveLimit(string, double) ControllerParameterTableBase.SetNegativeLimit(string, double) ControllerParameterTableBase.DescribeIntAxisParam(int) ControllerParameterTableBase.SystemParams ControllerParameterTableBase.AxisParams ControllerParameterTableBase.IntAxisParams ControllerParameterTableBase.AxisParam(int) ControllerParameterTableBase.IntAxisParam(int) ControllerParameterTableBase.GetHomePosition(string) ControllerParameterTableBase.SetHomePosition(string, double) ControllerParameterTableBase.AxisNames ControllerParameterTableBase.IsRotaryAxis(string) ControllerParameterTableBase.SetAxis(string, AxisType) ControllerParameterTableBase.RemoveAxis(string) ControllerParameterTableBase.ConfigureRotaryAxis(string, double, double) ControllerParameterTableBase.MCodeDeclarations ControllerParameterTableBase.EffectiveMCodeDeclarations ControllerParameterTableBase.TryGetMCodeEffects(string, out MCodeEffects) ControllerParameterTableBase.DeclareMCode(string, MCodeEffects) ControllerParameterTableBase.RemoveMCodeDeclaration(string) ControllerParameterTableBase.ToolWordTriggersChange ControllerParameterTableBase.SpindleDirectionCodes ControllerParameterTableBase.TryResolveDirection(string, out SpindleDirection) ControllerParameterTableBase.ConfigureSpindleDirectionCode(string, SpindleDirection) ControllerParameterTableBase.RemoveSpindleDirectionCode(string) ControllerParameterTableBase.ReadXml(XElement) ControllerParameterTableBase.WriteXml(string) ControllerParameterTableBase.CopyParamsTo(ControllerParameterTableBase) 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 FanucParameterTable() Initializes a new instance, seeding Param1020, Param3741, Param5003, and the ISO G54-G59/G54.1 P-table coordinate offsets with their default values. public FanucParameterTable() FanucParameterTable(XElement) Initializes a new instance by deserializing from src. public FanucParameterTable(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Fields CoordOffsetMax Inclusive upper bound of the G54-G59 work coordinate offset address range (#5328). public const int CoordOffsetMax = 5328 Field Value int CoordOffsetMin Inclusive lower bound of the G54-G59 work coordinate offset address range (#5221). public const int CoordOffsetMin = 5221 Field Value int ExtCoordOffsetMax Inclusive upper bound of the G54.1 P-table extended offset range (#7999). public const int ExtCoordOffsetMax = 7999 Field Value int ExtCoordOffsetMin Inclusive lower bound of the G54.1 P-table extended offset range (#7001). public const int ExtCoordOffsetMin = 7001 Field Value int ParamAxisType #1006: Axis type per axis. See AxisType. public const int ParamAxisType = 1006 Field Value int ParamControlledAxes #1020: Number of controlled axes. public const int ParamControlledAxes = 1020 Field Value int ParamCutterCompType #5003: Cutter compensation startup type. See CutterCompensationType. public const int ParamCutterCompType = 5003 Field Value int ParamG54OffsetBase #5221: Base address (X) of G54 work coordinate offset. G54.Y at +1 (#5222), G54.Z at +2 (#5223). G55..G59 follow at stride 20. See IsoCoordinateAddressMap. public const int ParamG54OffsetBase = 5221 Field Value int ParamG54p1P1OffsetBase #7001: Base address (X) of G54.1 P1 extended work coordinate offset. G54.1 P2..P48 follow at stride 20. See IsoCoordinateAddressMap. public const int ParamG54p1P1OffsetBase = 7001 Field Value int ParamMaxSpindleSpeed #3741: Maximum spindle speed (RPM). public const int ParamMaxSpindleSpeed = 3741 Field Value int ParamPeckRetraction #4002: G83 peck drilling retraction distance (mm). Fanuc stores this value in mm directly in the system parameter. public const int ParamPeckRetraction = 4002 Field Value int ParamRapidRate #1420: Rapid traverse rate per axis (mm/min or deg/min). public const int ParamRapidRate = 1420 Field Value int ParamReferencePosition #1240: G28 first reference position per axis. public const int ParamReferencePosition = 1240 Field Value int ParamStrokeLimitNeg #1320: Negative stroke limit per axis (mm or deg). public const int ParamStrokeLimitNeg = 1320 Field Value int ParamStrokeLimitPos #1300: Positive stroke limit per axis (mm or deg). public const int ParamStrokeLimitPos = 1300 Field Value int Properties AxisParam1006 #1006: Axis type per axis. See AxisType. See AxisNames. See IsRotaryAxis(string). See SetAxis(string, AxisType). public Dictionary AxisParam1006 { get; set; } Property Value Dictionary AxisParam1240 #1240: G28 first reference position per axis. See IHomeMcConfig. See GetHomePosition(string). See SetHomePosition(string, double). public Dictionary AxisParam1240 { get; set; } Property Value Dictionary AxisParam1420 #1420: Rapid traverse rate per axis (mm/min or deg/min). See IRapidFeedrateConfig. public Dictionary AxisParam1420 { get; set; } Property Value Dictionary AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected override int AxisTypeParamId { get; } Property Value int ControlledAxisCount Number of controlled axes. Delegates to Param1020. public int ControlledAxisCount { get; set; } Property Value int CoordinateIds Enumerates the G-code coordinate ids that this provider currently has data for. public IEnumerable CoordinateIds { get; } Property Value IEnumerable CutterCompType Cutter compensation startup type. Delegates to Param5003. public CutterCompensationType CutterCompType { get; set; } Property Value CutterCompensationType Default3Axis Default 3-axis Fanuc milling machine. public static FanucParameterTable Default3Axis { get; } Property Value FanucParameterTable IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected override string IdAttributeName { get; } Property Value string MaxSpindleSpeed_rpm Maximum spindle speed in RPM. Delegates to Param3741. public double MaxSpindleSpeed_rpm { get; set; } Property Value double Param1020 #1020: Number of controlled axes. See ControlledAxisCount. public int Param1020 { get; set; } Property Value int Param3741 #3741: Maximum spindle speed (RPM). See MaxSpindleSpeed_rpm. public double Param3741 { get; set; } Property Value double Param5003 #5003: Cutter compensation startup type. See CutterCompType. public CutterCompensationType Param5003 { get; set; } Property Value CutterCompensationType PeckRetractionDistance_mm G83 peck drilling clearance distance above the previous stroke bottom before re-entering at feed (mm). public double PeckRetractionDistance_mm { get; } Property Value double RapidRateParamId Parameter/MD/MP number for rapid traverse rate per axis. Null if not defined for this controller brand. protected override int? RapidRateParamId { get; } Property Value int? ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected override int ReferencePositionParamId { get; } Property Value int StrokeLimitNegParamId Parameter/MD/MP number for negative stroke limit per axis. Null if not defined for this controller brand. protected override int? StrokeLimitNegParamId { get; } Property Value int? StrokeLimitPosParamId Parameter/MD/MP number for positive stroke limit per axis. Null if not defined for this controller brand. protected override int? StrokeLimitPosParamId { get; } Property Value int? XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods DeepClone() Returns an independent deep copy of this table (all three parameter dictionaries cloned). Used by FanucParameterTableProxy to clone its fixed machine-config seed into a host that has no table yet. public FanucParameterTable DeepClone() Returns FanucParameterTable DescribeAxisParam(int) Per-axis double counterpart of DescribeSystemParam(int). Covers the role ids the base class consumes (reference position, rapid rate, stroke limits); brand subclasses may override for their own vocabulary or extra numbers. public override string DescribeAxisParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns string DescribeSystemParam(int) Short usage label for a well-known system parameter id, or null when the id has no modeled meaning (a raw pass-through row). Brand subclasses extend this with their own well-known numbers; the native parameter UI shows the label next to the raw id so an operator can tell the modeled parameters from free extras. public override string DescribeSystemParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns string 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 Fanuc system-variable reads to SystemParams: #5221-#5328 (G54-G59 work coordinate offsets) and #7001-#7999 (G54.1 P1-P48 extended offsets) are returned directly by parameter address. Other ranges return null so the evaluator's lookup chain can fall through. GetCoordinateOffset(string) Gets the offset for the given G-code coordinate id. Returns null when no offset is configured for that id by this provider (callers iterate the next provider, or fall back to Zero). public Vec3d GetCoordinateOffset(string coordId) Parameters coordId string Returns Vec3d MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public override 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetCoordinateOffset(string, Vec3d) Sets the offset for the given G-code coordinate id. public void SetCoordinateOffset(string coordId, Vec3d offset) Parameters coordId string offset Vec3d" + }, + "api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTableProxy.html": { + "href": "api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTableProxy.html", + "title": "Class FanucParameterTableProxy | HiAPI-C# 2025", + "summary": "Class FanucParameterTableProxy Namespace Hi.NcParsers.Dependencys.Fanuc Assembly HiMech.dll Get-or-create INcDependencyProxy for FanucParameterTable (the Fanuc / Mazak family parameter table): a placeholder in the shared PipelineNcDependencyList that resolves the host project's own parameter table. Unlike the pure per-case proxies, the Fanuc-family parameter table mixes machine config (axis types / reference positions / rapid / stroke) with per-case work-coordinate offsets (#5221+ / #7001+), so the proxy carries a fixed machine-config Seed that is serialized into the shared runner file. On wire, the host receives a deep clone of the seed only when it has no FanucParameterTable yet; a loaded project's own full table wins. The resolved host table holds everything (machine config + per-case coordinates) and is fully serialized on the project. The proxy deliberately does not implement the machine-config interfaces (IMachineAxisConfig etc.) — every machine-config consumer must go through GetEffectiveNcDependencyList() so it sees the resolved host table, never this placeholder. public sealed class FanucParameterTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource Inheritance object FanucParameterTableProxy Implements INcDependencyProxy INcDependency 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 FanucParameterTableProxy(FanucParameterTable) Creates a proxy carrying seed as its machine-config seed, defaulting to Default3Axis. public FanucParameterTableProxy(FanucParameterTable seed = null) Parameters seed FanucParameterTable The machine-config seed cloned into a fresh host. Properties Seed The fixed machine-config seed deep-cloned into a host that has no FanucParameterTable yet. Carried on the shared runner and serialized into the runner file — never the per-case instance, which lives on the host (see GetNcDependency()). public FanucParameterTable Seed { get; } Property Value FanucParameterTable XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetNcDependency() Takes the host's FanucParameterTable (created during InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired. public INcDependency GetNcDependency() Returns INcDependency InitNcDependencyHost(INcDependencyListHost) Wires the host and materializes the host FanucParameterTable: when the host list has none, a deep clone of Seed is installed so machine config + per-case coordinates exist and are editable before any run. GetNcDependency() is then a pure take. Idempotent — an existing host table (a loaded project's) is left untouched. public void InitNcDependencyHost(INcDependencyListHost host) Parameters host INcDependencyListHost MakeXmlSource(string, string, bool) Serializes only the machine-config Seed — the wired host and the resolved host table are runtime-only and not persisted in the shared runner. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Rehydrates the carried Seed from the nested FanucParameterTable element, falling back to Default3Axis when absent. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html": { "href": "api/Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html", @@ -3497,7 +3632,7 @@ "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 (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 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "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 RuntimeVariableLookups, not on PipelineNcDependencyList — 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcParsers.Dependencys.Fanuc.FanucWhileDoIterationDependency.html": { "href": "api/Hi.NcParsers.Dependencys.Fanuc.FanucWhileDoIterationDependency.html", @@ -3509,15 +3644,20 @@ "title": "Class RetainedCommonVariableTable | HiAPI-C# 2025", "summary": "Class RetainedCommonVariableTable Namespace Hi.NcParsers.Dependencys.Fanuc Assembly HiMech.dll 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. public class RetainedCommonVariableTable : INcDependency, IMakeXmlSource, IVariableLookup Inheritance object RetainedCommonVariableTable 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 RetainedCommonVariableTable() Empty table. public RetainedCommonVariableTable() RetainedCommonVariableTable(XElement) Loads from XML produced by MakeXmlSource(string, string, bool). public RetainedCommonVariableTable(XElement src) Parameters src XElement Fields RetainedCommonMax Inclusive upper bound of the retained common range (#999). public const int RetainedCommonMax = 999 Field Value int RetainedCommonMin Inclusive lower bound of the retained common range (#500). public const int RetainedCommonMin = 500 Field Value int Properties Variables Backing store. Key = variable number (e.g. 500). Value null = vacant. A missing key is also treated as vacant. Keys are constrained to RetainedCommonMin..RetainedCommonMax; out-of-range writes are silently ignored. public Dictionary Variables { get; set; } Property Value Dictionary XName XML element name. 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 #500-#999 reads to GetVariable(int); other keys return null so the evaluator's lookup chain falls through. GetVariable(int) Reads a retained common variable. Returns null for vacant (either the entry is absent or stored as null). public double? GetVariable(int id) Parameters id int Variable number in RetainedCommonMin..RetainedCommonMax. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetVariable(int, double?) Writes a retained common variable. Pass null to set vacant. Ignores ids outside RetainedCommonMin..RetainedCommonMax. public void SetVariable(int id, double? value) Parameters id int Variable number. value double? New value, or null for vacant." }, + "api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTableProxy.html": { + "href": "api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTableProxy.html", + "title": "Class RetainedCommonVariableTableProxy | HiAPI-C# 2025", + "summary": "Class RetainedCommonVariableTableProxy Namespace Hi.NcParsers.Dependencys.Fanuc Assembly HiMech.dll Get-or-create INcDependencyProxy for RetainedCommonVariableTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own per-case retained common variables (#500–#999). public sealed class RetainedCommonVariableTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource Inheritance object RetainedCommonVariableTableProxy Implements INcDependencyProxy INcDependency 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) Properties XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetNcDependency() Takes the host's RetainedCommonVariableTable (created during InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired. public INcDependency GetNcDependency() Returns INcDependency InitNcDependencyHost(INcDependencyListHost) Wires the host and materializes the per-case RetainedCommonVariableTable: when the host list has none, one is created and installed so it exists and is editable before any run. GetNcDependency() is then a pure take. Idempotent — an existing table is left untouched. public void InitNcDependencyHost(INcDependencyListHost host) Parameters host INcDependencyListHost MakeXmlSource(string, string, bool) Runtime-only proxy — the wired host and the resolved table are not persisted in the shared runner; serialization writes only the empty element. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + }, "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 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 the ISessionResettable sweep in 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; OnSessionReset() is the session-init hook the runner invokes through ISessionResettable, 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 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. FanucWhileDoIterationDependency Watchdog for Fanuc Custom Macro B WHILE/END m bounded loops. Sibling to FanucGotoIterationDependency with the same “soft-cap + runtime counter + session-init ISessionResettable” shape, but kept as a separate dep (rather than sharing the GOTO bucket) so loop and jump iteration limits can be tuned independently and so diagnostic codes do not cross. The counter key is (FileName, LoopId) where FileName is the source-level file path of the WHILE/END pair (the relative path form carried on FilePath). Source-level keying means multiple inline invocations of the same subprogram pool their counts (same source-code loop), while two different files each with their own WHILE DO 1 stay isolated. The consuming syntax (FanucWhileDoSyntax) increments the counter at the END m reverse-jump step — not on the WHILE entry — so a loop that exits on first WHILE evaluation (condition false from the outset) consumes zero iterations. Above MaxIterationsPerLoopId, the END m block emits a warning and suppresses the redirect; subsequent flow falls through past END. Default MaxIterationsPerLoopId is 10000 — higher than the GOTO equivalent (1000) because WHILE/END is the legitimate iteration primitive that NcOpt-generated programs (drill grids, adaptive sweeps) depend on, and 1000 is too tight for those. 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 the ISessionResettable sweep in RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, 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; OnSessionReset() is the session-init hook the runner invokes through ISessionResettable, 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. FanucParameterTableProxy Get-or-create INcDependencyProxy for FanucParameterTable (the Fanuc / Mazak family parameter table): a placeholder in the shared PipelineNcDependencyList that resolves the host project's own parameter table. Unlike the pure per-case proxies, the Fanuc-family parameter table mixes machine config (axis types / reference positions / rapid / stroke) with per-case work-coordinate offsets (#5221+ / #7001+), so the proxy carries a fixed machine-config Seed that is serialized into the shared runner file. On wire, the host receives a deep clone of the seed only when it has no FanucParameterTable yet; a loaded project's own full table wins. The resolved host table holds everything (machine config + per-case coordinates) and is fully serialized on the project. The proxy deliberately does not implement the machine-config interfaces (IMachineAxisConfig etc.) — every machine-config consumer must go through GetEffectiveNcDependencyList() so it sees the resolved host table, never this placeholder. 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 RuntimeVariableLookups, not on PipelineNcDependencyList — 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. FanucWhileDoIterationDependency Watchdog for Fanuc Custom Macro B WHILE/END m bounded loops. Sibling to FanucGotoIterationDependency with the same “soft-cap + runtime counter + session-init ISessionResettable” shape, but kept as a separate dep (rather than sharing the GOTO bucket) so loop and jump iteration limits can be tuned independently and so diagnostic codes do not cross. The counter key is (FileName, LoopId) where FileName is the source-level file path of the WHILE/END pair (the relative path form carried on FilePath). Source-level keying means multiple inline invocations of the same subprogram pool their counts (same source-code loop), while two different files each with their own WHILE DO 1 stay isolated. The consuming syntax (FanucWhileDoSyntax) increments the counter at the END m reverse-jump step — not on the WHILE entry — so a loop that exits on first WHILE evaluation (condition false from the outset) consumes zero iterations. Above MaxIterationsPerLoopId, the END m block emits a warning and suppresses the redirect; subsequent flow falls through past END. Default MaxIterationsPerLoopId is 10000 — higher than the GOTO equivalent (1000) because WHILE/END is the legitimate iteration primitive that NcOpt-generated programs (drill grids, adaptive sweeps) depend on, and 1000 is too tight for those. 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. RetainedCommonVariableTableProxy Get-or-create INcDependencyProxy for RetainedCommonVariableTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own per-case retained common variables (#500–#999). Enums CutterCompensationType Fanuc #5003: Cutter compensation startup/cancellation type." }, "api/Hi.NcParsers.Dependencys.Generic.FallbackConfig.html": { "href": "api/Hi.NcParsers.Dependencys.Generic.FallbackConfig.html", "title": "Class FallbackConfig | HiAPI-C# 2025", - "summary": "Class FallbackConfig Namespace Hi.NcParsers.Dependencys.Generic Assembly HiMech.dll HiNC-specific fallback dependency that provides default values for all optional configuration interfaces. Should be placed as the last element in NcDependencyList so that brand-specific parameter tables (which appear earlier) take priority via OfType().FirstOrDefault(). When a brand table (e.g., FanucParameterTable) implements the same interface, its values are used instead. This class serves as a safety net for brands that do not define certain parameters (e.g., Siemens/Heidenhain have no system parameter for G83 peck retraction — it is per-call). public class FallbackConfig : ICannedCycleConfig, INcDependency, IMakeXmlSource Inheritance object FallbackConfig Implements ICannedCycleConfig 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 FallbackConfig() Initializes a new instance with default settings (PeckRetractionDistance_mm = 5.0). public FallbackConfig() FallbackConfig(XElement) Initializes a new instance by deserializing from src. public FallbackConfig(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Properties PeckRetractionDistance_mm G83 peck drilling clearance distance above the previous stroke bottom before re-entering at feed (mm). public double PeckRetractionDistance_mm { get; set; } Property Value double 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class FallbackConfig Namespace Hi.NcParsers.Dependencys.Generic Assembly HiMech.dll HiNC-specific fallback dependency that provides default values for all optional configuration interfaces. Should be placed as the last element in PipelineNcDependencyList so that brand-specific parameter tables (which appear earlier) take priority via OfType().FirstOrDefault(). When a brand table (e.g., FanucParameterTable) implements the same interface, its values are used instead. This class serves as a safety net for brands that do not define certain parameters (e.g., Siemens/Heidenhain have no system parameter for G83 peck retraction — it is per-call). public class FallbackConfig : ICannedCycleConfig, INcDependency, IMakeXmlSource Inheritance object FallbackConfig Implements ICannedCycleConfig 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 FallbackConfig() Initializes a new instance with default settings (PeckRetractionDistance_mm = 5.0). public FallbackConfig() FallbackConfig(XElement) Initializes a new instance by deserializing from src. public FallbackConfig(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Properties PeckRetractionDistance_mm G83 peck drilling clearance distance above the previous stroke bottom before re-entering at feed (mm). public double PeckRetractionDistance_mm { get; set; } Property Value double 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcParsers.Dependencys.Generic.GenericBlockSkipConfig.html": { "href": "api/Hi.NcParsers.Dependencys.Generic.GenericBlockSkipConfig.html", @@ -3529,6 +3669,16 @@ "title": "Class IsoCoordinateTable | HiAPI-C# 2025", "summary": "Class IsoCoordinateTable Namespace Hi.NcParsers.Dependencys.Generic Assembly HiMech.dll Coordinate table for NC controller. The dictionary key is a G-code coordinate name (e.g. “G54”, “G59.2”); the dictionary value is machine coordinate offset. Brand-agnostic standalone implementation of IIsoCoordinateConfig. Brand parameter tables (Fanuc, Syntec, Siemens, Heidenhain) provide hardware-faithful alternatives that map to real controller parameters. public class IsoCoordinateTable : Dictionary, IDictionary, ICollection>, IReadOnlyDictionary, IReadOnlyCollection>, IEnumerable>, IDictionary, ICollection, IEnumerable, IDeserializationCallback, ISerializable, IIsoCoordinateConfig, INcDependency, IMakeXmlSource Inheritance object Dictionary IsoCoordinateTable Implements IDictionary ICollection> IReadOnlyDictionary IReadOnlyCollection> IEnumerable> IDictionary ICollection IEnumerable IDeserializationCallback ISerializable IIsoCoordinateConfig INcDependency IMakeXmlSource Inherited Members Dictionary.Add(string, Vec3d) Dictionary.Clear() Dictionary.ContainsKey(string) Dictionary.ContainsValue(Vec3d) Dictionary.EnsureCapacity(int) Dictionary.GetAlternateLookup() Dictionary.GetEnumerator() Dictionary.OnDeserialization(object) Dictionary.Remove(string) Dictionary.Remove(string, out Vec3d) Dictionary.TrimExcess() Dictionary.TrimExcess(int) Dictionary.TryAdd(string, Vec3d) Dictionary.TryGetAlternateLookup(out Dictionary.AlternateLookup) Dictionary.TryGetValue(string, out Vec3d) Dictionary.Comparer Dictionary.Count Dictionary.Capacity Dictionary.this[string] Dictionary.Keys Dictionary.Values 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) DictionaryUtil.Retrieve(Dictionary, K, out V, bool) DictionaryUtil.GetOrCreate(IDictionary, TKey) DictionaryUtil.GetOrCreate(IDictionary, TKey, TValue) DictionaryUtil.GetOrCreate(IDictionary, TKey, Func) DictionaryUtil.TryGetValueByKeys(IDictionary, IEnumerable, out TValue) StringUtil.ToDotSplitedString(IEnumerable) ColorUtil.GetGloomyColor(object, double, double) NameUtil.GetSelectionName(object) StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool) LockUtil.Lock(object) Constructors IsoCoordinateTable() Ctor. public IsoCoordinateTable() IsoCoordinateTable(XElement) Initializes a new instance of the IsoCoordinateTable class from XML. Supports both new string ID format (“G54”) and legacy integer format (54000). public IsoCoordinateTable(XElement src) Parameters src XElement The XML element containing coordinate data. Fields XName Gets the XML element name for the IsoCoordinateTable. public static string XName Field Value string Properties CoordinateIds Enumerates the G-code coordinate ids that this provider currently has data for. public IEnumerable CoordinateIds { get; } Property Value IEnumerable Methods GetCoordinateOffset(string) Gets the offset for the given G-code coordinate id. Returns null when no offset is configured for that id by this provider (callers iterate the next provider, or fall back to Zero). public Vec3d GetCoordinateOffset(string coordId) Parameters coordId string Returns Vec3d LegacyIntToKey(int) Converts a legacy 1000x integer ID to a G-code string key. e.g. 54000 -> “G54”, 59200 -> “G59.2”. public static string LegacyIntToKey(int id) Parameters id int Returns string 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetCoordinateOffset(string, Vec3d) Sets the offset for the given G-code coordinate id. public void SetCoordinateOffset(string coordId, Vec3d offset) Parameters coordId string offset Vec3d" }, + "api/Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.html": { + "href": "api/Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.html", + "title": "Class IsoCoordinateTableProxy | HiAPI-C# 2025", + "summary": "Class IsoCoordinateTableProxy Namespace Hi.NcParsers.Dependencys.Generic Assembly HiMech.dll Get-or-create INcDependencyProxy for IsoCoordinateTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own per-case work coordinate offsets (G54–G59…). public sealed class IsoCoordinateTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource Inheritance object IsoCoordinateTableProxy Implements INcDependencyProxy INcDependency 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) Properties XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetNcDependency() Takes the host's IsoCoordinateTable (created during InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired. public INcDependency GetNcDependency() Returns INcDependency InitNcDependencyHost(INcDependencyListHost) Wires the host and materializes the per-case IsoCoordinateTable: when the host list has none, one is created and installed so it exists and is editable before any run. GetNcDependency() is then a pure take. Idempotent — an existing table is left untouched. public void InitNcDependencyHost(INcDependencyListHost host) Parameters host INcDependencyListHost MakeXmlSource(string, string, bool) Runtime-only proxy — the wired host and the resolved table are not persisted in the shared runner; serialization writes only the empty element. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + }, + "api/Hi.NcParsers.Dependencys.Generic.MachineAxisConfig.html": { + "href": "api/Hi.NcParsers.Dependencys.Generic.MachineAxisConfig.html", + "title": "Class MachineAxisConfig | HiAPI-C# 2025", + "summary": "Class MachineAxisConfig Namespace Hi.NcParsers.Dependencys.Generic Assembly HiMech.dll Brand-neutral IMachineAxisConfig backed by a plain axis→type map, for pipelines that have no controller parameter table (e.g. the NX CLSF runner). Typically populated from the machine chain via ConfigureByMachiningChain(IMachiningChain); rotary axes default to modular (IsModularRotary(string) inherited), matching the cyclic shortest-path treatment of McAbcCyclicPathSyntax. public class MachineAxisConfig : IMachineAxisConfig, INcDependency, IMakeXmlSource Inheritance object MachineAxisConfig Implements IMachineAxisConfig 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 MachineAxisConfig() Creates an empty config; axes are added via SetAxis(string, AxisType). public MachineAxisConfig() MachineAxisConfig(XElement) Reconstructs a config from its XML element. public MachineAxisConfig(XElement src) Parameters src XElement XML element previously produced by MakeXmlSource(string, string, bool). Properties AxisNames Gets the configured axis names in order. public IEnumerable AxisNames { get; } Property Value IEnumerable XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods Clear() Removes every axis. Call before re-populating from a different machine chain — axes left over from a previous chain (e.g. rotaries after switching 5-axis → 3-axis) would otherwise send the modal rotary lookbacks walking the whole stream for values that no block carries. public void Clear() IsRotaryAxis(string) Returns true if the axis is rotary or spindle, false if linear. public bool IsRotaryAxis(string axisName) Parameters axisName string 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory RemoveAxis(string) Removes an axis from the configuration. public void RemoveAxis(string axisName) Parameters axisName string SetAxis(string, AxisType) Adds or updates an axis with the specified type. public void SetAxis(string axisName, AxisType type) Parameters axisName string type AxisType" + }, "api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html": { "href": "api/Hi.NcParsers.Dependencys.Generic.SubProgramFolderConfig.html", "title": "Class SubProgramFolderConfig | HiAPI-C# 2025", @@ -3542,37 +3692,67 @@ "api/Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html": { "href": "api/Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html", "title": "Class ToolOffsetTable | HiAPI-C# 2025", - "summary": "Class ToolOffsetTable Namespace Hi.NcParsers.Dependencys.Generic Assembly HiMech.dll Integer-keyed tool offset table implementing IToolOffsetConfig. Suitable for Fanuc (H/D), Heidenhain (tool number), Mazak, Okuma, and other ISO-compatible controllers. Key = offset number (Fanuc H or D number). public class ToolOffsetTable : INcDependency, IMakeXmlSource, IToolOffsetConfig Inheritance object ToolOffsetTable Implements INcDependency IMakeXmlSource IToolOffsetConfig 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 ToolOffsetTable() Initializes a new instance with an empty Offsets table. public ToolOffsetTable() ToolOffsetTable(XElement) Initializes a new instance by deserializing from src. public ToolOffsetTable(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Properties Offsets Tool offset rows keyed by offset number (Fanuc H or D number, Heidenhain tool number, etc.). public Dictionary Offsets { get; set; } Property Value Dictionary XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetToolHeightOffset_mm(int) Gets the effective tool height offset (geometry - wear) in mm. Returns 0 if the offset number is not configured. public double GetToolHeightOffset_mm(int offsetNumber) Parameters offsetNumber int Offset number: Fanuc H number, Heidenhain tool number, etc. Returns double GetToolRadiusOffset_mm(int) Gets the effective tool radius offset (geometry - wear) in mm. Returns 0 if the offset number is not configured. public double GetToolRadiusOffset_mm(int offsetNumber) Parameters offsetNumber int Offset number: Fanuc D number, Heidenhain tool number, etc. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetToolOffset(int, double, double, double, double) Sets all four offset components for the given offset number. public void SetToolOffset(int offsetNumber, double idealHeight_mm, double axialWear_mm, double idealRadius_mm, double radialWear_mm) Parameters offsetNumber int idealHeight_mm double axialWear_mm double idealRadius_mm double radialWear_mm double" + "summary": "Class ToolOffsetTable Namespace Hi.NcParsers.Dependencys.Generic Assembly HiMech.dll Integer-keyed tool offset table implementing IToolOffsetConfig. Suitable for Fanuc (H/D), Heidenhain (tool number), Mazak, Okuma, and other ISO-compatible controllers. Key = offset number (Fanuc H or D number). public class ToolOffsetTable : INcDependency, IMakeXmlSource, IToolOffsetConfig Inheritance object ToolOffsetTable Implements INcDependency IMakeXmlSource IToolOffsetConfig 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 ToolOffsetTable() Initializes a new instance with an empty Offsets table. public ToolOffsetTable() ToolOffsetTable(XElement) Initializes a new instance by deserializing from src. public ToolOffsetTable(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Properties Offsets Tool offset rows keyed by offset number (Fanuc H or D number, Heidenhain tool number, etc.). public Dictionary Offsets { get; set; } Property Value Dictionary XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetToolHeightOffset_mm(int) Gets the effective tool height offset (geometry - wear) in mm. Returns 0 if the offset number is not configured. public double GetToolHeightOffset_mm(int offsetNumber) Parameters offsetNumber int Offset number: Fanuc H number, Heidenhain tool number, etc. Returns double GetToolRadiusOffset_mm(int) Gets the effective tool radius offset (geometry - wear) in mm. Returns 0 if the offset number is not configured. public double GetToolRadiusOffset_mm(int offsetNumber) Parameters offsetNumber int Offset number: Fanuc D number, Heidenhain tool number, etc. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetToolOffset(int, double, double, double, double) Sets all four offset components for the given offset number. public void SetToolOffset(int offsetNumber, double idealHeight_mm, double axialWear_mm, double idealRadius_mm, double radialWear_mm) Parameters offsetNumber int idealHeight_mm double axialWear_mm double idealRadius_mm double radialWear_mm double UpdateIdealByToolHouse(MachiningToolHouse) Refreshes the ideal (geometry) components from the tool house — ideal height = the tool's spindle-buckle→tool-tip length, ideal radius = the cutter profile's max radius — preserving accumulated wear, and drops rows whose tool id no longer exists in the house. Offset number maps 1:1 to the tool id. Mirrors the HardNc MillingToolOffsetTable.UpdateIdealMillingToolOffsetTableByToolHouse semantics so H/D offsets follow the tool house when the project's IsIdealOffsetDependentOnToolHouse is on. public void UpdateIdealByToolHouse(MachiningToolHouse toolHouse) Parameters toolHouse MachiningToolHouse Source tool house; no-op when null." + }, + "api/Hi.NcParsers.Dependencys.Generic.ToolOffsetTableProxy.html": { + "href": "api/Hi.NcParsers.Dependencys.Generic.ToolOffsetTableProxy.html", + "title": "Class ToolOffsetTableProxy | HiAPI-C# 2025", + "summary": "Class ToolOffsetTableProxy Namespace Hi.NcParsers.Dependencys.Generic Assembly HiMech.dll Get-or-create INcDependencyProxy for ToolOffsetTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own per-case tool offsets. The shared runner file holds only this proxy, never the offset data. public sealed class ToolOffsetTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource Inheritance object ToolOffsetTableProxy Implements INcDependencyProxy INcDependency 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) Properties XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetNcDependency() Takes the host's ToolOffsetTable (created during InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired. public INcDependency GetNcDependency() Returns INcDependency InitNcDependencyHost(INcDependencyListHost) Wires the host and materializes the per-case ToolOffsetTable: when the host list has none, one is created and installed so it exists and is editable before any run. GetNcDependency() is then a pure take. Idempotent — an existing table is left untouched. public void InitNcDependencyHost(INcDependencyListHost host) Parameters host INcDependencyListHost MakeXmlSource(string, string, bool) Runtime-only proxy — the wired host and the resolved table are not persisted in the shared runner; serialization writes only the empty element. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcParsers.Dependencys.Generic.ToolingMcConfig.html": { "href": "api/Hi.NcParsers.Dependencys.Generic.ToolingMcConfig.html", "title": "Class ToolingMcConfig | HiAPI-C# 2025", - "summary": "Class ToolingMcConfig Namespace Hi.NcParsers.Dependencys.Generic Assembly HiMech.dll HiNC-specific: machine position axes move to during tool change (M06). Not a standard Fanuc parameter — in real Fanuc, tool change motion is programmed in the macro program (O9006). Each axis value: a position to move to, or NaN to stay. public class ToolingMcConfig : IToolingMcConfig, INcDependency, IMakeXmlSource Inheritance object ToolingMcConfig Implements IToolingMcConfig 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 ToolingMcConfig() Initializes a new instance with an empty AxisPositions map and zero ToolingTime. public ToolingMcConfig() ToolingMcConfig(XElement) Initializes a new instance by deserializing from src. public ToolingMcConfig(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Properties AxisPositions Per-axis tooling positions. NaN means the axis stays where it is. public Dictionary AxisPositions { get; set; } Property Value Dictionary Default3Axis Default: XY stay, Z moves to 0, rotary axes move to 0. public static ToolingMcConfig Default3Axis { get; } Property Value ToolingMcConfig ToolingTime Duration of the tool changer mechanism (arm swap, magazine rotation, etc.). Does not include axis motion time to/from the tooling position. public TimeSpan ToolingTime { get; set; } Property Value TimeSpan XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetToolingPosition(string) Gets the tooling position for a specific axis. Returns NaN if the axis should stay where it is. Returns null if the axis has no tooling position configured. public double? GetToolingPosition(string axisName) Parameters axisName string 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetToolingPosition(string, double) Sets the tooling position for a specific axis. Use NaN to indicate the axis should stay. public void SetToolingPosition(string axisName, double value) Parameters axisName string value double" + "summary": "Class ToolingMcConfig Namespace Hi.NcParsers.Dependencys.Generic Assembly HiMech.dll HiNC-specific: machine position axes move to during tool change (M06). Not a standard Fanuc parameter — in real Fanuc, tool change motion is programmed in the macro program (O9006). Each axis value: a position to move to, or NaN to stay. public class ToolingMcConfig : IToolingMcConfig, INcDependency, IMakeXmlSource Inheritance object ToolingMcConfig Implements IToolingMcConfig 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 ToolingMcConfig() Initializes a new instance with an empty AxisPositions map and zero ToolingTime. public ToolingMcConfig() ToolingMcConfig(XElement) Initializes a new instance by deserializing from src. public ToolingMcConfig(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Properties AxisPositions Per-axis tooling positions. NaN means the axis stays where it is. public Dictionary AxisPositions { get; set; } Property Value Dictionary Default3Axis Default: XY stay, Z moves to 0, rotary axes stay (no A/B/C entry — GetToolingPosition(string) returns null → NaN in ToolingMcAbc_deg → the axis does not participate in the tool-change motion). public static ToolingMcConfig Default3Axis { get; } Property Value ToolingMcConfig ToolingTime Duration of the tool changer mechanism (arm swap, magazine rotation, etc.). Does not include axis motion time to/from the tooling position. public TimeSpan ToolingTime { get; set; } Property Value TimeSpan XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetToolingPosition(string) Gets the tooling position for a specific axis. Returns NaN if the axis should stay where it is. Returns null if the axis has no tooling position configured. public double? GetToolingPosition(string axisName) Parameters axisName string 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetToolingPosition(string, double) Sets the tooling position for a specific axis. Use NaN to indicate the axis should stay. public void SetToolingPosition(string axisName, double value) Parameters axisName string value double" }, "api/Hi.NcParsers.Dependencys.Generic.html": { "href": "api/Hi.NcParsers.Dependencys.Generic.html", "title": "Namespace Hi.NcParsers.Dependencys.Generic | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.Dependencys.Generic Classes FallbackConfig HiNC-specific fallback dependency that provides default values for all optional configuration interfaces. Should be placed as the last element in NcDependencyList so that brand-specific parameter tables (which appear earlier) take priority via OfType().FirstOrDefault(). When a brand table (e.g., FanucParameterTable) implements the same interface, its values are used instead. This class serves as a safety net for brands that do not define certain parameters (e.g., Siemens/Heidenhain have no system parameter for G83 peck retraction — it is per-call). GenericBlockSkipConfig Default IBlockSkipConfig. Mirrors the typical Fanuc factory default: layer 1 (bare / prefix) is ON, other layers are OFF. Each layer can be toggled individually. XML form: 1,3 When EnabledLayers is absent the default is layer 1 only. IsoCoordinateTable Coordinate table for NC controller. The dictionary key is a G-code coordinate name (e.g. “G54”, “G59.2”); the dictionary value is machine coordinate offset. Brand-agnostic standalone implementation of IIsoCoordinateConfig. Brand parameter tables (Fanuc, Syntec, Siemens, Heidenhain) provide hardware-faithful alternatives that map to real controller parameters. SubProgramFolderConfig Folder lookup configuration for SubProgramCallSyntax: where to find an O file when the host program executes M98 P_ L_ (InternalFolder) or M198 P_ (ExternalFolder, modelling Fanuc's external storage call — memory card, USB, DNC drive — whose only difference from M98 is the search root). Either path may be absolute or relative; when relative, it resolves against the host file's parent directory at lookup time. Either may be null — a null ExternalFolder falls back to InternalFolder; a null InternalFolder falls back to the host file's parent directory. ToolOffsetRow Single row of a ToolOffsetTable. Stores geometry (ideal) and wear components for height and radius. Matches Fanuc Memory C layout where H and D share the same row. ToolOffsetTable Integer-keyed tool offset table implementing IToolOffsetConfig. Suitable for Fanuc (H/D), Heidenhain (tool number), Mazak, Okuma, and other ISO-compatible controllers. Key = offset number (Fanuc H or D number). ToolingMcConfig HiNC-specific: machine position axes move to during tool change (M06). Not a standard Fanuc parameter — in real Fanuc, tool change motion is programmed in the macro program (O9006). Each axis value: a position to move to, or NaN to stay." + "summary": "Namespace Hi.NcParsers.Dependencys.Generic Classes FallbackConfig HiNC-specific fallback dependency that provides default values for all optional configuration interfaces. Should be placed as the last element in PipelineNcDependencyList so that brand-specific parameter tables (which appear earlier) take priority via OfType().FirstOrDefault(). When a brand table (e.g., FanucParameterTable) implements the same interface, its values are used instead. This class serves as a safety net for brands that do not define certain parameters (e.g., Siemens/Heidenhain have no system parameter for G83 peck retraction — it is per-call). GenericBlockSkipConfig Default IBlockSkipConfig. Mirrors the typical Fanuc factory default: layer 1 (bare / prefix) is ON, other layers are OFF. Each layer can be toggled individually. XML form: 1,3 When EnabledLayers is absent the default is layer 1 only. IsoCoordinateTable Coordinate table for NC controller. The dictionary key is a G-code coordinate name (e.g. “G54”, “G59.2”); the dictionary value is machine coordinate offset. Brand-agnostic standalone implementation of IIsoCoordinateConfig. Brand parameter tables (Fanuc, Syntec, Siemens, Heidenhain) provide hardware-faithful alternatives that map to real controller parameters. IsoCoordinateTableProxy Get-or-create INcDependencyProxy for IsoCoordinateTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own per-case work coordinate offsets (G54–G59…). MachineAxisConfig Brand-neutral IMachineAxisConfig backed by a plain axis→type map, for pipelines that have no controller parameter table (e.g. the NX CLSF runner). Typically populated from the machine chain via ConfigureByMachiningChain(IMachiningChain); rotary axes default to modular (IsModularRotary(string) inherited), matching the cyclic shortest-path treatment of McAbcCyclicPathSyntax. SubProgramFolderConfig Folder lookup configuration for SubProgramCallSyntax: where to find an O file when the host program executes M98 P_ L_ (InternalFolder) or M198 P_ (ExternalFolder, modelling Fanuc's external storage call — memory card, USB, DNC drive — whose only difference from M98 is the search root). Either path may be absolute or relative; when relative, it resolves against the host file's parent directory at lookup time. Either may be null — a null ExternalFolder falls back to InternalFolder; a null InternalFolder falls back to the host file's parent directory. ToolOffsetRow Single row of a ToolOffsetTable. Stores geometry (ideal) and wear components for height and radius. Matches Fanuc Memory C layout where H and D share the same row. ToolOffsetTable Integer-keyed tool offset table implementing IToolOffsetConfig. Suitable for Fanuc (H/D), Heidenhain (tool number), Mazak, Okuma, and other ISO-compatible controllers. Key = offset number (Fanuc H or D number). ToolOffsetTableProxy Get-or-create INcDependencyProxy for ToolOffsetTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own per-case tool offsets. The shared runner file holds only this proxy, never the offset data. ToolingMcConfig HiNC-specific: machine position axes move to during tool change (M06). Not a standard Fanuc parameter — in real Fanuc, tool change motion is programmed in the macro program (O9006). Each axis value: a position to move to, or NaN to stay." + }, + "api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainGotoIterationDependency.html": { + "href": "api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainGotoIterationDependency.html", + "title": "Class HeidenhainGotoIterationDependency | HiAPI-C# 2025", + "summary": "Class HeidenhainGotoIterationDependency Namespace Hi.NcParsers.Dependencys.Heidenhain Assembly HiMech.dll Watchdog for Heidenhain FN 9–12 GOTO LBL jumps — the label-keyed sibling of the Siemens SiemensGotoIterationDependency, with the same “soft-cap + runtime counter + session-init ISessionResettable” shape. Kept per-brand for diagnostic clarity and because klartext targets are LBL numbers-or-names, matched in their canonical form (“01” ≡ 1 on a TNC, quotes stripped). The counter key is (FileName, Label) where FileName is the source-level file path of the jump host (the relative form carried on FilePath) and Label is the normalised target. Klartext has no direction mnemonic — a backward jump is the language's loop primitive, a forward jump can only fire once per arrival — so all jumps to one label share one bucket and the cap stays generous. The consuming syntax (HeidenhainGotoSyntax) counts after the condition gate and before the label scan; above MaxIterationsPerLabel the jump warns HeidenhainGoto--IterationLimitExceeded and falls through. A missing dependency disables the cap (Fanuc parity) — the brand preset wires one by default. public class HeidenhainGotoIterationDependency : INcDependency, IMakeXmlSource, ISessionResettable Inheritance object HeidenhainGotoIterationDependency Implements INcDependency IMakeXmlSource ISessionResettable 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 HeidenhainGotoIterationDependency() Initializes a new instance with the default limit and an empty counter. public HeidenhainGotoIterationDependency() HeidenhainGotoIterationDependency(XElement) Loads MaxIterationsPerLabel from XML produced by MakeXmlSource(string, string, bool); absent element falls back to DefaultMaxIterationsPerLabel. public HeidenhainGotoIterationDependency(XElement src) Parameters src XElement Root element named XName. Fields DefaultMaxIterationsPerLabel Default for MaxIterationsPerLabel — the Fanuc / Siemens GOTO default: klartext counting loops are short (feed scaling, retry sections), so the cap stays tight. public const int DefaultMaxIterationsPerLabel = 1000 Field Value int Properties CountByLabel Per-target hit counter keyed by (FileName, Label) with the label in canonical form. Runtime-only; not serialised. Cleared by OnSessionReset() on the session-init edge. public Dictionary<(string FileName, string Label), int> CountByLabel { get; } Property Value Dictionary<(string FileName, string Label), int> MaxIterationsPerLabel Soft cap on fired jumps for any single (FileName, Label) pair. Above this the host block emits HeidenhainGoto–IterationLimitExceeded and falls through. public int MaxIterationsPerLabel { 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. OnSessionReset() Clears CountByLabel; leaves MaxIterationsPerLabel untouched. public void OnSessionReset() Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html": { "href": "api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTable.html", "title": "Class HeidenhainParameterTable | HiAPI-C# 2025", - "summary": "Class HeidenhainParameterTable Namespace Hi.NcParsers.Dependencys.Heidenhain Assembly HiMech.dll Heidenhain TNC/iTNC machine parameter table. Stores machine parameters (MP numbers) as system and per-axis values. MP100–MP199: General machine configuration. MP400–MP499: Axis-specific parameters. public class HeidenhainParameterTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, INcDependency, IMakeXmlSource Inheritance object ControllerParameterTableBase HeidenhainParameterTable Implements IHomeMcConfig IMachineAxisConfig IRapidFeedrateConfig IStrokeLimitConfig INcDependency IMakeXmlSource Inherited Members ControllerParameterTableBase.GetLinearAxisRapidRate_mmdmin(string) ControllerParameterTableBase.GetRotaryAxisRapidRate_degdmin(string) ControllerParameterTableBase.SetLinearAxisRapidRate_mmdmin(string, double) ControllerParameterTableBase.SetRotaryAxisRapidRate_degdmin(string, double) ControllerParameterTableBase.GetPositiveLimit(string) ControllerParameterTableBase.GetNegativeLimit(string) ControllerParameterTableBase.SetPositiveLimit(string, double) ControllerParameterTableBase.SetNegativeLimit(string, double) ControllerParameterTableBase.SystemParams ControllerParameterTableBase.AxisParams ControllerParameterTableBase.IntAxisParams ControllerParameterTableBase.AxisParam(int) ControllerParameterTableBase.IntAxisParam(int) ControllerParameterTableBase.GetHomePosition(string) ControllerParameterTableBase.SetHomePosition(string, double) ControllerParameterTableBase.AxisNames ControllerParameterTableBase.IsRotaryAxis(string) ControllerParameterTableBase.SetAxis(string, AxisType) ControllerParameterTableBase.RemoveAxis(string) ControllerParameterTableBase.ConfigureRotaryAxis(string, double, double) ControllerParameterTableBase.ReadXml(XElement) ControllerParameterTableBase.WriteXml(string) 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 HeidenhainParameterTable() Initializes a new instance with empty parameter tables. public HeidenhainParameterTable() HeidenhainParameterTable(XElement) Initializes a new instance by deserializing from src. public HeidenhainParameterTable(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Fields MpAxisType MP400: Axis type per axis (0=linear, 1=rotary, 2=spindle). public const int MpAxisType = 400 Field Value int MpMaxSpindleSpeed MP100: Maximum spindle speed (RPM). public const int MpMaxSpindleSpeed = 100 Field Value int MpRapidRate MP1010: Rapid traverse rate per axis (mm/min or deg/min). public const int MpRapidRate = 1010 Field Value int MpReferencePosition MP410: Reference point position per axis. public const int MpReferencePosition = 410 Field Value int MpStrokeLimitNeg MP430: Negative stroke limit per axis. public const int MpStrokeLimitNeg = 430 Field Value int MpStrokeLimitPos MP420: Positive stroke limit per axis. public const int MpStrokeLimitPos = 420 Field Value int MpToolAxisDirection MP101: Tool axis direction (0=Z, 1=Y, 2=X). public const int MpToolAxisDirection = 101 Field Value int Properties AxisMp1010 MP1010: Rapid traverse rate per axis (mm/min or deg/min). See IRapidFeedrateConfig. public Dictionary AxisMp1010 { get; set; } Property Value Dictionary AxisMp400 MP400: Axis type per axis. See AxisType. See AxisNames. public Dictionary AxisMp400 { get; set; } Property Value Dictionary AxisMp410 MP410: Reference point position per axis. See IHomeMcConfig. public Dictionary AxisMp410 { get; set; } Property Value Dictionary AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected override int AxisTypeParamId { get; } Property Value int Default3Axis Default 3-axis Heidenhain milling machine. public static HeidenhainParameterTable Default3Axis { get; } Property Value HeidenhainParameterTable IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected override string IdAttributeName { get; } Property Value string MaxSpindleSpeed_rpm Maximum spindle speed in RPM. Delegates to Mp100. public double MaxSpindleSpeed_rpm { get; set; } Property Value double Mp100 MP100: Maximum spindle speed (RPM). See MaxSpindleSpeed_rpm. public double Mp100 { get; set; } Property Value double Mp101 MP101: Tool axis direction (0=Z, 1=Y, 2=X). See ToolAxisDirection. public int Mp101 { get; set; } Property Value int RapidRateParamId Parameter/MD/MP number for rapid traverse rate per axis. Null if not defined for this controller brand. protected override int? RapidRateParamId { get; } Property Value int? ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected override int ReferencePositionParamId { get; } Property Value int StrokeLimitNegParamId Parameter/MD/MP number for negative stroke limit per axis. Null if not defined for this controller brand. protected override int? StrokeLimitNegParamId { get; } Property Value int? StrokeLimitPosParamId Parameter/MD/MP number for positive stroke limit per axis. Null if not defined for this controller brand. protected override int? StrokeLimitPosParamId { get; } Property Value int? ToolAxisDirection Tool axis direction (0=Z, 1=Y, 2=X). Delegates to Mp101. public int ToolAxisDirection { 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 override 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class HeidenhainParameterTable Namespace Hi.NcParsers.Dependencys.Heidenhain Assembly HiMech.dll Heidenhain TNC/iTNC machine parameter table. Stores machine parameters (MP numbers) as system and per-axis values. MP100–MP199: General machine configuration. MP400–MP499: Axis-specific parameters. public class HeidenhainParameterTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, ISpindleControlConfig, IMCodeDeclarationConfig, IToolChangeTriggerConfig, INcDependency, IMakeXmlSource Inheritance object ControllerParameterTableBase HeidenhainParameterTable Implements IHomeMcConfig IMachineAxisConfig IRapidFeedrateConfig IStrokeLimitConfig ISpindleControlConfig IMCodeDeclarationConfig IToolChangeTriggerConfig INcDependency IMakeXmlSource Inherited Members ControllerParameterTableBase.GetLinearAxisRapidRate_mmdmin(string) ControllerParameterTableBase.GetRotaryAxisRapidRate_degdmin(string) ControllerParameterTableBase.SetLinearAxisRapidRate_mmdmin(string, double) ControllerParameterTableBase.SetRotaryAxisRapidRate_degdmin(string, double) ControllerParameterTableBase.GetPositiveLimit(string) ControllerParameterTableBase.GetNegativeLimit(string) ControllerParameterTableBase.SetPositiveLimit(string, double) ControllerParameterTableBase.SetNegativeLimit(string, double) ControllerParameterTableBase.DescribeIntAxisParam(int) ControllerParameterTableBase.SystemParams ControllerParameterTableBase.AxisParams ControllerParameterTableBase.IntAxisParams ControllerParameterTableBase.AxisParam(int) ControllerParameterTableBase.IntAxisParam(int) ControllerParameterTableBase.GetHomePosition(string) ControllerParameterTableBase.SetHomePosition(string, double) ControllerParameterTableBase.AxisNames ControllerParameterTableBase.IsRotaryAxis(string) ControllerParameterTableBase.SetAxis(string, AxisType) ControllerParameterTableBase.RemoveAxis(string) ControllerParameterTableBase.ConfigureRotaryAxis(string, double, double) ControllerParameterTableBase.MCodeDeclarations ControllerParameterTableBase.EffectiveMCodeDeclarations ControllerParameterTableBase.TryGetMCodeEffects(string, out MCodeEffects) ControllerParameterTableBase.DeclareMCode(string, MCodeEffects) ControllerParameterTableBase.RemoveMCodeDeclaration(string) ControllerParameterTableBase.ToolWordTriggersChange ControllerParameterTableBase.SpindleDirectionCodes ControllerParameterTableBase.TryResolveDirection(string, out SpindleDirection) ControllerParameterTableBase.ConfigureSpindleDirectionCode(string, SpindleDirection) ControllerParameterTableBase.RemoveSpindleDirectionCode(string) ControllerParameterTableBase.ReadXml(XElement) ControllerParameterTableBase.WriteXml(string) ControllerParameterTableBase.CopyParamsTo(ControllerParameterTableBase) 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 HeidenhainParameterTable() Initializes a new instance with empty parameter tables. public HeidenhainParameterTable() HeidenhainParameterTable(XElement) Initializes a new instance by deserializing from src. public HeidenhainParameterTable(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Fields MpAxisType MP400: Axis type per axis (0=linear, 1=rotary, 2=spindle). public const int MpAxisType = 400 Field Value int MpMaxSpindleSpeed MP100: Maximum spindle speed (RPM). public const int MpMaxSpindleSpeed = 100 Field Value int MpRapidRate MP1010: Rapid traverse rate per axis (mm/min or deg/min). public const int MpRapidRate = 1010 Field Value int MpReferencePosition MP410: Reference point position per axis. public const int MpReferencePosition = 410 Field Value int MpStrokeLimitNeg MP430: Negative stroke limit per axis. public const int MpStrokeLimitNeg = 430 Field Value int MpStrokeLimitPos MP420: Positive stroke limit per axis. public const int MpStrokeLimitPos = 420 Field Value int MpToolAxisDirection MP101: Tool axis direction (0=Z, 1=Y, 2=X). public const int MpToolAxisDirection = 101 Field Value int Properties AxisMp1010 MP1010: Rapid traverse rate per axis (mm/min or deg/min). See IRapidFeedrateConfig. public Dictionary AxisMp1010 { get; set; } Property Value Dictionary AxisMp400 MP400: Axis type per axis. See AxisType. See AxisNames. public Dictionary AxisMp400 { get; set; } Property Value Dictionary AxisMp410 MP410: Reference point position per axis. See IHomeMcConfig. public Dictionary AxisMp410 { get; set; } Property Value Dictionary AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected override int AxisTypeParamId { get; } Property Value int Default3Axis Default 3-axis Heidenhain milling machine. public static HeidenhainParameterTable Default3Axis { get; } Property Value HeidenhainParameterTable IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected override string IdAttributeName { get; } Property Value string MaxSpindleSpeed_rpm Maximum spindle speed in RPM. Delegates to Mp100. public double MaxSpindleSpeed_rpm { get; set; } Property Value double Mp100 MP100: Maximum spindle speed (RPM). See MaxSpindleSpeed_rpm. public double Mp100 { get; set; } Property Value double Mp101 MP101: Tool axis direction (0=Z, 1=Y, 2=X). See ToolAxisDirection. public int Mp101 { get; set; } Property Value int RapidRateParamId Parameter/MD/MP number for rapid traverse rate per axis. Null if not defined for this controller brand. protected override int? RapidRateParamId { get; } Property Value int? ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected override int ReferencePositionParamId { get; } Property Value int StrokeLimitNegParamId Parameter/MD/MP number for negative stroke limit per axis. Null if not defined for this controller brand. protected override int? StrokeLimitNegParamId { get; } Property Value int? StrokeLimitPosParamId Parameter/MD/MP number for positive stroke limit per axis. Null if not defined for this controller brand. protected override int? StrokeLimitPosParamId { get; } Property Value int? ToolAxisDirection Tool axis direction (0=Z, 1=Y, 2=X). Delegates to Mp101. public int ToolAxisDirection { 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 DeepClone() Returns an independent deep copy of this table (all three parameter dictionaries cloned). Used by HeidenhainParameterTableProxy to clone its fixed machine-config seed into a host that has no table yet. public HeidenhainParameterTable DeepClone() Returns HeidenhainParameterTable DescribeAxisParam(int) Per-axis double counterpart of DescribeSystemParam(int). Covers the role ids the base class consumes (reference position, rapid rate, stroke limits); brand subclasses may override for their own vocabulary or extra numbers. public override string DescribeAxisParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns string DescribeSystemParam(int) Short usage label for a well-known system parameter id, or null when the id has no modeled meaning (a raw pass-through row). Brand subclasses extend this with their own well-known numbers; the native parameter UI shows the label next to the raw id so an operator can tell the modeled parameters from free extras. public override string DescribeSystemParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns string MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public override 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + }, + "api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTableProxy.html": { + "href": "api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainParameterTableProxy.html", + "title": "Class HeidenhainParameterTableProxy | HiAPI-C# 2025", + "summary": "Class HeidenhainParameterTableProxy Namespace Hi.NcParsers.Dependencys.Heidenhain Assembly HiMech.dll Get-or-create INcDependencyProxy for HeidenhainParameterTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own machine parameter table. Like the Fanuc-family parameter table, the Heidenhain MP table mixes machine config (axis types / reference positions / rapid rates / tool axis direction) with per-project edits, so the proxy carries a fixed machine-config Seed that is serialized into the shared runner file. On wire, the host receives a deep clone of the seed only when it has no HeidenhainParameterTable yet; a loaded project's own full table wins, so a same-brand re-flash re-binds to the project's parameters instead of resetting them. The resolved host table is fully serialized on the project. The proxy deliberately does not implement the machine-config interfaces (IMachineAxisConfig etc.) — every machine-config consumer must go through GetEffectiveNcDependencyList() so it sees the resolved host table, never this placeholder. public sealed class HeidenhainParameterTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource Inheritance object HeidenhainParameterTableProxy Implements INcDependencyProxy INcDependency 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 HeidenhainParameterTableProxy(HeidenhainParameterTable) Creates a proxy carrying seed as its machine-config seed, defaulting to Default3Axis. public HeidenhainParameterTableProxy(HeidenhainParameterTable seed = null) Parameters seed HeidenhainParameterTable The machine-config seed cloned into a fresh host. Properties Seed The fixed machine-config seed deep-cloned into a host that has no HeidenhainParameterTable yet. Carried on the shared runner and serialized into the runner file — never the per-case instance, which lives on the host (see GetNcDependency()). public HeidenhainParameterTable Seed { get; } Property Value HeidenhainParameterTable XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetNcDependency() Takes the host's HeidenhainParameterTable (created during InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired. public INcDependency GetNcDependency() Returns INcDependency InitNcDependencyHost(INcDependencyListHost) Wires the host and materializes the host HeidenhainParameterTable: when the host list has none, a deep clone of Seed is installed so the machine parameters exist and are editable before any run. GetNcDependency() is then a pure take. Idempotent — an existing host table (a loaded project's) is left untouched. public void InitNcDependencyHost(INcDependencyListHost host) Parameters host INcDependencyListHost MakeXmlSource(string, string, bool) Serializes only the machine-config Seed — the wired host and the resolved host table are runtime-only and not persisted in the shared runner. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Rehydrates the carried Seed from the nested HeidenhainParameterTable element, falling back to Default3Axis when absent. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + }, + "api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainQParameterTable.html": { + "href": "api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainQParameterTable.html", + "title": "Class HeidenhainQParameterTable | HiAPI-C# 2025", + "summary": "Class HeidenhainQParameterTable Namespace Hi.NcParsers.Dependencys.Heidenhain Assembly HiMech.dll Heidenhain Q-parameter table for the ranges that persist on a real TNC: free parameters Q0-Q99 (survive power cycles) and the permanent QR0-QR499 range (nonvolatile, backed up with the machine). Like the Siemens sibling SiemensRParameterTable, this table is not session-reset and is serialised into the project file. The other Q ranges deliberately live elsewhere: Q100-Q199 are controller-written system parameters — Get(string) returns null for them (read fail-soft, no fabricated values) and the reading syntax refuses writes; Q200+ are volatile cycle/user parameters carried block-to-block in Vars.Volatile (JSON dataflow, cleared at program end) — Get(string) also returns null so the evaluator's chain falls through to HeidenhainVolatileQLookup. Reads flow through Get(string) (registered automatically because the table sits on the runner's effective NcDependencyList); writes flow through HeidenhainQParameterReadingSyntax, which consumes literal Parsing.Assignments.Qn entries after VariableEvaluatorSyntax has normalized expression RHS to literals. Vacant is represented by null: either the dictionary has no entry for the key, or the entry maps to null — both read identically. A vacant read failing loud (Variable--Vacant via the evaluator) surfaces missing setup data instead of silently machining with 0. public class HeidenhainQParameterTable : INcDependency, IMakeXmlSource, IVariableLookup Inheritance object HeidenhainQParameterTable 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 HeidenhainQParameterTable() Empty table. public HeidenhainQParameterTable() HeidenhainQParameterTable(XElement) Loads from XML produced by MakeXmlSource(string, string, bool). public HeidenhainQParameterTable(XElement src) Parameters src XElement Fields PersistentMax Inclusive upper bound of the persistent free range (Q99). public const int PersistentMax = 99 Field Value int PersistentMin Inclusive lower bound of the persistent free range (Q0). public const int PersistentMin = 0 Field Value int QRMax Inclusive upper bound of the permanent QR range (QR499). public const int QRMax = 499 Field Value int QRMin Inclusive lower bound of the permanent QR range (QR0). public const int QRMin = 0 Field Value int SystemMax Inclusive upper bound of the read-only system range (Q199). public const int SystemMax = 199 Field Value int SystemMin Inclusive lower bound of the read-only system range (Q100). public const int SystemMin = 100 Field Value int Properties QRVariables Backing store of the permanent QR range. Key = QR number (e.g. 5 for QR5); same vacant semantics as Variables. Keys are constrained to QRMin..QRMax. public Dictionary QRVariables { get; set; } Property Value Dictionary Variables Backing store of the free persistent range. Key = Q number (e.g. 1 for Q1). Value null = vacant; a missing key is also vacant. Keys are constrained to PersistentMin..PersistentMax; out-of-range writes are silently ignored. public Dictionary Variables { get; set; } Property Value Dictionary XName XML element name. 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 Qn keys in the persistent free range and QRn keys (canonical uppercase from HeidenhainExpressionParser; lowercase from raw captures also resolves) to their stores. All other keys — including the system range Q100-Q199 (read fail-soft by design), the volatile range Q200+ (lives in Vars.Volatile) and QL/QS — return null so the evaluator's lookup chain falls through. GetQRVariable(int) Reads a permanent QR parameter (QR0-QR499). Returns null for vacant. public double? GetQRVariable(int id) Parameters id int Parameter number in QRMin..QRMax. Returns double? GetVariable(int) Reads a free Q parameter (Q0-Q99). Returns null for vacant (either the entry is absent or stored as null). public double? GetVariable(int id) Parameters id int Parameter number in PersistentMin..PersistentMax. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetQRVariable(int, double?) Writes a permanent QR parameter. Pass null to set vacant. Ignores ids outside QRMin..QRMax. public void SetQRVariable(int id, double? value) Parameters id int Parameter number. value double? New value, or null for vacant. SetVariable(int, double?) Writes a free Q parameter. Pass null to set vacant. Ignores ids outside PersistentMin..PersistentMax. public void SetVariable(int id, double? value) Parameters id int Parameter number. value double? New value, or null for vacant." + }, + "api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainQParameterTableProxy.html": { + "href": "api/Hi.NcParsers.Dependencys.Heidenhain.HeidenhainQParameterTableProxy.html", + "title": "Class HeidenhainQParameterTableProxy | HiAPI-C# 2025", + "summary": "Class HeidenhainQParameterTableProxy Namespace Hi.NcParsers.Dependencys.Heidenhain Assembly HiMech.dll Get-or-create INcDependencyProxy for HeidenhainQParameterTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own per-case Q parameters (Q0–Q99 + QR0–QR499). public sealed class HeidenhainQParameterTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource Inheritance object HeidenhainQParameterTableProxy Implements INcDependencyProxy INcDependency 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) Properties XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetNcDependency() Takes the host's HeidenhainQParameterTable (created during InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired. public INcDependency GetNcDependency() Returns INcDependency InitNcDependencyHost(INcDependencyListHost) Wires the host and materializes the per-case HeidenhainQParameterTable: when the host list has none, one is created and installed so it exists and is editable before any run. GetNcDependency() is then a pure take. Idempotent — an existing table is left untouched. public void InitNcDependencyHost(INcDependencyListHost host) Parameters host INcDependencyListHost MakeXmlSource(string, string, bool) Runtime-only proxy — the wired host and the resolved table are not persisted in the shared runner; serialization writes only the empty element. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcParsers.Dependencys.Heidenhain.html": { "href": "api/Hi.NcParsers.Dependencys.Heidenhain.html", "title": "Namespace Hi.NcParsers.Dependencys.Heidenhain | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.Dependencys.Heidenhain Classes HeidenhainParameterTable Heidenhain TNC/iTNC machine parameter table. Stores machine parameters (MP numbers) as system and per-axis values. MP100–MP199: General machine configuration. MP400–MP499: Axis-specific parameters." + "summary": "Namespace Hi.NcParsers.Dependencys.Heidenhain Classes HeidenhainGotoIterationDependency Watchdog for Heidenhain FN 9–12 GOTO LBL jumps — the label-keyed sibling of the Siemens SiemensGotoIterationDependency, with the same “soft-cap + runtime counter + session-init ISessionResettable” shape. Kept per-brand for diagnostic clarity and because klartext targets are LBL numbers-or-names, matched in their canonical form (“01” ≡ 1 on a TNC, quotes stripped). The counter key is (FileName, Label) where FileName is the source-level file path of the jump host (the relative form carried on FilePath) and Label is the normalised target. Klartext has no direction mnemonic — a backward jump is the language's loop primitive, a forward jump can only fire once per arrival — so all jumps to one label share one bucket and the cap stays generous. The consuming syntax (HeidenhainGotoSyntax) counts after the condition gate and before the label scan; above MaxIterationsPerLabel the jump warns HeidenhainGoto--IterationLimitExceeded and falls through. A missing dependency disables the cap (Fanuc parity) — the brand preset wires one by default. HeidenhainParameterTable Heidenhain TNC/iTNC machine parameter table. Stores machine parameters (MP numbers) as system and per-axis values. MP100–MP199: General machine configuration. MP400–MP499: Axis-specific parameters. HeidenhainParameterTableProxy Get-or-create INcDependencyProxy for HeidenhainParameterTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own machine parameter table. Like the Fanuc-family parameter table, the Heidenhain MP table mixes machine config (axis types / reference positions / rapid rates / tool axis direction) with per-project edits, so the proxy carries a fixed machine-config Seed that is serialized into the shared runner file. On wire, the host receives a deep clone of the seed only when it has no HeidenhainParameterTable yet; a loaded project's own full table wins, so a same-brand re-flash re-binds to the project's parameters instead of resetting them. The resolved host table is fully serialized on the project. The proxy deliberately does not implement the machine-config interfaces (IMachineAxisConfig etc.) — every machine-config consumer must go through GetEffectiveNcDependencyList() so it sees the resolved host table, never this placeholder. HeidenhainQParameterTable Heidenhain Q-parameter table for the ranges that persist on a real TNC: free parameters Q0-Q99 (survive power cycles) and the permanent QR0-QR499 range (nonvolatile, backed up with the machine). Like the Siemens sibling SiemensRParameterTable, this table is not session-reset and is serialised into the project file. The other Q ranges deliberately live elsewhere: Q100-Q199 are controller-written system parameters — Get(string) returns null for them (read fail-soft, no fabricated values) and the reading syntax refuses writes; Q200+ are volatile cycle/user parameters carried block-to-block in Vars.Volatile (JSON dataflow, cleared at program end) — Get(string) also returns null so the evaluator's chain falls through to HeidenhainVolatileQLookup. Reads flow through Get(string) (registered automatically because the table sits on the runner's effective NcDependencyList); writes flow through HeidenhainQParameterReadingSyntax, which consumes literal Parsing.Assignments.Qn entries after VariableEvaluatorSyntax has normalized expression RHS to literals. Vacant is represented by null: either the dictionary has no entry for the key, or the entry maps to null — both read identically. A vacant read failing loud (Variable--Vacant via the evaluator) surfaces missing setup data instead of silently machining with 0. HeidenhainQParameterTableProxy Get-or-create INcDependencyProxy for HeidenhainQParameterTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own per-case Q parameters (Q0–Q99 + QR0–QR499)." }, "api/Hi.NcParsers.Dependencys.HeidenhainDatumTable.html": { "href": "api/Hi.NcParsers.Dependencys.HeidenhainDatumTable.html", "title": "Class HeidenhainDatumTable | HiAPI-C# 2025", - "summary": "Class HeidenhainDatumTable Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll 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. public class HeidenhainDatumTable : IIsoCoordinateConfig, INcDependency, IMakeXmlSource Inheritance object HeidenhainDatumTable Implements IIsoCoordinateConfig 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 HeidenhainDatumTable() Initializes a new instance with rows 1-20 of DatumPresetTable and DatumShiftTable seeded to zero. public HeidenhainDatumTable() HeidenhainDatumTable(XElement) Initializes a new instance by deserializing from src. public HeidenhainDatumTable(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Properties CoordinateIds Enumerates the G-code coordinate ids that this provider currently has data for. public IEnumerable CoordinateIds { get; } Property Value IEnumerable DatumPresetTable Preset rows (CYCL DEF 247 Q339=N) keyed by preset id (1-20). Rows 1-6 are aliased to ISO G54-G59 via IIsoCoordinateConfig. public Dictionary DatumPresetTable { get; set; } Property Value Dictionary DatumShiftTable Datum shift rows (CYCL DEF 7 #N) keyed by table id (1-20). public Dictionary DatumShiftTable { get; set; } Property Value Dictionary XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetCoordinateOffset(string) Gets the offset for the given G-code coordinate id. Returns null when no offset is configured for that id by this provider (callers iterate the next provider, or fall back to Zero). public Vec3d GetCoordinateOffset(string coordId) Parameters coordId string Returns Vec3d GetDatumPreset(int) Returns the preset offset for q339, or Zero if absent. See DatumPresetTable. public Vec3d GetDatumPreset(int q339) Parameters q339 int Preset id (CYCL DEF 247 Q339). Returns Vec3d GetDatumShift(int) Returns the datum shift offset for tableId, or Zero if absent. See DatumShiftTable. public Vec3d GetDatumShift(int tableId) Parameters tableId int Datum shift row id (CYCL DEF 7 #N). Returns Vec3d 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetCoordinateOffset(string, Vec3d) Sets the offset for the given G-code coordinate id. public void SetCoordinateOffset(string coordId, Vec3d offset) Parameters coordId string offset Vec3d SetDatumPreset(int, Vec3d) Sets the preset offset for q339. See DatumPresetTable. public void SetDatumPreset(int q339, Vec3d offset) Parameters q339 int Preset id (CYCL DEF 247 Q339). offset Vec3d Translation to store. SetDatumShift(int, Vec3d) Sets the datum shift offset for tableId. See DatumShiftTable. public void SetDatumShift(int tableId, Vec3d offset) Parameters tableId int Datum shift row id (CYCL DEF 7 #N). offset Vec3d Translation to store." + "summary": "Class HeidenhainDatumTable Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll 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. public class HeidenhainDatumTable : IIsoCoordinateConfig, INcDependency, IMakeXmlSource Inheritance object HeidenhainDatumTable Implements IIsoCoordinateConfig 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 HeidenhainDatumTable() Initializes a new instance with rows 1-20 of DatumPresetTable and DatumShiftTable seeded to zero. public HeidenhainDatumTable() HeidenhainDatumTable(XElement) Initializes a new instance by deserializing from src. public HeidenhainDatumTable(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Fields PresetCoordinateIdPrefix CoordinateId prefix for preset rows (CYCL DEF 247), written by LogicSyntaxs.Heidenhain.HeidenhainCoordinateOffsetSyntax and resolved back to DatumPresetTable by GetCoordinateOffset(string) so the shared modal-lookback path (IsoCoordinateOffsetSyntax) keeps the offset alive on the blocks after the declaration. public const string PresetCoordinateIdPrefix = \"DATUM_PRESET_\" Field Value string ShiftCoordinateIdPrefix Shift-row id prefix (CYCL DEF 7 #N) used in the DatumShift section's ShiftId; the shift is carried modally by HeidenhainCoordinateOffsetSyntax itself (additive to the preset), not by the ISO coordinate-offset path. public const string ShiftCoordinateIdPrefix = \"DATUM_SHIFT_\" Field Value string Properties CoordinateIds Enumerates the G-code coordinate ids that this provider currently has data for. public IEnumerable CoordinateIds { get; } Property Value IEnumerable DatumPresetTable Preset rows (CYCL DEF 247 Q339=N) keyed by preset id (1-20). Rows 1-6 are aliased to ISO G54-G59 via IIsoCoordinateConfig. public Dictionary DatumPresetTable { get; set; } Property Value Dictionary DatumShiftTable Datum shift rows (CYCL DEF 7 #N) keyed by table id (1-20). public Dictionary DatumShiftTable { get; set; } Property Value Dictionary XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetCoordinateOffset(string) Gets the offset for the given G-code coordinate id. Returns null when no offset is configured for that id by this provider (callers iterate the next provider, or fall back to Zero). public Vec3d GetCoordinateOffset(string coordId) Parameters coordId string Returns Vec3d GetDatumPreset(int) Returns the preset offset for q339, or Zero if absent. See DatumPresetTable. public Vec3d GetDatumPreset(int q339) Parameters q339 int Preset id (CYCL DEF 247 Q339). Returns Vec3d GetDatumShift(int) Returns the datum shift offset for tableId, or Zero if absent. See DatumShiftTable. public Vec3d GetDatumShift(int tableId) Parameters tableId int Datum shift row id (CYCL DEF 7 #N). Returns Vec3d 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetCoordinateOffset(string, Vec3d) Sets the offset for the given G-code coordinate id. public void SetCoordinateOffset(string coordId, Vec3d offset) Parameters coordId string offset Vec3d SetDatumPreset(int, Vec3d) Sets the preset offset for q339. See DatumPresetTable. public void SetDatumPreset(int q339, Vec3d offset) Parameters q339 int Preset id (CYCL DEF 247 Q339). offset Vec3d Translation to store. SetDatumShift(int, Vec3d) Sets the datum shift offset for tableId. See DatumShiftTable. public void SetDatumShift(int tableId, Vec3d offset) Parameters tableId int Datum shift row id (CYCL DEF 7 #N). offset Vec3d Translation to store." + }, + "api/Hi.NcParsers.Dependencys.HeidenhainDatumTableProxy.html": { + "href": "api/Hi.NcParsers.Dependencys.HeidenhainDatumTableProxy.html", + "title": "Class HeidenhainDatumTableProxy | HiAPI-C# 2025", + "summary": "Class HeidenhainDatumTableProxy Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Get-or-create INcDependencyProxy for HeidenhainDatumTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own per-case datum preset / datum shift tables. public sealed class HeidenhainDatumTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource Inheritance object HeidenhainDatumTableProxy Implements INcDependencyProxy INcDependency 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) Properties XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetNcDependency() Takes the host's HeidenhainDatumTable (created during InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired. public INcDependency GetNcDependency() Returns INcDependency InitNcDependencyHost(INcDependencyListHost) Wires the host and materializes the per-case HeidenhainDatumTable: when the host list has none, one is created and installed so it exists and is editable before any run. GetNcDependency() is then a pure take. Idempotent — an existing table is left untouched. public void InitNcDependencyHost(INcDependencyListHost host) Parameters host INcDependencyListHost MakeXmlSource(string, string, bool) Runtime-only proxy — the wired host and the resolved table are not persisted in the shared runner; serialization writes only the empty element. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcParsers.Dependencys.IBlockSkipConfig.html": { "href": "api/Hi.NcParsers.Dependencys.IBlockSkipConfig.html", "title": "Interface IBlockSkipConfig | HiAPI-C# 2025", - "summary": "Interface IBlockSkipConfig Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll 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. public interface IBlockSkipConfig : INcDependency, 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 IsLayerEnabled(int) Returns true when blocks tagged with this layer should be skipped (controller switch ON). bool IsLayerEnabled(int layer) Parameters layer int Skip layer, 1..9. Bare / is layer 1. Returns bool SetLayerEnabled(int, bool) Enables / disables a specific skip layer. void SetLayerEnabled(int layer, bool enabled) Parameters layer int Skip layer, 1..9. enabled bool True to skip blocks tagged with this layer." + "summary": "Interface IBlockSkipConfig Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Runtime state of the controller's Block Delete / Block Skip switches. Present in PipelineNcDependencyList 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 PipelineNcDependencyList, no block is skipped (safest default: simulate the full machining). The syntax still consumes the / prefix so no UnparsedText--Remaining diagnostic is produced. public interface IBlockSkipConfig : INcDependency, 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 IsLayerEnabled(int) Returns true when blocks tagged with this layer should be skipped (controller switch ON). bool IsLayerEnabled(int layer) Parameters layer int Skip layer, 1..9. Bare / is layer 1. Returns bool SetLayerEnabled(int, bool) Enables / disables a specific skip layer. void SetLayerEnabled(int layer, bool enabled) Parameters layer int Skip layer, 1..9. enabled bool True to skip blocks tagged with this layer." }, "api/Hi.NcParsers.Dependencys.ICannedCycleConfig.html": { "href": "api/Hi.NcParsers.Dependencys.ICannedCycleConfig.html", @@ -3584,11 +3764,21 @@ "title": "Interface IHomeMcConfig | HiAPI-C# 2025", "summary": "Interface IHomeMcConfig Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll G28 first reference position (home machine coordinate) per axis. public interface IHomeMcConfig : INcDependency, 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) Properties HomeMcAbc_deg ABC home position in degrees. Defaults to 0 per missing axis. Vec3d HomeMcAbc_deg { get; set; } Property Value Vec3d HomeMcXyz XYZ home position. Defaults to 0 per missing axis. Vec3d HomeMcXyz { get; set; } Property Value Vec3d Methods GetHomePosition(string) Gets the home position for a specific axis. Returns null if the axis has no home position configured. double? GetHomePosition(string axisName) Parameters axisName string Returns double? SetHomePosition(string, double) Sets the home position for a specific axis. void SetHomePosition(string axisName, double value) Parameters axisName string value double" }, + "api/Hi.NcParsers.Dependencys.IIndexingPositionConfig.html": { + "href": "api/Hi.NcParsers.Dependencys.IIndexingPositionConfig.html", + "title": "Interface IIndexingPositionConfig | HiAPI-C# 2025", + "summary": "Interface IIndexingPositionConfig Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Indexing-axis position table: maps 1-based indexing position numbers to axis coordinates for axes that only take up discrete stations (Hirth couplings, indexing rotary tables, turret-style workholders). Consumed by the coded-position coordinate functions (Siemens CAC()/CIC()/CDC()/CACP()/CACN() — unwrapped by SiemensAcIcSyntax, resolved by McAbcSyntax / IncrementalResolveSyntax via CodedPositionUtil). Implemented by SiemensMachineDataTable using the Siemens machine data (MD30500 $MA_INDEX_AX_ASSIGN_POS_TAB per axis; global tables MD10910/MD10930; equidistant MD30501–MD30503). Positions are expressed in the axis' native units (degrees for rotary, mm for linear) in the coordinate frame the axis word itself is written in — machine coordinates for rotary words, program coordinates for linear words. Position numbering is 1-based: number 1 is the first table entry (the Siemens machine-data help and alarm texts count this way; the 0-based value range printed in some programming-manual editions describes the machine-data array index, not the programmable number). public interface IIndexingPositionConfig : INcDependency, 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) Fields PositionMatchTolerance Tolerance, in axis units (degrees or mm), within which an axis position is considered exactly on an indexing position by TryFindIndexingAnchor(string, double, out int, out bool). Anchors come from previous exact table writes, so the tolerance only needs to absorb float round-trip drift — real indexing spacings are many orders of magnitude larger. public const double PositionMatchTolerance = 1E-06 Field Value double Methods GetIndexingPositionCount(string) Number of programmable indexing positions: the table length for table-assigned axes, the per-cycle position count for cyclic equidistant axes, MaxValue for unbounded (non-cyclic equidistant) axes, and 0 when the axis is not a usable indexing axis. int GetIndexingPositionCount(string axisName) Parameters axisName string Axis name (e.g., “C”). Returns int IsIndexingAxis(string) True when the axis is configured as an indexing axis with a usable position table (a non-empty table, or a valid equidistant definition). An axis declared indexing but with an empty/invalid table reports false — the coded-position words then stay unrecognized (loud residue) instead of resolving against garbage. bool IsIndexingAxis(string axisName) Parameters axisName string Axis name (e.g., “C”). Returns bool IsIndexingCyclic(string) True when position-number arithmetic wraps modulo GetIndexingPositionCount(string) — an indexing axis that is also a modular rotary axis (IsModularRotary(string)). Advancing past the last position continues at position 1. bool IsIndexingCyclic(string axisName) Parameters axisName string Axis name (e.g., “C”). Returns bool TryFindIndexingAnchor(string, double, out int, out bool) Locates an axis position relative to the indexing table for incremental (CIC) resolution: floorNumber is the number of the nearest indexing position at or below position (cyclically behind on cyclic axes; 0 when the position lies below the whole table on a non-cyclic axis), and exactlyOnPosition reports a match within PositionMatchTolerance. False when the axis is not a usable indexing axis. bool TryFindIndexingAnchor(string axisName, double position, out int floorNumber, out bool exactlyOnPosition) Parameters axisName string Axis name (e.g., “C”). position double Current axis coordinate (degrees or mm); rotary values may lie outside one revolution and are normalized by the implementation. floorNumber int Number of the nearest indexing position at or (cyclically) below the given position. exactlyOnPosition bool True when the position sits on an indexing position within PositionMatchTolerance. Returns bool TryGetIndexingPosition(string, int, out double) Resolves a 1-based indexing position number to its axis coordinate. False when the axis is not a usable indexing axis or the number is outside [1, count]. bool TryGetIndexingPosition(string axisName, int positionNumber, out double position) Parameters axisName string Axis name (e.g., “C”). positionNumber int 1-based indexing position number. position double Resolved axis coordinate (degrees or mm). Returns bool" + }, "api/Hi.NcParsers.Dependencys.IIsoCoordinateConfig.html": { "href": "api/Hi.NcParsers.Dependencys.IIsoCoordinateConfig.html", "title": "Interface IIsoCoordinateConfig | HiAPI-C# 2025", "summary": "Interface IIsoCoordinateConfig Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll 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). public interface IIsoCoordinateConfig : INcDependency, 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) Properties CoordinateIds Enumerates the G-code coordinate ids that this provider currently has data for. IEnumerable CoordinateIds { get; } Property Value IEnumerable Methods GetCoordinateOffset(string) Gets the offset for the given G-code coordinate id. Returns null when no offset is configured for that id by this provider (callers iterate the next provider, or fall back to Zero). Vec3d GetCoordinateOffset(string coordId) Parameters coordId string Returns Vec3d SetCoordinateOffset(string, Vec3d) Sets the offset for the given G-code coordinate id. void SetCoordinateOffset(string coordId, Vec3d offset) Parameters coordId string offset Vec3d" }, + "api/Hi.NcParsers.Dependencys.IMCodeDeclarationConfig.html": { + "href": "api/Hi.NcParsers.Dependencys.IMCodeDeclarationConfig.html", + "title": "Interface IMCodeDeclarationConfig | HiAPI-C# 2025", + "summary": "Interface IMCodeDeclarationConfig Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Machine-declared M-code map: what each machine-specific (OEM/PLC) M-code does, as MCodeEffects — possibly several effects per code (tool change, spindle direction, coolant) plus a note for behavior this simulation does not model. Consumed by MCodeExpansionSyntax, which expands declared codes into the canonical ISO flags ahead of the regular consumers. Machine-level (per-case parameter table) rather than brand vocabulary — implemented by ControllerParameterTableBase, alongside the narrower ISpindleControlConfig face over the same storage. public interface IMCodeDeclarationConfig : INcDependency, 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) Properties MCodeDeclarations Declared machine M-codes. Key = M-code as parsed (e.g. “M13”), matched case-insensitively; value = the effects the code performs. Enumerable for UI/serialization. IReadOnlyDictionary MCodeDeclarations { get; } Property Value IReadOnlyDictionary Methods DeclareMCode(string, MCodeEffects) Adds or replaces the declaration for an M-code. The effects are copied on store, so the caller may reuse or further mutate its instance without coupling declarations to each other. void DeclareMCode(string mCode, MCodeEffects effects) Parameters mCode string effects MCodeEffects RemoveMCodeDeclaration(string) Removes the declaration for an M-code. void RemoveMCodeDeclaration(string mCode) Parameters mCode string TryGetMCodeEffects(string, out MCodeEffects) Resolves a parsed flag to its declared effects. Returns false for undeclared codes — ISO defaults are the consumers' concern, not this config's. The returned instance is the live declaration: treat it as read-only and reconfigure through DeclareMCode(string, MCodeEffects) instead of mutating it. bool TryGetMCodeEffects(string mCode, out MCodeEffects effects) Parameters mCode string effects MCodeEffects Returns bool" + }, "api/Hi.NcParsers.Dependencys.IMachineAxisConfig.html": { "href": "api/Hi.NcParsers.Dependencys.IMachineAxisConfig.html", "title": "Interface IMachineAxisConfig | HiAPI-C# 2025", @@ -3599,6 +3789,16 @@ "title": "Interface INcDependency | HiAPI-C# 2025", "summary": "Interface INcDependency Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Marker interface for objects that participate in the NC dependency list resolved by the soft-NC runtime. public interface INcDependency : 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)" }, + "api/Hi.NcParsers.Dependencys.INcDependencyListHost.html": { + "href": "api/Hi.NcParsers.Dependencys.INcDependencyListHost.html", + "title": "Interface INcDependencyListHost | HiAPI-C# 2025", + "summary": "Interface INcDependencyListHost Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Hosts a per-case INcDependency list that INcDependencyProxy placeholders in a shared SoftNcRunner resolve their data against. Implemented by the object owning both the shared runner and the varied setting data — e.g. MachiningProject. public interface INcDependencyListHost 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 PerCaseNcDependencyList The case-specific dependencies (tool offsets, coordinate tables, parameter tables, …) that proxies take from — never the runner's own fixed list. A get-or-create proxy may also append the dependency it makes here. List PerCaseNcDependencyList { get; } Property Value List" + }, + "api/Hi.NcParsers.Dependencys.INcDependencyProxy.html": { + "href": "api/Hi.NcParsers.Dependencys.INcDependencyProxy.html", + "title": "Interface INcDependencyProxy | HiAPI-C# 2025", + "summary": "Interface INcDependencyProxy Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll An INcDependency placeholder that resolves the real dependency lazily at pipeline-build time instead of carrying the data itself. Lets a shared SoftNcRunner hold only the fixed pipeline logic while the frequently-varied data lives on the owning INcDependencyListHost (e.g. a MachiningProject). \"Maker and taker\": GetNcDependency() either constructs the dependency on demand (maker) or fetches one from the host wired by InitNcDependencyHost(INcDependencyListHost) (taker). A get-or-create proxy does both — it takes the host's instance when present and otherwise makes one, installing it into the host list so it persists and is editable per case. A proxy may carry runtime-only state (the wired host, a memoized resolved dependency). That state is host-wired per run and MUST NOT be written by MakeXmlSource(string, string, bool) — same runtime-only posture as ProjectFolderDependency. public interface INcDependencyProxy : INcDependency, 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 GetNcDependency() Resolves the concrete dependency this proxy stands in for. Called by GetEffectiveNcDependencyList() to build the list passed to every Build / Resolve / Expand / Initialize / GetSentences call. May return null when no host is wired or it supplied no matching data — callers null-check individual dependencies. INcDependency GetNcDependency() Returns INcDependency InitNcDependencyHost(INcDependencyListHost) Wires the host whose PerCaseNcDependencyList this proxy takes from (or makes against). Called by the host / project service before the pipeline runs — mirrors how BaseDirectoryProvider is wired from HiNc. Runtime-only; not persisted. A get-or-create proxy may also materialize its data into the host list here, so the per-case dependency exists and is editable before any run. void InitNcDependencyHost(INcDependencyListHost host) Parameters host INcDependencyListHost The owner of the per-case dependency data." + }, "api/Hi.NcParsers.Dependencys.IPowerResettable.html": { "href": "api/Hi.NcParsers.Dependencys.IPowerResettable.html", "title": "Interface IPowerResettable | HiAPI-C# 2025", @@ -3609,10 +3809,20 @@ "title": "Interface IRapidFeedrateConfig | HiAPI-C# 2025", "summary": "Interface IRapidFeedrateConfig Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll 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). public interface IRapidFeedrateConfig : INcDependency, 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 GetLinearAxisRapidRate_mmdmin(string) Gets rapid traverse feedrate for a linear axis in mm/min. Returns a default value if the axis is not configured. double GetLinearAxisRapidRate_mmdmin(string axisName) Parameters axisName string Returns double GetRotaryAxisRapidRate_degdmin(string) Gets rapid traverse feedrate for a rotary axis in deg/min. Returns a default value if the axis is not configured. double GetRotaryAxisRapidRate_degdmin(string axisName) Parameters axisName string Returns double SetLinearAxisRapidRate_mmdmin(string, double) Sets rapid traverse feedrate for a linear axis in mm/min. void SetLinearAxisRapidRate_mmdmin(string axisName, double value) Parameters axisName string value double SetRotaryAxisRapidRate_degdmin(string, double) Sets rapid traverse feedrate for a rotary axis in deg/min. void SetRotaryAxisRapidRate_degdmin(string axisName, double value) Parameters axisName string value double" }, + "api/Hi.NcParsers.Dependencys.ISpindleControlConfig.html": { + "href": "api/Hi.NcParsers.Dependencys.ISpindleControlConfig.html", + "title": "Interface ISpindleControlConfig | HiAPI-C# 2025", + "summary": "Interface ISpindleControlConfig Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Machine-specific spindle control codes: maps custom spindle direction M-codes to SpindleDirection — e.g., an ultrasonic spindle started by M203 (CW) and stopped by M205 (STOP) instead of ISO M03/M05. Consulted by SpindleSpeedSyntax in addition to the built-in ISO defaults (M03/M04/M05), which always stay in effect; a configured code wins over its ISO meaning when both match. Machine-level (per-case parameter table) rather than brand vocabulary — implemented by ControllerParameterTableBase as a spindle-direction face over its MCodeDeclarations storage (the multi-effect IMCodeDeclarationConfig map), so one code is never half-recognized by two separate maps. public interface ISpindleControlConfig : INcDependency, 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) Properties SpindleDirectionCodes Configured custom spindle direction M-codes. Key = M-code as parsed (e.g., “M203”), matched case-insensitively; value = resulting direction. Enumerable for UI/serialization. IReadOnlyDictionary SpindleDirectionCodes { get; } Property Value IReadOnlyDictionary Methods ConfigureSpindleDirectionCode(string, SpindleDirection) Adds or updates a custom spindle direction M-code. void ConfigureSpindleDirectionCode(string mCode, SpindleDirection direction) Parameters mCode string direction SpindleDirection RemoveSpindleDirectionCode(string) Removes a custom spindle direction M-code. void RemoveSpindleDirectionCode(string mCode) Parameters mCode string TryResolveDirection(string, out SpindleDirection) Resolves a parsed flag to a spindle direction. Returns true only for configured custom codes whose declaration carries no other effect — the caller consumes the whole flag for this one meaning, so a composite declaration (e.g. spindle + coolant) must instead be expanded by MCodeExpansionSyntax to keep its other halves alive. ISO M03/M04/M05 defaults are the caller's fallback, not this config's concern. bool TryResolveDirection(string mCode, out SpindleDirection direction) Parameters mCode string direction SpindleDirection Returns bool" + }, "api/Hi.NcParsers.Dependencys.IStrokeLimitConfig.html": { "href": "api/Hi.NcParsers.Dependencys.IStrokeLimitConfig.html", "title": "Interface IStrokeLimitConfig | HiAPI-C# 2025", - "summary": "Interface IStrokeLimitConfig Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll 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). public interface IStrokeLimitConfig : INcDependency, 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 CheckStrokeLimit(DVec3d, IProgress) Checks whether a position is within all configured stroke limits. bool CheckStrokeLimit(DVec3d mcXyzabc, IProgress errorReporter) Parameters mcXyzabc DVec3d Machine coordinate. Point = XYZ (mm), Normal = ABC (rad). errorReporter IProgress Receives error messages for each violated axis. Can be null. Returns bool True if within all limits or no limits configured. GetNegativeLimit(string) Gets the negative stroke limit for a specific axis. Unit is mm for linear axes, deg for rotary axes. Returns null if not configured (no limit). double? GetNegativeLimit(string axisName) Parameters axisName string Returns double? GetPositiveLimit(string) Gets the positive stroke limit for a specific axis. Unit is mm for linear axes, deg for rotary axes. Returns null if not configured (no limit). double? GetPositiveLimit(string axisName) Parameters axisName string Returns double? SetNegativeLimit(string, double) Sets the negative stroke limit for a specific axis. Unit is mm for linear axes, deg for rotary axes. void SetNegativeLimit(string axisName, double value) Parameters axisName string value double SetPositiveLimit(string, double) Sets the positive stroke limit for a specific axis. Unit is mm for linear axes, deg for rotary axes. void SetPositiveLimit(string axisName, double value) Parameters axisName string value double" + "summary": "Interface IStrokeLimitConfig Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll 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). public interface IStrokeLimitConfig : INcDependency, 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 CheckStrokeLimit(DVec3d, IProgress) Checks whether a position is within all configured stroke limits. bool CheckStrokeLimit(DVec3d mcXyzabc, IProgress stripReporter = null) Parameters mcXyzabc DVec3d Machine coordinate. Point = XYZ (mm), Normal = ABC (rad). stripReporter IProgress Progress sink for cutter-location strip updates. Can be null. Returns bool True if within all limits or no limits configured. GetNegativeLimit(string) Gets the negative stroke limit for a specific axis. Unit is mm for linear axes, deg for rotary axes. Returns null if not configured (no limit). double? GetNegativeLimit(string axisName) Parameters axisName string Returns double? GetPositiveLimit(string) Gets the positive stroke limit for a specific axis. Unit is mm for linear axes, deg for rotary axes. Returns null if not configured (no limit). double? GetPositiveLimit(string axisName) Parameters axisName string Returns double? SetNegativeLimit(string, double) Sets the negative stroke limit for a specific axis. Unit is mm for linear axes, deg for rotary axes. void SetNegativeLimit(string axisName, double value) Parameters axisName string value double SetPositiveLimit(string, double) Sets the positive stroke limit for a specific axis. Unit is mm for linear axes, deg for rotary axes. void SetPositiveLimit(string axisName, double value) Parameters axisName string value double" + }, + "api/Hi.NcParsers.Dependencys.IToolChangeTriggerConfig.html": { + "href": "api/Hi.NcParsers.Dependencys.IToolChangeTriggerConfig.html", + "title": "Interface IToolChangeTriggerConfig | HiAPI-C# 2025", + "summary": "Interface IToolChangeTriggerConfig Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll Machine-level tool-change trigger mode. Machining centers with a magazine treat a bare T word as pre-selection only (the magazine rotates, no feed axis moves) and change the tool on the trigger M-code; lathes/turret machines index the turret — and thereby change the tool — on the T word itself. Real controllers declare this per machine (e.g. Siemens MD22550 $MC_TOOL_CHANGE_MODE, where 0 means the T word performs the change). Consulted by ToolChangeSyntax; machine-level (per-case parameter table) rather than brand vocabulary — implemented by ControllerParameterTableBase. Custom trigger M-codes are the separate IMCodeDeclarationConfig concern (IsToolChange). public interface IToolChangeTriggerConfig : INcDependency, 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) Properties ToolWordTriggersChange When true, a block carrying a T word performs the tool change by itself (turret semantics); default false keeps the ISO machining-center behavior where only the trigger M-code changes the tool and T merely arms the selection. bool ToolWordTriggersChange { get; set; } Property Value bool" }, "api/Hi.NcParsers.Dependencys.IToolOffsetConfig.html": { "href": "api/Hi.NcParsers.Dependencys.IToolOffsetConfig.html", @@ -3627,52 +3837,117 @@ "api/Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.html": { "href": "api/Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.html", "title": "Class IsoCoordinateAddressMap | HiAPI-C# 2025", - "summary": "Class IsoCoordinateAddressMap Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll 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. public static class IsoCoordinateAddressMap Inheritance object IsoCoordinateAddressMap Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields G54Base #5221: base address of G54 (X). G54.Y=#5222, G54.Z=#5223. public const int G54Base = 5221 Field Value int G54p1P1Base #7001: base address of G54.1 P1 (X). G54.1 P1.Y=#7002, P1.Z=#7003. public const int G54p1P1Base = 7001 Field Value int G54p1PCount 48: number of G54.1 P entries (P1..P48). public const int G54p1PCount = 48 Field Value int G5xCount 6: number of G5x entries (G54..G59). public const int G5xCount = 6 Field Value int Stride 20: address stride between successive coordinate entries. public const int Stride = 20 Field Value int Methods EnumerateCoordinateIds(IDictionary) Enumerates the coordinate ids (G54..G59, G54.1P1..G54.1P48) that have at least one axis entry present in systemParams. public static IEnumerable EnumerateCoordinateIds(IDictionary systemParams) Parameters systemParams IDictionary Returns IEnumerable Read(IDictionary, int) Reads X/Y/Z from systemParams at consecutive addresses starting at baseAddr. Returns null when none of the three addresses are present (i.e. the entry is unmanaged). public static Vec3d Read(IDictionary systemParams, int baseAddr) Parameters systemParams IDictionary baseAddr int Returns Vec3d SeedAllDefaults(IDictionary) Seeds all G54–G59 and G54.1 P1–P48 entries with zero. Total 162 SystemParams entries (6×3 + 48×3). Used by brand parameter tables to satisfy the “managed parameter must have default” invariant — real Fanuc on a fresh-battery controller also reads 0 for these addresses, so the model matches hardware. public static void SeedAllDefaults(IDictionary systemParams) Parameters systemParams IDictionary TryResolveBase(string) Resolves a coordinate id to its 3-axis base address (X address; Y at +1, Z at +2), or null if the id is outside the Fanuc-mapped set (G54–G59, G54.1P1–G54.1P48). public static int? TryResolveBase(string coordId) Parameters coordId string Returns int? Write(IDictionary, int, Vec3d) Writes X/Y/Z to systemParams at consecutive addresses starting at baseAddr. public static void Write(IDictionary systemParams, int baseAddr, Vec3d offset) Parameters systemParams IDictionary baseAddr int offset Vec3d" + "summary": "Class IsoCoordinateAddressMap Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll 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. public static class IsoCoordinateAddressMap Inheritance object IsoCoordinateAddressMap Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Fields G54Base #5221: base address of G54 (X). G54.Y=#5222, G54.Z=#5223. public const int G54Base = 5221 Field Value int G54p1P1Base #7001: base address of G54.1 P1 (X). G54.1 P1.Y=#7002, P1.Z=#7003. public const int G54p1P1Base = 7001 Field Value int G54p1PCount 48: number of G54.1 P entries (P1..P48). public const int G54p1PCount = 48 Field Value int G5xCount 6: number of G5x entries (G54..G59). public const int G5xCount = 6 Field Value int Stride 20: address stride between successive coordinate entries. public const int Stride = 20 Field Value int Methods DescribeAddress(int) Inverse of TryResolveBase(string) per single address: describes an address inside the mapped ranges as its work-coordinate component (“G54 X offset”, “G54.1P3 Z offset”), or null outside them (including the unused tail of each 20-address stride). public static string DescribeAddress(int addr) Parameters addr int Parameter address (e.g. 5222). Returns string EnumerateCoordinateIds(IDictionary) Enumerates the coordinate ids (G54..G59, G54.1P1..G54.1P48) that have at least one axis entry present in systemParams. public static IEnumerable EnumerateCoordinateIds(IDictionary systemParams) Parameters systemParams IDictionary Returns IEnumerable Read(IDictionary, int) Reads X/Y/Z from systemParams at consecutive addresses starting at baseAddr. Returns null when none of the three addresses are present (i.e. the entry is unmanaged). public static Vec3d Read(IDictionary systemParams, int baseAddr) Parameters systemParams IDictionary baseAddr int Returns Vec3d SeedAllDefaults(IDictionary) Seeds all G54–G59 and G54.1 P1–P48 entries with zero. Total 162 SystemParams entries (6×3 + 48×3). Used by brand parameter tables to satisfy the “managed parameter must have default” invariant — real Fanuc on a fresh-battery controller also reads 0 for these addresses, so the model matches hardware. public static void SeedAllDefaults(IDictionary systemParams) Parameters systemParams IDictionary TryResolveBase(string) Resolves a coordinate id to its 3-axis base address (X address; Y at +1, Z at +2), or null if the id is outside the Fanuc-mapped set (G54–G59, G54.1P1–G54.1P48). public static int? TryResolveBase(string coordId) Parameters coordId string Returns int? Write(IDictionary, int, Vec3d) Writes X/Y/Z to systemParams at consecutive addresses starting at baseAddr. public static void Write(IDictionary systemParams, int baseAddr, Vec3d offset) Parameters systemParams IDictionary baseAddr int offset Vec3d" + }, + "api/Hi.NcParsers.Dependencys.MCodeEffects.html": { + "href": "api/Hi.NcParsers.Dependencys.MCodeEffects.html", + "title": "Class MCodeEffects | HiAPI-C# 2025", + "summary": "Class MCodeEffects Namespace Hi.NcParsers.Dependencys Assembly HiMech.dll What one machine-declared M-code does. Real-machine OEM M-codes are frequently composite — e.g. an M13 that means “spindle CW + flood coolant on” — so a declaration carries every effect the code performs rather than a single meaning, and additionally an UnmodeledNote for the parts this simulation does not model. Declaring only the known parts and staying loud about the rest keeps a composite code from being half-consumed silently. Stored per machine in MCodeDeclarations and consumed by MCodeExpansionSyntax, which expands the declared code into the canonical ISO flags the regular consumers already understand. public class MCodeEffects Inheritance object MCodeEffects 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 CoolantMode Coolant mode the code commands (expands to M07/M08/M09): one of Mist, Flood, Off. null/empty when the code does not touch coolant. public string CoolantMode { get; set; } Property Value string IsEmpty True when the declaration carries no effect and no note — such an entry means “consume this code silently; it is irrelevant to simulation”. public bool IsEmpty { get; } Property Value bool IsSpindleDirectionOnly True when SpindleDirection is the declaration's sole content. The two consumption paths partition on this: only such declarations resolve through TryResolveDirection(string, out SpindleDirection) (whose caller consumes the whole flag in place, preserving legacy behavior), and MCodeExpansionSyntax deliberately skips them and expands only composite declarations, so no effect is swallowed and nothing is translated twice. public bool IsSpindleDirectionOnly { get; } Property Value bool IsToolChange The code performs a tool change (expands to M06) — the machine-configurable trigger real controllers declare via e.g. Siemens MD22560 $MC_TOOL_CHANGE_M_CODE. public bool IsToolChange { get; set; } Property Value bool SpindleDirection Spindle direction the code commands (expands to M03/M04/M05), or null when the code does not touch the spindle. public SpindleDirection? SpindleDirection { get; set; } Property Value SpindleDirection? UnmodeledNote Free-text description of what the code additionally does on the real machine that this simulation does not model (e.g. “chip conveyor forward”). When set, consuming the code emits one informational diagnostic per occurrence instead of staying silent — a declaration must not downgrade the visible Parsing–Unconsumed warning into nothing. public string UnmodeledNote { get; set; } Property Value string Methods Clone() Returns an independent copy of this declaration. public MCodeEffects Clone() Returns MCodeEffects NormalizeCoolantMode(string) Maps a raw coolant-mode string to the canonical Coolant constant (case-insensitive), or null when the value names no known mode. public static string NormalizeCoolantMode(string value) Parameters value string Returns string" }, "api/Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig.html": { "href": "api/Hi.NcParsers.Dependencys.Siemens.ISiemensToolOffsetConfig.html", "title": "Interface ISiemensToolOffsetConfig | HiAPI-C# 2025", - "summary": "Interface ISiemensToolOffsetConfig Namespace Hi.NcParsers.Dependencys.Siemens Assembly HiMech.dll Siemens (840D/Sinumerik) tool offset configuration. Offsets are addressed by (tool number T, cutting edge D number), unlike IToolOffsetConfig where a single integer selects the row. Siemens stores up to 25 data fields per cutting edge ($TC_DP1..$TC_DP25), including three independent length components (L1/L2/L3 for Z/X/Y directions), radius, and corresponding wear values. public interface ISiemensToolOffsetConfig 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 GetToolHeightOffset_mm(int, int) Gets the effective tool height offset (geometry - wear) in mm for a specific tool and cutting edge. Corresponds to Siemens $TC_DP3 (length 1, typically Z direction). Returns 0 if the tool/edge is not configured. double GetToolHeightOffset_mm(int toolNumber, int edgeNumber) Parameters toolNumber int Tool number (T). edgeNumber int Cutting edge number (D). Returns double GetToolLengthOffset_mm(int, int, int) Gets an additional length offset for the specified direction. directionIndex: 0 = L1 ($TC_DP3, Z), 1 = L2 ($TC_DP4, X), 2 = L3 ($TC_DP5, Y). Returns 0 if not configured. double GetToolLengthOffset_mm(int toolNumber, int edgeNumber, int directionIndex) Parameters toolNumber int edgeNumber int directionIndex int Returns double GetToolRadiusOffset_mm(int, int) Gets the effective tool radius offset (geometry - wear) in mm for a specific tool and cutting edge. Corresponds to Siemens $TC_DP6 (radius). Returns 0 if the tool/edge is not configured. double GetToolRadiusOffset_mm(int toolNumber, int edgeNumber) Parameters toolNumber int Tool number (T). edgeNumber int Cutting edge number (D). Returns double" + "summary": "Interface ISiemensToolOffsetConfig Namespace Hi.NcParsers.Dependencys.Siemens Assembly HiMech.dll Siemens (840D/Sinumerik) tool offset configuration. Offsets are addressed by (tool number T, cutting edge D number), unlike IToolOffsetConfig where a single integer selects the row. Siemens stores up to 25 data fields per cutting edge ($TC_DP1..$TC_DP25), including three independent length components (L1/L2/L3 for Z/X/Y directions), radius, and corresponding wear values. public interface ISiemensToolOffsetConfig 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 GetToolHeightOffset_mm(int, int) Gets the effective tool height offset in mm for a specific tool and cutting edge: $TC_DP3 (length 1, typically Z direction) plus its additive wear $TC_DP12 — Sinumerik wear values are added, a shortened tool carries negative wear. Returns 0 if the tool/edge is not configured. double GetToolHeightOffset_mm(int toolNumber, int edgeNumber) Parameters toolNumber int Tool number (T). edgeNumber int Cutting edge number (D). Returns double GetToolLengthOffset_mm(int, int, int) Gets an additional length offset for the specified direction. directionIndex: 0 = L1 ($TC_DP3, Z), 1 = L2 ($TC_DP4, X), 2 = L3 ($TC_DP5, Y). Returns 0 if not configured. double GetToolLengthOffset_mm(int toolNumber, int edgeNumber, int directionIndex) Parameters toolNumber int edgeNumber int directionIndex int Returns double GetToolRadiusOffset_mm(int, int) Gets the effective tool radius offset in mm for a specific tool and cutting edge: $TC_DP6 (radius) plus its additive wear $TC_DP15. Returns 0 if the tool/edge is not configured. double GetToolRadiusOffset_mm(int toolNumber, int edgeNumber) Parameters toolNumber int Tool number (T). edgeNumber int Cutting edge number (D). Returns double TryGetToolHeightOffset_mm(int, int, out double) Attempts to get the effective tool height offset in mm ($TC_DP3 plus additive wear $TC_DP12) for a specific tool and cutting edge. Returns false when the (tool, edge) pair has no configured row, so the caller can fall back to another source (e.g. the generic IToolOffsetConfig). This is the only reliable miss signal — 0.0 is a legal configured offset, so the zero returned by GetToolHeightOffset_mm(int, int) cannot distinguish a vacant row from a configured zero. bool TryGetToolHeightOffset_mm(int toolNumber, int edgeNumber, out double offset_mm) Parameters toolNumber int Tool number (T). edgeNumber int Cutting edge number (D). offset_mm double The effective height offset; 0 on miss. Returns bool" }, "api/Hi.NcParsers.Dependencys.Siemens.SiemensFrameTable.html": { "href": "api/Hi.NcParsers.Dependencys.Siemens.SiemensFrameTable.html", "title": "Class SiemensFrameTable | HiAPI-C# 2025", - "summary": "Class SiemensFrameTable Namespace Hi.NcParsers.Dependencys.Siemens Assembly HiMech.dll Sinumerik settable work coordinate frames ($P_UIFR[n]). Models G54–G57 (ISO-compatible), G505–G599 (extended Siemens), and G500 (cancel — always zero). On real Sinumerik, $P_UIFR is a frame array containing translation, rotation, scale and mirror per entry. HiNC currently consumes only the translation component, so this table stores Vec3d per id. $P_UIFR is NOT in the machine data table — therefore this is a separate dependency from SiemensMachineDataTable (which holds MD-prefixed OEM machine data such as MD30300 axis type, MD34010 reference position, etc.). public class SiemensFrameTable : IIsoCoordinateConfig, INcDependency, IMakeXmlSource Inheritance object SiemensFrameTable Implements IIsoCoordinateConfig 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 SiemensFrameTable() Initializes a new instance with G54-G57 and the Siemens extended G505-G599 series seeded as zero Vec3d entries in Frames. public SiemensFrameTable() SiemensFrameTable(XElement) Initializes a new instance by deserializing from src. public SiemensFrameTable(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Properties CoordinateIds Enumerates the G-code coordinate ids that this provider currently has data for. public IEnumerable CoordinateIds { get; } Property Value IEnumerable Frames Settable frames keyed by G-code id. G500 is treated specially (always zero) and is not stored here. public Dictionary Frames { get; set; } Property Value Dictionary XName XML element name for serialization. public static string XName { get; } Property Value string Methods GetCoordinateOffset(string) Gets the offset for the given G-code coordinate id. Returns null when no offset is configured for that id by this provider (callers iterate the next provider, or fall back to Zero). public Vec3d GetCoordinateOffset(string coordId) Parameters coordId string Returns Vec3d 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetCoordinateOffset(string, Vec3d) Sets the offset for the given G-code coordinate id. public void SetCoordinateOffset(string coordId, Vec3d offset) Parameters coordId string offset Vec3d" + "summary": "Class SiemensFrameTable Namespace Hi.NcParsers.Dependencys.Siemens Assembly HiMech.dll Sinumerik settable work coordinate frames ($P_UIFR[n]). Models G54–G57 (ISO-compatible), G505–G599 (extended Siemens), and G500 (cancel — always zero). On real Sinumerik, $P_UIFR is a frame array containing translation, rotation, scale and mirror per entry. HiNC currently consumes only the translation component, so this table stores Vec3d per id. $P_UIFR is NOT in the machine data table — therefore this is a separate dependency from SiemensMachineDataTable (which holds MD-prefixed OEM machine data such as MD30300 axis type, MD34010 reference position, etc.). Deliberately not ISessionResettable: settable frames are setting data on the control — a $P_UIFR write from the program survives reset and power-off, so a replayed session must see the values the previous run wrote. public class SiemensFrameTable : IIsoCoordinateConfig, INcDependency, IMakeXmlSource Inheritance object SiemensFrameTable Implements IIsoCoordinateConfig 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 SiemensFrameTable() Initializes a new instance with G54-G57 and the Siemens extended G505-G599 series seeded as zero Vec3d entries in Frames. public SiemensFrameTable() SiemensFrameTable(XElement) Initializes a new instance by deserializing from src. public SiemensFrameTable(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Properties AxisOffsets Per-axis translation components beyond X/Y/Z, keyed by G-code id then uppercase axis letter (e.g. [“G54”][“C”] = 12.5). Real Sinumerik frames carry a translation per machine axis including rotaries ($P_UIFR[1,C,TR]); X/Y/Z stay in Frames so existing consumers (GetCoordinateOffset(string)) are unaffected. Absent entries read as 0 — matching Sinumerik where every allocated frame axis defaults to zero. Rotary components are recorded/read through the $P_UIFR bridge; the transform chain does not consume them yet (frame work owns that). public Dictionary> AxisOffsets { get; set; } Property Value Dictionary> CoordinateIds Enumerates the G-code coordinate ids that this provider currently has data for. public IEnumerable CoordinateIds { get; } Property Value IEnumerable Frames Settable frames keyed by G-code id. G500 is treated specially (always zero) and is not stored here. public Dictionary Frames { get; set; } Property Value Dictionary XName XML element name for serialization. public static string XName { get; } Property Value string Methods GetAxisOffset(string, string) Reads one axis translation component of a frame ($P_UIFR[n,axis,TR] read side). X/Y/Z route into Frames; any other axis letter reads AxisOffsets with 0 as the allocated-but-unset default. G500 is always 0. Returns null only when coordId is not an allocated frame — the caller's lookup chain then falls through (vacant). public double? GetAxisOffset(string coordId, string axis) Parameters coordId string Frame G-code id (e.g. G54, G505). axis string Uppercase axis letter (e.g. X, C). Returns double? GetCoordinateOffset(string) Gets the offset for the given G-code coordinate id. Returns null when no offset is configured for that id by this provider (callers iterate the next provider, or fall back to Zero). public Vec3d GetCoordinateOffset(string coordId) Parameters coordId string Returns Vec3d 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetAxisOffset(string, string, double) Writes one axis translation component of a frame ($P_UIFR[n,axis,TR]=… write side). X/Y/Z replace the component inside Frames (a fresh Vec3d is installed — never in-place mutation, so aliased vectors stay unaffected); other axis letters land in AxisOffsets. G500 writes are ignored, mirroring SetCoordinateOffset(string, Vec3d). public void SetAxisOffset(string coordId, string axis, double value) Parameters coordId string Frame G-code id. axis string Uppercase axis letter. value double New translation component value. SetCoordinateOffset(string, Vec3d) Sets the offset for the given G-code coordinate id. public void SetCoordinateOffset(string coordId, Vec3d offset) Parameters coordId string offset Vec3d" + }, + "api/Hi.NcParsers.Dependencys.Siemens.SiemensFrameTableProxy.html": { + "href": "api/Hi.NcParsers.Dependencys.Siemens.SiemensFrameTableProxy.html", + "title": "Class SiemensFrameTableProxy | HiAPI-C# 2025", + "summary": "Class SiemensFrameTableProxy Namespace Hi.NcParsers.Dependencys.Siemens Assembly HiMech.dll Get-or-create INcDependencyProxy for SiemensFrameTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own per-case settable work frames ($P_UIFR, G54–G57…). public sealed class SiemensFrameTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource Inheritance object SiemensFrameTableProxy Implements INcDependencyProxy INcDependency 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) Properties XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetNcDependency() Takes the host's SiemensFrameTable (created during InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired. public INcDependency GetNcDependency() Returns INcDependency InitNcDependencyHost(INcDependencyListHost) Wires the host and materializes the per-case SiemensFrameTable: when the host list has none, one is created and installed so it exists and is editable before any run. GetNcDependency() is then a pure take. Idempotent — an existing table is left untouched. public void InitNcDependencyHost(INcDependencyListHost host) Parameters host INcDependencyListHost MakeXmlSource(string, string, bool) Runtime-only proxy — the wired host and the resolved table are not persisted in the shared runner; serialization writes only the empty element. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + }, + "api/Hi.NcParsers.Dependencys.Siemens.SiemensGotoIterationDependency.html": { + "href": "api/Hi.NcParsers.Dependencys.Siemens.SiemensGotoIterationDependency.html", + "title": "Class SiemensGotoIterationDependency | HiAPI-C# 2025", + "summary": "Class SiemensGotoIterationDependency Namespace Hi.NcParsers.Dependencys.Siemens Assembly HiMech.dll Watchdog for Siemens GOTOF/GOTOB jumps — the label-keyed sibling of the Fanuc FanucGotoIterationDependency, with the same “soft-cap + runtime counter + session-init ISessionResettable” shape. Kept per-brand (rather than widening the Fanuc dep's int-keyed bucket) for diagnostic clarity and because Siemens targets are named labels, not N-numbers. The counter key is (FileName, Label) where FileName is the source-level file path of the jump host (the relative form carried on FilePath). Source-level keying means multiple inline invocations of the same subprogram pool their counts, while two files each jumping to their own LBL1 stay isolated. Forward and backward jumps to the same label share one bucket — only the backward direction can loop, but a shared bucket keeps the accounting simple and the cap generous. The consuming syntax (SiemensGotoSyntax) counts after the condition gate and before the label scan; above MaxIterationsPerLabel the jump warns SiemensGoto--IterationLimitExceeded and falls through. A missing dependency disables the cap (Fanuc parity) — the brand preset wires one by default. public class SiemensGotoIterationDependency : INcDependency, IMakeXmlSource, ISessionResettable Inheritance object SiemensGotoIterationDependency Implements INcDependency IMakeXmlSource ISessionResettable 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 SiemensGotoIterationDependency() Initializes a new instance with the default limit and an empty counter. public SiemensGotoIterationDependency() SiemensGotoIterationDependency(XElement) Loads MaxIterationsPerLabel from XML produced by MakeXmlSource(string, string, bool); absent element falls back to DefaultMaxIterationsPerLabel. public SiemensGotoIterationDependency(XElement src) Parameters src XElement Root element named XName. Fields DefaultMaxIterationsPerLabel Default for MaxIterationsPerLabel — matches the Fanuc GOTO default: jumps are not the legitimate bulk-iteration primitive (the loop constructs are), so the cap stays tight. public const int DefaultMaxIterationsPerLabel = 1000 Field Value int Properties CountByLabel Per-target hit counter keyed by (FileName, Label). Runtime-only; not serialised. Cleared by OnSessionReset() on the session-init edge. public Dictionary<(string FileName, string Label), int> CountByLabel { get; } Property Value Dictionary<(string FileName, string Label), int> MaxIterationsPerLabel Soft cap on fired jumps for any single (FileName, Label) pair. Above this the host block emits SiemensGoto–IterationLimitExceeded and falls through. public int MaxIterationsPerLabel { 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. OnSessionReset() Clears CountByLabel; leaves MaxIterationsPerLabel untouched. public void OnSessionReset() Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + }, + "api/Hi.NcParsers.Dependencys.Siemens.SiemensLoopIterationDependency.html": { + "href": "api/Hi.NcParsers.Dependencys.Siemens.SiemensLoopIterationDependency.html", + "title": "Class SiemensLoopIterationDependency | HiAPI-C# 2025", + "summary": "Class SiemensLoopIterationDependency Namespace Hi.NcParsers.Dependencys.Siemens Assembly HiMech.dll Watchdog shared by all four Siemens loop constructs (WHILE/ENDWHILE, FOR/ENDFOR, REPEAT/UNTIL, LOOP/ENDLOOP) — construct-neutral by design, unlike the Fanuc sibling (FanucWhileDoIterationDependency) which only has WHILE to guard. Same “soft-cap + runtime counter + session-init ISessionResettable” shape. Siemens loop constructs carry no LoopId, so the counter key is (FileName, BeginLineNo) — the loop-entry line recorded in the active frame identifies the construct uniquely within its file, and the file path isolates identically-numbered lines across files (and across inlined subprograms). The consuming syntax (SiemensLoopSyntax) counts at the back-jump step (the loop terminator / falsy UNTIL), so a loop whose condition is false from the outset consumes zero iterations. Above MaxIterationsPerLoop the terminator warns SiemensLoop--IterationLimitExceeded, pops the frame and falls through. A missing dependency disables the cap for the condition-bearing constructs (Fanuc parity) but hard-blocks the ENDLOOP back-jump — LOOP has no exit condition, so an uncapped back-jump would hang the pipeline deterministically. public class SiemensLoopIterationDependency : INcDependency, IMakeXmlSource, ISessionResettable Inheritance object SiemensLoopIterationDependency Implements INcDependency IMakeXmlSource ISessionResettable 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 SiemensLoopIterationDependency() Initializes a new instance with the default limit and an empty counter. public SiemensLoopIterationDependency() SiemensLoopIterationDependency(XElement) Loads MaxIterationsPerLoop from XML produced by MakeXmlSource(string, string, bool); absent element falls back to DefaultMaxIterationsPerLoop. public SiemensLoopIterationDependency(XElement src) Parameters src XElement Root element named XName. Fields DefaultMaxIterationsPerLoop Default for MaxIterationsPerLoop — matches the Fanuc WHILE default: loops are the legitimate iteration primitive (drill grids, calibration sweeps), so the cap is generous while still catching runaways in a tractable time. public const int DefaultMaxIterationsPerLoop = 10000 Field Value int Properties CountByLoop Per-loop hit counter keyed by (FileName, BeginLineNo). Runtime-only; not serialised. Cleared by OnSessionReset() on the session-init edge. public Dictionary<(string FileName, int BeginLineNo), int> CountByLoop { get; } Property Value Dictionary<(string FileName, int TargetN), int> MaxIterationsPerLoop Soft cap on back-jumps for any single (FileName, BeginLineNo) pair. Above this the terminator block emits SiemensLoop–IterationLimitExceeded, pops the frame and falls through. public int MaxIterationsPerLoop { 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. OnSessionReset() Clears CountByLoop; leaves MaxIterationsPerLoop untouched. public void OnSessionReset() Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html": { "href": "api/Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html", "title": "Class SiemensMachineDataTable | HiAPI-C# 2025", - "summary": "Class SiemensMachineDataTable Namespace Hi.NcParsers.Dependencys.Siemens Assembly HiMech.dll Siemens Sinumerik machine data table. Stores machine data (MD numbers) as system and per-axis parameters. MD10000–MD19999: General machine data. MD20000–MD29999: Axis-specific machine data. MD30000–MD39999: Axis-specific machine data (extended). public class SiemensMachineDataTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, INcDependency, IMakeXmlSource Inheritance object ControllerParameterTableBase SiemensMachineDataTable Implements IHomeMcConfig IMachineAxisConfig IRapidFeedrateConfig IStrokeLimitConfig INcDependency IMakeXmlSource Inherited Members ControllerParameterTableBase.GetLinearAxisRapidRate_mmdmin(string) ControllerParameterTableBase.GetRotaryAxisRapidRate_degdmin(string) ControllerParameterTableBase.SetLinearAxisRapidRate_mmdmin(string, double) ControllerParameterTableBase.SetRotaryAxisRapidRate_degdmin(string, double) ControllerParameterTableBase.GetPositiveLimit(string) ControllerParameterTableBase.GetNegativeLimit(string) ControllerParameterTableBase.SetPositiveLimit(string, double) ControllerParameterTableBase.SetNegativeLimit(string, double) ControllerParameterTableBase.SystemParams ControllerParameterTableBase.AxisParams ControllerParameterTableBase.IntAxisParams ControllerParameterTableBase.AxisParam(int) ControllerParameterTableBase.IntAxisParam(int) ControllerParameterTableBase.GetHomePosition(string) ControllerParameterTableBase.SetHomePosition(string, double) ControllerParameterTableBase.AxisNames ControllerParameterTableBase.IsRotaryAxis(string) ControllerParameterTableBase.SetAxis(string, AxisType) ControllerParameterTableBase.RemoveAxis(string) ControllerParameterTableBase.ConfigureRotaryAxis(string, double, double) ControllerParameterTableBase.ReadXml(XElement) ControllerParameterTableBase.WriteXml(string) 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 SiemensMachineDataTable() Initializes a new instance with empty machine data tables. public SiemensMachineDataTable() SiemensMachineDataTable(XElement) Initializes a new instance by deserializing from src. public SiemensMachineDataTable(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Fields MdAxisType MD30300: Axis type per axis (0=linear, 1=rotary, 2=spindle). public const int MdAxisType = 30300 Field Value int MdMaxAxisVelocity MD32000: Max axis velocity per axis (mm/min or deg/min). public const int MdMaxAxisVelocity = 32000 Field Value int MdMaxSpindleSpeed MD35100: Maximum spindle speed (RPM). public const int MdMaxSpindleSpeed = 35100 Field Value int MdReferencePosition MD34010: Reference point position per axis. public const int MdReferencePosition = 34010 Field Value int MdStrokeLimitNeg MD36110: Negative stroke limit per axis. public const int MdStrokeLimitNeg = 36110 Field Value int MdStrokeLimitPos MD36100: Positive stroke limit per axis. public const int MdStrokeLimitPos = 36100 Field Value int Properties AxisMd30300 MD30300: Axis type per axis. See AxisType. See AxisNames. public Dictionary AxisMd30300 { get; set; } Property Value Dictionary AxisMd32000 MD32000: Max axis velocity per axis (mm/min or deg/min). See IRapidFeedrateConfig. public Dictionary AxisMd32000 { get; set; } Property Value Dictionary AxisMd34010 MD34010: Reference point position per axis. See IHomeMcConfig. public Dictionary AxisMd34010 { get; set; } Property Value Dictionary AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected override int AxisTypeParamId { get; } Property Value int Default3Axis Default 3-axis Siemens milling machine. public static SiemensMachineDataTable Default3Axis { get; } Property Value SiemensMachineDataTable IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected override string IdAttributeName { get; } Property Value string MaxSpindleSpeed_rpm Maximum spindle speed in RPM. Delegates to Md35100. public double MaxSpindleSpeed_rpm { get; set; } Property Value double Md35100 MD35100: Maximum spindle speed (RPM). See MaxSpindleSpeed_rpm. public double Md35100 { get; set; } Property Value double RapidRateParamId Parameter/MD/MP number for rapid traverse rate per axis. Null if not defined for this controller brand. protected override int? RapidRateParamId { get; } Property Value int? ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected override int ReferencePositionParamId { get; } Property Value int StrokeLimitNegParamId Parameter/MD/MP number for negative stroke limit per axis. Null if not defined for this controller brand. protected override int? StrokeLimitNegParamId { get; } Property Value int? StrokeLimitPosParamId Parameter/MD/MP number for positive stroke limit per axis. Null if not defined for this controller brand. protected override int? StrokeLimitPosParamId { get; } 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 override 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class SiemensMachineDataTable Namespace Hi.NcParsers.Dependencys.Siemens Assembly HiMech.dll Siemens Sinumerik machine data table. Stores machine data (MD numbers) as system and per-axis parameters. MD10000–MD19999: General machine data. MD20000–MD29999: Axis-specific machine data. MD30000–MD39999: Axis-specific machine data (extended). Deliberately not ISessionResettable: machine data is control configuration a part program cannot mutate, so there is no session-scoped state to clear. public class SiemensMachineDataTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, ISpindleControlConfig, IMCodeDeclarationConfig, IToolChangeTriggerConfig, IIndexingPositionConfig, INcDependency, IMakeXmlSource Inheritance object ControllerParameterTableBase SiemensMachineDataTable Implements IHomeMcConfig IMachineAxisConfig IRapidFeedrateConfig IStrokeLimitConfig ISpindleControlConfig IMCodeDeclarationConfig IToolChangeTriggerConfig IIndexingPositionConfig INcDependency IMakeXmlSource Inherited Members ControllerParameterTableBase.GetLinearAxisRapidRate_mmdmin(string) ControllerParameterTableBase.GetRotaryAxisRapidRate_degdmin(string) ControllerParameterTableBase.SetLinearAxisRapidRate_mmdmin(string, double) ControllerParameterTableBase.SetRotaryAxisRapidRate_degdmin(string, double) ControllerParameterTableBase.GetPositiveLimit(string) ControllerParameterTableBase.GetNegativeLimit(string) ControllerParameterTableBase.SetPositiveLimit(string, double) ControllerParameterTableBase.SetNegativeLimit(string, double) ControllerParameterTableBase.SystemParams ControllerParameterTableBase.AxisParams ControllerParameterTableBase.IntAxisParams ControllerParameterTableBase.AxisParam(int) ControllerParameterTableBase.IntAxisParam(int) ControllerParameterTableBase.GetHomePosition(string) ControllerParameterTableBase.SetHomePosition(string, double) ControllerParameterTableBase.AxisNames ControllerParameterTableBase.IsRotaryAxis(string) ControllerParameterTableBase.SetAxis(string, AxisType) ControllerParameterTableBase.RemoveAxis(string) ControllerParameterTableBase.ConfigureRotaryAxis(string, double, double) ControllerParameterTableBase.MCodeDeclarations ControllerParameterTableBase.TryGetMCodeEffects(string, out MCodeEffects) ControllerParameterTableBase.DeclareMCode(string, MCodeEffects) ControllerParameterTableBase.RemoveMCodeDeclaration(string) ControllerParameterTableBase.SpindleDirectionCodes ControllerParameterTableBase.TryResolveDirection(string, out SpindleDirection) ControllerParameterTableBase.ConfigureSpindleDirectionCode(string, SpindleDirection) ControllerParameterTableBase.RemoveSpindleDirectionCode(string) ControllerParameterTableBase.ReadXml(XElement) ControllerParameterTableBase.WriteXml(string) ControllerParameterTableBase.CopyParamsTo(ControllerParameterTableBase) 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 SiemensMachineDataTable() Initializes a new instance with empty machine data tables. public SiemensMachineDataTable() SiemensMachineDataTable(XElement) Initializes a new instance by deserializing from src. public SiemensMachineDataTable(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Fields MdAxisType MD30300: Axis type per axis (0=linear, 1=rotary, 2=spindle). public const int MdAxisType = 30300 Field Value int MdFixPointPos MD30600: Fixed point position per axis — the G75 target ($MA_FIX_POINT_POS). Fixed point 1 only; the Siemens per-axis array form (FP=2..4) is not modeled. public const int MdFixPointPos = 30600 Field Value int MdIndexAxAssignPosTab MD30500: Indexing table assignment per axis ($MA_INDEX_AX_ASSIGN_POS_TAB) — 0 = not an indexing axis, 1 = positions in IndexAxPosTab1, 2 = positions in IndexAxPosTab2, 3 = equidistant index intervals (MdIndexAxNumerator / MdIndexAxDenominator / MdIndexAxOffset). See IIndexingPositionConfig. public const int MdIndexAxAssignPosTab = 30500 Field Value int MdIndexAxDenominator MD30502: Equidistant indexing denominator per axis ($MA_INDEX_AX_DENOMINATOR) — on a modular rotary axis, the number of indexing positions per revolution. public const int MdIndexAxDenominator = 30502 Field Value int MdIndexAxNumerator MD30501: Equidistant indexing numerator per axis ($MA_INDEX_AX_NUMERATOR). Position spacing = numerator / denominator for non-modular axes; ignored on modular rotary axes, whose spacing is the 360° modulo range / MdIndexAxDenominator. public const int MdIndexAxNumerator = 30501 Field Value int MdIndexAxOffset MD30503: Absolute position of indexing position 1 per axis ($MA_INDEX_AX_OFFSET) for equidistant indexing. public const int MdIndexAxOffset = 30503 Field Value int MdMaxAxisVelocity MD32000: Max axis velocity per axis (mm/min or deg/min). public const int MdMaxAxisVelocity = 32000 Field Value int MdMaxSpindleSpeed MD35100: Maximum spindle speed (RPM). public const int MdMaxSpindleSpeed = 35100 Field Value int MdReferencePosition MD34010: Reference point position per axis. public const int MdReferencePosition = 34010 Field Value int MdStrokeLimitNeg MD36110: Negative stroke limit per axis. public const int MdStrokeLimitNeg = 36110 Field Value int MdStrokeLimitPos MD36100: Positive stroke limit per axis. public const int MdStrokeLimitPos = 36100 Field Value int MdToolChangeMCode MD22560: Tool change M function ($MC_TOOL_CHANGE_M_CODE, default 6). When the row is present, the named M code carries IsToolChange in the effective declaration view (overlaid at read time — see EffectiveMCodeDeclarations); when absent, only explicit MCodeDeclarations entries trigger a change. public const int MdToolChangeMCode = 22560 Field Value int MdToolChangeMode MD22550: Tool change mode ($MC_TOOL_CHANGE_MODE) — 0 = the T word itself performs the change (turret/lathe), 1 = an M function performs it while T only preselects. When the row is present it drives ToolWordTriggersChange; when absent the brand-neutral flag stands alone. public const int MdToolChangeMode = 22550 Field Value int OemAuxiliaryNote Note text for the OEM auxiliary M-codes the default preset declares note-only (M12/M13/M22/M23/M330/M331) — machine-specific codes recurring in real Siemens programs whose PLC behavior varies per machine and is not simulated. A note-only declaration keeps each occurrence visible as known-but-unmodeled (DeclaredMCode–UnmodeledEffects) instead of the unknown-code Parsing–Unconsumed warning; a machine table overrides the declaration with the actual effects when they are known. public const string OemAuxiliaryNote = \"machine-specific auxiliary function (OEM/PLC); the exact behavior depends on the machine\" Field Value string Properties AxisMd30300 MD30300: Axis type per axis. See AxisType. See AxisNames. public Dictionary AxisMd30300 { get; set; } Property Value Dictionary AxisMd30500 MD30500: Indexing table assignment per axis. See MdIndexAxAssignPosTab. public Dictionary AxisMd30500 { get; set; } Property Value Dictionary AxisMd30600 MD30600: Fixed point position per axis (fixed point 1 — the G75 target). See GetFixPointPosition(string). public Dictionary AxisMd30600 { get; set; } Property Value Dictionary AxisMd32000 MD32000: Max axis velocity per axis (mm/min or deg/min). See IRapidFeedrateConfig. public Dictionary AxisMd32000 { get; set; } Property Value Dictionary AxisMd34010 MD34010: Reference point position per axis. See IHomeMcConfig. public Dictionary AxisMd34010 { get; set; } Property Value Dictionary AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected override int AxisTypeParamId { get; } Property Value int Default3Axis Default 3-axis Siemens milling machine. public static SiemensMachineDataTable Default3Axis { get; } Property Value SiemensMachineDataTable EffectiveMCodeDeclarations Overlays the MD22560 tool-change M function onto the declared M-codes: the named code gains IsToolChange (merged into a clone of its explicit declaration when one exists, so a note or coolant half is kept and the stored instance is never mutated). The overlay exists only in this read-time view — XML, MCodeDeclarations, and clones stay derivation-free and re-derive from the MD row. With no MD22560 row (or one already declared as a tool change) the stored dictionary is returned as-is, allocation-free. protected override IReadOnlyDictionary EffectiveMCodeDeclarations { get; } Property Value IReadOnlyDictionary IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected override string IdAttributeName { get; } Property Value string IndexAxPosTab1 Indexing position table 1 (MD10910 $MN_INDEX_AX_POS_TAB_1), shared by every axis whose MdIndexAxAssignPosTab value is 1. Entry order is position-number order: entry [0] is indexing position 1. The used-length machine data (MD10900) is implied by the list count. Values follow the Siemens constraints (strictly ascending; within one revolution for modular rotary axes) — the lookups do not validate them. public List IndexAxPosTab1 { get; set; } Property Value List IndexAxPosTab2 Indexing position table 2 (MD10930 $MN_INDEX_AX_POS_TAB_2) — see IndexAxPosTab1; used-length MD10920 implied by the list count. public List IndexAxPosTab2 { get; set; } Property Value List MaxSpindleSpeed_rpm Maximum spindle speed in RPM. Delegates to Md35100. public double MaxSpindleSpeed_rpm { get; set; } Property Value double Md35100 MD35100: Maximum spindle speed (RPM). See MaxSpindleSpeed_rpm. public double Md35100 { get; set; } Property Value double RapidRateParamId Parameter/MD/MP number for rapid traverse rate per axis. Null if not defined for this controller brand. protected override int? RapidRateParamId { get; } Property Value int? ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected override int ReferencePositionParamId { get; } Property Value int StrokeLimitNegParamId Parameter/MD/MP number for negative stroke limit per axis. Null if not defined for this controller brand. protected override int? StrokeLimitNegParamId { get; } Property Value int? StrokeLimitPosParamId Parameter/MD/MP number for positive stroke limit per axis. Null if not defined for this controller brand. protected override int? StrokeLimitPosParamId { get; } Property Value int? ToolWordTriggersChange The T-word trigger, bound to MD22550 ($MC_TOOL_CHANGE_MODE) when that row is present: 0 = the T word performs the change, any other value = an M function does. An absent row falls back to the brand-neutral flag. The setter writes whichever storage is active, so an MD-configured table keeps the machine data authoritative (and visible in the native parameter view) while a table without the row behaves exactly like the other brands. public override bool ToolWordTriggersChange { get; set; } Property Value bool XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods DeepClone() Returns an independent deep copy of this table: the three parameter dictionaries, M-code declarations, and T-word trigger (via CopyParamsTo(ControllerParameterTableBase)) plus this class's indexing position tables (IndexAxPosTab1/IndexAxPosTab2). Used by SiemensMachineDataTableProxy to clone its fixed machine-config seed into a host that has no table yet. public SiemensMachineDataTable DeepClone() Returns SiemensMachineDataTable DescribeAxisParam(int) Per-axis double counterpart of DescribeSystemParam(int). Covers the role ids the base class consumes (reference position, rapid rate, stroke limits); brand subclasses may override for their own vocabulary or extra numbers. public override string DescribeAxisParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns string DescribeIntAxisParam(int) Per-axis integer counterpart of DescribeSystemParam(int). Covers the axis-type id the base class consumes. public override string DescribeIntAxisParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns string DescribeSystemParam(int) Short usage label for a well-known system parameter id, or null when the id has no modeled meaning (a raw pass-through row). Brand subclasses extend this with their own well-known numbers; the native parameter UI shows the label next to the raw id so an operator can tell the modeled parameters from free extras. public override string DescribeSystemParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns string GetFixPointPosition(string) Fixed-point-1 position (MD30600) for the axis, or null when the axis has no configured fixed point — the G75 consumer then falls back to the reference position (GetHomePosition(string)). public double? GetFixPointPosition(string axisName) Parameters axisName string Returns double? GetIndexingPositionCount(string) Number of programmable indexing positions: the table length for table-assigned axes, the per-cycle position count for cyclic equidistant axes, MaxValue for unbounded (non-cyclic equidistant) axes, and 0 when the axis is not a usable indexing axis. public int GetIndexingPositionCount(string axisName) Parameters axisName string Axis name (e.g., “C”). Returns int IsIndexingAxis(string) True when the axis is configured as an indexing axis with a usable position table (a non-empty table, or a valid equidistant definition). An axis declared indexing but with an empty/invalid table reports false — the coded-position words then stay unrecognized (loud residue) instead of resolving against garbage. public bool IsIndexingAxis(string axisName) Parameters axisName string Axis name (e.g., “C”). Returns bool IsIndexingCyclic(string) True when position-number arithmetic wraps modulo GetIndexingPositionCount(string) — an indexing axis that is also a modular rotary axis (IsModularRotary(string)). Advancing past the last position continues at position 1. public bool IsIndexingCyclic(string axisName) Parameters axisName string Axis name (e.g., “C”). 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 override 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory TryFindIndexingAnchor(string, double, out int, out bool) Locates an axis position relative to the indexing table for incremental (CIC) resolution: floorNumber is the number of the nearest indexing position at or below position (cyclically behind on cyclic axes; 0 when the position lies below the whole table on a non-cyclic axis), and exactlyOnPosition reports a match within PositionMatchTolerance. False when the axis is not a usable indexing axis. public bool TryFindIndexingAnchor(string axisName, double position, out int floorNumber, out bool exactlyOnPosition) Parameters axisName string Axis name (e.g., “C”). position double Current axis coordinate (degrees or mm); rotary values may lie outside one revolution and are normalized by the implementation. floorNumber int Number of the nearest indexing position at or (cyclically) below the given position. exactlyOnPosition bool True when the position sits on an indexing position within PositionMatchTolerance. Returns bool TryGetIndexingPosition(string, int, out double) Resolves a 1-based indexing position number to its axis coordinate. False when the axis is not a usable indexing axis or the number is outside [1, count]. public bool TryGetIndexingPosition(string axisName, int positionNumber, out double position) Parameters axisName string Axis name (e.g., “C”). positionNumber int 1-based indexing position number. position double Resolved axis coordinate (degrees or mm). Returns bool" + }, + "api/Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTableProxy.html": { + "href": "api/Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTableProxy.html", + "title": "Class SiemensMachineDataTableProxy | HiAPI-C# 2025", + "summary": "Class SiemensMachineDataTableProxy Namespace Hi.NcParsers.Dependencys.Siemens Assembly HiMech.dll Get-or-create INcDependencyProxy for SiemensMachineDataTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own machine data table. Like the Fanuc-family parameter table, the Siemens machine data mixes machine config (axis types / reference positions / velocities / indexing tables) with per-project edits, so the proxy carries a fixed machine-config Seed that is serialized into the shared runner file. On wire, the host receives a deep clone of the seed only when it has no SiemensMachineDataTable yet; a loaded project's own full table wins, so a same-brand re-flash re-binds to the project's machine data instead of resetting it. The resolved host table is fully serialized on the project. The proxy deliberately does not implement the machine-config interfaces (IMachineAxisConfig, IIndexingPositionConfig, etc.) — every machine-config consumer must go through GetEffectiveNcDependencyList() so it sees the resolved host table, never this placeholder. public sealed class SiemensMachineDataTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource Inheritance object SiemensMachineDataTableProxy Implements INcDependencyProxy INcDependency 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 SiemensMachineDataTableProxy(SiemensMachineDataTable) Creates a proxy carrying seed as its machine-config seed, defaulting to Default3Axis. public SiemensMachineDataTableProxy(SiemensMachineDataTable seed = null) Parameters seed SiemensMachineDataTable The machine-config seed cloned into a fresh host. Properties Seed The fixed machine-config seed deep-cloned into a host that has no SiemensMachineDataTable yet. Carried on the shared runner and serialized into the runner file — never the per-case instance, which lives on the host (see GetNcDependency()). public SiemensMachineDataTable Seed { get; } Property Value SiemensMachineDataTable XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetNcDependency() Takes the host's SiemensMachineDataTable (created during InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired. public INcDependency GetNcDependency() Returns INcDependency InitNcDependencyHost(INcDependencyListHost) Wires the host and materializes the host SiemensMachineDataTable: when the host list has none, a deep clone of Seed is installed so the machine data exists and is editable before any run. GetNcDependency() is then a pure take. Idempotent — an existing host table (a loaded project's) is left untouched. public void InitNcDependencyHost(INcDependencyListHost host) Parameters host INcDependencyListHost MakeXmlSource(string, string, bool) Serializes only the machine-config Seed — the wired host and the resolved host table are runtime-only and not persisted in the shared runner. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Rehydrates the carried Seed from the nested SiemensMachineDataTable element, falling back to Default3Axis when absent. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + }, + "api/Hi.NcParsers.Dependencys.Siemens.SiemensRParameterTable.html": { + "href": "api/Hi.NcParsers.Dependencys.Siemens.SiemensRParameterTable.html", + "title": "Class SiemensRParameterTable | HiAPI-C# 2025", + "summary": "Class SiemensRParameterTable Namespace Hi.NcParsers.Dependencys.Siemens Assembly HiMech.dll Sinumerik R-parameter table (R0-R999). R parameters are the Siemens arithmetic-variable surface (R63=100.5, C=R61, R26=(558.5+14)/2); on real hardware they live in retentive memory (sized by MD28050) and survive program end and power cycles, so — like the Fanuc sibling RetainedCommonVariableTable — this table is not session-reset and is serialised into the project file. Reads flow through Get(string) (registered automatically because the table sits on the runner's effective NcDependencyList); writes flow through SiemensRParameterReadingSyntax, which consumes literal Parsing.Assignments.Rn entries after VariableEvaluatorSyntax has normalized expression RHS to literals. Vacant is represented by null: either the dictionary has no entry for the key, or the entry maps to null — both read identically. Real Sinumerik default-initialises every allocated R to 0, but a vacant read failing loud (Variable--Vacant via the evaluator) surfaces missing setup data instead of silently machining with 0. public class SiemensRParameterTable : INcDependency, IMakeXmlSource, IVariableLookup Inheritance object SiemensRParameterTable 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 SiemensRParameterTable() Empty table. public SiemensRParameterTable() SiemensRParameterTable(XElement) Loads from XML produced by MakeXmlSource(string, string, bool). public SiemensRParameterTable(XElement src) Parameters src XElement Fields RParameterMax Inclusive upper bound of the R-parameter range (R999). Real machines size this by MD28050 MM_NUM_R_PARAM (often 100); 999 covers the extended ranges seen in the corpus (R400+) without machine data. public const int RParameterMax = 999 Field Value int RParameterMin Inclusive lower bound of the R-parameter range (R0). public const int RParameterMin = 0 Field Value int Properties Variables Backing store. Key = R-parameter number (e.g. 63 for R63). Value null = vacant; a missing key is also vacant. Keys are constrained to RParameterMin..RParameterMax; out-of-range writes are silently ignored. public Dictionary Variables { get; set; } Property Value Dictionary XName XML element name. 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 Rn keys (canonical form produced by SiemensExpressionParser; a lowercase rn from a raw capture also resolves) to GetVariable(int); other keys return null so the evaluator's lookup chain falls through. GetVariable(int) Reads an R parameter. Returns null for vacant (either the entry is absent or stored as null). public double? GetVariable(int id) Parameters id int Parameter number in RParameterMin..RParameterMax. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetVariable(int, double?) Writes an R parameter. Pass null to set vacant. Ignores ids outside RParameterMin..RParameterMax. public void SetVariable(int id, double? value) Parameters id int Parameter number. value double? New value, or null for vacant." + }, + "api/Hi.NcParsers.Dependencys.Siemens.SiemensRParameterTableProxy.html": { + "href": "api/Hi.NcParsers.Dependencys.Siemens.SiemensRParameterTableProxy.html", + "title": "Class SiemensRParameterTableProxy | HiAPI-C# 2025", + "summary": "Class SiemensRParameterTableProxy Namespace Hi.NcParsers.Dependencys.Siemens Assembly HiMech.dll Get-or-create INcDependencyProxy for SiemensRParameterTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own per-case R parameters (R0–R999). public sealed class SiemensRParameterTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource Inheritance object SiemensRParameterTableProxy Implements INcDependencyProxy INcDependency 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) Properties XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetNcDependency() Takes the host's SiemensRParameterTable (created during InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired. public INcDependency GetNcDependency() Returns INcDependency InitNcDependencyHost(INcDependencyListHost) Wires the host and materializes the per-case SiemensRParameterTable: when the host list has none, one is created and installed so it exists and is editable before any run. GetNcDependency() is then a pure take. Idempotent — an existing table is left untouched. public void InitNcDependencyHost(INcDependencyListHost host) Parameters host INcDependencyListHost MakeXmlSource(string, string, bool) Runtime-only proxy — the wired host and the resolved table are not persisted in the shared runner; serialization writes only the empty element. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + }, + "api/Hi.NcParsers.Dependencys.Siemens.SiemensToolEdgeOffset.html": { + "href": "api/Hi.NcParsers.Dependencys.Siemens.SiemensToolEdgeOffset.html", + "title": "Class SiemensToolEdgeOffset | HiAPI-C# 2025", + "summary": "Class SiemensToolEdgeOffset Namespace Hi.NcParsers.Dependencys.Siemens Assembly HiMech.dll One Siemens cutting-edge offset row ($TC_DP fields for a (T, D) pair): geometry lengths L1/L2/L3 ($TC_DP3/4/5), radius ($TC_DP6) and the corresponding wear values ($TC_DP12/13/14/15) as typed properties (all mm), plus VerbatimDpFields for every other $TC_DP index — same split as SiemensMachineDataTable's well-known-MD properties over a generic parameter bag. A typed property means the simulation consumes the field; a bag entry means the value is stored and round-tripped but not interpreted. public class SiemensToolEdgeOffset Inheritance object SiemensToolEdgeOffset 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 Length1_mm $TC_DP3 — geometry length 1 (typically Z), mm. public double Length1_mm { get; set; } Property Value double Length2_mm $TC_DP4 — geometry length 2 (typically X), mm. public double Length2_mm { get; set; } Property Value double Length3_mm $TC_DP5 — geometry length 3 (typically Y), mm. public double Length3_mm { get; set; } Property Value double Radius_mm $TC_DP6 — geometry radius, mm. public double Radius_mm { get; set; } Property Value double VerbatimDpFields $TC_DP fields the simulation does not consume, keyed by DP index (e.g. 1 = tool type, 2 = tip position, 7–11 = extended geometry, 16–20 = extended wear, 21–23 = base/adapter dimensions, 24 = clearance angle). Carried for round-trip fidelity so a full controller dump survives import → save → reload; never interpreted. The consumed indices (see IsConsumedDpIndex(int)) live in the typed properties and must not appear here — write through SetDpField(int, double) to keep that invariant. public Dictionary VerbatimDpFields { get; set; } Property Value Dictionary WearLength1_mm $TC_DP12 — wear length 1, mm. public double WearLength1_mm { get; set; } Property Value double WearLength2_mm $TC_DP13 — wear length 2, mm. public double WearLength2_mm { get; set; } Property Value double WearLength3_mm $TC_DP14 — wear length 3, mm. public double WearLength3_mm { get; set; } Property Value double WearRadius_mm $TC_DP15 — wear radius, mm. public double WearRadius_mm { get; set; } Property Value double Methods IsConsumedDpIndex(int) Whether the given $TC_DP index is consumed by the simulation and therefore stored as a typed property (3/4/5/6 geometry, 12/13/14/15 wear) rather than in VerbatimDpFields. public static bool IsConsumedDpIndex(int dpIndex) Parameters dpIndex int Returns bool SetDpField(int, double) Writes one $TC_DP field by DP index: consumed indices route to the typed properties, every other index lands verbatim in VerbatimDpFields — an importer can hand over a full controller dump without knowing which indices the simulation consumes. public void SetDpField(int dpIndex, double value) Parameters dpIndex int value double" + }, + "api/Hi.NcParsers.Dependencys.Siemens.SiemensToolOffsetTable.html": { + "href": "api/Hi.NcParsers.Dependencys.Siemens.SiemensToolOffsetTable.html", + "title": "Class SiemensToolOffsetTable | HiAPI-C# 2025", + "summary": "Class SiemensToolOffsetTable Namespace Hi.NcParsers.Dependencys.Siemens Assembly HiMech.dll Per-case Siemens tool offset table — the first concrete ISiemensToolOffsetConfig ($TC_DP model): one SiemensToolEdgeOffset row per (tool number T, cutting edge D), each carrying the three length components + radius with their wear counterparts, plus a verbatim bag for the remaining $TC_DP indices (round-tripped, not consumed — see VerbatimDpFields). Effective values are geometry + wear — Sinumerik wear ($TC_DP12..15) is additive; a worn-down tool carries a negative wear value. Unconfigured (T, D) pairs return 0 per the interface contract. Also carries the ToolNames map ($TC_TP2 analog, case-insensitive) so Siemens string tool calls (T=\"D8R1\") can resolve to the int-keyed act chain — consumed by ToolChangeSemantic. Per-case editable data — reaches the pipeline through SiemensToolOffsetTableProxy on the host's PerCaseNcDependencyList, never as a concrete instance baked into the shared runner. Deliberately separate from SiemensMachineDataTable (MD-prefixed machine-fixed OEM data) — same split rationale as SiemensFrameTable. public class SiemensToolOffsetTable : INcDependency, IMakeXmlSource, ISiemensToolOffsetConfig Inheritance object SiemensToolOffsetTable Implements INcDependency IMakeXmlSource ISiemensToolOffsetConfig 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 SiemensToolOffsetTable() Initializes an empty table. public SiemensToolOffsetTable() SiemensToolOffsetTable(XElement) Initializes a new instance by deserializing from src. public SiemensToolOffsetTable(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Properties Edges Offset rows keyed by (tool number T, cutting edge D). public Dictionary<(int Tool, int Edge), SiemensToolEdgeOffset> Edges { get; set; } Property Value Dictionary<(int Tool, int Edge), SiemensToolEdgeOffset> ToolNames Tool name → tool number map ($TC_TP2 analog) used to resolve Siemens string tool calls (T=“name”). Case-insensitive. public Dictionary ToolNames { get; set; } Property Value Dictionary XName XML element name for serialization. public static string XName { get; } Property Value string Methods FindToolNumberByName(string) Resolves a Siemens string tool name (T=“name”) to its tool number via ToolNames; null when unmapped. public int? FindToolNumberByName(string toolName) Parameters toolName string Returns int? GetToolHeightOffset_mm(int, int) Gets the effective tool height offset in mm for a specific tool and cutting edge: $TC_DP3 (length 1, typically Z direction) plus its additive wear $TC_DP12 — Sinumerik wear values are added, a shortened tool carries negative wear. Returns 0 if the tool/edge is not configured. public double GetToolHeightOffset_mm(int toolNumber, int edgeNumber) Parameters toolNumber int Tool number (T). edgeNumber int Cutting edge number (D). Returns double GetToolLengthOffset_mm(int, int, int) Gets an additional length offset for the specified direction. directionIndex: 0 = L1 ($TC_DP3, Z), 1 = L2 ($TC_DP4, X), 2 = L3 ($TC_DP5, Y). Returns 0 if not configured. public double GetToolLengthOffset_mm(int toolNumber, int edgeNumber, int directionIndex) Parameters toolNumber int edgeNumber int directionIndex int Returns double GetToolRadiusOffset_mm(int, int) Gets the effective tool radius offset in mm for a specific tool and cutting edge: $TC_DP6 (radius) plus its additive wear $TC_DP15. Returns 0 if the tool/edge is not configured. public double GetToolRadiusOffset_mm(int toolNumber, int edgeNumber) Parameters toolNumber int Tool number (T). edgeNumber int Cutting edge number (D). 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory TryGetToolHeightOffset_mm(int, int, out double) Attempts to get the effective tool height offset in mm ($TC_DP3 plus additive wear $TC_DP12) for a specific tool and cutting edge. Returns false when the (tool, edge) pair has no configured row, so the caller can fall back to another source (e.g. the generic IToolOffsetConfig). This is the only reliable miss signal — 0.0 is a legal configured offset, so the zero returned by GetToolHeightOffset_mm(int, int) cannot distinguish a vacant row from a configured zero. public bool TryGetToolHeightOffset_mm(int toolNumber, int edgeNumber, out double offset_mm) Parameters toolNumber int Tool number (T). edgeNumber int Cutting edge number (D). offset_mm double The effective height offset; 0 on miss. Returns bool" + }, + "api/Hi.NcParsers.Dependencys.Siemens.SiemensToolOffsetTableProxy.html": { + "href": "api/Hi.NcParsers.Dependencys.Siemens.SiemensToolOffsetTableProxy.html", + "title": "Class SiemensToolOffsetTableProxy | HiAPI-C# 2025", + "summary": "Class SiemensToolOffsetTableProxy Namespace Hi.NcParsers.Dependencys.Siemens Assembly HiMech.dll Get-or-create INcDependencyProxy for SiemensToolOffsetTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own per-case Siemens ($TC_DP) tool offset table. public sealed class SiemensToolOffsetTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource Inheritance object SiemensToolOffsetTableProxy Implements INcDependencyProxy INcDependency 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) Properties XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetNcDependency() Takes the host's SiemensToolOffsetTable (created during InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired. public INcDependency GetNcDependency() Returns INcDependency InitNcDependencyHost(INcDependencyListHost) Wires the host and materializes the per-case SiemensToolOffsetTable: when the host list has none, one is created and installed so it exists and is editable before any run. GetNcDependency() is then a pure take. Idempotent — an existing table is left untouched. public void InitNcDependencyHost(INcDependencyListHost host) Parameters host INcDependencyListHost MakeXmlSource(string, string, bool) Runtime-only proxy — the wired host and the resolved table are not persisted in the shared runner; serialization writes only the empty element. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcParsers.Dependencys.Siemens.html": { "href": "api/Hi.NcParsers.Dependencys.Siemens.html", "title": "Namespace Hi.NcParsers.Dependencys.Siemens | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.Dependencys.Siemens Classes SiemensFrameTable Sinumerik settable work coordinate frames ($P_UIFR[n]). Models G54–G57 (ISO-compatible), G505–G599 (extended Siemens), and G500 (cancel — always zero). On real Sinumerik, $P_UIFR is a frame array containing translation, rotation, scale and mirror per entry. HiNC currently consumes only the translation component, so this table stores Vec3d per id. $P_UIFR is NOT in the machine data table — therefore this is a separate dependency from SiemensMachineDataTable (which holds MD-prefixed OEM machine data such as MD30300 axis type, MD34010 reference position, etc.). SiemensMachineDataTable Siemens Sinumerik machine data table. Stores machine data (MD numbers) as system and per-axis parameters. MD10000–MD19999: General machine data. MD20000–MD29999: Axis-specific machine data. MD30000–MD39999: Axis-specific machine data (extended). Interfaces ISiemensToolOffsetConfig Siemens (840D/Sinumerik) tool offset configuration. Offsets are addressed by (tool number T, cutting edge D number), unlike IToolOffsetConfig where a single integer selects the row. Siemens stores up to 25 data fields per cutting edge ($TC_DP1..$TC_DP25), including three independent length components (L1/L2/L3 for Z/X/Y directions), radius, and corresponding wear values." + "summary": "Namespace Hi.NcParsers.Dependencys.Siemens Classes SiemensFrameTable Sinumerik settable work coordinate frames ($P_UIFR[n]). Models G54–G57 (ISO-compatible), G505–G599 (extended Siemens), and G500 (cancel — always zero). On real Sinumerik, $P_UIFR is a frame array containing translation, rotation, scale and mirror per entry. HiNC currently consumes only the translation component, so this table stores Vec3d per id. $P_UIFR is NOT in the machine data table — therefore this is a separate dependency from SiemensMachineDataTable (which holds MD-prefixed OEM machine data such as MD30300 axis type, MD34010 reference position, etc.). Deliberately not ISessionResettable: settable frames are setting data on the control — a $P_UIFR write from the program survives reset and power-off, so a replayed session must see the values the previous run wrote. SiemensFrameTableProxy Get-or-create INcDependencyProxy for SiemensFrameTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own per-case settable work frames ($P_UIFR, G54–G57…). SiemensGotoIterationDependency Watchdog for Siemens GOTOF/GOTOB jumps — the label-keyed sibling of the Fanuc FanucGotoIterationDependency, with the same “soft-cap + runtime counter + session-init ISessionResettable” shape. Kept per-brand (rather than widening the Fanuc dep's int-keyed bucket) for diagnostic clarity and because Siemens targets are named labels, not N-numbers. The counter key is (FileName, Label) where FileName is the source-level file path of the jump host (the relative form carried on FilePath). Source-level keying means multiple inline invocations of the same subprogram pool their counts, while two files each jumping to their own LBL1 stay isolated. Forward and backward jumps to the same label share one bucket — only the backward direction can loop, but a shared bucket keeps the accounting simple and the cap generous. The consuming syntax (SiemensGotoSyntax) counts after the condition gate and before the label scan; above MaxIterationsPerLabel the jump warns SiemensGoto--IterationLimitExceeded and falls through. A missing dependency disables the cap (Fanuc parity) — the brand preset wires one by default. SiemensLoopIterationDependency Watchdog shared by all four Siemens loop constructs (WHILE/ENDWHILE, FOR/ENDFOR, REPEAT/UNTIL, LOOP/ENDLOOP) — construct-neutral by design, unlike the Fanuc sibling (FanucWhileDoIterationDependency) which only has WHILE to guard. Same “soft-cap + runtime counter + session-init ISessionResettable” shape. Siemens loop constructs carry no LoopId, so the counter key is (FileName, BeginLineNo) — the loop-entry line recorded in the active frame identifies the construct uniquely within its file, and the file path isolates identically-numbered lines across files (and across inlined subprograms). The consuming syntax (SiemensLoopSyntax) counts at the back-jump step (the loop terminator / falsy UNTIL), so a loop whose condition is false from the outset consumes zero iterations. Above MaxIterationsPerLoop the terminator warns SiemensLoop--IterationLimitExceeded, pops the frame and falls through. A missing dependency disables the cap for the condition-bearing constructs (Fanuc parity) but hard-blocks the ENDLOOP back-jump — LOOP has no exit condition, so an uncapped back-jump would hang the pipeline deterministically. SiemensMachineDataTable Siemens Sinumerik machine data table. Stores machine data (MD numbers) as system and per-axis parameters. MD10000–MD19999: General machine data. MD20000–MD29999: Axis-specific machine data. MD30000–MD39999: Axis-specific machine data (extended). Deliberately not ISessionResettable: machine data is control configuration a part program cannot mutate, so there is no session-scoped state to clear. SiemensMachineDataTableProxy Get-or-create INcDependencyProxy for SiemensMachineDataTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own machine data table. Like the Fanuc-family parameter table, the Siemens machine data mixes machine config (axis types / reference positions / velocities / indexing tables) with per-project edits, so the proxy carries a fixed machine-config Seed that is serialized into the shared runner file. On wire, the host receives a deep clone of the seed only when it has no SiemensMachineDataTable yet; a loaded project's own full table wins, so a same-brand re-flash re-binds to the project's machine data instead of resetting it. The resolved host table is fully serialized on the project. The proxy deliberately does not implement the machine-config interfaces (IMachineAxisConfig, IIndexingPositionConfig, etc.) — every machine-config consumer must go through GetEffectiveNcDependencyList() so it sees the resolved host table, never this placeholder. SiemensRParameterTable Sinumerik R-parameter table (R0-R999). R parameters are the Siemens arithmetic-variable surface (R63=100.5, C=R61, R26=(558.5+14)/2); on real hardware they live in retentive memory (sized by MD28050) and survive program end and power cycles, so — like the Fanuc sibling RetainedCommonVariableTable — this table is not session-reset and is serialised into the project file. Reads flow through Get(string) (registered automatically because the table sits on the runner's effective NcDependencyList); writes flow through SiemensRParameterReadingSyntax, which consumes literal Parsing.Assignments.Rn entries after VariableEvaluatorSyntax has normalized expression RHS to literals. Vacant is represented by null: either the dictionary has no entry for the key, or the entry maps to null — both read identically. Real Sinumerik default-initialises every allocated R to 0, but a vacant read failing loud (Variable--Vacant via the evaluator) surfaces missing setup data instead of silently machining with 0. SiemensRParameterTableProxy Get-or-create INcDependencyProxy for SiemensRParameterTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own per-case R parameters (R0–R999). SiemensToolEdgeOffset One Siemens cutting-edge offset row ($TC_DP fields for a (T, D) pair): geometry lengths L1/L2/L3 ($TC_DP3/4/5), radius ($TC_DP6) and the corresponding wear values ($TC_DP12/13/14/15) as typed properties (all mm), plus VerbatimDpFields for every other $TC_DP index — same split as SiemensMachineDataTable's well-known-MD properties over a generic parameter bag. A typed property means the simulation consumes the field; a bag entry means the value is stored and round-tripped but not interpreted. SiemensToolOffsetTable Per-case Siemens tool offset table — the first concrete ISiemensToolOffsetConfig ($TC_DP model): one SiemensToolEdgeOffset row per (tool number T, cutting edge D), each carrying the three length components + radius with their wear counterparts, plus a verbatim bag for the remaining $TC_DP indices (round-tripped, not consumed — see VerbatimDpFields). Effective values are geometry + wear — Sinumerik wear ($TC_DP12..15) is additive; a worn-down tool carries a negative wear value. Unconfigured (T, D) pairs return 0 per the interface contract. Also carries the ToolNames map ($TC_TP2 analog, case-insensitive) so Siemens string tool calls (T=\"D8R1\") can resolve to the int-keyed act chain — consumed by ToolChangeSemantic. Per-case editable data — reaches the pipeline through SiemensToolOffsetTableProxy on the host's PerCaseNcDependencyList, never as a concrete instance baked into the shared runner. Deliberately separate from SiemensMachineDataTable (MD-prefixed machine-fixed OEM data) — same split rationale as SiemensFrameTable. SiemensToolOffsetTableProxy Get-or-create INcDependencyProxy for SiemensToolOffsetTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own per-case Siemens ($TC_DP) tool offset table. Interfaces ISiemensToolOffsetConfig Siemens (840D/Sinumerik) tool offset configuration. Offsets are addressed by (tool number T, cutting edge D number), unlike IToolOffsetConfig where a single integer selects the row. Siemens stores up to 25 data fields per cutting edge ($TC_DP1..$TC_DP25), including three independent length components (L1/L2/L3 for Z/X/Y directions), radius, and corresponding wear values." }, "api/Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html": { "href": "api/Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html", "title": "Class SyntecParameterTable | HiAPI-C# 2025", - "summary": "Class SyntecParameterTable Namespace Hi.NcParsers.Dependencys.Syntec Assembly HiMech.dll Syntec controller parameter table. Stores system parameters (single value) and axis parameters (per-axis value) following Syntec Pr-prefixed parameter numbering. Syntec is largely Fanuc-compatible in parameter numbering, but some parameters differ in unit or interpretation. For example, Pr4002 (peck retraction) is stored in microns whereas Fanuc #4002 stores in mm. public class SyntecParameterTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, ICannedCycleConfig, IIsoCoordinateConfig, INcDependency, IMakeXmlSource Inheritance object ControllerParameterTableBase SyntecParameterTable Implements IHomeMcConfig IMachineAxisConfig IRapidFeedrateConfig IStrokeLimitConfig ICannedCycleConfig IIsoCoordinateConfig INcDependency IMakeXmlSource Inherited Members ControllerParameterTableBase.GetLinearAxisRapidRate_mmdmin(string) ControllerParameterTableBase.GetRotaryAxisRapidRate_degdmin(string) ControllerParameterTableBase.SetLinearAxisRapidRate_mmdmin(string, double) ControllerParameterTableBase.SetRotaryAxisRapidRate_degdmin(string, double) ControllerParameterTableBase.GetPositiveLimit(string) ControllerParameterTableBase.GetNegativeLimit(string) ControllerParameterTableBase.SetPositiveLimit(string, double) ControllerParameterTableBase.SetNegativeLimit(string, double) ControllerParameterTableBase.SystemParams ControllerParameterTableBase.AxisParams ControllerParameterTableBase.IntAxisParams ControllerParameterTableBase.AxisParam(int) ControllerParameterTableBase.IntAxisParam(int) ControllerParameterTableBase.GetHomePosition(string) ControllerParameterTableBase.SetHomePosition(string, double) ControllerParameterTableBase.AxisNames ControllerParameterTableBase.IsRotaryAxis(string) ControllerParameterTableBase.SetAxis(string, AxisType) ControllerParameterTableBase.RemoveAxis(string) ControllerParameterTableBase.ConfigureRotaryAxis(string, double, double) ControllerParameterTableBase.ReadXml(XElement) ControllerParameterTableBase.WriteXml(string) 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 CutterCompensationType is shared with Fanuc because both follow the same ISO cutter compensation standard. Consider relocating to the shared Hi.NcParsers.Dependencys namespace if more brands need it. Constructors SyntecParameterTable() Initializes a new instance, seeding the ISO G54-G59 / G54.1 P-table coordinate offsets with their default values. public SyntecParameterTable() SyntecParameterTable(XElement) Initializes a new instance by deserializing from src. public SyntecParameterTable(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Fields PrAxisType Pr1006: Axis type per axis. See AxisType. public const int PrAxisType = 1006 Field Value int PrControlledAxes Pr1020: Number of controlled axes. public const int PrControlledAxes = 1020 Field Value int PrCutterCompType Pr5003: Cutter compensation startup type. See CutterCompensationType. public const int PrCutterCompType = 5003 Field Value int PrG54OffsetBase Pr5221: Base address (X) of G54 work coordinate offset. G54.Y at +1 (Pr5222), G54.Z at +2 (Pr5223). G55..G59 follow at stride 20. Syntec follows Fanuc-compatible numbering — see IsoCoordinateAddressMap. public const int PrG54OffsetBase = 5221 Field Value int PrG54p1P1OffsetBase Pr7001: Base address (X) of G54.1 P1 extended work coordinate offset. G54.1 P2..P48 follow at stride 20. See IsoCoordinateAddressMap. public const int PrG54p1P1OffsetBase = 7001 Field Value int PrMaxSpindleSpeed Pr3741: Maximum spindle speed (RPM). public const int PrMaxSpindleSpeed = 3741 Field Value int PrPeckRetraction Pr4002: G83 peck drilling retraction distance (microns). Syntec stores this value in microns; convert ×0.001 for mm. public const int PrPeckRetraction = 4002 Field Value int PrRapidRate Pr1420: Rapid traverse rate per axis (mm/min or deg/min). public const int PrRapidRate = 1420 Field Value int PrReferencePosition Pr1240: G28 first reference position per axis. public const int PrReferencePosition = 1240 Field Value int PrStrokeLimitNeg Pr1320: Negative stroke limit per axis (mm or deg). public const int PrStrokeLimitNeg = 1320 Field Value int PrStrokeLimitPos Pr1300: Positive stroke limit per axis (mm or deg). public const int PrStrokeLimitPos = 1300 Field Value int Properties AxisPr1006 Pr1006: Axis type per axis. See AxisType. See AxisNames. See IsRotaryAxis(string). public Dictionary AxisPr1006 { get; set; } Property Value Dictionary AxisPr1240 Pr1240: G28 first reference position per axis. See IHomeMcConfig. See GetHomePosition(string). See SetHomePosition(string, double). public Dictionary AxisPr1240 { get; set; } Property Value Dictionary AxisPr1420 Pr1420: Rapid traverse rate per axis (mm/min or deg/min). See IRapidFeedrateConfig. public Dictionary AxisPr1420 { get; set; } Property Value Dictionary AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected override int AxisTypeParamId { get; } Property Value int ControlledAxisCount Number of controlled axes. Delegates to Pr1020. public int ControlledAxisCount { get; set; } Property Value int CoordinateIds Enumerates the G-code coordinate ids that this provider currently has data for. public IEnumerable CoordinateIds { get; } Property Value IEnumerable CutterCompType Cutter compensation startup type. Delegates to Pr5003. public CutterCompensationType CutterCompType { get; set; } Property Value CutterCompensationType Default3Axis Default 3-axis Syntec milling machine. public static SyntecParameterTable Default3Axis { get; } Property Value SyntecParameterTable IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected override string IdAttributeName { get; } Property Value string MaxSpindleSpeed_rpm Maximum spindle speed in RPM. Delegates to Pr3741. public double MaxSpindleSpeed_rpm { get; set; } Property Value double PeckRetractionDistance_mm G83 peck drilling clearance distance above the previous stroke bottom before re-entering at feed (mm). public double PeckRetractionDistance_mm { get; } Property Value double Remarks Syntec Pr4002 stores peck retraction distance in microns. Multiply by 0.001 to convert to mm. Pr1020 Pr1020: Number of controlled axes. See ControlledAxisCount. public int Pr1020 { get; set; } Property Value int Pr3741 Pr3741: Maximum spindle speed (RPM). See MaxSpindleSpeed_rpm. public double Pr3741 { get; set; } Property Value double Pr5003 Pr5003: Cutter compensation startup type. See CutterCompType. public CutterCompensationType Pr5003 { get; set; } Property Value CutterCompensationType RapidRateParamId Parameter/MD/MP number for rapid traverse rate per axis. Null if not defined for this controller brand. protected override int? RapidRateParamId { get; } Property Value int? ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected override int ReferencePositionParamId { get; } Property Value int StrokeLimitNegParamId Parameter/MD/MP number for negative stroke limit per axis. Null if not defined for this controller brand. protected override int? StrokeLimitNegParamId { get; } Property Value int? StrokeLimitPosParamId Parameter/MD/MP number for positive stroke limit per axis. Null if not defined for this controller brand. protected override int? StrokeLimitPosParamId { get; } Property Value int? XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetCoordinateOffset(string) Gets the offset for the given G-code coordinate id. Returns null when no offset is configured for that id by this provider (callers iterate the next provider, or fall back to Zero). public Vec3d GetCoordinateOffset(string coordId) Parameters coordId string Returns Vec3d MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public override 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetCoordinateOffset(string, Vec3d) Sets the offset for the given G-code coordinate id. public void SetCoordinateOffset(string coordId, Vec3d offset) Parameters coordId string offset Vec3d" + "summary": "Class SyntecParameterTable Namespace Hi.NcParsers.Dependencys.Syntec Assembly HiMech.dll Syntec controller parameter table. Stores system parameters (single value) and axis parameters (per-axis value) following Syntec Pr-prefixed parameter numbering. Syntec is largely Fanuc-compatible in parameter numbering, but some parameters differ in unit or interpretation. For example, Pr4002 (peck retraction) is stored in microns whereas Fanuc #4002 stores in mm. public class SyntecParameterTable : ControllerParameterTableBase, IHomeMcConfig, IMachineAxisConfig, IRapidFeedrateConfig, IStrokeLimitConfig, ISpindleControlConfig, IMCodeDeclarationConfig, IToolChangeTriggerConfig, ICannedCycleConfig, IIsoCoordinateConfig, INcDependency, IMakeXmlSource Inheritance object ControllerParameterTableBase SyntecParameterTable Implements IHomeMcConfig IMachineAxisConfig IRapidFeedrateConfig IStrokeLimitConfig ISpindleControlConfig IMCodeDeclarationConfig IToolChangeTriggerConfig ICannedCycleConfig IIsoCoordinateConfig INcDependency IMakeXmlSource Inherited Members ControllerParameterTableBase.GetLinearAxisRapidRate_mmdmin(string) ControllerParameterTableBase.GetRotaryAxisRapidRate_degdmin(string) ControllerParameterTableBase.SetLinearAxisRapidRate_mmdmin(string, double) ControllerParameterTableBase.SetRotaryAxisRapidRate_degdmin(string, double) ControllerParameterTableBase.GetPositiveLimit(string) ControllerParameterTableBase.GetNegativeLimit(string) ControllerParameterTableBase.SetPositiveLimit(string, double) ControllerParameterTableBase.SetNegativeLimit(string, double) ControllerParameterTableBase.DescribeIntAxisParam(int) ControllerParameterTableBase.SystemParams ControllerParameterTableBase.AxisParams ControllerParameterTableBase.IntAxisParams ControllerParameterTableBase.AxisParam(int) ControllerParameterTableBase.IntAxisParam(int) ControllerParameterTableBase.GetHomePosition(string) ControllerParameterTableBase.SetHomePosition(string, double) ControllerParameterTableBase.AxisNames ControllerParameterTableBase.IsRotaryAxis(string) ControllerParameterTableBase.SetAxis(string, AxisType) ControllerParameterTableBase.RemoveAxis(string) ControllerParameterTableBase.ConfigureRotaryAxis(string, double, double) ControllerParameterTableBase.MCodeDeclarations ControllerParameterTableBase.EffectiveMCodeDeclarations ControllerParameterTableBase.TryGetMCodeEffects(string, out MCodeEffects) ControllerParameterTableBase.DeclareMCode(string, MCodeEffects) ControllerParameterTableBase.RemoveMCodeDeclaration(string) ControllerParameterTableBase.ToolWordTriggersChange ControllerParameterTableBase.SpindleDirectionCodes ControllerParameterTableBase.TryResolveDirection(string, out SpindleDirection) ControllerParameterTableBase.ConfigureSpindleDirectionCode(string, SpindleDirection) ControllerParameterTableBase.RemoveSpindleDirectionCode(string) ControllerParameterTableBase.ReadXml(XElement) ControllerParameterTableBase.WriteXml(string) ControllerParameterTableBase.CopyParamsTo(ControllerParameterTableBase) 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 CutterCompensationType is shared with Fanuc because both follow the same ISO cutter compensation standard. Consider relocating to the shared Hi.NcParsers.Dependencys namespace if more brands need it. Constructors SyntecParameterTable() Initializes a new instance, seeding the ISO G54-G59 / G54.1 P-table coordinate offsets with their default values. public SyntecParameterTable() SyntecParameterTable(XElement) Initializes a new instance by deserializing from src. public SyntecParameterTable(XElement src) Parameters src XElement XML element produced by MakeXmlSource(string, string, bool). Fields PrAxisType Pr1006: Axis type per axis. See AxisType. public const int PrAxisType = 1006 Field Value int PrControlledAxes Pr1020: Number of controlled axes. public const int PrControlledAxes = 1020 Field Value int PrCutterCompType Pr5003: Cutter compensation startup type. See CutterCompensationType. public const int PrCutterCompType = 5003 Field Value int PrG54OffsetBase Pr5221: Base address (X) of G54 work coordinate offset. G54.Y at +1 (Pr5222), G54.Z at +2 (Pr5223). G55..G59 follow at stride 20. Syntec follows Fanuc-compatible numbering — see IsoCoordinateAddressMap. public const int PrG54OffsetBase = 5221 Field Value int PrG54p1P1OffsetBase Pr7001: Base address (X) of G54.1 P1 extended work coordinate offset. G54.1 P2..P48 follow at stride 20. See IsoCoordinateAddressMap. public const int PrG54p1P1OffsetBase = 7001 Field Value int PrMaxSpindleSpeed Pr3741: Maximum spindle speed (RPM). public const int PrMaxSpindleSpeed = 3741 Field Value int PrPeckRetraction Pr4002: G83 peck drilling retraction distance (microns). Syntec stores this value in microns; convert ×0.001 for mm. public const int PrPeckRetraction = 4002 Field Value int PrRapidRate Pr1420: Rapid traverse rate per axis (mm/min or deg/min). public const int PrRapidRate = 1420 Field Value int PrReferencePosition Pr1240: G28 first reference position per axis. public const int PrReferencePosition = 1240 Field Value int PrStrokeLimitNeg Pr1320: Negative stroke limit per axis (mm or deg). public const int PrStrokeLimitNeg = 1320 Field Value int PrStrokeLimitPos Pr1300: Positive stroke limit per axis (mm or deg). public const int PrStrokeLimitPos = 1300 Field Value int Properties AxisPr1006 Pr1006: Axis type per axis. See AxisType. See AxisNames. See IsRotaryAxis(string). public Dictionary AxisPr1006 { get; set; } Property Value Dictionary AxisPr1240 Pr1240: G28 first reference position per axis. See IHomeMcConfig. See GetHomePosition(string). See SetHomePosition(string, double). public Dictionary AxisPr1240 { get; set; } Property Value Dictionary AxisPr1420 Pr1420: Rapid traverse rate per axis (mm/min or deg/min). See IRapidFeedrateConfig. public Dictionary AxisPr1420 { get; set; } Property Value Dictionary AxisTypeParamId Parameter/MD/MP number for axis type (linear/rotary/spindle). protected override int AxisTypeParamId { get; } Property Value int ControlledAxisCount Number of controlled axes. Delegates to Pr1020. public int ControlledAxisCount { get; set; } Property Value int CoordinateIds Enumerates the G-code coordinate ids that this provider currently has data for. public IEnumerable CoordinateIds { get; } Property Value IEnumerable CutterCompType Cutter compensation startup type. Delegates to Pr5003. public CutterCompensationType CutterCompType { get; set; } Property Value CutterCompensationType Default3Axis Default 3-axis Syntec milling machine. public static SyntecParameterTable Default3Axis { get; } Property Value SyntecParameterTable IdAttributeName XML attribute name for the parameter ID (“ParamId”, “MdId”, “MpId”). protected override string IdAttributeName { get; } Property Value string MaxSpindleSpeed_rpm Maximum spindle speed in RPM. Delegates to Pr3741. public double MaxSpindleSpeed_rpm { get; set; } Property Value double PeckRetractionDistance_mm G83 peck drilling clearance distance above the previous stroke bottom before re-entering at feed (mm). public double PeckRetractionDistance_mm { get; } Property Value double Remarks Syntec Pr4002 stores peck retraction distance in microns. Multiply by 0.001 to convert to mm. Pr1020 Pr1020: Number of controlled axes. See ControlledAxisCount. public int Pr1020 { get; set; } Property Value int Pr3741 Pr3741: Maximum spindle speed (RPM). See MaxSpindleSpeed_rpm. public double Pr3741 { get; set; } Property Value double Pr5003 Pr5003: Cutter compensation startup type. See CutterCompType. public CutterCompensationType Pr5003 { get; set; } Property Value CutterCompensationType RapidRateParamId Parameter/MD/MP number for rapid traverse rate per axis. Null if not defined for this controller brand. protected override int? RapidRateParamId { get; } Property Value int? ReferencePositionParamId Parameter/MD/MP number for reference position (G28 home). protected override int ReferencePositionParamId { get; } Property Value int StrokeLimitNegParamId Parameter/MD/MP number for negative stroke limit per axis. Null if not defined for this controller brand. protected override int? StrokeLimitNegParamId { get; } Property Value int? StrokeLimitPosParamId Parameter/MD/MP number for positive stroke limit per axis. Null if not defined for this controller brand. protected override int? StrokeLimitPosParamId { get; } Property Value int? XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods DeepClone() Returns an independent deep copy of this table (all three parameter dictionaries cloned). Used by SyntecParameterTableProxy to clone its fixed machine-config seed into a host that has no table yet. public SyntecParameterTable DeepClone() Returns SyntecParameterTable DescribeAxisParam(int) Per-axis double counterpart of DescribeSystemParam(int). Covers the role ids the base class consumes (reference position, rapid rate, stroke limits); brand subclasses may override for their own vocabulary or extra numbers. public override string DescribeAxisParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns string DescribeSystemParam(int) Short usage label for a well-known system parameter id, or null when the id has no modeled meaning (a raw pass-through row). Brand subclasses extend this with their own well-known numbers; the native parameter UI shows the label next to the raw id so an operator can tell the modeled parameters from free extras. public override string DescribeSystemParam(int paramId) Parameters paramId int Brand-specific parameter/MD/MP number. Returns string GetCoordinateOffset(string) Gets the offset for the given G-code coordinate id. Returns null when no offset is configured for that id by this provider (callers iterate the next provider, or fall back to Zero). public Vec3d GetCoordinateOffset(string coordId) Parameters coordId string Returns Vec3d MakeXmlSource(string, string, bool) Creates an XML representation of the object. This method may also generate additional resources such as related files. public override 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory SetCoordinateOffset(string, Vec3d) Sets the offset for the given G-code coordinate id. public void SetCoordinateOffset(string coordId, Vec3d offset) Parameters coordId string offset Vec3d" + }, + "api/Hi.NcParsers.Dependencys.Syntec.SyntecParameterTableProxy.html": { + "href": "api/Hi.NcParsers.Dependencys.Syntec.SyntecParameterTableProxy.html", + "title": "Class SyntecParameterTableProxy | HiAPI-C# 2025", + "summary": "Class SyntecParameterTableProxy Namespace Hi.NcParsers.Dependencys.Syntec Assembly HiMech.dll Get-or-create INcDependencyProxy for SyntecParameterTable: the Syntec sibling of FanucParameterTableProxy. Like Fanuc, the Syntec parameter table mixes machine config with per-case work-coordinate offsets, so the proxy carries a fixed machine-config Seed serialized into the shared runner file. On wire, the host receives a deep clone of the seed only when it has no SyntecParameterTable yet; a loaded project's own full table wins. The proxy does not implement the machine-config interfaces — consumers go through GetEffectiveNcDependencyList(). public sealed class SyntecParameterTableProxy : INcDependencyProxy, INcDependency, IMakeXmlSource Inheritance object SyntecParameterTableProxy Implements INcDependencyProxy INcDependency 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 SyntecParameterTableProxy(SyntecParameterTable) Creates a proxy carrying seed as its machine-config seed, defaulting to Default3Axis. public SyntecParameterTableProxy(SyntecParameterTable seed = null) Parameters seed SyntecParameterTable The machine-config seed cloned into a fresh host. Properties Seed The fixed machine-config seed deep-cloned into a host that has no SyntecParameterTable yet. Carried on the shared runner and serialized into the runner file — never the per-case instance, which lives on the host (see GetNcDependency()). public SyntecParameterTable Seed { get; } Property Value SyntecParameterTable XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods GetNcDependency() Takes the host's SyntecParameterTable (created during InitNcDependencyHost(INcDependencyListHost)). Returns null when no host is wired. public INcDependency GetNcDependency() Returns INcDependency InitNcDependencyHost(INcDependencyListHost) Wires the host and materializes the host SyntecParameterTable: when the host list has none, a deep clone of Seed is installed so machine config + per-case coordinates exist and are editable before any run. GetNcDependency() is then a pure take. Idempotent — an existing host table (a loaded project's) is left untouched. public void InitNcDependencyHost(INcDependencyListHost host) Parameters host INcDependencyListHost MakeXmlSource(string, string, bool) Serializes only the machine-config Seed — the wired host and the resolved host table are runtime-only and not persisted in the shared runner. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Rehydrates the carried Seed from the nested SyntecParameterTable element, falling back to Default3Axis when absent. Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcParsers.Dependencys.Syntec.html": { "href": "api/Hi.NcParsers.Dependencys.Syntec.html", "title": "Namespace Hi.NcParsers.Dependencys.Syntec | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.Dependencys.Syntec Classes SyntecParameterTable Syntec controller parameter table. Stores system parameters (single value) and axis parameters (per-axis value) following Syntec Pr-prefixed parameter numbering. Syntec is largely Fanuc-compatible in parameter numbering, but some parameters differ in unit or interpretation. For example, Pr4002 (peck retraction) is stored in microns whereas Fanuc #4002 stores in mm." + "summary": "Namespace Hi.NcParsers.Dependencys.Syntec Classes SyntecParameterTable Syntec controller parameter table. Stores system parameters (single value) and axis parameters (per-axis value) following Syntec Pr-prefixed parameter numbering. Syntec is largely Fanuc-compatible in parameter numbering, but some parameters differ in unit or interpretation. For example, Pr4002 (peck retraction) is stored in microns whereas Fanuc #4002 stores in mm. SyntecParameterTableProxy Get-or-create INcDependencyProxy for SyntecParameterTable: the Syntec sibling of FanucParameterTableProxy. Like Fanuc, the Syntec parameter table mixes machine config with per-case work-coordinate offsets, so the proxy carries a fixed machine-config Seed serialized into the shared runner file. On wire, the host receives a deep clone of the seed only when it has no SyntecParameterTable yet; a loaded project's own full table wins. The proxy does not implement the machine-config interfaces — consumers go through GetEffectiveNcDependencyList()." }, "api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html": { "href": "api/Hi.NcParsers.Dependencys.SystemWired.FileIndexCounterDependency.html", "title": "Class FileIndexCounterDependency | HiAPI-C# 2025", - "summary": "Class FileIndexCounterDependency Namespace Hi.NcParsers.Dependencys.SystemWired Assembly HiMech.dll Per-session monotonically-increasing file index allocator. Holds the counter as a private field; Allocate() returns the next unused value and increments. OnSessionReset() rewinds to 0 — the owning RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) invokes it via the ISessionResettable sweep on the same edge that initializes a fresh NcRunnerSessionState, so a controller power-reset clears both the syntax-piece pipeline and this counter in lock-step. Two consumers share one allocator: RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) allocates one index per top-level NC file that streams through the runner. SubProgramCallSyntax allocates a fresh index for each inlined subprogram invocation, including each L repetition — distinct indices ensure (FileIndex, LineIndex) pairs stay unique across overlapping subprogram line ranges. Holding the counter on this dependency rather than on NcRunnerSessionState avoids a duplicate source-of-truth: the dep is the single seam through which syntaxes reach the counter, and there is no third reader that would benefit from session-state visibility. public class FileIndexCounterDependency : INcDependency, IMakeXmlSource, ISessionResettable Inheritance object FileIndexCounterDependency Implements INcDependency IMakeXmlSource ISessionResettable 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 FileIndexCounterDependency() Initializes a new instance with the counter at 0. public FileIndexCounterDependency() Properties XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods Allocate() Returns the next unused file index and post-increments the counter. First call after construction or OnSessionReset() returns 0. public int Allocate() Returns int MakeXmlSource(string, string, bool) Runtime-only dependency — the live counter value is per-session and not meaningful to persist; serialization writes only the empty element so the dependency survives an XML round-trip with the counter implicitly reset to 0. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement OnSessionReset() Rewinds the counter to 0. Called by RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) via the ISessionResettable sweep on the same edge that initializes a fresh session pipeline so a single brand-preset runner can be reused across sessions without leaking file indices from the previous session. public void OnSessionReset() Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class FileIndexCounterDependency Namespace Hi.NcParsers.Dependencys.SystemWired Assembly HiMech.dll Per-session monotonically-increasing file index allocator. Holds the counter as a private field; Allocate() returns the next unused value and increments. OnSessionReset() rewinds to 0 — the owning RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) invokes it via the ISessionResettable sweep on the same edge that initializes a fresh NcRunnerSessionState, so a controller power-reset clears both the syntax-piece pipeline and this counter in lock-step. Two consumers share one allocator: RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) allocates one index per top-level NC file that streams through the runner. SubProgramCallSyntax allocates a fresh index for each inlined subprogram invocation, including each L repetition — distinct indices ensure (FileIndex, LineIndex) pairs stay unique across overlapping subprogram line ranges. Holding the counter on this dependency rather than on NcRunnerSessionState avoids a duplicate source-of-truth: the dep is the single seam through which syntaxes reach the counter, and there is no third reader that would benefit from session-state visibility. public class FileIndexCounterDependency : INcDependency, IMakeXmlSource, ISessionResettable Inheritance object FileIndexCounterDependency Implements INcDependency IMakeXmlSource ISessionResettable 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 FileIndexCounterDependency() Initializes a new instance with the counter at 0. public FileIndexCounterDependency() Properties XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods Allocate() Returns the next unused file index and post-increments the counter. First call after construction or OnSessionReset() returns 0. public int Allocate() Returns int MakeXmlSource(string, string, bool) Runtime-only dependency — the live counter value is per-session and not meaningful to persist; serialization writes only the empty element so the dependency survives an XML round-trip with the counter implicitly reset to 0. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement OnSessionReset() Rewinds the counter to 0. Called by RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) via the ISessionResettable sweep on the same edge that initializes a fresh session pipeline so a single brand-preset runner can be reused across sessions without leaking file indices from the previous session. public void OnSessionReset() Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcParsers.Dependencys.SystemWired.MachiningServiceDependency.html": { "href": "api/Hi.NcParsers.Dependencys.SystemWired.MachiningServiceDependency.html", "title": "Class MachiningServiceDependency | HiAPI-C# 2025", "summary": "Class MachiningServiceDependency Namespace Hi.NcParsers.Dependencys.SystemWired Assembly HiMech.dll Exposes the full IMachiningService surface to NC pipeline components — currently provided for client-authored syntaxes / semantics that need broad host access (machining equipment, session, tool house, time mapping, …). The built-in CSV pipeline does not consume this dependency; it uses the narrower StepPropertyAccessDictionaryDependency instead. public class MachiningServiceDependency : INcDependency, IMakeXmlSource Inheritance object MachiningServiceDependency 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 MachiningServiceDependency() Initializes a new instance with no ServiceProvider; the host wires one before queries. public MachiningServiceDependency() MachiningServiceDependency(Func) Initializes a new instance with the given ServiceProvider. public MachiningServiceDependency(Func provider) Parameters provider Func Delegate that resolves the live service at lookup time. Properties Service The live machining service, or null when ServiceProvider is unset or returns null. public IMachiningService Service { get; } Property Value IMachiningService ServiceProvider Runtime provider for the machining service. Null provider or null return means the host is not wired; consumers must null-check. public Func ServiceProvider { get; set; } Property Value Func XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Runtime-only dependency — the provider is wired per host and not meaningful to persist; serialization writes only the empty element so the dependency survives an XML round-trip. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, + "api/Hi.NcParsers.Dependencys.SystemWired.MappingAnchorDependency.html": { + "href": "api/Hi.NcParsers.Dependencys.SystemWired.MappingAnchorDependency.html", + "title": "Class MappingAnchorDependency | HiAPI-C# 2025", + "summary": "Class MappingAnchorDependency Namespace Hi.NcParsers.Dependencys.SystemWired Assembly HiMech.dll Narrow NC-pipeline dependency that lets a CSV semantic convert an absolute controller instant to a run-relative timecode against the project mapping anchor, without reaching the whole IMachiningService surface (cf. MachiningServiceDependency). The host wires ToTimecodeProvider to TimeMapping.ToTimecode, whose set-once ??= seeds (lazily builds) the anchor on first use. Runtime-only: the provider is wired per host and not persisted; serialization writes only the empty element so the dependency survives an XML round-trip. public class MappingAnchorDependency : INcDependency, IMakeXmlSource Inheritance object MappingAnchorDependency 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 MappingAnchorDependency() Initializes a new instance with no provider; the host wires one before queries. public MappingAnchorDependency() Properties ToTimecodeProvider Runtime provider for the anchor converter (TimeMapping.ToTimecode). Null provider means the host is not wired; consumers must null-check and fall back to the legacy time-of-day. public Func ToTimecodeProvider { get; set; } Property Value Func 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory ToTimecode(DateTime) Converts instant to a run-relative timecode via the wired anchor, or null when no provider is wired. public TimeSpan? ToTimecode(DateTime instant) Parameters instant DateTime Returns TimeSpan?" + }, "api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html": { "href": "api/Hi.NcParsers.Dependencys.SystemWired.NcKinematicsDependency.html", "title": "Class NcKinematicsDependency | HiAPI-C# 2025", - "summary": "Class NcKinematicsDependency Namespace Hi.NcParsers.Dependencys.SystemWired Assembly HiMech.dll Provides IMachineKinematics as an INcDependency for SoftNcRunner.NcDependencyList. The actual kinematics instance is resolved at runtime via KinematicsProvider. This supports scenarios where the machine tool is loaded or changed after the runner is configured (e.g., XML config loaded first, kinematics assigned later). Consumed by G53p1RotaryPositionSyntax, IsoG68p2TiltSyntax, and McLinearMotionSemantic via dependencyList.OfType(). public class NcKinematicsDependency : INcDependency, IMakeXmlSource, IMachineKinematics Inheritance object NcKinematicsDependency Implements INcDependency IMakeXmlSource IMachineKinematics 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 NcKinematicsDependency() Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics. public NcKinematicsDependency() NcKinematicsDependency(Func) Initializes a new instance with the given KinematicsProvider. public NcKinematicsDependency(Func provider) Parameters provider Func Delegate that resolves the live IMachineKinematics at lookup time. Properties KinematicsProvider Runtime provider for the kinematics instance. Null provider or null return means kinematics is not yet available. public Func KinematicsProvider { get; set; } Property Value Func 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. McAbcToMat(Vec3d) Converts machine ABC coordinates to a tilt matrix. the tilt matrix is the transformation matrix from table to attacher. public Mat4d McAbcToMat(Vec3d mcAbc_rad) Parameters mcAbc_rad Vec3d The machine ABC coordinates in radians Returns Mat4d The tilt matrix McToMat(DVec3d) Converts machine coordinates to an attacher matrix. public Mat4d McToMat(DVec3d mcXyzabc) Parameters mcXyzabc DVec3d The machine coordinates Returns Mat4d The attacher matrix McToPn(DVec3d) Machine coordinate to tool attacher Pn (Point and Normal). The Pn is from table buckle to tool attacher. public DVec3d McToPn(DVec3d mcXyzabc) Parameters mcXyzabc DVec3d machine coordinate. ABC is in radian. Returns DVec3d tool attacher Pn (Point and Normal) OrientationToMcAbc(Mat4d, out Vec3d) Converts a tilt matrix to machine ABC coordinates. the tilt matrix is the transformation matrix from table to attacher. the solution only fit the orientation part of the tiltMat. public bool OrientationToMcAbc(Mat4d tiltMat, out Vec3d mcAbc_rad) Parameters tiltMat Mat4d The tilt matrix to convert mcAbc_rad Vec3d Output parameter that will contain the machine ABC coordinates in radians Returns bool Whether the conversion was successful OrientationToMcAbc(Vec3d, out Vec3d) Converts a target tool axial direction (endpoint orientation) to machine ABC coordinates. Only the axial alignment is constrained; rotation about the tool axis is free. Use this in place of OrientationToMcAbc(Mat4d, out Vec3d) when the rotation about the tool axis is irrelevant (e.g. G53.1 rotary positioning). The axial-only solve avoids the redundant 6-target full-matrix constraint and is more likely to converge for tilt configurations such as G68.2 I180 J90 K0. public bool OrientationToMcAbc(Vec3d toolAxialNormal, out Vec3d mcAbc_rad) Parameters toolAxialNormal Vec3d Target tool axial direction in table coordinates (the third row of the tilt matrix; e.g. AxialNormal). mcAbc_rad Vec3d Output machine ABC coordinates in radians. Returns bool Whether the conversion was successful. PnToMc(DVec3d, out DVec3d) Tool attacher Pn (Point and Normal) to machine coordinate. The Pn is from table buckle to tool attacher. public bool PnToMc(DVec3d pn, out DVec3d mcXyzabc_rad) Parameters pn DVec3d tool attacher Pn (Point and Normal) mcXyzabc_rad DVec3d machine coordinate (ABC in radian) Returns bool whether conversion succeeded Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class NcKinematicsDependency Namespace Hi.NcParsers.Dependencys.SystemWired Assembly HiMech.dll Provides IMachineKinematics as an INcDependency for SoftNcRunner.PipelineNcDependencyList. The actual kinematics instance is resolved at runtime via KinematicsProvider. This supports scenarios where the machine tool is loaded or changed after the runner is configured (e.g., XML config loaded first, kinematics assigned later). Consumed by G53p1RotaryPositionSyntax, IsoG68p2TiltSyntax, and McLinearMotionSemantic via dependencyList.OfType(). public class NcKinematicsDependency : INcDependency, IMakeXmlSource, IMachineKinematics Inheritance object NcKinematicsDependency Implements INcDependency IMakeXmlSource IMachineKinematics 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 NcKinematicsDependency() Initializes a new instance with no KinematicsProvider; assign one before the runner queries kinematics. public NcKinematicsDependency() NcKinematicsDependency(Func) Initializes a new instance with the given KinematicsProvider. public NcKinematicsDependency(Func provider) Parameters provider Func Delegate that resolves the live IMachineKinematics at lookup time. Properties KinematicsOrNull Non-throwing probe: the live kinematics instance, or null when the provider is unwired or resolves to null (e.g. the machining chain is a ClMillingDevice, so no XyzabcSolver exists). Lets a syntax/semantic that supports both CL and MC chains branch on availability instead of catching InvalidOperationException from the IMachineKinematics members. public IMachineKinematics KinematicsOrNull { get; } Property Value IMachineKinematics KinematicsProvider Runtime provider for the kinematics instance. Null provider or null return means kinematics is not yet available. public Func KinematicsProvider { get; set; } Property Value Func ProgramZeroToPnOrNull The program-zero → Pn transform resolved via ProgramZeroToPnProvider, or null when unwired/unavailable; consumers fall back to identity (workpiece frame ≡ Pn frame). public Mat4d ProgramZeroToPnOrNull { get; } Property Value Mat4d ProgramZeroToPnProvider Runtime provider for the rigid transform from program-zero (workpiece) coordinates to the kinematic Pn frame, for pipelines whose source positions live in the workpiece frame (the NX CLSF pipeline). NC G-code pipelines leave it unwired — their program→MC mapping is carried per block by work-offset transform sections instead. The host wires it from the equipment topology (MachiningEquipmentUtil.GetProgramToPnMat4d); the provider is resolved per call so a re-aligned workpiece is picked up without rewiring. public Func ProgramZeroToPnProvider { get; set; } Property Value Func 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. McAbcToMat(Vec3d) Converts machine ABC coordinates to a tilt matrix. the tilt matrix is the transformation matrix from table to attacher. public Mat4d McAbcToMat(Vec3d mcAbc_rad) Parameters mcAbc_rad Vec3d The machine ABC coordinates in radians Returns Mat4d The tilt matrix McToMat(DVec3d) Converts machine coordinates to an attacher matrix. public Mat4d McToMat(DVec3d mcXyzabc) Parameters mcXyzabc DVec3d The machine coordinates Returns Mat4d The attacher matrix McToPn(DVec3d) Machine coordinate to tool attacher Pn (Point and Normal). The Pn is from table buckle to tool attacher. public DVec3d McToPn(DVec3d mcXyzabc) Parameters mcXyzabc DVec3d machine coordinate. ABC is in radian. Returns DVec3d tool attacher Pn (Point and Normal) OrientationToMcAbc(Mat4d, out Vec3d) Converts a tilt matrix to machine ABC coordinates. the tilt matrix is the transformation matrix from table to attacher. the solution only fit the orientation part of the tiltMat. public bool OrientationToMcAbc(Mat4d tiltMat, out Vec3d mcAbc_rad) Parameters tiltMat Mat4d The tilt matrix to convert mcAbc_rad Vec3d Output parameter that will contain the machine ABC coordinates in radians Returns bool Whether the conversion was successful OrientationToMcAbc(Vec3d, out Vec3d) Converts a target tool axial direction (endpoint orientation) to machine ABC coordinates. Only the axial alignment is constrained; rotation about the tool axis is free. Use this in place of OrientationToMcAbc(Mat4d, out Vec3d) when the rotation about the tool axis is irrelevant (e.g. G53.1 rotary positioning). The axial-only solve avoids the redundant 6-target full-matrix constraint and is more likely to converge for tilt configurations such as G68.2 I180 J90 K0. public bool OrientationToMcAbc(Vec3d toolAxialNormal, out Vec3d mcAbc_rad) Parameters toolAxialNormal Vec3d Target tool axial direction in table coordinates (the third row of the tilt matrix; e.g. AxialNormal). mcAbc_rad Vec3d Output machine ABC coordinates in radians. Returns bool Whether the conversion was successful. PnToMc(DVec3d, out DVec3d) Tool attacher Pn (Point and Normal) to machine coordinate. The Pn is from table buckle to tool attacher. public bool PnToMc(DVec3d pn, out DVec3d mcXyzabc_rad) Parameters pn DVec3d tool attacher Pn (Point and Normal) mcXyzabc_rad DVec3d machine coordinate (ABC in radian) Returns bool whether conversion succeeded Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + }, + "api/Hi.NcParsers.Dependencys.SystemWired.NcLineSourceDependency.html": { + "href": "api/Hi.NcParsers.Dependencys.SystemWired.NcLineSourceDependency.html", + "title": "Class NcLineSourceDependency | HiAPI-C# 2025", + "summary": "Class NcLineSourceDependency Namespace Hi.NcParsers.Dependencys.SystemWired Assembly HiMech.dll In-memory line source for NC “files” with no disk backing — inline NC-code plays whose FilePath is a command-title pseudo-path (e.g. “NC Code”). Control-flow re-segmentation (WHILE reverse jump, backward GOTO, M99 P{seq} caller re-entry — every LabelScanUtil scan) re-reads the host file by path; an inline play's pseudo-path never exists on disk, so without this source those jumps fall through (loops that do not loop) or error with a *FileNotFound diagnostic. RunNc(string, string) registers the play's raw lines under its pseudo-path before running; LabelScanUtil consults this source first and only falls back to disk. Entries persist for the runner's lifetime, the latest registration of a path winning — deliberately NOT ISessionResettable: the session-reset sweep runs inside the first RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) of a fresh session, which would wipe the registration made moments earlier for that very play. A registered pseudo-path shadows an identically-named disk file during re-segmentation, so inline command titles should not mirror real project-relative NC paths. public class NcLineSourceDependency : INcDependency, IMakeXmlSource Inheritance object NcLineSourceDependency 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 NcLineSourceDependency() Initializes a new instance with no registered sources. public NcLineSourceDependency() Properties XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods Contains(string) Whether path has a registered line source. public bool Contains(string path) Parameters path string Returns bool MakeXmlSource(string, string, bool) Runtime-only dependency — registrations are per-play and not meaningful to persist; serialization writes only the empty element so the dependency survives an XML round-trip with the map implicitly empty. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory Register(string, string[]) Registers (or overwrites) the line content served for path. No-op on a null/empty path or null lines. public void Register(string path, string[] lines) Parameters path string lines string[] TryGetLines(string, out string[]) Gets the registered line content for path; returns whether a registration exists. public bool TryGetLines(string path, out string[] lines) Parameters path string lines string[] Returns bool" }, "api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html": { "href": "api/Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html", @@ -3682,7 +3957,12 @@ "api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html": { "href": "api/Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.html", "title": "Class SegmenterDependency | HiAPI-C# 2025", - "summary": "Class SegmenterDependency Namespace Hi.NcParsers.Dependencys.SystemWired Assembly HiMech.dll Exposes the active ISegmenter to syntaxes that need to re-segment auxiliary NC text mid-pipeline (e.g., SubProgramCallSyntax reading an O subprogram file and re-using the host runner's segmenter so the inlined blocks are split with the same rules). The actual segmenter is resolved at runtime via Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) wires the provider to its own Segmenter at the start of each session run, so this dependency can sit in NcDependencyList without participating in XML serialization (see MakeXmlSource(string, string, bool)). public class SegmenterDependency : INcDependency, IMakeXmlSource Inheritance object SegmenterDependency 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 SegmenterDependency() Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries. public SegmenterDependency() SegmenterDependency(Func) Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider. public SegmenterDependency(Func provider) Parameters provider Func Delegate that resolves the live ISegmenter at lookup time. Properties Segmenter The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is unset or returns null. public ISegmenter Segmenter { get; } Property Value ISegmenter XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired per session and is not meaningful to persist; serialization writes only the empty element so the dependency survives an XML round-trip. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class SegmenterDependency Namespace Hi.NcParsers.Dependencys.SystemWired Assembly HiMech.dll Exposes the active ISegmenter to syntaxes that need to re-segment auxiliary NC text mid-pipeline (e.g., SubProgramCallSyntax reading an O subprogram file and re-using the host runner's segmenter so the inlined blocks are split with the same rules). The actual segmenter is resolved at runtime via Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) wires the provider to its own Segmenter at the start of each session run, so this dependency can sit in PipelineNcDependencyList without participating in XML serialization (see MakeXmlSource(string, string, bool)). public class SegmenterDependency : INcDependency, IMakeXmlSource Inheritance object SegmenterDependency 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 SegmenterDependency() Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; the host runner assigns one before queries. public SegmenterDependency() SegmenterDependency(Func) Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider. public SegmenterDependency(Func provider) Parameters provider Func Delegate that resolves the live ISegmenter at lookup time. Properties Segmenter The live segmenter, or null when Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is unset or returns null. public ISegmenter Segmenter { get; } Property Value ISegmenter XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider is wired per session and is not meaningful to persist; serialization writes only the empty element so the dependency survives an XML round-trip. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + }, + "api/Hi.NcParsers.Dependencys.SystemWired.SentenceIndexCounterDependency.html": { + "href": "api/Hi.NcParsers.Dependencys.SystemWired.SentenceIndexCounterDependency.html", + "title": "Class SentenceIndexCounterDependency | HiAPI-C# 2025", + "summary": "Class SentenceIndexCounterDependency Namespace Hi.NcParsers.Dependencys.SystemWired Assembly HiMech.dll Per-session monotonically-increasing SentenceIndex allocator. Holds the counter as a private field; Allocate() returns the next unused value and increments. OnSessionReset() rewinds to 0 — the owning RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) invokes it via the ISessionResettable sweep on the same edge that initializes a fresh NcRunnerSessionState, so a controller power-reset clears both the syntax-piece pipeline and this counter in lock-step. This dependency exists to fix the sentence-index double-booking bug: before it, the host file's lazy enumerator numbered pieces from layers[0].Count captured at file-append time while subprogram / macro / control-flow re-segmentation numbered from layers[0].Last.Value.SentenceIndex + 1 — two independent sequences that overlap as soon as a call is inlined mid-stream (host blocks after M98 and the inlined body shared the same indices). With this counter, GetSyntaxPieces(ISegmenter, List, IEnumerable, int, NcDiagnosticProgress, CancellationToken) allocates one value per piece at materialization time, which the lazy pipeline pulls in execution order — indices are session-globally unique and strictly increasing along the executed stream, at the cost of no longer being contiguous per file (eager label scans discard their pre-label prefix, leaving gaps). Values are never negative, preserving the -1 \"not in pipeline\" sentinel used by SentenceIndex and SentenceIndex. When this dependency is absent from the pipeline list, GetSyntaxPieces(ISegmenter, List, IEnumerable, int, NcDiagnosticProgress, CancellationToken) falls back to the caller-supplied begin-index numbering — the legacy colliding behavior. Only code-built runners can hit that fallback: XML rehydration back-fills a missing instance (the SoftNcRunner XML constructor's system-wired back-fill), because saves that predate this dependency never self-heal by round-tripping — re-saving stamps a new ApiVersion on the same incomplete list. public class SentenceIndexCounterDependency : INcDependency, IMakeXmlSource, ISessionResettable Inheritance object SentenceIndexCounterDependency Implements INcDependency IMakeXmlSource ISessionResettable 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 SentenceIndexCounterDependency() Initializes a new instance with the counter at 0. public SentenceIndexCounterDependency() Properties XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods Allocate() Returns the next unused sentence index and post-increments the counter. First call after construction or OnSessionReset() returns 0. public int Allocate() Returns int MakeXmlSource(string, string, bool) Runtime-only dependency — the live counter value is per-session and not meaningful to persist; serialization writes only the empty element so the dependency survives an XML round-trip with the counter implicitly reset to 0. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement OnSessionReset() Rewinds the counter to 0. Called by RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) via the ISessionResettable sweep on the same edge that initializes a fresh session pipeline so a single brand-preset runner can be reused across sessions without leaking sentence indices from the previous session. public void OnSessionReset() Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcParsers.Dependencys.SystemWired.StepPropertyAccessDictionaryDependency.html": { "href": "api/Hi.NcParsers.Dependencys.SystemWired.StepPropertyAccessDictionaryDependency.html", @@ -3692,17 +3972,22 @@ "api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html": { "href": "api/Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.html", "title": "Class SyntaxPieceLayerDependency | HiAPI-C# 2025", - "summary": "Class SyntaxPieceLayerDependency Namespace Hi.NcParsers.Dependencys.SystemWired Assembly HiMech.dll Exposes the per-session SyntaxPiece layer chain (one LazyLinkedList per pipeline stage, owned by NcRunnerSessionState) to syntaxes that need to inject additional source pieces mid-pipeline — most notably SubProgramCallSyntax, which inlines a subprogram file's blocks back into layers[0] immediately after the M98 host node so the entire syntax pipeline naturally re-processes them. The actual layer list is resolved at runtime via Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) wires the provider to the active session's SyntaxPieceLayers at the start of each call. Index 0 is the source layer (init seed + sentence-derived pieces); indices 1..N are post-NcSyntax layers — same convention as NcRunnerSessionState. public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource Inheritance object SyntaxPieceLayerDependency 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 SyntaxPieceLayerDependency() Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries. public SyntaxPieceLayerDependency() SyntaxPieceLayerDependency(Func>>) Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider. public SyntaxPieceLayerDependency(Func>> provider) Parameters provider Func>> Delegate that resolves the live layer chain at lookup time. Properties Layers The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is unset or returns null. Layer 0 is the source layer; layers 1..N are post-NcSyntax layers. public List> Layers { get; } Property Value List> XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired per session and is not meaningful to persist; serialization writes only the empty element so the dependency survives an XML round-trip. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class SyntaxPieceLayerDependency Namespace Hi.NcParsers.Dependencys.SystemWired Assembly HiMech.dll Exposes the per-session SyntaxPiece layer chain (one LazyLinkedList per pipeline stage, owned by NcRunnerSessionState) to syntaxes that need to inject additional source pieces mid-pipeline — most notably SubProgramCallSyntax, which inlines a subprogram file's blocks back into layers[0] immediately after the M98 host node so the entire syntax pipeline naturally re-processes them. The actual layer list is resolved at runtime via Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) wires the provider to the active session's SyntaxPieceLayers at the start of each call. Index 0 is the source layer (init seed + sentence-derived pieces); indices 1..N are post-NcSyntax layers — same convention as NcRunnerSessionState. public class SyntaxPieceLayerDependency : INcDependency, IMakeXmlSource Inheritance object SyntaxPieceLayerDependency 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 SyntaxPieceLayerDependency() Initializes a new instance with no Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; the host runner assigns one before queries. public SyntaxPieceLayerDependency() SyntaxPieceLayerDependency(Func>>) Initializes a new instance with the given Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider. public SyntaxPieceLayerDependency(Func>> provider) Parameters provider Func>> Delegate that resolves the live layer chain at lookup time. Properties Layers The live layer chain, or null when Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is unset or returns null. Layer 0 is the source layer; layers 1..N are post-NcSyntax layers. public List> Layers { get; } Property Value List> XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Runtime-only dependency — the Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider is wired per session and is not meaningful to persist; serialization writes only the empty element so the dependency survives an XML round-trip. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + }, + "api/Hi.NcParsers.Dependencys.SystemWired.ToolHouseDependency.html": { + "href": "api/Hi.NcParsers.Dependencys.SystemWired.ToolHouseDependency.html", + "title": "Class ToolHouseDependency | HiAPI-C# 2025", + "summary": "Class ToolHouseDependency Namespace Hi.NcParsers.Dependencys.SystemWired Assembly HiMech.dll Exposes the project's MachiningToolHouse to NC pipeline components — the narrow counterpart of MachiningServiceDependency for syntaxes / semantics that only look up or register tools (e.g. the CLSF pipeline's TLDATA-driven tool creation). public class ToolHouseDependency : INcDependency, IMakeXmlSource Inheritance object ToolHouseDependency 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 ToolHouseDependency() Initializes a new instance with no ToolHouseProvider; the host wires one before queries. public ToolHouseDependency() ToolHouseDependency(Func) Initializes a new instance with the given ToolHouseProvider. public ToolHouseDependency(Func provider) Parameters provider Func Delegate that resolves the live tool house at lookup time. Properties ToolHouse The live tool house, or null when ToolHouseProvider is unset or returns null. public MachiningToolHouse ToolHouse { get; } Property Value MachiningToolHouse ToolHouseProvider Runtime provider for the tool house. Null provider or null return means the host is not wired; consumers must null-check. public Func ToolHouseProvider { get; set; } Property Value Func XName XML element name used to register this dependency with XFactory. public static string XName { get; } Property Value string Methods MakeXmlSource(string, string, bool) Runtime-only dependency — the provider is wired per host and not meaningful to persist; serialization writes only the empty element so the dependency survives an XML round-trip. public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly) Parameters baseDirectory string relFile string exhibitionOnly bool Returns XElement Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcParsers.Dependencys.SystemWired.html": { "href": "api/Hi.NcParsers.Dependencys.SystemWired.html", "title": "Namespace Hi.NcParsers.Dependencys.SystemWired | HiAPI-C# 2025", - "summary": "Namespace Hi.NcParsers.Dependencys.SystemWired Classes FileIndexCounterDependency Per-session monotonically-increasing file index allocator. Holds the counter as a private field; Allocate() returns the next unused value and increments. OnSessionReset() rewinds to 0 — the owning RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) invokes it via the ISessionResettable sweep on the same edge that initializes a fresh NcRunnerSessionState, so a controller power-reset clears both the syntax-piece pipeline and this counter in lock-step. Two consumers share one allocator: RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) allocates one index per top-level NC file that streams through the runner. SubProgramCallSyntax allocates a fresh index for each inlined subprogram invocation, including each L repetition — distinct indices ensure (FileIndex, LineIndex) pairs stay unique across overlapping subprogram line ranges. Holding the counter on this dependency rather than on NcRunnerSessionState avoids a duplicate source-of-truth: the dep is the single seam through which syntaxes reach the counter, and there is no third reader that would benefit from session-state visibility. MachiningServiceDependency Exposes the full IMachiningService surface to NC pipeline components — currently provided for client-authored syntaxes / semantics that need broad host access (machining equipment, session, tool house, time mapping, …). The built-in CSV pipeline does not consume this dependency; it uses the narrower StepPropertyAccessDictionaryDependency instead. NcKinematicsDependency Provides IMachineKinematics as an INcDependency for SoftNcRunner.NcDependencyList. The actual kinematics instance is resolved at runtime via KinematicsProvider. This supports scenarios where the machine tool is loaded or changed after the runner is configured (e.g., XML config loaded first, kinematics assigned later). Consumed by G53p1RotaryPositionSyntax, IsoG68p2TiltSyntax, and McLinearMotionSemantic via dependencyList.OfType(). ProjectFolderDependency Exposes the absolute base directory of the project that owns this runner. Resolved at runtime via BaseDirectoryProvider; the host (e.g. LocalProjectService, a test harness) wires the provider to its known project root after the runner is constructed, because SoftNcRunner itself does not retain the baseDirectory argument it sees during XML deserialization. Consumed by syntaxes that need to resolve a project-relative path to an absolute file system location — e.g. SubProgramCallSyntax for O subprogram lookup under InternalFolder. Reading FilePath is not a substitute: that path is relative and resolving it via Path.GetFullPath would anchor against the process working directory, not the project root. SegmenterDependency Exposes the active ISegmenter to syntaxes that need to re-segment auxiliary NC text mid-pipeline (e.g., SubProgramCallSyntax reading an O subprogram file and re-using the host runner's segmenter so the inlined blocks are split with the same rules). The actual segmenter is resolved at runtime via Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) wires the provider to its own Segmenter at the start of each session run, so this dependency can sit in NcDependencyList without participating in XML serialization (see MakeXmlSource(string, string, bool)). StepPropertyAccessDictionaryDependency Exposes the host's step-variable registry to NC pipeline components (today: CsvRowSyntax) as a narrow IStepPropertyAccessHost surface. The provider is wired by the host (e.g. LocalProjectService) so the dependency does not carry strong references to host types; this lets the runner be created before the host is fully constructed and reused across project loads. A sibling MachiningServiceDependency exposes the broader IMachiningService surface to client-authored syntaxes. The two dependencies are independent — production hosts typically wire both providers to the same backing object, but a test fixture can supply just this narrow one. SyntaxPieceLayerDependency Exposes the per-session SyntaxPiece layer chain (one LazyLinkedList per pipeline stage, owned by NcRunnerSessionState) to syntaxes that need to inject additional source pieces mid-pipeline — most notably SubProgramCallSyntax, which inlines a subprogram file's blocks back into layers[0] immediately after the M98 host node so the entire syntax pipeline naturally re-processes them. The actual layer list is resolved at runtime via Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunControlLines(string, IEnumerable, MachiningSession, SessionProgress, CancellationToken) wires the provider to the active session's SyntaxPieceLayers at the start of each call. Index 0 is the source layer (init seed + sentence-derived pieces); indices 1..N are post-NcSyntax layers — same convention as NcRunnerSessionState." + "summary": "Namespace Hi.NcParsers.Dependencys.SystemWired Classes FileIndexCounterDependency Per-session monotonically-increasing file index allocator. Holds the counter as a private field; Allocate() returns the next unused value and increments. OnSessionReset() rewinds to 0 — the owning RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) invokes it via the ISessionResettable sweep on the same edge that initializes a fresh NcRunnerSessionState, so a controller power-reset clears both the syntax-piece pipeline and this counter in lock-step. Two consumers share one allocator: RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) allocates one index per top-level NC file that streams through the runner. SubProgramCallSyntax allocates a fresh index for each inlined subprogram invocation, including each L repetition — distinct indices ensure (FileIndex, LineIndex) pairs stay unique across overlapping subprogram line ranges. Holding the counter on this dependency rather than on NcRunnerSessionState avoids a duplicate source-of-truth: the dep is the single seam through which syntaxes reach the counter, and there is no third reader that would benefit from session-state visibility. MachiningServiceDependency Exposes the full IMachiningService surface to NC pipeline components — currently provided for client-authored syntaxes / semantics that need broad host access (machining equipment, session, tool house, time mapping, …). The built-in CSV pipeline does not consume this dependency; it uses the narrower StepPropertyAccessDictionaryDependency instead. MappingAnchorDependency Narrow NC-pipeline dependency that lets a CSV semantic convert an absolute controller instant to a run-relative timecode against the project mapping anchor, without reaching the whole IMachiningService surface (cf. MachiningServiceDependency). The host wires ToTimecodeProvider to TimeMapping.ToTimecode, whose set-once ??= seeds (lazily builds) the anchor on first use. Runtime-only: the provider is wired per host and not persisted; serialization writes only the empty element so the dependency survives an XML round-trip. NcKinematicsDependency Provides IMachineKinematics as an INcDependency for SoftNcRunner.PipelineNcDependencyList. The actual kinematics instance is resolved at runtime via KinematicsProvider. This supports scenarios where the machine tool is loaded or changed after the runner is configured (e.g., XML config loaded first, kinematics assigned later). Consumed by G53p1RotaryPositionSyntax, IsoG68p2TiltSyntax, and McLinearMotionSemantic via dependencyList.OfType(). NcLineSourceDependency In-memory line source for NC “files” with no disk backing — inline NC-code plays whose FilePath is a command-title pseudo-path (e.g. “NC Code”). Control-flow re-segmentation (WHILE reverse jump, backward GOTO, M99 P{seq} caller re-entry — every LabelScanUtil scan) re-reads the host file by path; an inline play's pseudo-path never exists on disk, so without this source those jumps fall through (loops that do not loop) or error with a *FileNotFound diagnostic. RunNc(string, string) registers the play's raw lines under its pseudo-path before running; LabelScanUtil consults this source first and only falls back to disk. Entries persist for the runner's lifetime, the latest registration of a path winning — deliberately NOT ISessionResettable: the session-reset sweep runs inside the first RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) of a fresh session, which would wipe the registration made moments earlier for that very play. A registered pseudo-path shadows an identically-named disk file during re-segmentation, so inline command titles should not mirror real project-relative NC paths. ProjectFolderDependency Exposes the absolute base directory of the project that owns this runner. Resolved at runtime via BaseDirectoryProvider; the host (e.g. LocalProjectService, a test harness) wires the provider to its known project root after the runner is constructed, because SoftNcRunner itself does not retain the baseDirectory argument it sees during XML deserialization. Consumed by syntaxes that need to resolve a project-relative path to an absolute file system location — e.g. SubProgramCallSyntax for O subprogram lookup under InternalFolder. Reading FilePath is not a substitute: that path is relative and resolving it via Path.GetFullPath would anchor against the process working directory, not the project root. SegmenterDependency Exposes the active ISegmenter to syntaxes that need to re-segment auxiliary NC text mid-pipeline (e.g., SubProgramCallSyntax reading an O subprogram file and re-using the host runner's segmenter so the inlined blocks are split with the same rules). The actual segmenter is resolved at runtime via Hi.NcParsers.Dependencys.SystemWired.SegmenterDependency.SegmenterProvider; RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) wires the provider to its own Segmenter at the start of each session run, so this dependency can sit in PipelineNcDependencyList without participating in XML serialization (see MakeXmlSource(string, string, bool)). SentenceIndexCounterDependency Per-session monotonically-increasing SentenceIndex allocator. Holds the counter as a private field; Allocate() returns the next unused value and increments. OnSessionReset() rewinds to 0 — the owning RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) invokes it via the ISessionResettable sweep on the same edge that initializes a fresh NcRunnerSessionState, so a controller power-reset clears both the syntax-piece pipeline and this counter in lock-step. This dependency exists to fix the sentence-index double-booking bug: before it, the host file's lazy enumerator numbered pieces from layers[0].Count captured at file-append time while subprogram / macro / control-flow re-segmentation numbered from layers[0].Last.Value.SentenceIndex + 1 — two independent sequences that overlap as soon as a call is inlined mid-stream (host blocks after M98 and the inlined body shared the same indices). With this counter, GetSyntaxPieces(ISegmenter, List, IEnumerable, int, NcDiagnosticProgress, CancellationToken) allocates one value per piece at materialization time, which the lazy pipeline pulls in execution order — indices are session-globally unique and strictly increasing along the executed stream, at the cost of no longer being contiguous per file (eager label scans discard their pre-label prefix, leaving gaps). Values are never negative, preserving the -1 \"not in pipeline\" sentinel used by SentenceIndex and SentenceIndex. When this dependency is absent from the pipeline list, GetSyntaxPieces(ISegmenter, List, IEnumerable, int, NcDiagnosticProgress, CancellationToken) falls back to the caller-supplied begin-index numbering — the legacy colliding behavior. Only code-built runners can hit that fallback: XML rehydration back-fills a missing instance (the SoftNcRunner XML constructor's system-wired back-fill), because saves that predate this dependency never self-heal by round-tripping — re-saving stamps a new ApiVersion on the same incomplete list. StepPropertyAccessDictionaryDependency Exposes the host's step-variable registry to NC pipeline components (today: CsvRowSyntax) as a narrow IStepPropertyAccessHost surface. The provider is wired by the host (e.g. LocalProjectService) so the dependency does not carry strong references to host types; this lets the runner be created before the host is fully constructed and reused across project loads. A sibling MachiningServiceDependency exposes the broader IMachiningService surface to client-authored syntaxes. The two dependencies are independent — production hosts typically wire both providers to the same backing object, but a test fixture can supply just this narrow one. SyntaxPieceLayerDependency Exposes the per-session SyntaxPiece layer chain (one LazyLinkedList per pipeline stage, owned by NcRunnerSessionState) to syntaxes that need to inject additional source pieces mid-pipeline — most notably SubProgramCallSyntax, which inlines a subprogram file's blocks back into layers[0] immediately after the M98 host node so the entire syntax pipeline naturally re-processes them. The actual layer list is resolved at runtime via Hi.NcParsers.Dependencys.SystemWired.SyntaxPieceLayerDependency.LayersProvider; RunNcLines(string, IEnumerable, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken) wires the provider to the active session's SyntaxPieceLayers at the start of each call. Index 0 is the source layer (init seed + sentence-derived pieces); indices 1..N are post-NcSyntax layers — same convention as NcRunnerSessionState. ToolHouseDependency Exposes the project's MachiningToolHouse to NC pipeline components — the narrow counterpart of MachiningServiceDependency for syntaxes / semantics that only look up or register tools (e.g. the CLSF pipeline's TLDATA-driven tool creation)." }, "api/Hi.NcParsers.Dependencys.html": { "href": "api/Hi.NcParsers.Dependencys.html", "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)." + "summary": "Namespace Hi.NcParsers.Dependencys Classes CncBrandDependency Explicit CNC controller brand identifier carried in PipelineNcDependencyList. 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. HeidenhainDatumTableProxy Get-or-create INcDependencyProxy for HeidenhainDatumTable: a placeholder in the shared PipelineNcDependencyList that resolves the host project's own per-case datum preset / datum shift tables. 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. MCodeEffects What one machine-declared M-code does. Real-machine OEM M-codes are frequently composite — e.g. an M13 that means “spindle CW + flood coolant on” — so a declaration carries every effect the code performs rather than a single meaning, and additionally an UnmodeledNote for the parts this simulation does not model. Declaring only the known parts and staying loud about the rest keeps a composite code from being half-consumed silently. Stored per machine in MCodeDeclarations and consumed by MCodeExpansionSyntax, which expands the declared code into the canonical ISO flags the regular consumers already understand. Interfaces IBlockSkipConfig Runtime state of the controller's Block Delete / Block Skip switches. Present in PipelineNcDependencyList 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 PipelineNcDependencyList, 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. IIndexingPositionConfig Indexing-axis position table: maps 1-based indexing position numbers to axis coordinates for axes that only take up discrete stations (Hirth couplings, indexing rotary tables, turret-style workholders). Consumed by the coded-position coordinate functions (Siemens CAC()/CIC()/CDC()/CACP()/CACN() — unwrapped by SiemensAcIcSyntax, resolved by McAbcSyntax / IncrementalResolveSyntax via CodedPositionUtil). Implemented by SiemensMachineDataTable using the Siemens machine data (MD30500 $MA_INDEX_AX_ASSIGN_POS_TAB per axis; global tables MD10910/MD10930; equidistant MD30501–MD30503). Positions are expressed in the axis' native units (degrees for rotary, mm for linear) in the coordinate frame the axis word itself is written in — machine coordinates for rotary words, program coordinates for linear words. Position numbering is 1-based: number 1 is the first table entry (the Siemens machine-data help and alarm texts count this way; the 0-based value range printed in some programming-manual editions describes the machine-data array index, not the programmable number). 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). IMCodeDeclarationConfig Machine-declared M-code map: what each machine-specific (OEM/PLC) M-code does, as MCodeEffects — possibly several effects per code (tool change, spindle direction, coolant) plus a note for behavior this simulation does not model. Consumed by MCodeExpansionSyntax, which expands declared codes into the canonical ISO flags ahead of the regular consumers. Machine-level (per-case parameter table) rather than brand vocabulary — implemented by ControllerParameterTableBase, alongside the narrower ISpindleControlConfig face over the same storage. 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. INcDependencyListHost Hosts a per-case INcDependency list that INcDependencyProxy placeholders in a shared SoftNcRunner resolve their data against. Implemented by the object owning both the shared runner and the varied setting data — e.g. MachiningProject. INcDependencyProxy An INcDependency placeholder that resolves the real dependency lazily at pipeline-build time instead of carrying the data itself. Lets a shared SoftNcRunner hold only the fixed pipeline logic while the frequently-varied data lives on the owning INcDependencyListHost (e.g. a MachiningProject). \"Maker and taker\": GetNcDependency() either constructs the dependency on demand (maker) or fetches one from the host wired by InitNcDependencyHost(INcDependencyListHost) (taker). A get-or-create proxy does both — it takes the host's instance when present and otherwise makes one, installing it into the host list so it persists and is editable per case. A proxy may carry runtime-only state (the wired host, a memoized resolved dependency). That state is host-wired per run and MUST NOT be written by MakeXmlSource(string, string, bool) — same runtime-only posture as ProjectFolderDependency. 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). ISpindleControlConfig Machine-specific spindle control codes: maps custom spindle direction M-codes to SpindleDirection — e.g., an ultrasonic spindle started by M203 (CW) and stopped by M205 (STOP) instead of ISO M03/M05. Consulted by SpindleSpeedSyntax in addition to the built-in ISO defaults (M03/M04/M05), which always stay in effect; a configured code wins over its ISO meaning when both match. Machine-level (per-case parameter table) rather than brand vocabulary — implemented by ControllerParameterTableBase as a spindle-direction face over its MCodeDeclarations storage (the multi-effect IMCodeDeclarationConfig map), so one code is never half-recognized by two separate maps. 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). IToolChangeTriggerConfig Machine-level tool-change trigger mode. Machining centers with a magazine treat a bare T word as pre-selection only (the magazine rotates, no feed axis moves) and change the tool on the trigger M-code; lathes/turret machines index the turret — and thereby change the tool — on the T word itself. Real controllers declare this per machine (e.g. Siemens MD22550 $MC_TOOL_CHANGE_MODE, where 0 means the T word performs the change). Consulted by ToolChangeSyntax; machine-level (per-case parameter table) rather than brand vocabulary — implemented by ControllerParameterTableBase. Custom trigger M-codes are the separate IMCodeDeclarationConfig concern (IsToolChange). 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", @@ -3744,6 +4029,16 @@ "title": "Class NcExpr | HiAPI-C# 2025", "summary": "Class NcExpr Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll AST root for a Fanuc Custom Macro B value expression. Concrete leaves and combinators sit alongside NcExpressionParser; walking is the job of NcExpressionEvaluator. public abstract record NcExpr : IEquatable Inheritance object NcExpr Implements IEquatable Derived NcBinaryExpr NcFunctionExpr NcIndirectVariableExpr NcLiteralExpr NcUnaryExpr NcVariableExpr 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.EvaluationSyntaxs.Evaluation.NcExpressionDialect.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionDialect.html", + "title": "Enum NcExpressionDialect | HiAPI-C# 2025", + "summary": "Enum NcExpressionDialect Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Selects which brand expression grammar a syntax parses value expressions with. All dialects produce the same NcExpr AST and are evaluated by the shared NcExpressionEvaluator — the dialect only decides tokenization/grammar (Fanuc #nnn + brackets vs Siemens Rn/named/$ + parentheses). public enum NcExpressionDialect 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 Fanuc = 1 Fanuc Custom Macro B grammar (NcExpressionParser). Heidenhain = 3 Heidenhain klartext FN grammar (HeidenhainExpressionParser). None = 0 No expression grammar wired — capture syntaxes keep their legacy lexical RHS boundary (regex + TerminateWords). Not a valid value for Dialect, which always evaluates with a concrete grammar. Siemens = 2 Sinumerik grammar (SiemensExpressionParser)." + }, + "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionDialectUtil.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionDialectUtil.html", + "title": "Class NcExpressionDialectUtil | HiAPI-C# 2025", + "summary": "Class NcExpressionDialectUtil Namespace Hi.NcParsers.EvaluationSyntaxs.Evaluation Assembly HiMech.dll Dispatch helpers over NcExpressionDialect so shared syntaxes (VariableEvaluatorSyntax, the assignment/tag capture syntaxes) stay brand-agnostic: they hold a dialect value and route through here instead of hard-coding a parser type. public static class NcExpressionDialectUtil Inheritance object NcExpressionDialectUtil Inherited Members object.Equals(object) object.Equals(object, object) object.GetHashCode() object.GetType() object.MemberwiseClone() object.ReferenceEquals(object, object) object.ToString() Methods IsVariableKey(NcExpressionDialect, string) Cheap validity gate for variable keys entering the evaluator's lookup chain — rejects obviously-non-variable keys before the chain walk. Keys are produced by the dialect's own parser, so this is defensive. public static bool IsVariableKey(NcExpressionDialect dialect, string key) Parameters dialect NcExpressionDialect key string Returns bool MakePrefixParser(NcExpressionDialect) Materializes a dialect into the optional longest-valid-prefix hook the capture helpers take (GrabTagEqualsValue(ref string, IEnumerable, ExpressionPrefixParser) / GrabTagAssignment(ref string, IEnumerable, string, IEnumerable, ExpressionPrefixParser)); null for None and for dialects without prefix support (legacy lexical capture). public static ExpressionPrefixParser MakePrefixParser(NcExpressionDialect dialect) Parameters dialect NcExpressionDialect Returns ExpressionPrefixParser TryParse(NcExpressionDialect, string, out NcExpr, out string) Full-string parse in the given dialect (the whole source must be one expression). None always fails — callers on the None path never parse. public static bool TryParse(NcExpressionDialect dialect, string source, out NcExpr expr, out string error) Parameters dialect NcExpressionDialect source string expr NcExpr error string Returns bool TryParsePrefix(NcExpressionDialect, string, out int) Longest-valid-prefix parse for parser-delimited RHS capture. Only dialects that support prefix parsing return true; the Fanuc dialect keeps its lexical capture (no known ambiguity to fix) and reports false so callers use their legacy boundary. public static bool TryParsePrefix(NcExpressionDialect dialect, string source, out int consumedLength) Parameters dialect NcExpressionDialect source string consumedLength int Returns bool VariableRefRegex(NcExpressionDialect) Regex matching this dialect's variable-reference tokens inside a raw RHS string. Used only for best-effort same-block forward-reference detection (VariableEvaluator–SameBlockForwardReference); expression evaluation itself goes through the dialect parser. The Siemens pattern covers R-parameters only — named/$ same-block forward references are vanishingly rare in CAM output and go unwarned. public static Regex VariableRefRegex(NcExpressionDialect dialect) Parameters dialect NcExpressionDialect Returns Regex" + }, "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.Evaluation.NcExpressionEvaluator.html", "title": "Class NcExpressionEvaluator | HiAPI-C# 2025", @@ -3792,7 +4087,7 @@ "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, 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." + "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. NcExpressionDialectUtil Dispatch helpers over NcExpressionDialect so shared syntaxes (VariableEvaluatorSyntax, the assignment/tag capture syntaxes) stay brand-agnostic: they hold a dialect value and route through here instead of hard-coding a parser type. 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. NcExpressionDialect Selects which brand expression grammar a syntax parses value expressions with. All dialects produce the same NcExpr AST and are evaluated by the shared NcExpressionEvaluator — the dialect only decides tokenization/grammar (Fanuc #nnn + brackets vs Siemens Rn/named/$ + parentheses). NcUnaryOp Unary operators allowed in Fanuc Custom Macro B value expressions." }, "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucConditionReader.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucConditionReader.html", @@ -3802,7 +4097,7 @@ "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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucIfThenSyntax.html", @@ -3842,17 +4137,57 @@ "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucWhileDoSyntax.html": { "href": "api/Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucWhileDoSyntax.html", "title": "Class FanucWhileDoSyntax | HiAPI-C# 2025", - "summary": "Class FanucWhileDoSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll Resolves Fanuc Custom Macro B WHILE [..] DO m ... END m bounded loops. Two phrases dispatched by Term: WHILE [..] DO m — entry: reads the resolved condition via FanucConditionReader, manages the per-LoopId frame in the top-level WhileFrames dict, and either falls through (truthy) or forward-jumps past the matching END m (falsy / unresolved). END m — terminator: unconditionally reverse-jumps to the WHILE block recorded in WhileFrames[LoopId].BeginLineNo so the next iteration re-evaluates the entry condition. Increments the per-loop iteration counter on FanucWhileDoIterationDependency; suppresses the redirect above MaxIterationsPerLoopId. WhileFrames carrier. The top-level WhileFrames JSON section is a JsonObject keyed by LoopId-as-string whose values are { BeginLineNo: int }. Frames are pushed when a WHILE block first encounters a truthy condition with no existing frame for that LoopId; popped when the condition becomes falsy or unresolved; otherwise carried forward unchanged by ModalCarrySyntax's Logic tracked-key list. Nested loops with distinct LoopIds coexist in the same dict; same-LoopId nesting (spec-undefined) overwrites and is not given special handling. Pipeline placement. Evaluation bundle, after the variable readers (defensive — WHILE/END blocks per spec do not carry assignments, but the placement is consistent with GOTO). Must run after VariableEvaluatorSyntax so the condition string has been substituted to numeric. Forward scan to matching END m uses the LabelScanUtil predicate overload — probe runs the brand-default FanucWhileDoParsingSyntax on each candidate, predicate matches on Parsing.FanucWhileDo.Term == \"END\" && LoopId == target. Reverse scan to WHILE BeginLineNo does not need a label predicate — the BeginLineNo is a known file-line index recorded in the active frame, so the END side re-segments the file from the top and returns the slice starting at the first piece whose CharIndexSegment.Begin.LineIndex matches. public class FanucWhileDoSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucWhileDoSyntax 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 Worked Example — Three-iteration WHILE [..] DO m ... END m Given this Custom Macro B source: #100 = 0 WHILE [#100 LT 3] DO 1 #100 = #100 + 1 END 1 X5 Each block flows through the runtime as below. The WhileFrames lifeline represents the per-block active-loop state carried block-to-block by the modal-carry pipeline; the END block consults it to find the WHILE line to reverse-jump to. The runaway-loop counter ticks on every successful END reverse-jump and suppresses further jumps above the configured iteration limit. sequenceDiagram participant W as WHILE block participant B as body participant E as END block participant X as X5 participant F as WhileFrames Note over F: empty Note over W: iter 1: cond=true (0 LT 3) W->>F: push {LoopId 1, BeginLineNo} W->>B: fall through B->>E: Note over E: counter 0 to 1 (≤Max) E-->>W: reverse jump Note over W: iter 2: cond=true (1 LT 3) Note over W,F: frame exists, skip push W->>B: fall through B->>E: Note over E: counter 1 to 2 (≤Max) E-->>W: reverse jump Note over W: iter 3: cond=true (2 LT 3) W->>B: B->>E: Note over E: counter 2 to 3 (≤Max) E-->>W: reverse jump Note over W: iter 4: cond=false (3 LT 3) W->>F: pop LoopId 1 Note over W: forward jump past END W->>X: After the loop exits, X5 executes with #100 = 3 in Vars.Volatile. Constructors FanucWhileDoSyntax() Parameterless instance. public FanucWhileDoSyntax() FanucWhileDoSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public FanucWhileDoSyntax(XElement src) Parameters src XElement Fields BeginLineNoKey Schema field inside each WhileFrames entry: the WHILE block's file-line index. public const string BeginLineNoKey = \"BeginLineNo\" Field Value string WhileFramesKey Top-level JSON key for the active-loop frame dict. public const string WhileFramesKey = \"WhileFrames\" 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + "summary": "Class FanucWhileDoSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Assembly HiMech.dll Resolves Fanuc Custom Macro B WHILE [..] DO m ... END m bounded loops. Two phrases dispatched by Term: WHILE [..] DO m — entry: reads the resolved condition via FanucConditionReader, manages the per-LoopId frame in the top-level WhileFrames dict, and either falls through (truthy) or forward-jumps past the matching END m (falsy / unresolved). END m — terminator: unconditionally reverse-jumps to the WHILE block recorded in WhileFrames[LoopId].BeginLineNo so the next iteration re-evaluates the entry condition. Increments the per-loop iteration counter on FanucWhileDoIterationDependency; suppresses the redirect above MaxIterationsPerLoopId. WhileFrames carrier. The top-level WhileFrames JSON section is a JsonObject keyed by LoopId-as-string whose values are { BeginLineNo: int }. Frames are pushed when a WHILE block first encounters a truthy condition with no existing frame for that LoopId; popped when the condition becomes falsy or unresolved; otherwise carried forward unchanged by ModalCarrySyntax's Logic tracked-key list. Nested loops with distinct LoopIds coexist in the same dict; same-LoopId nesting (spec-undefined) overwrites and is not given special handling. Pipeline placement. Evaluation bundle, after the variable readers (defensive — WHILE/END blocks per spec do not carry assignments, but the placement is consistent with GOTO). Must run after VariableEvaluatorSyntax so the condition string has been substituted to numeric. Forward scan to matching END m uses the anchored LabelScanUtil overload with ForwardFromAnchor from the WHILE host line — sequential loops reuse LoopIds, so only candidates below the host line may match. The probe runs the brand-default FanucWhileDoParsingSyntax on each candidate, predicate matches on Parsing.FanucWhileDo.Term == \"END\" && LoopId == target. Reverse scan to WHILE BeginLineNo does not need a label predicate — the BeginLineNo is a known file-line index recorded in the active frame, so the END side re-segments the file from the top and returns the slice starting at the first piece whose CharIndexSegment.Begin.LineIndex matches. public class FanucWhileDoSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object FanucWhileDoSyntax 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 Worked Example — Three-iteration WHILE [..] DO m ... END m Given this Custom Macro B source: #100 = 0 WHILE [#100 LT 3] DO 1 #100 = #100 + 1 END 1 X5 Each block flows through the runtime as below. The WhileFrames lifeline represents the per-block active-loop state carried block-to-block by the modal-carry pipeline; the END block consults it to find the WHILE line to reverse-jump to. The runaway-loop counter ticks on every successful END reverse-jump and suppresses further jumps above the configured iteration limit. sequenceDiagram participant W as WHILE block participant B as body participant E as END block participant X as X5 participant F as WhileFrames Note over F: empty Note over W: iter 1: cond=true (0 LT 3) W->>F: push {LoopId 1, BeginLineNo} W->>B: fall through B->>E: Note over E: counter 0 to 1 (≤Max) E-->>W: reverse jump Note over W: iter 2: cond=true (1 LT 3) Note over W,F: frame exists, skip push W->>B: fall through B->>E: Note over E: counter 1 to 2 (≤Max) E-->>W: reverse jump Note over W: iter 3: cond=true (2 LT 3) W->>B: B->>E: Note over E: counter 2 to 3 (≤Max) E-->>W: reverse jump Note over W: iter 4: cond=false (3 LT 3) W->>F: pop LoopId 1 Note over W: forward jump past END W->>X: After the loop exits, X5 executes with #100 = 3 in Vars.Volatile. Constructors FanucWhileDoSyntax() Parameterless instance. public FanucWhileDoSyntax() FanucWhileDoSyntax(XElement) XML ctor (no child elements; reserved for forward compatibility). public FanucWhileDoSyntax(XElement src) Parameters src XElement Fields BeginLineNoKey Schema field inside each WhileFrames entry: the WHILE block's file-line index. public const string BeginLineNoKey = \"BeginLineNo\" Field Value string WhileFramesKey Top-level JSON key for the active-loop frame dict. public const string WhileFramesKey = \"WhileFrames\" 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, "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 FanucConditionReader Shared polymorphic reader for Fanuc Custom Macro B conditional gate expressions (IF [...] GOTO, IF [...] THEN, WHILE [...] DO m). The condition node is read post-evaluation — VariableEvaluatorSyntax's pass-2 tree walk has already substituted the original expression string with a numeric JsonValue when evaluation succeeded; this helper maps that node to a tri-state truthy outcome plus a display form for diagnostics. Three states, mapping directly to the ConditionEvaluated: true | false | null stamp shape used by all three consumers (see FanucGotoSyntax, FanucIfThenSyntax, and the WHILE-loop syntax): Truthy = true — node is a finite non-zero numeric; gate fires. Truthy = false — node is a finite numeric equal to zero; gate falls through silently. Truthy = null — node is null, still a string (evaluator failed), or non-finite double (NaN / ±∞); gate falls through and the caller emits its own --ConditionNotEvaluated warning. The Display form is the human-readable expression text for diagnostic messages. For resolved numerics it is the value formatted via InvariantCulture; for unresolved strings it is the original expression text. Diagnostics build their own message text — the helper just provides the source string so the caller can compose \"IF [] GOTO ...\" etc. Callers typically DeepClone() the original node before passing in here, then again before stamping back, so removing the parsing section and writing the host-level stamp can happen in any order without dangling references. 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 FanucGotoSyntax.ReadCondition 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. FanucWhileDoSyntax Resolves Fanuc Custom Macro B WHILE [..] DO m ... END m bounded loops. Two phrases dispatched by Term: WHILE [..] DO m — entry: reads the resolved condition via FanucConditionReader, manages the per-LoopId frame in the top-level WhileFrames dict, and either falls through (truthy) or forward-jumps past the matching END m (falsy / unresolved). END m — terminator: unconditionally reverse-jumps to the WHILE block recorded in WhileFrames[LoopId].BeginLineNo so the next iteration re-evaluates the entry condition. Increments the per-loop iteration counter on FanucWhileDoIterationDependency; suppresses the redirect above MaxIterationsPerLoopId. WhileFrames carrier. The top-level WhileFrames JSON section is a JsonObject keyed by LoopId-as-string whose values are { BeginLineNo: int }. Frames are pushed when a WHILE block first encounters a truthy condition with no existing frame for that LoopId; popped when the condition becomes falsy or unresolved; otherwise carried forward unchanged by ModalCarrySyntax's Logic tracked-key list. Nested loops with distinct LoopIds coexist in the same dict; same-LoopId nesting (spec-undefined) overwrites and is not given special handling. Pipeline placement. Evaluation bundle, after the variable readers (defensive — WHILE/END blocks per spec do not carry assignments, but the placement is consistent with GOTO). Must run after VariableEvaluatorSyntax so the condition string has been substituted to numeric. Forward scan to matching END m uses the LabelScanUtil predicate overload — probe runs the brand-default FanucWhileDoParsingSyntax on each candidate, predicate matches on Parsing.FanucWhileDo.Term == \"END\" && LoopId == target. Reverse scan to WHILE BeginLineNo does not need a label predicate — the BeginLineNo is a known file-line index recorded in the active frame, so the END side re-segments the file from the top and returns the slice starting at the first piece whose CharIndexSegment.Begin.LineIndex matches. 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." + "summary": "Namespace Hi.NcParsers.EvaluationSyntaxs.Fanuc Classes FanucConditionReader Shared polymorphic reader for Fanuc Custom Macro B conditional gate expressions (IF [...] GOTO, IF [...] THEN, WHILE [...] DO m). The condition node is read post-evaluation — VariableEvaluatorSyntax's pass-2 tree walk has already substituted the original expression string with a numeric JsonValue when evaluation succeeded; this helper maps that node to a tri-state truthy outcome plus a display form for diagnostics. Three states, mapping directly to the ConditionEvaluated: true | false | null stamp shape used by all three consumers (see FanucGotoSyntax, FanucIfThenSyntax, and the WHILE-loop syntax): Truthy = true — node is a finite non-zero numeric; gate fires. Truthy = false — node is a finite numeric equal to zero; gate falls through silently. Truthy = null — node is null, still a string (evaluator failed), or non-finite double (NaN / ±∞); gate falls through and the caller emits its own --ConditionNotEvaluated warning. The Display form is the human-readable expression text for diagnostic messages. For resolved numerics it is the value formatted via InvariantCulture; for unresolved strings it is the original expression text. Diagnostics build their own message text — the helper just provides the source string so the caller can compose \"IF [] GOTO ...\" etc. Callers typically DeepClone() the original node before passing in here, then again before stamping back, so removing the parsing section and writing the host-level stamp can happen in any order without dangling references. 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 FanucGotoSyntax.ReadCondition 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. FanucWhileDoSyntax Resolves Fanuc Custom Macro B WHILE [..] DO m ... END m bounded loops. Two phrases dispatched by Term: WHILE [..] DO m — entry: reads the resolved condition via FanucConditionReader, manages the per-LoopId frame in the top-level WhileFrames dict, and either falls through (truthy) or forward-jumps past the matching END m (falsy / unresolved). END m — terminator: unconditionally reverse-jumps to the WHILE block recorded in WhileFrames[LoopId].BeginLineNo so the next iteration re-evaluates the entry condition. Increments the per-loop iteration counter on FanucWhileDoIterationDependency; suppresses the redirect above MaxIterationsPerLoopId. WhileFrames carrier. The top-level WhileFrames JSON section is a JsonObject keyed by LoopId-as-string whose values are { BeginLineNo: int }. Frames are pushed when a WHILE block first encounters a truthy condition with no existing frame for that LoopId; popped when the condition becomes falsy or unresolved; otherwise carried forward unchanged by ModalCarrySyntax's Logic tracked-key list. Nested loops with distinct LoopIds coexist in the same dict; same-LoopId nesting (spec-undefined) overwrites and is not given special handling. Pipeline placement. Evaluation bundle, after the variable readers (defensive — WHILE/END blocks per spec do not carry assignments, but the placement is consistent with GOTO). Must run after VariableEvaluatorSyntax so the condition string has been substituted to numeric. Forward scan to matching END m uses the anchored LabelScanUtil overload with ForwardFromAnchor from the WHILE host line — sequential loops reuse LoopIds, so only candidates below the host line may match. The probe runs the brand-default FanucWhileDoParsingSyntax on each candidate, predicate matches on Parsing.FanucWhileDo.Term == \"END\" && LoopId == target. Reverse scan to WHILE BeginLineNo does not need a label predicate — the BeginLineNo is a known file-line index recorded in the active frame, so the END side re-segments the file from the top and returns the slice starting at the first piece whose CharIndexSegment.Begin.LineIndex matches. 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.Heidenhain.HeidenhainExpressionParser.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainExpressionParser.html", + "title": "Class HeidenhainExpressionParser | HiAPI-C# 2025", + "summary": "Class HeidenhainExpressionParser Namespace Hi.NcParsers.EvaluationSyntaxs.Heidenhain Assembly HiMech.dll Recursive-descent parser for Heidenhain klartext FN value expressions. Produces the same NcExpr AST as the Fanuc NcExpressionParser so NcExpressionEvaluator is reused unchanged. Pure: no variable lookup, no evaluation. Grammar (lowest precedence at top): expr := add-expr add-expr := term (('+' | '-') term)* term := factor (('*' | '/' | 'DIV') factor)* factor := ('+' | '-')? primary primary := number | '(' expr ')' | 'Q' digits | 'QR' digits | 'QL' digits | 'QS' digits | func primary → prefix form \"SQRT 4\" (FN 5) | func '(' arglist ')' → paren form \"SQRT(Q2)\" Dialect notes: Q-family tokens are canonicalised to uppercase (q1 → Q1) so Parsing.Assignments keys, table lookups and same-block references agree. (Caveat shared with the Siemens R canonicalisation: a lowercase-captured Assignments key keeps its raw spelling in the evaluator's same-block dictionary, so a later same-block reference resolves to the pre-block value instead — klartext posts emit uppercase, corpus-zero.) DIV is the FN 4 division spelling (FN 4: Q4 = +8 DIV +Q2) and maps onto the shared divide operator. Function names are limited to the klartext math vocabulary (SQRT SIN COS TAN ASIN ACOS ATAN ABS INT FRAC SGN NEG LN LOG EXP); INT normalises to the evaluator's FIX (truncate toward zero), names the shared evaluator lacks (FRAC/SGN/NEG/LOG) parse fine and fail soft at evaluation. Any other identifier is a parse error — klartext has no named variables, and rejecting bare words keeps the evaluator's Parsing-tree pass from touching non-expression strings (MM, MAX, tool-axis letters). Comparison/logical operators are deliberately absent: FN 9–12 jump conditions are pre-normalised by HeidenhainGotoParsingSyntax into separate value operands plus a shared comparison word — never parsed here. public sealed class HeidenhainExpressionParser Inheritance object HeidenhainExpressionParser 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 requiring the whole string to be consumed. 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 TryParsePrefix(string, out NcExpr, out int, out string) Parses the longest valid expression prefix of source. On success, consumedLength is the number of leading characters that form the expression (trailing text from that offset on is the caller's to keep, e.g. as remaining UnparsedText). Fails only when not even a prefix parses — callers fall back to their legacy lexical capture in that case. This is the parser-delimited RHS boundary for Q1 = Q1 - 1-style assignments (whitespace inside the expression, trailing non-expression words split correctly). public static bool TryParsePrefix(string source, out NcExpr expr, out int consumedLength, out string error) Parameters source string expr NcExpr consumedLength int error string Returns bool" + }, + "api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainGotoSyntax.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainGotoSyntax.html", + "title": "Class HeidenhainGotoSyntax | HiAPI-C# 2025", + "summary": "Class HeidenhainGotoSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Heidenhain Assembly HiMech.dll Resolves Heidenhain FN 9–12 conditional jumps — the FanucGotoSyntax pattern with klartext LBL targets and a structural condition. Triggered by Parsing.HeidenhainGoto (written by HeidenhainGotoParsingSyntax); decides whether to fire, and on fire calls ReplaceSource(IEnumerable) on layers[0] with the re-segmented file content starting at the target label line (inclusive — the definition marker is consumed by HeidenhainSubProgramReturnSyntax downstream). The condition is compared here, not by the expression grammar: the parsing owner pre-normalised the statement into two value operands plus a shared comparison word (the P2 decision that keeps the Heidenhain dialect free of comparison/logical layers). Each operand is read polymorphically — numeric (typed at capture for literals, or substituted in place by VariableEvaluatorSyntax for resolved Q references) fires the comparison; a still-string operand means unresolved (the FN 18 SYSREAD target staying vacant is the designed source) and the jump warns HeidenhainGoto--ConditionNotEvaluated and falls through — no fabricated values, both endings stay fail-soft. The label scan is whole-file first-match through the runner's own segmenter (SegmenterDependency) with the P4 call-path probe stack — klartext has no direction mnemonic and a TNC label is unique per program, so the anchored directional overloads would add a distinction the language does not have. Numeric labels canonicalize (\"01\" ≡ 1); GOTO LBL 0 targets the end-of-subprogram sentinel and is refused (HeidenhainGoto--Lbl0Target, the HeidenhainSubProgramCallSyntax precedent). Jumps hosted inside a P4 inlined body (CALL LBL/CALL PGM splice or a REP section pass) are recognized but not simulated — the redirect would discard the pending inline tail (HeidenhainGoto--InlinedContextUnsupported, the Siemens P5 guard). Pipeline placement: tail of the Heidenhain Evaluation bundle, after VariableEvaluatorSyntax (operand substitution) and the Q reader. The HeidenhainGotoIterationDependency watchdog caps fired jumps per (file, label); a missing watchdog disables the cap (Fanuc parity). public class HeidenhainGotoSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainGotoSyntax 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 HeidenhainGotoSyntax() Parameterless instance with default probe syntaxes. public HeidenhainGotoSyntax() HeidenhainGotoSyntax(XElement, string, IProgress) Loads hosted probe 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 HeidenhainGotoSyntax(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 predicate is checked. Defaults match the P4 call-path probe stack of HeidenhainSubProgramCallSyntax: HeidenhainTildeTrimSyntax (strip ~ continuation heads), TailCommentSyntax with \";\" (a commented-out label never matches), HeadIndexSyntax with the bare klartext block-number symbol, then HeidenhainLblSyntax (whose definition regex excludes the CALL LBL and GOTO LBL spellings — a jump line is never a candidate). Order matters: strippers first, label parser last. 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + }, + "api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainQParameterReadingSyntax.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainQParameterReadingSyntax.html", + "title": "Class HeidenhainQParameterReadingSyntax | HiAPI-C# 2025", + "summary": "Class HeidenhainQParameterReadingSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Heidenhain Assembly HiMech.dll Obtains values for Heidenhain Q parameters by consuming literal numeric assignments from Parsing.Assignments.Qn/QRn and routing them by id range — one reader for the single Q key shape, range routing inside (the Heidenhain analogue of the Fanuc range-routed reader trio): Q0-Q99 → HeidenhainQParameterTable free range (hincproj-persisted; the table is the single source of truth — no JSON mirror). QRn → the same table's permanent QR store. Q100-Q199 → controller-written system parameters: the write is consumed but not applied, with a HeidenhainQ--SystemReadOnly warning (no fabricated values). Q200+ → volatile range: dict-merged into Vars.Volatile with canonical Q+id keys, carried block-to-block like the Fanuc VolatileVariableReadingSyntax; cleared at program end by ProgramEndCleanSyntax. The carry of the previous block's Vars.Volatile happens on every block regardless of assignments, so the single-step traceback contract of HeidenhainVolatileQLookup holds. Only literal numeric RHS values are consumed (Q1 = 5000 ✓; Q1 = Q1*.75 ✗). Non-literal RHS entries are left untouched in Parsing.Assignments; VariableEvaluatorSyntax resolves them to literals earlier on the same block, so by the time this syntax runs, every evaluable RHS is literal. The two syntaxes are decoupled. public class HeidenhainQParameterReadingSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainQParameterReadingSyntax 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: (with a HeidenhainQParameterTable on the dependency list; the literal moves into the table) { \"Parsing\": { \"Assignments\": { \"Q1\": \"300\" } } } #AfterBuild: {} Constructors HeidenhainQParameterReadingSyntax() Default constructor. public HeidenhainQParameterReadingSyntax() HeidenhainQParameterReadingSyntax(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). No state to deserialise. public HeidenhainQParameterReadingSyntax(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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + }, + "api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainSubProgramCallSyntax.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainSubProgramCallSyntax.html", + "title": "Class HeidenhainSubProgramCallSyntax | HiAPI-C# 2025", + "summary": "Class HeidenhainSubProgramCallSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Heidenhain Assembly HiMech.dll Consumes the Parsing.CALL record captured by HeidenhainCallSyntax and executes the three klartext call mechanisms over the shared M98 inline machinery: CALL LBL n / CALL LBL \"name\" (subprogram): the host file is re-segmented through the runner's own segmenter (SegmenterDependency), scanned for the matching LBL definition with LabelScanUtil and the LabelProbeSyntaxes, truncated at the first following LBL 0 (inclusive — its consumption pops the frame), and prepended into layers[0] with a pushed CallStack frame. A subprogram without LBL 0 is a structured safe-skip (inlining to EOF would double-execute the file tail). CALL LBL n REP m (program-section repeat — TNC semantics: the section from LBL n up to, not including, the call line runs m extra times): m fresh re-segmentation passes of that slice are prepended. A loop, not a call — no new CallStack frame is pushed, but the host block's stack propagates onto the repeated pieces so nested calls inside the section still accumulate depth against the rail; the repeat count itself is a literal bound. Any LBL 0 passed inside the section is a no-op for the return syntax (null-safe pop). CALL PGM name: resolved through InternalFolder with the FilePatterns chain ({0}.h → {0}.H → {0}) and inlined whole — the SiemensSubProgramCallSyntax mechanism verbatim, including resolve-miss safe-skip (HeidenhainCall--Skipped). The callee's END PGM pops the frame via HeidenhainSubProgramReturnSyntax; a unit switch inside the callee is not restored on return (recorded limitation). Recursion rail: like the Siemens call path, a self-recursive CALL LBL/CALL PGM would splice forever; a call whose host block already carries MaxCallDepth CallStack frames is consumed as a safe-skip with HeidenhainCall--DepthLimitExceeded. No MacroFrame is stamped — klartext subprograms share the caller's Q scope. Pipeline placement: head of the Heidenhain Evaluation bundle (the Fanuc discipline — call/inline ahead of all variable machinery). public class HeidenhainSubProgramCallSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainSubProgramCallSyntax 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 HeidenhainSubProgramCallSyntax() Parameterless instance with default settings. public HeidenhainSubProgramCallSyntax() HeidenhainSubProgramCallSyntax(XElement, string, IProgress) Loads FilePatterns, MaxCallDepth and LabelProbeSyntaxes from XML produced by MakeXmlSource(string, string, bool); absent elements fall back to defaults. public HeidenhainSubProgramCallSyntax(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. Fields DefaultMaxCallDepth Default for MaxCallDepth — the Siemens call-path value; the TNC itself nests far lower (8 levels). public const int DefaultMaxCallDepth = 32 Field Value int FrameKindKey Key of the frame-kind marker on a CallFrame entry. public const string FrameKindKey = \"Kind\" Field Value string MaxRepetitions TNC's own repeat-count ceiling. A larger literal is a corrupt or hostile file; without the cap the O(rep × file size) re-scan loop is a single-input denial of service. public const int MaxRepetitions = 65534 Field Value int Properties FilePatterns Filename-resolution fallback chain for CALL PGM, formatted with the callee name as the only positional arg. Case-insensitive match is delegated to the host filesystem (the .h/.H pair matters on Linux). public List FilePatterns { get; set; } Property Value List LabelProbeSyntaxes Ordered probe syntaxes run on each candidate block during label scans, before the name predicate fires. Defaults match the Heidenhain Parsing bundle head (; tail comments, bare klartext block numbers, the LBL statement parser). Swappable via XML — the LabelProbeSyntaxes pattern. public List LabelProbeSyntaxes { get; set; } Property Value List MaxCallDepth Recursion rail for the call path (no iteration watchdog covers it); see the class remarks. public int MaxCallDepth { get; set; } Property Value int 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + }, + "api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainSubProgramReturnSyntax.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainSubProgramReturnSyntax.html", + "title": "Class HeidenhainSubProgramReturnSyntax | HiAPI-C# 2025", + "summary": "Class HeidenhainSubProgramReturnSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Heidenhain Assembly HiMech.dll Consumes the two klartext return spellings and the standalone label markers: LBL 0 — end-of-subprogram sentinel: stamps SubProgramReturn (Term: \"LBL 0\") and pops the CallStack frame (null-safe: an LBL 0 reached in the main flow — the 1.H head layout — is a no-op). Like the Fanuc M99, the \"return\" itself is structural: the call syntax truncated the inlined slice at this block, so the caller's tail follows naturally. LBL n / LBL \"name\" — definition markers: consumed into a block-root HeidenhainLbl record (no motion; keeps the label visible for dumps and the P5 jump family). END PGM with a non-empty CallStack — the return of a CALL PGM callee: consumes Parsing.PGM before the Logic program-header syntax can treat it as a real program end (which would clear the volatile Q store mid-stream), stamps SubProgramReturn (Term: \"END PGM\"), and pops the frame. The main file's END PGM (empty stack) is untouched. Pipeline placement: directly after HeidenhainSubProgramCallSyntax at the head of the Evaluation bundle. public class HeidenhainSubProgramReturnSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object HeidenhainSubProgramReturnSyntax 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 HeidenhainSubProgramReturnSyntax() Initializes a new instance with default settings. public HeidenhainSubProgramReturnSyntax() HeidenhainSubProgramReturnSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public HeidenhainSubProgramReturnSyntax(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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + }, + "api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainVolatileQLookup.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.HeidenhainVolatileQLookup.html", + "title": "Class HeidenhainVolatileQLookup | HiAPI-C# 2025", + "summary": "Class HeidenhainVolatileQLookup Namespace Hi.NcParsers.EvaluationSyntaxs.Heidenhain Assembly HiMech.dll Reads Heidenhain volatile Q parameters (Q200+, the cycle/user range that resets at program start) from Vars.Volatile. Self-gates the id range so the evaluator's RuntimeVariableLookups chain can fall through for other keys (Q0-Q99/QRn resolve on the HeidenhainQParameterTable further down the chain; Q100-Q199 stay vacant by design). Sibling of the Fanuc VolatileVariableLookup with the same single-step traceback contract: HeidenhainQParameterReadingSyntax dict-merges every block's Vars.Volatile into the next block, so the entry — if it exists — is on the current block or the immediately previous one. Keys are stored canonically as Q + id by the reader; this lookup re-canonicalises the incoming key the same way, so lowercase raw captures still resolve. Stateless and dependency-free. public class HeidenhainVolatileQLookup : IRuntimeVariableLookup, IMakeXmlSource Inheritance object HeidenhainVolatileQLookup 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 HeidenhainVolatileQLookup() Default constructor. public HeidenhainVolatileQLookup() HeidenhainVolatileQLookup(XElement) Loads from an XML element produced by MakeXmlSource(string, string, bool). Stateless — no fields to deserialise. public HeidenhainVolatileQLookup(XElement src) Parameters src XElement Fields VolatileMax Inclusive upper bound of the volatile Q range (Q1999) — covers the TNC cycle-parameter and user ranges above the persistent/system segments. public const int VolatileMax = 1999 Field Value int VolatileMin Inclusive lower bound of the volatile Q range (Q200). public const int VolatileMin = 200 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + }, + "api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Heidenhain.html", + "title": "Namespace Hi.NcParsers.EvaluationSyntaxs.Heidenhain | HiAPI-C# 2025", + "summary": "Namespace Hi.NcParsers.EvaluationSyntaxs.Heidenhain Classes HeidenhainExpressionParser Recursive-descent parser for Heidenhain klartext FN value expressions. Produces the same NcExpr AST as the Fanuc NcExpressionParser so NcExpressionEvaluator is reused unchanged. Pure: no variable lookup, no evaluation. Grammar (lowest precedence at top): expr := add-expr add-expr := term (('+' | '-') term)* term := factor (('*' | '/' | 'DIV') factor)* factor := ('+' | '-')? primary primary := number | '(' expr ')' | 'Q' digits | 'QR' digits | 'QL' digits | 'QS' digits | func primary → prefix form \"SQRT 4\" (FN 5) | func '(' arglist ')' → paren form \"SQRT(Q2)\" Dialect notes: Q-family tokens are canonicalised to uppercase (q1 → Q1) so Parsing.Assignments keys, table lookups and same-block references agree. (Caveat shared with the Siemens R canonicalisation: a lowercase-captured Assignments key keeps its raw spelling in the evaluator's same-block dictionary, so a later same-block reference resolves to the pre-block value instead — klartext posts emit uppercase, corpus-zero.) DIV is the FN 4 division spelling (FN 4: Q4 = +8 DIV +Q2) and maps onto the shared divide operator. Function names are limited to the klartext math vocabulary (SQRT SIN COS TAN ASIN ACOS ATAN ABS INT FRAC SGN NEG LN LOG EXP); INT normalises to the evaluator's FIX (truncate toward zero), names the shared evaluator lacks (FRAC/SGN/NEG/LOG) parse fine and fail soft at evaluation. Any other identifier is a parse error — klartext has no named variables, and rejecting bare words keeps the evaluator's Parsing-tree pass from touching non-expression strings (MM, MAX, tool-axis letters). Comparison/logical operators are deliberately absent: FN 9–12 jump conditions are pre-normalised by HeidenhainGotoParsingSyntax into separate value operands plus a shared comparison word — never parsed here. HeidenhainGotoSyntax Resolves Heidenhain FN 9–12 conditional jumps — the FanucGotoSyntax pattern with klartext LBL targets and a structural condition. Triggered by Parsing.HeidenhainGoto (written by HeidenhainGotoParsingSyntax); decides whether to fire, and on fire calls ReplaceSource(IEnumerable) on layers[0] with the re-segmented file content starting at the target label line (inclusive — the definition marker is consumed by HeidenhainSubProgramReturnSyntax downstream). The condition is compared here, not by the expression grammar: the parsing owner pre-normalised the statement into two value operands plus a shared comparison word (the P2 decision that keeps the Heidenhain dialect free of comparison/logical layers). Each operand is read polymorphically — numeric (typed at capture for literals, or substituted in place by VariableEvaluatorSyntax for resolved Q references) fires the comparison; a still-string operand means unresolved (the FN 18 SYSREAD target staying vacant is the designed source) and the jump warns HeidenhainGoto--ConditionNotEvaluated and falls through — no fabricated values, both endings stay fail-soft. The label scan is whole-file first-match through the runner's own segmenter (SegmenterDependency) with the P4 call-path probe stack — klartext has no direction mnemonic and a TNC label is unique per program, so the anchored directional overloads would add a distinction the language does not have. Numeric labels canonicalize (\"01\" ≡ 1); GOTO LBL 0 targets the end-of-subprogram sentinel and is refused (HeidenhainGoto--Lbl0Target, the HeidenhainSubProgramCallSyntax precedent). Jumps hosted inside a P4 inlined body (CALL LBL/CALL PGM splice or a REP section pass) are recognized but not simulated — the redirect would discard the pending inline tail (HeidenhainGoto--InlinedContextUnsupported, the Siemens P5 guard). Pipeline placement: tail of the Heidenhain Evaluation bundle, after VariableEvaluatorSyntax (operand substitution) and the Q reader. The HeidenhainGotoIterationDependency watchdog caps fired jumps per (file, label); a missing watchdog disables the cap (Fanuc parity). HeidenhainQParameterReadingSyntax Obtains values for Heidenhain Q parameters by consuming literal numeric assignments from Parsing.Assignments.Qn/QRn and routing them by id range — one reader for the single Q key shape, range routing inside (the Heidenhain analogue of the Fanuc range-routed reader trio): Q0-Q99 → HeidenhainQParameterTable free range (hincproj-persisted; the table is the single source of truth — no JSON mirror). QRn → the same table's permanent QR store. Q100-Q199 → controller-written system parameters: the write is consumed but not applied, with a HeidenhainQ--SystemReadOnly warning (no fabricated values). Q200+ → volatile range: dict-merged into Vars.Volatile with canonical Q+id keys, carried block-to-block like the Fanuc VolatileVariableReadingSyntax; cleared at program end by ProgramEndCleanSyntax. The carry of the previous block's Vars.Volatile happens on every block regardless of assignments, so the single-step traceback contract of HeidenhainVolatileQLookup holds. Only literal numeric RHS values are consumed (Q1 = 5000 ✓; Q1 = Q1*.75 ✗). Non-literal RHS entries are left untouched in Parsing.Assignments; VariableEvaluatorSyntax resolves them to literals earlier on the same block, so by the time this syntax runs, every evaluable RHS is literal. The two syntaxes are decoupled. HeidenhainSubProgramCallSyntax Consumes the Parsing.CALL record captured by HeidenhainCallSyntax and executes the three klartext call mechanisms over the shared M98 inline machinery: CALL LBL n / CALL LBL \"name\" (subprogram): the host file is re-segmented through the runner's own segmenter (SegmenterDependency), scanned for the matching LBL definition with LabelScanUtil and the LabelProbeSyntaxes, truncated at the first following LBL 0 (inclusive — its consumption pops the frame), and prepended into layers[0] with a pushed CallStack frame. A subprogram without LBL 0 is a structured safe-skip (inlining to EOF would double-execute the file tail). CALL LBL n REP m (program-section repeat — TNC semantics: the section from LBL n up to, not including, the call line runs m extra times): m fresh re-segmentation passes of that slice are prepended. A loop, not a call — no new CallStack frame is pushed, but the host block's stack propagates onto the repeated pieces so nested calls inside the section still accumulate depth against the rail; the repeat count itself is a literal bound. Any LBL 0 passed inside the section is a no-op for the return syntax (null-safe pop). CALL PGM name: resolved through InternalFolder with the FilePatterns chain ({0}.h → {0}.H → {0}) and inlined whole — the SiemensSubProgramCallSyntax mechanism verbatim, including resolve-miss safe-skip (HeidenhainCall--Skipped). The callee's END PGM pops the frame via HeidenhainSubProgramReturnSyntax; a unit switch inside the callee is not restored on return (recorded limitation). Recursion rail: like the Siemens call path, a self-recursive CALL LBL/CALL PGM would splice forever; a call whose host block already carries MaxCallDepth CallStack frames is consumed as a safe-skip with HeidenhainCall--DepthLimitExceeded. No MacroFrame is stamped — klartext subprograms share the caller's Q scope. Pipeline placement: head of the Heidenhain Evaluation bundle (the Fanuc discipline — call/inline ahead of all variable machinery). HeidenhainSubProgramReturnSyntax Consumes the two klartext return spellings and the standalone label markers: LBL 0 — end-of-subprogram sentinel: stamps SubProgramReturn (Term: \"LBL 0\") and pops the CallStack frame (null-safe: an LBL 0 reached in the main flow — the 1.H head layout — is a no-op). Like the Fanuc M99, the \"return\" itself is structural: the call syntax truncated the inlined slice at this block, so the caller's tail follows naturally. LBL n / LBL \"name\" — definition markers: consumed into a block-root HeidenhainLbl record (no motion; keeps the label visible for dumps and the P5 jump family). END PGM with a non-empty CallStack — the return of a CALL PGM callee: consumes Parsing.PGM before the Logic program-header syntax can treat it as a real program end (which would clear the volatile Q store mid-stream), stamps SubProgramReturn (Term: \"END PGM\"), and pops the frame. The main file's END PGM (empty stack) is untouched. Pipeline placement: directly after HeidenhainSubProgramCallSyntax at the head of the Evaluation bundle. HeidenhainVolatileQLookup Reads Heidenhain volatile Q parameters (Q200+, the cycle/user range that resets at program start) from Vars.Volatile. Self-gates the id range so the evaluator's RuntimeVariableLookups chain can fall through for other keys (Q0-Q99/QRn resolve on the HeidenhainQParameterTable further down the chain; Q100-Q199 stay vacant by design). Sibling of the Fanuc VolatileVariableLookup with the same single-step traceback contract: HeidenhainQParameterReadingSyntax dict-merges every block's Vars.Volatile into the next block, so the entry — if it exists — is on the current block or the immediately previous one. Keys are stored canonically as Q + id by the reader; this lookup re-canonicalises the incoming key the same way, so lowercase raw captures still resolve. Stateless and dependency-free." + }, + "api/Hi.NcParsers.EvaluationSyntaxs.LabelScanDirection.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.LabelScanDirection.html", + "title": "Enum LabelScanDirection | HiAPI-C# 2025", + "summary": "Enum LabelScanDirection Namespace Hi.NcParsers.EvaluationSyntaxs Assembly HiMech.dll Scan region and match policy for the anchored LabelScanUtil overload. Forward scans take the first match below the anchor line; backward scans take the nearest match above it. public enum LabelScanDirection 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 BackwardNearestToAnchor = 1 Scan lines strictly above the anchor, nearest (last) match wins (GOTOB). ForwardFromAnchor = 0 Scan lines strictly below the anchor, first match wins (GOTOF)." }, "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 caller-supplied probe syntaxes 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, List, string, string, int, int, List, Func, NcDiagnosticProgress) Predicate-driven overload. The caller supplies match as the per-candidate gate (run on the candidate block's JsonObject after the probe syntaxes have finished stamping). This unblocks scans whose label representation differs from IndexNote.Number — for example END m blocks identified by a custom probe-written section, where reusing IndexNote would collide with real N{m} head indices in the same file. The default targetN overload delegates here with the IndexNote.Number == targetN predicate baked in; existing callers (Fanuc unconditional GOTO, M99 P{seq} jump) are unchanged. public static List SegmentAndSkipUntilLabel(ISegmenter segmenter, List ncDependencyList, string absPath, string labelPath, int fileIndex, int sentenceIndexBegin, List probeSyntaxes, Func match, NcDiagnosticProgress diag) Parameters segmenter ISegmenter Segmenter used to slice the file into Sentence blocks. ncDependencyList List NC dependency list forwarded to GetSyntaxPieces(ISegmenter, List, IEnumerable, int, NcDiagnosticProgress, CancellationToken) while re-segmenting the scanned file. absPath string Absolute path to read line content from. labelPath string Project-relative path to stamp on each line's IndexedFileLine label. 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. probeSyntaxes List Ordered list of helper syntaxes to run on each candidate block before the predicate check. May be null. match Func Per-candidate predicate; true selects the first match. diag NcDiagnosticProgress Sink for any diagnostics produced by the probe syntaxes. Returns List SegmentAndSkipUntilLabel(ISegmenter, List, 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, List, 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, List ncDependencyList, 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. ncDependencyList List NC dependency list forwarded to GetSyntaxPieces(ISegmenter, List, IEnumerable, int, NcDiagnosticProgress, CancellationToken) while re-segmenting the scanned file. 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" + "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 caller-supplied probe syntaxes 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 CanReadSource(List, string, string) Whether a re-segmentation scan can obtain line content for labelPath — either an in-memory registration on the pipeline's NcLineSourceDependency (inline NC-code plays, whose pseudo-path never exists on disk) or an existing file at absPath. Jump syntaxes use this as the pre-scan guard in place of a bare File.Exists(absPath), so control flow inside inline plays is not misreported as a missing host file. public static bool CanReadSource(List ncDependencyList, string labelPath, string absPath) Parameters ncDependencyList List labelPath string absPath string Returns bool SegmentAndRewindToLine(ISegmenter, List, string, string, int, int, int, NcDiagnosticProgress) Re-segments absPath and returns the slice starting at the first piece whose file line index equals beginLineIndex — the loop back-jump primitive (no label predicate, no probes). Extracted from the Fanuc WHILE/END reverse jump so the Siemens loop family shares the same engine; FanucWhileDoSyntax delegates here unchanged. Returns null when the line did not materialise as a segment start. public static List SegmentAndRewindToLine(ISegmenter segmenter, List ncDependencyList, string absPath, string labelPath, int fileIndex, int sentenceIndexBegin, int beginLineIndex, NcDiagnosticProgress diag) Parameters segmenter ISegmenter Segmenter used to slice the file into Sentence blocks. ncDependencyList List NC dependency list forwarded to GetSyntaxPieces(ISegmenter, List, IEnumerable, int, NcDiagnosticProgress, CancellationToken) while re-segmenting the file. absPath string Absolute path to read line content from. labelPath string Project-relative path to stamp on each line's IndexedFileLine label. fileIndex int Fresh file index to stamp on each line, allocated by the caller from FileIndexCounterDependency. sentenceIndexBegin int Legacy fallback starting index — ignored when the pipeline carries a SentenceIndexCounterDependency. beginLineIndex int 0-based file line index of the block to rewind to (the loop-entry line). diag NcDiagnosticProgress Diagnostic sink for the re-segmentation. Returns List SegmentAndSkipUntilLabel(ISegmenter, List, string, string, int, int, List, Func, NcDiagnosticProgress) Predicate-driven overload. The caller supplies match as the per-candidate gate (run on the candidate block's JsonObject after the probe syntaxes have finished stamping). This unblocks scans whose label representation differs from IndexNote.Number — for example END m blocks identified by a custom probe-written section, where reusing IndexNote would collide with real N{m} head indices in the same file. The default targetN overload delegates here with the IndexNote.Number == targetN predicate baked in; existing callers (Fanuc unconditional GOTO, M99 P{seq} jump) are unchanged. public static List SegmentAndSkipUntilLabel(ISegmenter segmenter, List ncDependencyList, string absPath, string labelPath, int fileIndex, int sentenceIndexBegin, List probeSyntaxes, Func match, NcDiagnosticProgress diag) Parameters segmenter ISegmenter Segmenter used to slice the file into Sentence blocks. ncDependencyList List NC dependency list forwarded to GetSyntaxPieces(ISegmenter, List, IEnumerable, int, NcDiagnosticProgress, CancellationToken) while re-segmenting the scanned file. absPath string Absolute path to read line content from. labelPath string Project-relative path to stamp on each line's IndexedFileLine label. fileIndex int Fresh file index to stamp on each scanned line, allocated by the caller from FileIndexCounterDependency. sentenceIndexBegin int Legacy fallback starting index for the produced pieces — ignored when the pipeline carries a SentenceIndexCounterDependency. probeSyntaxes List Ordered list of helper syntaxes to run on each candidate block before the predicate check. May be null. match Func Per-candidate predicate; true selects the first match. diag NcDiagnosticProgress Sink for any diagnostics produced by the probe syntaxes. Returns List SegmentAndSkipUntilLabel(ISegmenter, List, string, string, int, int, List, Func, int, LabelScanDirection, NcDiagnosticProgress) Anchored, direction-aware overload for the Siemens GOTOF/GOTOB family (and any other scan that must not see the whole file). The two legacy overloads above always scan the whole file top-down and take the first match — that cannot express “forward only, from the jump site” (GOTOF) or “nearest label above the jump site” (GOTOB), and it silently mis-targets when the same label text appears both before and after the host line. Semantics here: ForwardFromAnchor — only candidates whose file line index is strictly greater than anchorLineIndex are probed and matched; the first match wins. BackwardNearestToAnchor — only candidates strictly above anchorLineIndex are probed and matched; the last match (largest line index — nearest to the anchor) wins. Candidates without a resolvable line index are skipped. The returned slice runs from the matched block (inclusive — a label line may carry trailing code) to EOF, exactly like the legacy overloads; a backward jump is still \"replace the source with the slice from the target down\", the same shape the WHILE reverse jump uses. Returns null when no candidate matches. public static List SegmentAndSkipUntilLabel(ISegmenter segmenter, List ncDependencyList, string absPath, string labelPath, int fileIndex, int sentenceIndexBegin, List probeSyntaxes, Func match, int anchorLineIndex, LabelScanDirection direction, NcDiagnosticProgress diag) Parameters segmenter ISegmenter Segmenter used to slice the file into Sentence blocks. ncDependencyList List NC dependency list forwarded to GetSyntaxPieces(ISegmenter, List, IEnumerable, int, NcDiagnosticProgress, CancellationToken) while re-segmenting the scanned file. absPath string Absolute path to read line content from. labelPath string Project-relative path to stamp on each line's IndexedFileLine label. fileIndex int Fresh file index to stamp on each scanned line, allocated by the caller from FileIndexCounterDependency. sentenceIndexBegin int Legacy fallback starting index for the produced pieces — ignored when the pipeline carries a SentenceIndexCounterDependency. probeSyntaxes List Ordered list of helper syntaxes to run on each in-region candidate before the predicate check. May be null. match Func Per-candidate predicate on the probed block's JSON. anchorLineIndex int 0-based file line index of the jump host block; the scan region excludes this line itself. direction LabelScanDirection Scan region and match policy relative to the anchor. diag NcDiagnosticProgress Sink for any diagnostics produced by the probe syntaxes. Returns List SegmentAndSkipUntilLabel(ISegmenter, List, 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, List, IEnumerable, int, NcDiagnosticProgress, CancellationToken), which stamps SentenceIndex from the session's SentenceIndexCounterDependency when present (the whole re-segmented file is numbered eagerly, so the discarded pre-label prefix leaves a gap in the sequence) and falls back to contiguous numbering from sentenceIndexBegin otherwise. 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, List ncDependencyList, 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. ncDependencyList List NC dependency list forwarded to GetSyntaxPieces(ISegmenter, List, IEnumerable, int, NcDiagnosticProgress, CancellationToken) while re-segmenting the scanned file. 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 Legacy fallback starting index for the produced pieces — ignored when the pipeline carries a SentenceIndexCounterDependency. 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", @@ -3862,18 +4197,98 @@ "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?" + "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? Resolve(string, string, string, IEnumerable) Name-based sibling of Resolve(string, int, string) for dialects whose subprogram identifier is a word rather than an O-number (Siemens L9810 / HQ_FC by-name calls). patterns is formatted with the name as the only positional arg (e.g. \"{0}.SPF\") — supplied per call so brand pattern sets stay on their own syntaxes instead of leaking into the shared Fanuc FilenamePatterns chain. Folder anchoring and the tri-form result follow the int overload exactly. public static MacroFileResolver.ResolvedFile? Resolve(string folder, string name, string baseDirectory, IEnumerable patterns) Parameters folder string name string baseDirectory string patterns IEnumerable 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, List, 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 PrependSource(IEnumerable) on the source layer. public static IEnumerable BuildInlinedPieces(MacroFileResolver.ResolvedFile resolvedFile, int l, IReadOnlyDictionary bindings, JsonObject callRecord, JsonObject pushedCallStack, FileIndexCounterDependency counterDep, ISegmenter segmenter, List ncDependencyList, int sentenceIndexBegin, NcDiagnosticProgress ncDiagnosticProgress) Parameters resolvedFile MacroFileResolver.ResolvedFile l int bindings IReadOnlyDictionary callRecord JsonObject pushedCallStack JsonObject counterDep FileIndexCounterDependency segmenter ISegmenter ncDependencyList List 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" + "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, List, 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 PrependSource(IEnumerable) on the source layer. SentenceIndex allocation happens inside GetSyntaxPieces(ISegmenter, List, IEnumerable, int, NcDiagnosticProgress, CancellationToken) via the session's FileIndexCounterDependency sibling SentenceIndexCounterDependency; sentenceIndexBegin is only the legacy fallback numbering for counter-less presets. public static IEnumerable BuildInlinedPieces(MacroFileResolver.ResolvedFile resolvedFile, int l, IReadOnlyDictionary bindings, JsonObject callRecord, JsonObject pushedCallStack, FileIndexCounterDependency counterDep, ISegmenter segmenter, List ncDependencyList, int sentenceIndexBegin, NcDiagnosticProgress ncDiagnosticProgress) Parameters resolvedFile MacroFileResolver.ResolvedFile l int bindings IReadOnlyDictionary callRecord JsonObject pushedCallStack JsonObject counterDep FileIndexCounterDependency segmenter ISegmenter ncDependencyList List 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 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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" }, + "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensAcIcSyntax.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensAcIcSyntax.html", + "title": "Class SiemensAcIcSyntax | HiAPI-C# 2025", + "summary": "Class SiemensAcIcSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Siemens Assembly HiMech.dll Recognizes the Siemens per-word coordinate function family on axis words — AC(...) (absolute), IC(...) (incremental), DC(...) (rotary shortest-path), ACP(...) / ACN(...) (rotary directional approach), and the coded-position (indexing axis) counterparts CAC(...) / CIC(...) / CDC(...) / CACP(...) / CACN(...) — e.g. X=AC(400), C=IC(360/17), C=DC(47.296), B=CAC(2) — unwraps the inner expression so the downstream VariableEvaluatorSyntax resolves it through the normal Siemens expression machinery, and records the per-word positioning override in a block-root PositioningOverride section keyed by word name (Absolute / Incremental / Shortest / PositiveOnly / NegativeOnly, and the Coded* values for the coded-position verbs). Siemens semantics: the wrapper forces the interpretation of that one coordinate word for that one block, regardless of the modal G90/G91 state. The positional conversion itself stays with the same consumers that honor the modal state — IncrementalResolveSyntax for linear axes and McAbcSyntax for rotary axes (both treat every non-Incremental override as an absolute write), while the rotary shortest/directional resolution stays with the McAbcCyclicPathSyntax tail-pass — this syntax only normalizes the text and stamps the override; it never reads machine position (the Evaluation stage is not the place for position-state reads). Scope: axis words (per AxisNames, falling back to X/Y/Z/A/B/C) accept the full family, except that the rotary-only verbs DC/ACP/ACN are unwrapped only on rotary axes (per IsRotaryAxis(string), falling back to A/B/C) — on a linear axis they are invalid Siemens and are left untouched so they surface as unevaluated residue instead of being silently mis-read. The interpolation parameters I/J/K accept AC/IC only (Siemens circle centers are incremental by default; I=AC(...) switches that one component to an absolute center coordinate, consumed by SiemensCircularMotionSyntax) — the rotary verbs are meaningless there and are left untouched. The coded-position verbs (their argument is a 1-based indexing position number, not a coordinate) are unwrapped only on axes that IsIndexingAxis(string) reports as usable indexing axes — CDC/CACP/CACN additionally require the axis to be rotary. Everywhere else (a non-indexing axis, no indexing config on the list, I/J/K) they stay untouched, mirroring the Siemens alarm 17500 (\"axis is not an indexing axis\") with loud unevaluated residue. The number→coordinate lookup happens at the write stage (McAbcSyntax / IncrementalResolveSyntax via CodedPositionUtil), not here — the Evaluation stage neither reads machine position nor resolves tables. Positioning-axis forms (POS[C]=DC(...) / SPOS=) never reach the word path and are out of scope. Values whose parentheses do not balance around the wrapper (e.g. IC(1)+AC(2)) are also left untouched. Must be placed in the Evaluation bundle before VariableEvaluatorSyntax (the unwrapped inner text is a plain Siemens expression the evaluator numeric-ifies on the same block). Inside REPEAT / subprogram splices each re-fed piece runs the full bundle again, so the unwrap happens on every iteration. public class SiemensAcIcSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource Inheritance object SiemensAcIcSyntax 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 C=IC(360/17) (the HUA08126 REPEAT shape) — the wrapper is unwrapped to the inner expression (still a string; the evaluator numeric-ifies it later on the same block) and the override section records the per-word incremental interpretation: #BeforeBuild: { \"Parsing\": { \"C\": \"IC(360/17)\" } } #AfterBuild: { \"Parsing\": { \"C\": \"360/17\" }, \"PositioningOverride\": { \"C\": \"Incremental\" } } X=AC(25) — absolute override; the inner literal stays a string here (pass-2 of the evaluator turns it numeric): #BeforeBuild: { \"Parsing\": { \"X\": \"AC(25)\" } } #AfterBuild: { \"Parsing\": { \"X\": \"25\" }, \"PositioningOverride\": { \"X\": \"Absolute\" } } A plain expression without the wrapper is not touched and no override section appears: #BeforeBuild: { \"Parsing\": { \"X\": \"R5+2\" } } #AfterBuild: { \"Parsing\": { \"X\": \"R5+2\" } } Unbalanced wrapper parentheses (IC(1)+AC(2) — the outer regex shape matches but the inner text closes the wrapper early) — left untouched so it surfaces as unevaluated residue instead of a silent mis-read: #BeforeBuild: { \"Parsing\": { \"X\": \"IC(1)+AC(2)\" } } #AfterBuild: { \"Parsing\": { \"X\": \"IC(1)+AC(2)\" } } C=DC(47.296) (the A055548 corpus shape, 6632 lines in one program) — rotary shortest-path: unwrapped like AC and stamped Shortest; the write stays absolute and the shortest swing is the unconditional McAbcCyclicPathSyntax tail-pass for modular rotary axes (an exactly-180° target resolves deterministically to the negative swing — the tail-pass window is half-open [anchor-180°, anchor+180°); real controls make that measure-zero tie machine-data-dependent): #BeforeBuild: { \"Parsing\": { \"C\": \"DC(47.296)\" } } #AfterBuild: { \"Parsing\": { \"C\": \"47.296\" }, \"PositioningOverride\": { \"C\": \"Shortest\" } } X=DC(90) — the rotary-only verb on a linear axis is invalid Siemens (real controls alarm): left untouched, loud residue instead of a silent absolute conversion: #BeforeBuild: { \"Parsing\": { \"X\": \"DC(90)\" } } #AfterBuild: { \"Parsing\": { \"X\": \"DC(90)\" } } C=ACP(270) — absolute target, positive-direction-only approach (may deliberately take the long way around): #BeforeBuild: { \"Parsing\": { \"C\": \"ACP(270)\" } } #AfterBuild: { \"Parsing\": { \"C\": \"270\" }, \"PositioningOverride\": { \"C\": \"PositiveOnly\" } } C=ACN(90) — the negative-direction mirror: #BeforeBuild: { \"Parsing\": { \"C\": \"ACN(90)\" } } #AfterBuild: { \"Parsing\": { \"C\": \"90\" }, \"PositioningOverride\": { \"C\": \"NegativeOnly\" } } I=AC(400) — interpolation parameter switched to an absolute center coordinate (Siemens I/J/K default incremental); consumed by SiemensCircularMotionSyntax: #BeforeBuild: { \"Parsing\": { \"I\": \"AC(400)\" } } #AfterBuild: { \"Parsing\": { \"I\": \"400\" }, \"PositioningOverride\": { \"I\": \"Absolute\" } } I=DC(10) — rotary verbs are meaningless on interpolation parameters: left untouched, loud residue: #BeforeBuild: { \"Parsing\": { \"I\": \"DC(10)\" } } #AfterBuild: { \"Parsing\": { \"I\": \"DC(10)\" } } The coded-position cases below inject a SiemensMachineDataTable declaring C rotary and X linear, both assigned to indexing table 1 = [0, 90, 180, 270] (the values double as mm for X). C=CAC(3) — coded absolute: the inner text (a position number expression, numeric-ified later by the evaluator like every other case) is unwrapped and the coded override is stamped; the number→angle lookup stays with the write-stage consumers: #BeforeBuild: { \"Parsing\": { \"C\": \"CAC(3)\" } } #AfterBuild: { \"Parsing\": { \"C\": \"3\" }, \"PositioningOverride\": { \"C\": \"CodedAbsolute\" } } C=CIC(2) — coded incremental (advance two indexing positions): #BeforeBuild: { \"Parsing\": { \"C\": \"CIC(2)\" } } #AfterBuild: { \"Parsing\": { \"C\": \"2\" }, \"PositioningOverride\": { \"C\": \"CodedIncremental\" } } C=CDC(4) — coded shortest-path: #BeforeBuild: { \"Parsing\": { \"C\": \"CDC(4)\" } } #AfterBuild: { \"Parsing\": { \"C\": \"4\" }, \"PositioningOverride\": { \"C\": \"CodedShortest\" } } C=CACP(2) — coded positive-direction-only: #BeforeBuild: { \"Parsing\": { \"C\": \"CACP(2)\" } } #AfterBuild: { \"Parsing\": { \"C\": \"2\" }, \"PositioningOverride\": { \"C\": \"CodedPositiveOnly\" } } C=CACN(2) — coded negative-direction-only: #BeforeBuild: { \"Parsing\": { \"C\": \"CACN(2)\" } } #AfterBuild: { \"Parsing\": { \"C\": \"2\" }, \"PositioningOverride\": { \"C\": \"CodedNegativeOnly\" } } C=CAC(3) with no indexing config on the dependency list (this case injects none) — the axis is not an indexing axis, so the word stays untouched and surfaces as loud unevaluated residue (the Siemens control raises alarm 17500 here): #BeforeBuild: { \"Parsing\": { \"C\": \"CAC(3)\" } } #AfterBuild: { \"Parsing\": { \"C\": \"CAC(3)\" } } X=CDC(2) — the rotary coded verbs are invalid on a linear indexing axis: left untouched, loud residue (X=CAC(2) / X=CIC(2) would unwrap): #BeforeBuild: { \"Parsing\": { \"X\": \"CDC(2)\" } } #AfterBuild: { \"Parsing\": { \"X\": \"CDC(2)\" } } I=CAC(3) — interpolation parameters take no coded verbs: #BeforeBuild: { \"Parsing\": { \"I\": \"CAC(3)\" } } #AfterBuild: { \"Parsing\": { \"I\": \"CAC(3)\" } } Constructors SiemensAcIcSyntax() Initializes a new instance with default settings. public SiemensAcIcSyntax() SiemensAcIcSyntax(XElement) Initializes a new instance by deserializing from the given XML element. public SiemensAcIcSyntax(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. Reg(XFactory) Registers this type's deserializer with the given XFactory (or Default when factory is null). Idempotent. public static void Reg(XFactory factory = null) Parameters factory XFactory" + }, + "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensExpressionParser.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensExpressionParser.html", + "title": "Class SiemensExpressionParser | HiAPI-C# 2025", + "summary": "Class SiemensExpressionParser Namespace Hi.NcParsers.EvaluationSyntaxs.Siemens Assembly HiMech.dll Recursive-descent parser for Sinumerik value expressions. Produces the same NcExpr AST as the Fanuc NcExpressionParser so NcExpressionEvaluator is reused unchanged. Pure: no variable lookup, 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 (('==' | '<>' | '>=' | '<=' | '>' | '<') add-expr)* add-expr := term (('+' | '-') term)* term := factor (('*' | '/' | 'MOD') factor)* factor := ('+' | '-')? primary primary := number | '(' expr ')' | 'R' digits → variable \"R63\" (canonical uppercase) | '$' name ('[' indexlist ']')? → variable \"$P_UIFR[1,X,TR]\" (canonical) | name '(' arglist ')' → function call | name '[' indexlist ']' → variable \"_RENC[35]\" (canonical) | name → variable \"_X_HOME\" (case preserved) indexlist := (integer | name) (',' (integer | name))* arglist := expr (',' expr)* Dialect differences from the Fanuc parser: parentheses group and call (Fanuc uses brackets); comparisons are spelled == <> >= <= > < (Fanuc uses EQ NE .. words); bare identifiers are named-variable references (Fanuc rejects an identifier without [); R63 is canonicalised to uppercase so table lookups and Parsing.Assignments keys agree. Indexed accesses ($P_UIFR[1,X,TR], _RENC[35]) require literal index elements (integers, bare letters, or keywords like TR) and are emitted as a single NcVariableExpr whose key is the canonical uppercase-indexed token — the whole token routes through Get(string), keeping the AST brand-agnostic. Function-name aliases are normalised where Sinumerik and the shared evaluator spell the same math differently: ATAN2 → ATAN (both are two-arg atan2 in degrees), TRUNC → FIX (truncate toward zero). Unknown functions (e.g. the rotary positioning form DC(...)) parse fine and fail later in the evaluator, which callers treat as fail-soft. public sealed class SiemensExpressionParser Inheritance object SiemensExpressionParser 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 requiring the whole string to be consumed. 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 TryParsePrefix(string, out NcExpr, out int, out string) Parses the longest valid expression prefix of source. On success, consumedLength is the number of leading characters that form the expression (trailing text from that offset on is the caller's to keep, e.g. as remaining UnparsedText). Fails only when not even a prefix parses (e.g. the text starts with a quote or an operator dangles at end-of-input) — callers fall back to their legacy lexical capture in that case. This is the parser-delimited RHS boundary: the expression grammar itself decides where the right-hand side ends, so whitespace inside expressions (R64 - 14/2), balanced call parentheses (DC(47.296)) and a following non-expression word (R24=14 R26=... / F=R103 X-204.) all resolve without lexical boundary regexes or TerminateWords. public static bool TryParsePrefix(string source, out NcExpr expr, out int consumedLength, out string error) Parameters source string expr NcExpr consumedLength int error string Returns bool" + }, + "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensGotoSyntax.html": { + "href": "api/Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensGotoSyntax.html", + "title": "Class SiemensGotoSyntax | HiAPI-C# 2025", + "summary": "Class SiemensGotoSyntax Namespace Hi.NcParsers.EvaluationSyntaxs.Siemens Assembly HiMech.dll Resolves Siemens GOTOF/GOTOB control flow — the FanucGotoSyntax pattern with named-label targets and explicit direction. Triggered by Parsing.SiemensGoto (written by SiemensGotoParsingSyntax); decides whether to fire, and on fire calls ReplaceSource(IEnumerable) on layers[0] with the re-segmented file content starting at the target label line (inclusive — a Siemens label may prefix code). Direction comes from the mnemonic and drives the anchored LabelScanUtil overload: GOTOF takes the first match strictly below the host line, GOTOB the nearest match strictly above it — never the whole-file first match, which would silently mis-target duplicate label texts. Targets may be a named label (LBL1: line, matched Ordinal-exact on the block-root SiemensLabel record) or an N block number (matched on Number). The conditional forms (IF GOTOF